systemd / cross-building / failure in dpkg-gencontrol

Helmut Grohne helmut at subdivi.de
Mon Aug 24 06:32:16 BST 2015


Hi Michael,

I am quoting everything due to added recipients (d-cross and josch).

On Mon, Aug 24, 2015 at 12:58:15AM +0200, Michael Biebl wrote:
> since we made the changes at debconf to improve
> cross-building/bootstrapping in systemd, I get the following failure
> when trying to run mk-build-deps -i (from the devscripts package):
> 
> > dh_gencontrol
> > dpkg-gencontrol: warning: can't parse dependency python3:native
> > dpkg-gencontrol: error: error occurred while parsing Depends field: build-essential, debhelper (>= 9),               pkg-config,               xsltproc,               docbook-xsl,               docbook-xml,               m4,               dh-autoreconf,               automake (>= 1.11),               autoconf (>= 2.63),               intltool,               gperf,               gnu-efi [amd64 i386],               libcap-dev (>= 1:2.24-9~),               libpam0g-dev,               libapparmor-dev (>= 2.9.0-3+exp2) <!stage1>,               libaudit-dev,               libdbus-1-dev (>= 1.3.2) <!nocheck>,               libcryptsetup-dev (>= 2:1.6.0) <!stage1>,               libselinux1-dev (>= 2.1.9),               libacl1-dev,               liblzma-dev,               libbz2-dev,               zlib1g-dev | libz-dev,               libcurl4-gnutls-dev | libcurl-dev,               libgcrypt11-dev,               libkmod-dev (>= 15),               libblkid-dev (>= 2.24),               libmo
> unt-dev (>= 2.20),               libseccomp-dev (>= 1.0.0) [amd64 arm64 armel armhf i386 mips mipsel],               python3:native,               python3-lxml:native
> > dh_gencontrol: dpkg-gencontrol -psystemd-build-deps -ldebian/changelog -Tdebian/systemd-build-deps.substvars -Pdebian/systemd-build-deps returned exit code 255
> > debian/rules:20: recipe for target 'binary-indep' failed
> > make: *** [binary-indep] Error 2
> > Error in the build process: exit status 2
> > dpkg: error processing archive systemd-build-deps_224-2_amd64.deb (--unpack):
> >  cannot access archive: No such file or directory
> > Errors were encountered while processing:
> >  systemd-build-deps_224-2_amd64.deb
> > mk-build-deps: dpkg --unpack failed

It seems that you found a tool that does not support the :native
annotation. It takes content from Build-Depends and copies that to
Depends assuming that it just works, but Build-Depends permits
significantly more syntax:

 * Architetcure restrictions
 * Profile restrictions
 * :native annotations

If I remember correctly, dpkg-gencontrol reduces architecture and
profile restrictions, so these work by chance. It is not clear how to
implement :native for mk-build-deps, because it does not differentiate
between build architecture and host architecture. Maybe the simplest fix
would be to s/:native// in mk-build-deps and declare cross support
unfixably broken. Dima Kogan already observed that it does not work at
all in #794538.

Actually, is there any use of mk-build-deps after experimental's apt has
transitioned to unstable? It allows "apt-get build-dep foo.dsc" and
"apt-get build-dep extracted-package". Just wondering.

It is also unclear how to ever implement full build profile support into
mk-build-deps. It seems that the generated package name should not only
depend on B-D vs. B-D-I and the source package name, but also on
selected profiles.

> Any idea what's going wrong here and how we can fix that?

If this use case is important to you, the only workaround for now is to
remove those :native annotations. It will make Build-Depends cross
unsatisfiable, but that's the case for many packages.

Helmut




More information about the Pkg-systemd-maintainers mailing list