On Tue, Jan 28, 2014 at 1:00 PM, Allan McRae <[email protected]> wrote:
> On 28/01/14 21:43, Maxime Gauduin wrote: > > On Tue, Jan 28, 2014 at 12:30 PM, Allan McRae <[email protected]> > wrote: > > > >> On 26/01/14 03:38, Maxime Gauduin wrote: > >>> Add a proto for bzr, git, hg and svn PKGBUILDs and remove the > >>> corresponding protos from abs. > >>> > >> > >> Commit message needs updated. > >> > >>> Signed-off-by: Maxime Gauduin <[email protected]> > >>> --- > >>> proto/PKGBUILD-vcs.proto | 95 > >> ++++++++++++++++++++++++++++++++++++++++++++++++ > >>> 1 file changed, 95 insertions(+) > >>> create mode 100644 proto/PKGBUILD-vcs.proto > >>> > >>> diff --git a/proto/PKGBUILD-vcs.proto b/proto/PKGBUILD-vcs.proto > >>> new file mode 100644 > >>> index 0000000..3aa7890 > >>> --- /dev/null > >>> +++ b/proto/PKGBUILD-vcs.proto > >>> @@ -0,0 +1,95 @@ > >>> +# This is an example PKGBUILD file. Use this as a start to creating > >> your own, > >>> +# and remove these comments. For more information, see 'man PKGBUILD'. > >>> +# NOTE: Please fill out the license field for your package! If it is > >> unknown, > >>> +# then please put 'unknown'. > >>> + > >>> +# The following guidelines are specific to BZR, GIT, HG and SVN > >> packages. > >>> +# CVS and DARCS are not natively supported in pacman yet, please refer > >> to the > >>> +# dedicated prototypes instead. > >>> + > >>> +# Maintainer: Your Name <[email protected]> > >>> +pkgname=NAME-VCS # '-bzr', '-git', '-hg' or '-svn' > >>> +pkgver=VERSION > >>> +pkgrel=1 > >> > >> epoch= > >> > >>> +pkgdesc="" > >>> +arch=() > >>> +url="" > >>> +license=('GPL') > >>> +groups=() > >>> +depends=() > >>> +makedepends=('VCS_PACKAGE') # 'bzr', 'git', 'mercurial' or > 'subversion' > >> > >> checkdepends=() > >> optdepends=() > >> > >>> +provides=("${pkgname%-VCS}") > >>> +conflicts=("${pkgname%-VCS}") > >>> +replaces=() > >>> +backup=() > >>> +options=() > >>> +install= > >> > >> changelog= > >> > >>> +source=('DIR_NAME::VCS+REPO_URL#FRAGMENT') > >>> +noextract=() > >>> +md5sums=('SKIP') > >>> + > >>> > >> > +################################################################################ > >>> + > >> > >> Can we just refer to the "Using VCS Sources" in the PKGBUILD man page > here? > >> > > > > Sure, good idea. > > > > > >> > >>> +# DIR_NAME: Use to change the source directory name if needed > >>> + > >>> +# VCS: Use to specify the VCS type, not needed when REPO_URL is > >> explicit (for > >>> +# example git://URL, svn://URL or lp:REPO_NAME) > >>> + > >>> +# FRAGMENT: Use to pull a specific branch, commit/revision or tag > >>> +# Bazaar accepts the 'revision' keyword > >>> +# Git accepts the 'branch', 'commit' and 'tag' keywords > >>> +# Mercurial accepts the 'branch', 'revision' and 'tag' keywords > >>> +# Subversion accepts the 'revision' keyword > >>> + > >>> +# Examples: > >>> +# source=("lp:${pkgname%-bzr}#revision=42") > >>> +# source=("git+ > >> https://github.com/author/${pkgname%-git}.git#branch=unstable") > >>> +# source=('hg+https://bitbucket.org/author/project#tag=2.0') > >>> +# source=("${pkgname%-svn}::svn:// > svn.code.sf.net/p/project/code/trunk > >> "} > >>> + > >>> > >> > +################################################################################ > >>> + > >>> +pkgver() { > >>> + cd "$srcdir/${pkgname%-VCS}" > >>> + > >>> +# The examples below are not absolute and need to be adapted to each > >> repo. The > >>> +# general idea is to have VERSION='VER_NUM.rREV_NUM.HASH' or any > subset > >> in case > >>> +# VER_NUM or HASH are not available. > >> > >> > >> Why are we using "r" everywhere? What is its advantage - especially in > >> the non-git cases? > >> > >> And why adding "." between the segments instead of an underscore? I > >> have seen a lot of software release version A.B followed by A.B.C, so > >> separating with a "." will break. > >> > >> > > According to vercmp, numbers take precendence over letters: > > vercmp 1.1.r42 1.1.1.r43 -> -1 > > vercmp 1.1_r42 1.1.1_r43 -> -1 > > However: > > vercmp 1.1.42 1.1.1.43 -> 1 > > vercmp 1.1_42 1.1.1_43 -> 1 > > > > The 'r' is there to fix such problems when A.B becomes A.B.C, or when a > > tagless git repo gets tagged. The choice between dot and underscore is > > purely cosmetic, I prefer dots over underscores, but I wouldn't mind > using > > the latter. > > > > OK. Keep the "r" and use "." to separate. > > How about this for the text above the examples? > > The examples below are not absolute and need to be adapted to each repo. > The primary goal is to generate version numbers that will increase > according to pacman's version comparisons with later commits to the > repo. The format VERSION='VER_NUM.rREV_NUM.HASH', or a relevant subset > in case VER_NUM or HASH are not available, is recommended > > Sounds good, I'll update the patch accordingly. > > >> > >>> +# Bazaar > >>> + printf "r%s" "$(bzr revno)" > >>> + > >>> +# Git, tags available > >>> + printf "%s" "$(git describe --long | sed > >> 's/\([^-]*-\)g/r\1/;s/-/./g')" > >>> + > >>> +# Git, no tags available > >>> + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse > >> --short HEAD)" > >>> + > >>> +# Mercurial > >>> + printf "r%s.%s" "$(hg identify -n)" "$(hg identify -i)" > >>> + > >>> +# Subversion > >>> + printf "r%s" "$(svnversion | tr -d 'A-z')" > >>> +} > >>> + > >>> +prepare() { > >>> + cd "$srcdir/${pkgname%-VCS}" > >>> + patch -p1 -i "$srcdir/${pkgname%-VCS}.patch" > >>> +} > >>> + > >>> +build() { > >>> + cd "$srcdir/${pkgname%-VCS}" > >>> + ./autogen.sh > >>> + ./configure --prefix=/usr > >>> + make > >>> +} > >>> + > >>> +check() { > >>> + cd "$srcdir/${pkgname%-VCS}" > >>> + make -k check > >>> +} > >>> + > >>> +package() { > >>> + cd "$srcdir/${pkgname%-VCS}" > >>> + make DESTDIR="$pkgdir/" install > >>> +} > >>> > >> > >> > >> > > > > > > > -- Maxime
