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 <[email protected]>
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$