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: https://projects.archlinux.org/users/allan/pacman.git/log/?h=vcs 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 available) - 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 PKGBUILDs) 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 Mercurial 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... Allan