1

I am trying to get Open Build Service to accept this PKGBUILD:

# Maintainer: Ole Tange <[email protected]>

pkgname=parallel
pkgver=20200622
pkgrel=2
pkgdesc='Build and execute shell command lines from standard input in parallel'
arch=('any')
url='https://www.gnu.org/software/parallel/'
license=('GPL3')
depends=('perl' 'procps')
source=(https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.bz2{,.sig})
sha256sums=('41ce2f31b7850ad86b88dc756faf78a70e4ae92f45fa6603b7d108148ebe6513' 'SKIP')
validpgpkeys=('CDA01A4208C4F74506107E7BD1AB451688888888')

prepare() {
  cd parallel-$pkgver
}

build() {
  cd parallel-$pkgver
  ./configure --prefix=/usr
  make
}

package() {
  cd parallel-$pkgver
  make DESTDIR="$pkgdir/" install
}

But it complains: nothing provides perl, binutils, procps, gcc, ...

I imagine I need a line that says: Please provide me with basic build dependencies.

You can see it "live" at: https://build.opensuse.org/package/show/home:tange/parallel

What do I need to change to make OBS build the package?

Ole Tange
  • 33,591
  • 31
  • 102
  • 198

1 Answers1

1

You probably need to install gcc, perl procps-ng, binutils and any other packages mentioned as dependencies.

These packages are provided by the base-devel group that are (as the name suggests) base requirements for building packages, which is why they are never mentioned in PKGBUILDS.

My guess is the group is not installed on the system yet.

You could also just add this line before the depends:

makedepends=('binutils' 'gcc' 'perl' 'procps-ng')

See also this example on the Arch Wiki

  • The PKGBUILD now works on Arch-x84_64, and Arch_Extra-x86-64, but it fails for Arch_Core-* and (more puzzling) Arch_Extra-i586. See details: https://build.opensuse.org/package/show/home:tange/parallel What am I missing? – Ole Tange Jul 17 '20 at 07:31
  • Sorry about that, forgot 32-bit. For i586 you will also need to require the following packages as makedependencies: `lib32-gcc-libs lib32-glibc lib32-libltdl lib32-procps-ng`. – MadeOfMagicAndWires Jul 17 '20 at 20:15
  • Arch_Core only has the [core] repository, which doesn't provide the indirect dependencies `guile` and `libcroco`, which live in the [extra] repository, so the build will always fail there unfortunately. Not much to be done about that. – MadeOfMagicAndWires Jul 17 '20 at 20:19
  • That explains *_Core. But with the makedep changes I get `nothing provides lib32-libltdl lib32-procps-ng` – Ole Tange Jul 17 '20 at 21:52
  • Hm. Those are the only two packages from the [multilib] repository so I guess that repository is also not available then. Which is a bit weird considering that's where all the 32-bit libraries live. But yeah, if you desperately need a i586 build you will have to use something else, but otherwise you can just disable it. – MadeOfMagicAndWires Jul 18 '20 at 21:58
  • Update: there's [this](https://build.opensuse.org/project/show/home:mazdlc:multilib) project that provides multilib packages, but it's quite out-of-date. The service should really just provide an Arch_Multilib repository from itself though. – MadeOfMagicAndWires Jul 18 '20 at 22:06
  • I am sorry if I sound daft: But that does not help me, correct? If it does, please show what to put in PKGBUILD. – Ole Tange Jul 18 '20 at 22:34
  • Right sorry, to disable the i586 build first edit the `arch=` line in the PKGBUILD to `arch=('x86_64')` to make clear it is only meant to be built on 64-bit systems and then disable the i586 build target for the Arch_Extra repository in the Meta configuration file. you can disable it with the last example of this [help page](https://en.opensuse.org/openSUSE:Build_Service_Tips_and_Tricks#Disable_build_of_packages) or see [here](https://build.opensuse.org/package/meta/home:MadeOfMagicAndWires/parallel) for a direct example. – MadeOfMagicAndWires Jul 20 '20 at 00:40
  • And just in case you *absolutely* want to build a 32bit package for Arch Linux, and you *absolutely* want to use OBS for it you would have to build all the missing packages and their dependencies, so that the parallel package can then use that repository to install them. There is no real need for this though as Arch Linux doesn't support 32-bit architectures at all anymore. – MadeOfMagicAndWires Jul 20 '20 at 02:55