Example:
$ ./xdeb/xdeb.py -a armel -d xdeb-scratch -b xdeb-scratch --only-explicit --prefer-apt qemu-linaro
[...]
dpkg-cross -a armel -b -X heimdal-dev -X krb5-multidev -X ssh-krb5 libkrb5-dev_1.8.3+dfsg-4ubuntu1_armel.deb libkrb5-3_1.8.3+dfsg-4ubuntu1_armel.deb libgssapi-krb5-2_1.8.3+dfsg-4ubuntu1_armel.deb libgssrpc4_1.8.3+dfsg-4ubuntu1_armel.deb libkadm5srv-mit7_1.8.3+dfsg-4ubuntu1_armel.deb libkadm5clnt-mit7_1.8.3+dfsg-4ubuntu1_armel.deb libk5crypto3_1.8.3+dfsg-4ubuntu1_armel.deb libkdb5-4_1.8.3+dfsg-4ubuntu1_armel.deb libkrb5support0_1.8.3+dfsg-4ubuntu1_armel.deb
Building libk5crypto3-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libk5crypto3-armel-cross' in `./libk5crypto3-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
dpkg-cross: package libkrb5-dev doesn't provide any useful files. Skipping.
Building libkadm5srv-mit7-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libkadm5srv-mit7-armel-cross' in `./libkadm5srv-mit7-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Building libkrb5-3-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libkrb5-3-armel-cross' in `./libkrb5-3-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Building libgssrpc4-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libgssrpc4-armel-cross' in `./libgssrpc4-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Building libkadm5clnt-mit7-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libkadm5clnt-mit7-armel-cross' in `./libkadm5clnt-mit7-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Building libkdb5-4-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libkdb5-4-armel-cross' in `./libkdb5-4-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Building libkrb5support0-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libkrb5support0-armel-cross' in `./libkrb5support0-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Building libgssapi-krb5-2-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb
dpkg-deb: building package `libgssapi-krb5-2-armel-cross' in `./libgssapi-krb5-2-armel-cross_1.8.3+dfsg-4ubuntu1_all.deb'.
Traceback (most recent call last):
File "./xdeb/xdeb.py", line 946, in <module>
main()
File "./xdeb/xdeb.py", line 930, in main
native_crossed.extend(native_import(options, src))
File "./xdeb/xdeb.py", line 560, in native_import
crossed_debs = cross_convert(options, debs, options.builddirs[0])
File "./xdeb/xdeb.py", line 487, in cross_convert
spawn(convert, cwd=outdir)
File "/home/devel/canonical/linaro/xdeb/utils.py", line 29, in spawn
raise SubprocessException, ret
utils.SubprocessException: 1
And running the same xdeb command with --sequence now shows:
It is an actual bug in dpkg-cross that libkrb5-dev doesn't get crossed; the package is a symlink farm pointing into /usr/lib/mit-krb5 and /usr/include/mit-krb5, so it's understandable that dpkg-cross doesn't know what to do with it. However, at some point we do actually need libkrb5-dev installable and usable for builds, either by teaching dpkg-cross about it or making it multi-arch: same.
But in the meantime, xdeb should trust dpkg-cross when it says there's nothing to be done for a package, and should pull it out of its list of packages to cross. There are other packages in the qemu-linaro sequence for which dpkg-cross is doing the right thing, but xdeb falls over.
Example: dev_1.8. 3+dfsg- 4ubuntu1_ armel.deb libkrb5- 3_1.8.3+ dfsg-4ubuntu1_ armel.deb libgssapi- krb5-2_ 1.8.3+dfsg- 4ubuntu1_ armel.deb libgssrpc4_ 1.8.3+dfsg- 4ubuntu1_ armel.deb libkadm5srv- mit7_1. 8.3+dfsg- 4ubuntu1_ armel.deb libkadm5clnt- mit7_1. 8.3+dfsg- 4ubuntu1_ armel.deb libk5crypto3_ 1.8.3+dfsg- 4ubuntu1_ armel.deb libkdb5- 4_1.8.3+ dfsg-4ubuntu1_ armel.deb libkrb5support0 _1.8.3+ dfsg-4ubuntu1_ armel.deb armel-cross_ 1.8.3+dfsg- 4ubuntu1_ all.deb armel-cross' in `./libk5crypto3 -armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb' . mit7-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb mit7-armel- cross' in `./libkadm5srv- mit7-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb' . 3-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb 3-armel- cross' in `./libkrb5- 3-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb' . armel-cross_ 1.8.3+dfsg- 4ubuntu1_ all.deb armel-cross' in `./libgssrpc4- armel-cross_ 1.8.3+dfsg- 4ubuntu1_ all.deb' . mit7-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb mit7-armel- cross' in `./libkadm5clnt -mit7-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb' . 4-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb 4-armel- cross' in `./libkdb5- 4-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb' . -armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb 0-armel- cross' in `./libkrb5suppo rt0-armel- cross_1. 8.3+dfsg- 4ubuntu1_ all.deb' . krb5-2- armel-cross_ 1.8.3+dfsg- 4ubuntu1_ all.deb krb5-2- armel-cross' in `./libgssapi- krb5-2- armel-cross_ 1.8.3+dfsg- 4ubuntu1_ all.deb' . crossed. extend( native_ import( options, src)) options, debs, options. builddirs[ 0]) devel/canonical /linaro/ xdeb/utils. py", line 29, in spawn tion, ret sException: 1
$ ./xdeb/xdeb.py -a armel -d xdeb-scratch -b xdeb-scratch --only-explicit --prefer-apt qemu-linaro
[...]
dpkg-cross -a armel -b -X heimdal-dev -X krb5-multidev -X ssh-krb5 libkrb5-
Building libk5crypto3-
dpkg-deb: building package `libk5crypto3-
dpkg-cross: package libkrb5-dev doesn't provide any useful files. Skipping.
Building libkadm5srv-
dpkg-deb: building package `libkadm5srv-
Building libkrb5-
dpkg-deb: building package `libkrb5-
Building libgssrpc4-
dpkg-deb: building package `libgssrpc4-
Building libkadm5clnt-
dpkg-deb: building package `libkadm5clnt-
Building libkdb5-
dpkg-deb: building package `libkdb5-
Building libkrb5support0
dpkg-deb: building package `libkrb5support
Building libgssapi-
dpkg-deb: building package `libgssapi-
Traceback (most recent call last):
File "./xdeb/xdeb.py", line 946, in <module>
main()
File "./xdeb/xdeb.py", line 930, in main
native_
File "./xdeb/xdeb.py", line 560, in native_import
crossed_debs = cross_convert(
File "./xdeb/xdeb.py", line 487, in cross_convert
spawn(convert, cwd=outdir)
File "/home/
raise SubprocessExcep
utils.Subproces
And running the same xdeb command with --sequence now shows:
Build sequence: krb5 keyutils* zlib* tcp-wrappers* bluez* x11proto-kb* pulseaudio* xcb-util* libxtst* libxcb* curl* libpthread-stubs* x11proto-xext* libxau* gpm* libsndfile* libxdmcp* alsa-lib* libgpg-error* x11proto-input* libice* nas* gnutls26* libxt* libpng* libxdamage* libxext* libidn* esound* db4.8* ncurses* pcre3* glib2.0* python2.7* x11proto-core* libdrm* openldap* libogg* flac* brltty* libsdl1.2* mesa* util-linux* libxfixes* vde2* libcaca* libgcrypt11* slang2* dbus* libx11* openssl* e2fsprogs* cyrus-sasl2* xtrans* libtasn1-3* aalib* libvorbis* avahi* libselinux* libsm* audiofile* libxxf86vm* qemu-linaro*
(i.e., it considers krb5 'done'.)
It is an actual bug in dpkg-cross that libkrb5-dev doesn't get crossed; the package is a symlink farm pointing into /usr/lib/mit-krb5 and /usr/include/ mit-krb5, so it's understandable that dpkg-cross doesn't know what to do with it. However, at some point we do actually need libkrb5-dev installable and usable for builds, either by teaching dpkg-cross about it or making it multi-arch: same.
But in the meantime, xdeb should trust dpkg-cross when it says there's nothing to be done for a package, and should pull it out of its list of packages to cross. There are other packages in the qemu-linaro sequence for which dpkg-cross is doing the right thing, but xdeb falls over.