[pacman-dev] [PATCH] Add PKGBUILD-vcs.proto

Maxime Gauduin alucryd at gmail.com
Tue Jan 28 08:16:07 EST 2014


On Tue, Jan 28, 2014 at 1:00 PM, Allan McRae <allan at archlinux.org> wrote:

> On 28/01/14 21:43, Maxime Gauduin wrote:
> > On Tue, Jan 28, 2014 at 12:30 PM, Allan McRae <allan at archlinux.org>
> 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 <alucryd at gmail.com>
> >>> ---
> >>>  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 <youremail at domain.com>
> >>> +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


More information about the pacman-dev mailing list