[pacman-dev] [RFC] [PATCH 0/4] makepkg: VCS package overhaul

Allan McRae allan at archlinux.org
Sun Jun 3 22:23:50 EDT 2012

On 04/06/12 01:40, Allan McRae wrote:
> This is my first attempt at overhauling the really crap VCS PKGBUILD
> support in makepkg.  So far only git is implemented.
> This is for initial comments.  There is still much to tidy up (apart from
> reinstating all the other VCS...), but using git works.  E.g. to make a
> package for pacman-git from the maint branch:
> source=('git+https://projects.archlinux.org/git/pacman.git#branch=maint')
> Currently you need to use --skipinteg, as integrity checking is broken.
> So is generating the integrity checks.
> Also, I would like ideas on how to stop the git repo being updated.  This is
> a common request for having VCS PKGBUILDs work offline (assumably after an
> initial checkout...).   Should I add a new flag, or just not error out when
> updating the repo fails?

I am not going to resend the patchset at this stage, but I now consider
git PKGBUILDs to be finished (apart from a documentation update). See
the full patchset at:

Changes made since the last patchset:
 - Failing when updating a repo only produces a warning.  This allows
packages to be build while offline (provided the initial checkout is
 - Checking checksums bails early if "SKIP" is specified.  No need to
use --skipinteg anymore
 - "makepkg -g" prints "SKIP" for git sources
 - "makepkg --allsource" will backup the VCS checkout

Allan McRae (9):
  makepkg: remove VCS package support
  makepkg: reorder source handling functions
  makepkg: add function to return download protocol
  makepkg: generalize download_sources
  makepkg: skip integrity checking early
  makepkg: allow using GIT source URLs
  makepkg: fix checksum generation with VCS sources
  makepkg: modify get_filename to handle git sources
  makepkg: modify get_filepath to handle VCS sources

 doc/PKGBUILD.5.txt    |   64 ------
 scripts/makepkg.sh.in |  577
 2 files changed, 311 insertions(+), 330 deletions(-)

This fixes the following bugs:

FS#7816 - get source from svn/Subversion URLs
FS#8890 - separate download and build stages for offline mode (cvs/svn
FS#13727 - VCS packages, makedepends and output
FS#15895 - PKGBUILD git feature is systematically setting pkgver to
today date, not date of the last commit
FS#16384 - Inconsistency of makepkg's activities in devel_check() for
FS#16872 - the way VCS packages are handled is a mess
FS#19459 - Integrated VCS checkout, update and revision selection
FS#19476 - Remove duplication of VCS downloads from PKGBUILDs
FS#21098 - [makepkg] Backup VCS source code with --allsource

Work is needed to readd CVS, SVN, Mercurial, Darcs and Bazaar.  These
should be fairly simple to add given I have done the groundwork already.

Apart from code comments, the only area I would like input on is the
pkgver for git packages.  When not using --holdver, "#tag=..." or
"#commit=...", makepkg will update the pkgver to:

$(git rev-list HEAD | wc -l)_$(git rev-parse --short HEAD)

This increases with increasing commits (so version comparisons are fine)
and includes a commit ID for uniqueness.  I can not think of a better way...


More information about the pacman-dev mailing list