On Mon, Feb 02, 2015 at 12:36:14PM +0000, Dimitri John Ledkov wrote: > I do not agree with severity of this bug report, as no other packages > are FTBFS caused by this issue.
Is it really necessary to discuss severity of a bug with a trivial one-line fix? Either way, let the release team or maintainer downgrade. > It is known that icu-config (and similar legacy/pre-pkg-config > *-config binaries) are not multiarch aware, and only ever output > results for the architecture they were compiled. Exactly, and this is the reason why -dev packages with *-config scripts must never become M-A:same (or hide this via a M-A:foreign -devtools package). > Due to this, it is clearly a M-A:foreign package, and it is up to the > user to pull in the right arch one which in most cases is the > icu-devtools:native one. No, this is wrong. While the user bears the responsibility of actually being able to execute code in the package (or not executing it), the package maintainer bears the responsibility that the behaviour of the contained tools does not vary per architecture. See for example libgpg-error. libgpg-error-dev is M-A:no, because it contains gpg-error-config. A comprehensive discussion can be found in bug #643341. If you find a -dev package with a *-config tool that is not M-A:no, then this is a bug. Can you name one? > Are there any existing dependencies in the archive that cause to pull > in a wrong arch icu-devtools and produce undesired effects? Please find a failing build log of libxml2 attached. Build-Depends were satisfied. Beyond this, having icu-config in a M-A:foreign package utterly breaks cross-compilation of its reverse dependencies. There is no question whether this needs fixing. It may be a question of whether it needs fixing for jessie as cross toolchains didn't make it, but people do build their own as we learned in the ctte bug. Helmut
dpkg-buildpackage: source package libxml2 dpkg-buildpackage: source version 2.9.2+dfsg1-3 dpkg-buildpackage: source distribution unstable dpkg-buildpackage: source changed by Aron Xu <[email protected]> dpkg-source --before-build libxml2-2.9.2+dfsg1 dpkg-buildpackage: host architecture amd64 debian/rules clean dh clean --with autoreconf,python2 dh_testdir debian/rules override_dh_auto_clean make[1]: Entering directory '/tmp/buildd/libxml2-2.9.2+dfsg1' rm -rf builddir debian/tmp-dbg debian/tmp-udeb dh_auto_clean make[1]: Leaving directory '/tmp/buildd/libxml2-2.9.2+dfsg1' dh_autoreconf_clean dh_clean rm -f debian/libxml2.substvars rm -f debian/libxml2.*.debhelper rm -rf debian/libxml2/ rm -f debian/libxml2-utils.substvars rm -f debian/libxml2-utils.*.debhelper rm -rf debian/libxml2-utils/ rm -f debian/libxml2-utils-dbg.substvars rm -f debian/libxml2-utils-dbg.*.debhelper rm -rf debian/libxml2-utils-dbg/ rm -f debian/libxml2-dev.substvars rm -f debian/libxml2-dev.*.debhelper rm -rf debian/libxml2-dev/ rm -f debian/libxml2-dbg.substvars rm -f debian/libxml2-dbg.*.debhelper rm -rf debian/libxml2-dbg/ rm -f debian/libxml2-doc.substvars rm -f debian/libxml2-doc.*.debhelper rm -rf debian/libxml2-doc/ rm -f debian/python-libxml2.substvars rm -f debian/python-libxml2.*.debhelper rm -rf debian/python-libxml2/ rm -f debian/python-libxml2-dbg.substvars rm -f debian/python-libxml2-dbg.*.debhelper rm -rf debian/python-libxml2-dbg/ rm -f debian/*.debhelper.log rm -f debian/files find . \( \( \ \( -path .\*/.git -o -path .\*/.svn -o -path .\*/.bzr -o -path .\*/.hg -o -path .\*/CVS \) -prune -o -type f -a \ \( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \ -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \ -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \ -o -name TAGS -o \( -path '*/.deps/*' -a -name '*.P' \) \ \) -exec rm -f {} + \) -o \ \( -type d -a -name autom4te.cache -prune -exec rm -rf {} + \) \) rm -f *-stamp debian/rules build-arch dh_autoreconf find ! -ipath "./debian/*" -a ! \( -path '*/.git/*' -o -path '*/.hg/*' -o -path '*/.bzr/*' -o -path '*/.svn/*' -o -path '*/CVS/*' \) -a -type f -exec md5sum {} \; > debian/autoreconf.before autoreconf -f -i libtoolize: putting auxiliary files in `.'. libtoolize: copying file `./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'. libtoolize: copying file `m4/libtool.m4' libtoolize: copying file `m4/ltoptions.m4' libtoolize: copying file `m4/ltsugar.m4' libtoolize: copying file `m4/ltversion.m4' libtoolize: copying file `m4/lt~obsolete.m4' configure.ac:52: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated. For more info, see: configure.ac:52: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation configure.ac:60: installing './compile' doc/Makefile.am:21: warning: wildcard tutorial/*.html: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard tutorial/*.c: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard tutorial/*.pdf: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard tutorial/images/*.png: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard tutorial/images/callouts/*.png: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard API*.html: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard *.1: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard *.xsl: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard *.html: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard *.gif: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard html/*.html: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:21: warning: wildcard html/*.png: non-POSIX variable name doc/Makefile.am:21: (probably a GNU make extension) doc/Makefile.am:301: warning: filter-out %/xmlversion.h, $(wildcard $(top_srcdir: non-POSIX variable name doc/Makefile.am:301: (probably a GNU make extension) doc/Makefile.am:301: warning: wildcard $(top_srcdir: non-POSIX variable name doc/Makefile.am:301: (probably a GNU make extension) find ! -ipath "./debian/*" -a ! \( -path '*/.git/*' -o -path '*/.hg/*' -o -path '*/.bzr/*' -o -path '*/.svn/*' -o -path '*/CVS/*' \) -a -type f -exec md5sum {} \; > debian/autoreconf.after dh_auto_configure --builddirectory=builddir/main -- --disable-silent-rules --with-history CC="x86_64-linux-gnu-gcc" CFLAGS="`dpkg-buildflags --get CFLAGS` -Wall -O3" CPPFLAGS="`dpkg-buildflags --get CPPFLAGS`" LDFLAGS="`dpkg-buildflags --get LDFLAGS` -Wl,--as-needed" --cache-file="/tmp/buildd/libxml2-2.9.2+dfsg1/builddir/config.cache" --with-icu --without-python mkdir -p builddir/main cd builddir/main ../../configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --disable-silent-rules --with-history CC=x86_64-linux-gnu-gcc "CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall -O3" CPPFLAGS=-D_FORTIFY_SOURCE=2 "LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed" --cache-file=/tmp/buildd/libxml2-2.9.2\+dfsg1/builddir/config.cache --with-icu --without-python configure: WARNING: unrecognized options: --disable-maintainer-mode configure: creating cache /tmp/buildd/libxml2-2.9.2+dfsg1/builddir/config.cache checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu 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 whether make supports nested variables... (cached) yes checking for gcc... x86_64-linux-gnu-gcc 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 x86_64-linux-gnu-gcc accepts -g... yes checking for x86_64-linux-gnu-gcc option to accept ISO C89... none needed checking whether x86_64-linux-gnu-gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of x86_64-linux-gnu-gcc... none checking whether ln -s works... yes checking how to run the C preprocessor... x86_64-linux-gnu-gcc -E checking for mv... /bin/mv checking for tar... /bin/tar checking for perl... /usr/bin/perl checking for wget... /usr/bin/wget checking for xmllint... /usr/bin/xmllint checking for xsltproc... /usr/bin/xsltproc checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by x86_64-linux-gnu-gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from x86_64-linux-gnu-gcc object... ok checking for sysroot... no checking for mt... no checking if : is a manifest tool... no 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 dlfcn.h... yes checking for objdir... .libs checking if x86_64-linux-gnu-gcc supports -fno-rtti -fno-exceptions... no checking for x86_64-linux-gnu-gcc option to produce PIC... -fPIC -DPIC checking if x86_64-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes checking if x86_64-linux-gnu-gcc static flag -static works... no checking if x86_64-linux-gnu-gcc supports -c -o file.o... yes checking if x86_64-linux-gnu-gcc supports -c -o file.o... (cached) yes checking whether the x86_64-linux-gnu-gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes Checking zlib checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking for gzread in -lz... yes Checking lzma checking for LZMA... yes Checking headers checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking for ANSI C header files... (cached) yes checking fcntl.h usability... yes checking fcntl.h presence... yes checking for fcntl.h... yes checking for unistd.h... (cached) yes checking ctype.h usability... yes checking ctype.h presence... yes checking for ctype.h... yes checking dirent.h usability... yes checking dirent.h presence... yes checking for dirent.h... yes checking errno.h usability... yes checking errno.h presence... yes checking for errno.h... yes checking malloc.h usability... yes checking malloc.h presence... yes checking for malloc.h... yes checking stdarg.h usability... yes checking stdarg.h presence... yes checking for stdarg.h... yes checking for sys/stat.h... (cached) yes checking for sys/types.h... (cached) yes checking for stdint.h... (cached) yes checking for inttypes.h... (cached) yes checking time.h usability... yes checking time.h presence... yes checking for time.h... yes checking ansidecl.h usability... no checking ansidecl.h presence... no checking for ansidecl.h... no checking ieeefp.h usability... no checking ieeefp.h presence... no checking for ieeefp.h... no checking nan.h usability... no checking nan.h presence... no checking for nan.h... no checking math.h usability... yes checking math.h presence... yes checking for math.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking fp_class.h usability... no checking fp_class.h presence... no checking for fp_class.h... no checking float.h usability... yes checking float.h presence... yes checking for float.h... yes checking for stdlib.h... (cached) yes checking for sys/socket.h... yes checking for netinet/in.h... yes checking for arpa/inet.h... yes checking netdb.h usability... yes checking netdb.h presence... yes checking for netdb.h... yes checking sys/time.h usability... yes checking sys/time.h presence... yes checking for sys/time.h... yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking poll.h usability... yes checking poll.h presence... yes checking for poll.h... yes checking sys/mman.h usability... yes checking sys/mman.h presence... yes checking for sys/mman.h... yes checking sys/timeb.h usability... yes checking sys/timeb.h presence... yes checking for sys/timeb.h... yes checking signal.h usability... yes checking signal.h presence... yes checking for signal.h... yes checking for arpa/nameser.h... yes checking for resolv.h... yes checking dl.h usability... no checking dl.h presence... no checking for dl.h... no checking for dlfcn.h... (cached) yes Checking types checking for uint32_t... yes Checking libraries checking for strftime... yes checking for strdup... yes checking for strndup... yes checking for strerror... yes checking for finite... yes checking for isnand... no checking for fp_class... no checking for class... no checking for fpclass... no checking for strftime... (cached) yes checking for localtime... yes checking for gettimeofday... yes checking for ftime... yes checking for stat... yes checking for _stat... no checking for signal... yes checking for rand... yes checking for rand_r... yes checking for srand... yes checking for time... yes checking for isascii... yes checking for mmap... yes checking for munmap... yes checking for putenv... yes checking for va_copy... yes checking whether va_list is an array type... yes checking for library containing gethostent... none required checking for library containing setsockopt... none required checking for library containing connect... none required checking for type of socket length (socklen_t)... socklen_t * checking for const gethostbyname() argument... yes checking for const send() second argument... yes checking whether to enable IPv6... yes checking struct sockaddr::ss_family... yes checking for getaddrinfo... yes checking for isnan... yes checking for isinf... yes checking for shl_load... no checking for shl_load in -ldld... no checking for dlopen... no checking for dlopen in -ldl... yes Checking configuration requirements Enabling multithreaded support checking pthread.h usability... yes checking pthread.h presence... yes checking for pthread.h... yes checking for pthread_join in -lpthread... yes Enabling xmllint shell history checking for tputs in -lncurses... no checking for tputs in -lcurses... no checking for tputs in -ltermcap... no checking for tputs in -lterminfo... no checking for tputs in -ltermlib... no checking readline/history.h usability... no checking readline/history.h presence... no checking for readline/history.h... no checking readline/readline.h usability... no checking readline/readline.h presence... no checking for readline/readline.h... no Enabled Schematron support checking iconv.h usability... yes checking iconv.h presence... yes checking for iconv.h... yes checking for iconv... yes checking for iconv declaration... extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); configure: error: libicu config program icu-config not found dh_auto_configure: ../../configure --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --disable-silent-rules --with-history CC=x86_64-linux-gnu-gcc CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall -O3 CPPFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed --cache-file=/tmp/buildd/libxml2-2.9.2+dfsg1/builddir/config.cache --with-icu --without-python returned exit code 2 debian/rules:43: recipe for target 'doconfigure-main' failed make: *** [doconfigure-main] Error 2 dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2

