Guillem Jover writes: > Control: tags -1 moreinfo > Control: severity -1 normal > > Hi! > > On Tue, 2016-11-29 at 03:19:31 -0700, Jean-Francois Dockes wrote: > > Package: dpkg-dev > > Version: 1.17.27 > > Severity: important > > > This happens on an odrobian hybrid installation: 64 bits kernel with > > 32 bits userland. gcc -v says: > > > > Using built-in specs. > > COLLECT_GCC=/usr/bin/gcc-4.9.real > > COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper > > Target: arm-linux-gnueabihf > > > > debuild fails with the following output: > > > > dh_shlibdeps -O--parallel > > objdump: /lib/aarch64-linux-gnu/libpthread.so.0: File format not recognized > > dpkg-shlibdeps: error: objdump gave error exit status 1 > > dh_shlibdeps: dpkg-shlibdeps -Tdebian/libupnp6.substvars > > debian/libupnp6/usr/lib/arm-linux-gnueabihf/libthreadutil.so.6.0.4 ... > > returned exit code 1 > > debian/rules:14: recipe for target 'binary' failed > > > > > > Workaround: Just forbidding (chmod 0) access to > > /lib/aarch64-linux-gnu/ and /usr/lib/aarch64-linux-gnu/ fixes the > > problem (the package build succeeds, the packages are ok), so it would > > appear that someone is looking in the wrong places. > > It seems to me you are trying to cross-compile but are not passing the > correct arguments to dpkg-buildpackage? Giving more detail would help, > build logs, the way you invoked dpkg-buildpackage. What are the host > architecture you are trying to build for, etc.
Hi, I am not trying to cross-compile (this is the whole point of using this sytem actually: a reasonably fast native ARM system to build things). The userland is ARM 32 bits: the gcc ouput above is the one from the normal system compiler. ARM64 is present on the system as a foreign architecture, and just used for a few commands, specific to building system images as far as I can see. dpkg-buildpackage is invoked from debuild, which in turn invokes dh_shlibdebs. I am copying a full buildlog at the end (I cut out most of the CC lines, as just bit repetitive and boring...). Setting DEB_BUILD_ARCH=armv7l works for raw dpkg-buildpackages (as an alternative to forbidding access to the aarch64 dirs), but not for debuild (for which the directory interdiction works). The system I am using is described in the following link, I think that looking there will be better than my bad paraphrasing of the same information: http://forum.odroid.com/viewtopic.php?t=18771 Look for the 'Linux Hybrid Kernel64/Debian32' section. Contents of the 64 bits part: odroid32$ sudo ls /usr/lib/aarch64-linux-gnu/ audit gconv odroid32$ sudo ls /lib/aarch64-linux-gnu/ ld-2.19.so libanl.so.1 libcrypt.so.1 libmemusage.so libnss_dns.so.2 libnss_nis.so.2 libresolv-2.19.so libutil-2.19.so ld-linux-aarch64.so.1 libc-2.19.so libdl-2.19.so libnsl-2.19.so libnss_files-2.19.so libnss_nisplus-2.19.so libresolv.so.2 libutil.so.1 libBrokenLocale-2.19.so libc.so.6 libdl.so.2 libnsl.so.1 libnss_files.so.2 libnss_nisplus.so.2 librt-2.19.so libBrokenLocale.so.1 libcidn-2.19.so libgcc_s.so.1 libnss_compat-2.19.so libnss_hesiod-2.19.so libpcprofile.so librt.so.1 libSegFault.so libcidn.so.1 libm-2.19.so libnss_compat.so.2 libnss_hesiod.so.2 libpthread-2.19.so libthread_db-1.0.so libanl-2.19.so libcrypt-2.19.so libm.so.6 libnss_dns-2.19.so libnss_nis-2.19.so libpthread.so.0 libthread_db.so.1 odroid32$ file /usr/bin/* | grep 'ELF 64' /usr/bin/fw_printenv: ELF 64-bit LSB executable, ARM aarch64... /usr/bin/kwboot: ELF 64-bit LSB executable, ARM aarch64... /usr/bin/mkimage: ELF 64-bit LSB executable, ARM aarch64... /usr/bin/mksunxiboot: ELF 64-bit LSB executable, ARM aarch64... # (that's all) Nothing much as you can see, and interdicting access to the directories leaves the system normally usable for a non-root user. Some 32bit bits: odroid32$ ls /lib/arm-linux-gnueabihf/ | wc 146 146 2418 odroid32$ ls /usr/lib/arm-linux-gnueabihf/ | wc 913 913 15206 odroid32$ file /usr/bin/* | grep 'ELF 32' | wc -l 409 odroid32$ ldd /bin/ls libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0xf7304000) libacl.so.1 => /lib/arm-linux-gnueabihf/libacl.so.1 (0xf72ed000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf71fd000) /lib/ld-linux-armhf.so.3 (0xaaaff000) libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xf71a1000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xf718e000) libattr.so.1 => /lib/arm-linux-gnueabihf/libattr.so.1 (0xf717a000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xf7156000) I stand read to run more commands if needed to better qualify the system. Build log follows. Cheers, jf odroid32$ cd upmpdclipack/ odroid32$ cd upmpdcli-1.2.10/ odroid32$ debuild dpkg-buildpackage -rfakeroot -D -us -uc dpkg-buildpackage: source package upmpdcli dpkg-buildpackage: source version 1.2.10-1 dpkg-buildpackage: source distribution unstable dpkg-buildpackage: source changed by Jean-Francois Dockes <j...@dockes.org> dpkg-source --before-build upmpdcli-1.2.10 dpkg-buildpackage: host architecture armhf fakeroot debian/rules clean dh clean --with autotools-dev,python2,systemd --parallel dh_testdir -O--parallel dh_auto_clean -O--parallel make[1]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' test -z "upmpdcli scctl" || rm -f upmpdcli scctl test -z "src/conftree-fixed.cpp src/execmd-fixed.cpp src/mediaserver/cdplugins/cmdtalk-fixed.cpp src/netcon-fixed.cpp" || rm -f src/conftree-fixed.cpp src/execmd-fixed.cpp src/mediaserver/cdplugins/cmdtalk-fixed.cpp src/netcon-fixed.cpp rm -f *.o rm -f scctl_src/*.o rm -f src/*.o rm -f src/mediaserver/*.o rm -f src/mediaserver/cdplugins/*.o rm -f *.tab.c test -z "" || rm -f test . = "." || test -z "" || rm -f rm -f scctl_src/.deps/.dirstamp rm -f scctl_src/.dirstamp rm -f src/.deps/.dirstamp rm -f src/.dirstamp rm -f src/mediaserver/.deps/.dirstamp rm -f src/mediaserver/.dirstamp rm -f src/mediaserver/cdplugins/.deps/.dirstamp rm -f src/mediaserver/cdplugins/.dirstamp rm -f src/config.h src/stamp-h1 rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags rm -f cscope.out cscope.in.out cscope.po.out cscope.files rm -f config.status config.cache config.log configure.lineno config.status.lineno rm -rf scctl_src/.deps src/.deps src/mediaserver/.deps src/mediaserver/cdplugins/.deps rm -f Makefile make[1]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' dh_autotools-dev_restoreconfig -O--parallel dh_clean -O--parallel dpkg-source -b upmpdcli-1.2.10 dpkg-source: info: using source format `3.0 (quilt)' dpkg-source: info: building upmpdcli using existing ./upmpdcli_1.2.10.orig.tar.gz dpkg-source: warning: ignoring deletion of file src/conftree-fixed.cpp, use --include-removal to override dpkg-source: warning: ignoring deletion of file src/execmd-fixed.cpp, use --include-removal to override dpkg-source: warning: ignoring deletion of file src/netcon-fixed.cpp, use --include-removal to override dpkg-source: warning: ignoring deletion of file src/mediaserver/cdplugins/cmdtalk-fixed.cpp, use --include-removal to override dpkg-source: info: building upmpdcli in upmpdcli_1.2.10-1.debian.tar.xz dpkg-source: info: building upmpdcli in upmpdcli_1.2.10-1.dsc debian/rules build dh build --with autotools-dev,python2,systemd --parallel dh_testdir -O--parallel dh_autotools-dev_updateconfig -O--parallel dh_auto_configure -O--parallel configure: WARNING: unrecognized options: --disable-maintainer-mode checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for g++... g++ checking whether the C++ compiler works... yes checking for C++ compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking for style of include used by make... GNU checking dependency style of g++... none checking for gcc... gcc checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking dependency style of gcc... none checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for size_t... yes checking for off_t... yes checking for pthread_create in -lpthread... yes checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for upnpp... yes checking for libmpdclient... yes checking for libmicrohttpd... yes checking for jsoncpp... yes UPMPDCLI_LIBS=-lpthread -lupnpp -lcurl -pthread -lupnp -lthreadutil -lixml -lmpdclient -lmicrohttpd -ljsoncpp checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/config.h config.status: executing depfiles commands configure: WARNING: unrecognized options: --disable-maintainer-mode dh_auto_build -O--parallel make[1]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' sed -e 's;#include "log.h";#include "libupnpp/log.h";' < \ ./src/conftree.cpp > src/conftree-fixed.cpp sed -e 's;#include "log.h";#include "libupnpp/log.h";' < \ ./src/execmd.cpp > src/execmd-fixed.cpp sed -e 's;#include "log.h";#include "libupnpp/log.h";' < \ ./src/mediaserver/cdplugins/cmdtalk.cpp > \ src/mediaserver/cdplugins/cmdtalk-fixed.cpp sed -e 's;#include "log.h";#include "libupnpp/log.h";' < \ ./src/netcon.cpp > src/netcon-fixed.cpp make all-am make[2]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' g++ -DHAVE_CONFIG_H -I. -I./src -DDEBUG -g -Wall -pthread -I/usr/include/upnp -I/usr/include/jsoncpp -I./src -I./src/mediaserver/cdplugins -DDATADIR=\"/usr/share/upmpdcli\" -DCONFIGDIR=\"/etc\" -D_FORTIFY_SOURCE=2 -std=c++11 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -c -o src/avtransport.o src/avtransport.cxx [...] g++ -std=c++11 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -o upmpdcli src/avtransport.o src/closefrom.o src/conftree-fixed.o src/conman.o src/execmd-fixed.o src/httpfs.o src/main.o src/mediaserver/cdplugins/cmdtalk-fixed.o src/mediaserver/cdplugins/plgwithslave.o src/mediaserver/contentdirectory.o src/mediaserver/mediaserver.o src/mpdcli.o src/netcon-fixed.o src/ohinfo.o src/ohmetacache.o src/ohplaylist.o src/ohproduct.o src/ohradio.o src/ohreceiver.o src/ohsndrcv.o src/ohtime.o src/ohvolume.o src/pathut.o src/readfile.o src/renderctl.o src/smallut.o src/upmpd.o src/upmpdutils.o -lpthread -lupnpp -lcurl -pthread -lupnp -lthreadutil -lixml -lmpdclient -lmicrohttpd -ljsoncpp g++ -DHAVE_CONFIG_H -I. -I./src -DDEBUG -g -Wall -pthread -I/usr/include/upnp -I/usr/include/jsoncpp -I./src -I./src/mediaserver/cdplugins -DDATADIR=\"/usr/share/upmpdcli\" -DCONFIGDIR=\"/etc\" -D_FORTIFY_SOURCE=2 -std=c++11 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -c -o scctl_src/scctl.o scctl_src/scctl.cpp g++ -std=c++11 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wl,-z,relro -o scctl scctl_src/scctl.o src/netcon-fixed.o src/smallut.o src/upmpdutils.o -lpthread -lupnpp -lcurl -pthread -lupnp -lthreadutil -lixml -lmpdclient make[2]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[1]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' dh_auto_test -O--parallel make[1]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make check-am make[2]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[2]: Nothing to be done for 'check-am'. make[2]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[1]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' fakeroot debian/rules binary dh binary --with autotools-dev,python2,systemd --parallel dh_testroot -O--parallel dh_prep -O--parallel dh_auto_install -O--parallel make[1]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make install-am make[2]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[3]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/bin' /usr/bin/install -c upmpdcli scctl '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/bin' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/etc' /usr/bin/install -c -m 644 src/upmpdcli.conf-dist '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/etc' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/gmusic' /usr/bin/install -c -m 644 src/mediaserver/cdplugins/gmusic/gmusic-app.py src/mediaserver/cdplugins/gmusic/session.py '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/gmusic' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/pycommon' /usr/bin/install -c -m 644 src/mediaserver/cdplugins/pycommon/cmdtalk.py src/mediaserver/cdplugins/pycommon/cmdtalkplugin.py src/mediaserver/cdplugins/pycommon/conftree.py src/mediaserver/cdplugins/pycommon/routing.py src/mediaserver/cdplugins/pycommon/upmplgmodels.py src/mediaserver/cdplugins/pycommon/upmplgutils.py '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/pycommon' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/qobuz' /usr/bin/install -c -m 644 src/mediaserver/cdplugins/qobuz/debug.py src/mediaserver/cdplugins/qobuz/exception.py src/mediaserver/cdplugins/qobuz/__init__.py src/mediaserver/cdplugins/qobuz/qobuz-app.py src/mediaserver/cdplugins/qobuz/session.py '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/qobuz' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/qobuz/api' /usr/bin/install -c -m 644 src/mediaserver/cdplugins/qobuz/api/easy.py src/mediaserver/cdplugins/qobuz/api/__init__.py src/mediaserver/cdplugins/qobuz/api/raw.py '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/qobuz/api' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/tidal' /usr/bin/install -c -m 644 src/mediaserver/cdplugins/tidal/tidal-app.py '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/tidal' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/tidal/tidalapi' /usr/bin/install -c -m 644 src/mediaserver/cdplugins/tidal/tidalapi/__init__.py src/mediaserver/cdplugins/tidal/tidalapi/models.py '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli/cdplugins/tidal/tidalapi' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli' /usr/bin/install -c -m 644 src/description.xml src/AVTransport.xml src/RenderingControl.xml src/ConnectionManager.xml src/OHProduct.xml src/OHInfo.xml src/OHTime.xml src/OHVolume.xml src/OHPlaylist.xml src/OHReceiver.xml src/OHRadio.xml src/mediaserver/ContentDirectory.xml src/protocolinfo.txt src/presentation.html '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli' /usr/bin/install -c samplescripts/Analog-Input '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli' /bin/mkdir -p '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/man/man1' /usr/bin/install -c -m 644 man/upmpdcli.1 '/home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/man/man1' make install-data-hook make[4]: Entering directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' if test -d ./web; then \ (cd .; tar cvzf - web) > web.tar.gz; fi if test -d ./rdpl2stream; then \ (cd .; rm -rf rdpl2stream/__pycache__/; tar cvzf - rdpl2stream) > \ rdpl2stream.tar.gz; fi (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/etc; test -f upmpdcli.conf || \ mv upmpdcli.conf-dist upmpdcli.conf; chmod 600 upmpdcli.conf) (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli; tar xzf -) < web.tar.gz (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli; tar xzf -) < rdpl2stream.tar.gz (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp/usr/share/upmpdcli; test -d src_scripts || mkdir src_scripts) (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp//usr/share/upmpdcli/cdplugins/tidal; chmod a+x tidal-app.py) (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp//usr/share/upmpdcli/cdplugins/qobuz; chmod a+x qobuz-app.py) (cd /home/dockes/upmpdclipack/upmpdcli-1.2.10/debian/tmp//usr/share/upmpdcli/cdplugins/gmusic; chmod a+x gmusic-app.py) make[4]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[3]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[2]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' make[1]: Leaving directory '/home/dockes/upmpdclipack/upmpdcli-1.2.10' dh_install -O--parallel dh_installdocs -O--parallel dh_installchangelogs -O--parallel dh_python2 -O--parallel I: dh_python2 tools:100: replacing shebang in debian/upmpdcli/usr/share/upmpdcli/Analog-Input I: dh_python2 tools:100: replacing shebang in debian/upmpdcli/usr/share/upmpdcli/rdpl2stream/fetchStream.py dh_systemd_enable -O--parallel dh_installinit -O--parallel dh_systemd_start -O--parallel dh_perl -O--parallel dh_link -O--parallel dh_compress -O--parallel dh_fixperms -O--parallel dh_strip -O--parallel dh_makeshlibs -O--parallel dh_shlibdeps -O--parallel objdump: /lib/aarch64-linux-gnu/libpthread.so.0: File format not recognized dpkg-shlibdeps: error: objdump gave error exit status 1 dh_shlibdeps: dpkg-shlibdeps -Tdebian/upmpdcli.substvars debian/upmpdcli/usr/bin/scctl debian/upmpdcli/usr/bin/upmpdcli returned exit code 1 debian/rules:16: recipe for target 'binary' failed make: *** [binary] Error 1 dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2 debuild: fatal error at line 1376: dpkg-buildpackage -rfakeroot -D -us -uc failed odroid32$