[aur-general] provides version for VCS packages

Côme Pruvost come.pruvost at gmail.com
Thu Dec 3 09:16:45 EST 2009

Hello !

It's been some time I'm facing the same problem. When one build a
package from VCS, one should include the original package name
(usually $pkgname with -svn -git ... removed) in the provides array so
packages depending on the program provided can find it.
For example, if I want to package python-poppler-bzr, I will include
"provides=('python-poppler')" so desigle can satisfy its own

But now, imagine that desigle needs a recent version of
python-poppler, and so it has "depends=('python-poppler>=0.2')".
Then, makepkg will not detect python-poppler provided by
python-poppler-bzr because it cannot compare versions.
One then have to specify the version of the package provided. In case
of a VCS, it's not always easy because it can change from a revision
to another. So one need a way to get that version, and use it in the
provides array.

That's here I need your advice, because I successfully tested some
workarounds, but I'm not really sure of their "ugliness"...

Solution 1: Use pkg-config file (not always present) with awk
build() {
  _realver=`cat path/to/package.pc | awk '/^Version/{print $2}'`
Pros : rather easy
Cons : Needs awk and some people hate awk, needs file.pc set.

Solution 2: Use pkg-config with grep and sed because some people hate awk
build() {
  _realver=`cat path/to/package.pc | grep 'Version' | sed 's/Version: //'`
Pros : only generic tools are used
Cons : still needs file.pc, less clear

Solution 3: Use configure.ac
build {
  echo "provides=(realpkg=@VERSION@)" > ${pkgname}.provides.in
  echo "AC_OUTPUT([${pkgname}.provides])" >> configure.ac
  source ${pkgname}.provides
Pros : should work in more cases, fun somehow isn't it ?
Cons : rather complex, maybe incorrect with the new autoconf syntax
(AC_CONFIG_FILES) and it seems that files are then generated two

Well, thanks for reading, let's discuss that now :)


More information about the aur-general mailing list