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

Reply via email to