package module
Version: v0.0.0-...-1f52fd9 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2021 License: GPL-3.0 Imports: 7 Imported by: 5




A golang package for parsing Arch Linux .SRCINFO files (PKGBUILDs).


  • Handle split PKGBUILDs like linux
  • Try to parse maintainer from top of PKGBUILD
  • Handle multiple dependency versions
  • Add support for reading a .SRCINFO file directly
  • Update to pacman 4.2



Example usage

package main

import (


func main() {
    pkgb, err := ParseSRCINFO("/path/to/.SRCINFO")
    if err != nil {

    for _, subPkg := range pkgb.Pkgnames {
       fmt.Printf("Package name: %s", subPkg)


Copyright (C) 2016 Mikkel Oscar Lyderik Larsen

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see




This section is empty.


This section is empty.


This section is empty.


type CompleteVersion

type CompleteVersion struct {
	Version Version
	Epoch   uint8
	Pkgrel  Version

func NewCompleteVersion

func NewCompleteVersion(s string) (*CompleteVersion, error)

NewCompleteVersion creates a CompleteVersion including basic version, epoch and rel from string

func (*CompleteVersion) Equal

func (a *CompleteVersion) Equal(b *CompleteVersion) bool

Equal returns true if a is equal to the argument version

func (*CompleteVersion) Newer

func (a *CompleteVersion) Newer(b *CompleteVersion) bool

Newer returns true if a is newer than the argument version

func (*CompleteVersion) Older

func (a *CompleteVersion) Older(b *CompleteVersion) bool

Older returns true if a is older than the argument version

func (*CompleteVersion) Satisfies

func (version *CompleteVersion) Satisfies(dep *Dependency) bool

Satisfies tests whether or not version fits inside the bounds specified by dep

func (*CompleteVersion) String

func (c *CompleteVersion) String() string

type Dependency

type Dependency struct {
	Name   string           // dependency name
	MinVer *CompleteVersion // min version

	MaxVer *CompleteVersion // max version
	// contains filtered or unexported fields

Dependency describes a dependency with min and max version, if any.

func ParseDeps

func ParseDeps(deps []string) ([]*Dependency, error)

ParseDeps parses a string slice of dependencies into a slice of Dependency objects.

func (*Dependency) Restrict

func (a *Dependency) Restrict(b *Dependency) *Dependency

Restrict merges two dependencies together into a new dependency where the conditions of both a and b are met

func (*Dependency) String

func (dep *Dependency) String() string


type PKGBUILD struct {
	Pkgnames     []string
	Pkgver       Version // required
	Pkgrel       Version // required
	Pkgdir       string
	Epoch        int
	Pkgbase      string
	Pkgdesc      string
	Arch         []string // required
	URL          string
	License      []string // recommended
	Groups       []string
	Depends      []*Dependency
	Optdepends   []string
	Makedepends  []*Dependency
	Checkdepends []*Dependency
	Provides     []string
	Conflicts    []string
	Replaces     []string
	Backup       []string
	Options      []string
	Install      string
	Changelog    string
	Source       []string
	Noextract    []string
	Md5sums      []string
	Sha1sums     []string
	Sha224sums   []string
	Sha256sums   []string
	Sha384sums   []string
	Sha512sums   []string
	B2sums       []string
	Validpgpkeys []string

PKGBUILD is a struct describing a parsed PKGBUILD file. Required fields are:

(license) - not required but recommended

parsing a PKGBUILD file without these fields will fail

func MustParseSRCINFO

func MustParseSRCINFO(path string) *PKGBUILD

MustParseSRCINFO must parse the .SRCINFO given by path or it will panic

func ParseSRCINFO

func ParseSRCINFO(path string) (*PKGBUILD, error)

ParseSRCINFO parses .SRCINFO file given by path. This is a safe alternative to ParsePKGBUILD given that a .SRCINFO file is available

func ParseSRCINFOContent

func ParseSRCINFOContent(content []byte) (*PKGBUILD, error)

ParseSRCINFOContent parses a .SRCINFO formatted byte slice. This is a safe alternative to ParsePKGBUILD given that the .SRCINFO content is available

func (*PKGBUILD) BuildDepends

func (p *PKGBUILD) BuildDepends() []*Dependency

BuildDepends is Depends, MakeDepends and CheckDepends combined.

func (*PKGBUILD) CompleteVersion

func (p *PKGBUILD) CompleteVersion() CompleteVersion

CompleteVersion returns a Complete version struct including version, rel and epoch.

func (*PKGBUILD) IsDevel

func (p *PKGBUILD) IsDevel() bool

IsDevel returns true if package contains devel packages (-{bzr,git,svn,hg}) TODO: more robust check.

func (*PKGBUILD) Newer

func (p *PKGBUILD) Newer(p2 *PKGBUILD) bool

Newer is true if p has a higher version number than p2

func (*PKGBUILD) Older

func (p *PKGBUILD) Older(p2 *PKGBUILD) bool

Older is true if p has a smaller version number than p2

func (*PKGBUILD) Version

func (p *PKGBUILD) Version() string

Version returns the full version of the PKGBUILD (including epoch and rel)

type Version

type Version string

Version string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL