Mail archive

Re: [alpine-devel] How to handle regular git/svn builds

From: Natanael Copa <>
Date: Tue, 04 Aug 2009 08:52:07 +0200

On Tue, 2009-08-04 at 12:40 +1000, Mark Constable wrote:
> Perhaps I missed something obvious but I haven't yet come across
> an example of an APKBUILD pulling source from git or svn repos.

I think I copied some examples from Archlinux... oh... I didnt ship them
with the release. Probably because I was not sure how to deal with it

> ATM I do this with Archlinux by using a non-standard getsource()
> function in the PKGBUILD. I don't want to use the standard way
> for two reasons, a) it needlessly self modifies the $pkgver
> variable in the PKGBUILD and b) expects to pull the git/svn
> source into $srcdir rather than my preferred $SRCDEST.
> The implications of a) is that every PKGBUILD is changed with
> every build so when it comes time to commit the source package
> changes then EVERY package is going to have a be committed even
> though it's only a redundant $pkgver variable update that is
> not even used. It just creates useless git log noise.

not really following here. You dont need to commit if you dont want log
noise? If you do have a new build, new package, then its nice to have
tha logged?

> I solve this problem by using $pkgrel=$(date -u +%Y%m%d%H) which
> dynamically updates that field and allows me to build unique
> packages multiple times per day without modifying the PKGBUILD.

The drawback with this is that you will fork in global scope which is a
no-no from performance point of view. Its no problem if you have 1 or
two APKBUILDs doing this but it might be a problem if we get many many

> The second b) point is that I have about 20Gb of cloned and checked
> out sources and there is no way I want all that bulk intermixed
> in with my source packages.
> Anyway, this works but I'm wondering what any official thoughts
> about handling this might be?

sounds like you have more experience than me in this field. Personally i
dont create packages of git/svn versions. I prefer snapshots.

When i work on something I do 'make install' and just install it rather
than package it first.

Hm. I wonder if we could use git-describe to set the version.

> --markc
> -----------------------------------------------------------------
> pkgname=apk-tools
> pkgver=2.0_pre17
> pkgrel=$(date -u +%Y%m%d%H)
> pkgdesc="Alpine Package Keeper - package manager for alpine"
> depends=
> makedepends="zlib-dev openssl-dev pkgconfig"
> source="0001-db-fix-checksum-storing-to-db.patch
> 0001-io-fix-corruption-of-big-files-on-mmap-write.patch"
> url=""
> license=GPL-2
> build()
> {
> _getsource || return 1
> cd "$srcdir/$pkgname-$pkgver"
> sed -i -e 's:-Werror::' Make.rules
> make || return 1
> make DESTDIR="$pkgdir" install
> cd "$pkgdir/sbin"
> ln -s apk apk_add
> ln -s apk apk_audit
> ln -s apk apk_del
> ln -s apk apk_index
> ln -s apk apk_info
> ln -s apk apk_version
> }
> _getsource()
> {
> [ -d $SRCDEST ] && cd $SRCDEST || return 1

You need quotes "$SRCDEST" (or paths with spaces will break things for

> if [ -d $pkgname/.git ]; then
> cd $pkgname && git pull origin
> else
> git clone git:// $pkgname
> fi
> rsync -a --cvs-exclude --delete $SRCDEST/$pkgname/ $srcdir/$pkgname-$pkgver

you need to append rsync to makedepends.

> }

well, there are several ways to deal with svn/git packages, I think we
in general prefers to have the official packages only use releases, or
in worst case, snapshots.

It would still be nice to have some recommended way to build custom
svn/git packages.


Received on Tue Aug 04 2009 - 08:52:07 UTC