[pacman-dev] [RFC] Generation of a .SRCINFO file for source packages

canyonknight at gmail.com canyonknight at gmail.com
Mon Aug 27 17:08:45 EDT 2012


Hello all,

I had the idea of adding a .SRCINFO file to source packages generated
by makepkg. I did some research to see if this had been previously
proposed and where the discussion went. I've collected my thoughts on
such an addition for your consideration.

Previous proposal:
The idea of generating a .SRCINFO file was previously proposed on the
mailing list [1]. No format was ever agreed upon and discussion died
off when no fixes were sent based off of developer suggestions. I've
included my own proposed format to fuel discussion and maybe reach an
ideal format.

Proposed format with example (using "boost" PKGBUILD [2]):
- Every variable (pkgver, depends, etc) is preceded by ($pkgname).
- Every "global" (defined outside a package_* function) variable is
explicitly listed for each $pkgname.
- Every array (arch, depends, etc) has one line for each array element

# Generated by makepkg 4.0.3
# Mon Aug 27 01:23:45 UTC 2012
(boost) pkgbase = boost
(boost) pkgname = boost
(boost) pkgver = 1.50.0
(boost) pkgrel = 2
(boost) epoch = 0
(boost) pkgdesc = Free peer-reviewed portable C++ source libraries - Development
(boost) arch = i686
(boost) arch = x86_64
(boost) url = http://www.boost.org/
(boost) depends = boost-libs=1.50.0
(boost) optdepends = python: for python bindings
(boost) optdepends = python2: for python2 bindings
(boost) optdepends = boost-build: to use boost jam for building your project.
(boost) makedepends = icu
(boost) makedepends = python
(boost) makedepends = python2
(boost) makedepends = bzip2
(boost) makedepends = zlib
(boost) makedepends = openmpi
(boost) source = http://downloads.sourceforge.net/boost/boost_1_50_0.tar.gz
(boost) license = custom
(boost-libs) pkgbase = boost
(boost-libs) pkgname = boost-libs
(boost-libs) pkgver = 1.50.0
(boost-libs) pkgrel = 2
(boost-libs) epoch = 0
(boost-libs) pkgdesc = Free peer-reviewed portable C++ source
libraries - Runtime
(boost-libs) arch = i686
(boost-libs) arch = x86_64
(boost-libs) url = http://www.boost.org/
(boost-libs) depends = gcc-libs
(boost-libs) depends = bzip2
(boost-libs) depends = zlib
(boost-libs) depends = icu
(boost-libs) optdepends = openmpi: for mpi support
(boost-libs) makedepends = icu
(boost-libs) makedepends = python
(boost-libs) makedepends = python2
(boost-libs) makedepends = bzip2
(boost-libs) makedepends = zlib
(boost-libs) makedepends = openmpi
(boost-libs) source = http://downloads.sourceforge.net/boost/boost_1_50_0.tar.gz
(boost-libs) license = custom

Advantages of proposed format:
- Don't need a bash parser to determine PKGBUILD variables in a source
package. This would make things a lot easier for projects (including
AUR) that depend on information from PKGBUILD variables.
- Previously proposed implementation could run into issues for a
package named "global", this proposal avoids need for "global" label.

Disadvantages of proposed format:
- Adds additional dot file to every generated source package.
- Compared to the previously proposed implementation, this
implementation results in more lines (and a bit of redundancy) in each
.SRCINFO file due to the avoidance of any "global" variables.

Thanks for the consideration. I am more than happy to answer any
questions relating to anything above.

Regards,

Jason

[1] http://mailman.archlinux.org/pipermail/pacman-dev/2010-August/011461.html
[2] https://projects.archlinux.org/svntogit/packages.git/plain/trunk/PKGBUILD?h=packages/boost


More information about the pacman-dev mailing list