Source: glib2.0 Version: 2.60.6-1 Tags: patch User: debian-cr...@lists.debian.org Usertags: ftcbfs
glib2.0 fails to cross build from source. The immediate reason is that the toolchain dependency is not satisfiable. Since we don't have toolchain dependency translation, we must revert that for now to cross build it, but this is not the topic of this bug. dh_dwz fails with a strange error. After some digging, it turns out that this is the usual behaviour when debug symbols are missing. As it happens, the build somehow lacked -g. It turns out that meson recently changed its behaviour wrt. CFLAGS and no longer honours the environment variable for cross builds. This regressed many packages and it was fixed in debcrossgen. Now debcrossgen inserts CFLAGS into the cross file. However glib2.0 uses a fork of debcrossgen and it wasn't updated yet. The attached patch updates the debcrossgen fork from meson. Please consider applying it. Helmut
diff --minimal -Nru glib2.0-2.60.6/debian/changelog glib2.0-2.60.6/debian/changelog --- glib2.0-2.60.6/debian/changelog 2019-07-27 17:57:55.000000000 +0200 +++ glib2.0-2.60.6/debian/changelog 2019-07-31 16:42:54.000000000 +0200 @@ -1,3 +1,10 @@ +glib2.0 (2.60.6-1.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * Sync debcrossgen from meson to handle CFLAGS. (Closes: #-1) + + -- Helmut Grohne <hel...@subdivi.de> Wed, 31 Jul 2019 16:42:54 +0200 + glib2.0 (2.60.6-1) unstable; urgency=medium * Team upload diff --minimal -Nru glib2.0-2.60.6/debian/debcrossgen glib2.0-2.60.6/debian/debcrossgen --- glib2.0-2.60.6/debian/debcrossgen 2019-07-27 17:57:55.000000000 +0200 +++ glib2.0-2.60.6/debian/debcrossgen 2019-07-31 16:42:51.000000000 +0200 @@ -26,6 +26,9 @@ If you do not specify the --arch argument, Meson assumes that running plain 'dpkg-architecture' will return correct information for the host system. + +This script must be run in an environment where CPPFLAGS et al are set to the +same values used in the actual compilation. ''' ) @@ -47,6 +50,36 @@ return f raise ValueError("%s not found on $PATH" % program) +def write_args_line(ofile, name, args): + if len(args) == 0: + return + ostr = name + ' = [' + ostr += ', '.join("'" + i + "'" for i in args) + ostr += ']\n' + ofile.write(ostr) + +def write_args_from_envvars(ofile): + import shlex + cppflags = shlex.split(os.environ.get('CPPFLAGS', '')) + cflags = shlex.split(os.environ.get('CFLAGS', '')) + cxxflags = shlex.split(os.environ.get('CXXFLAGS', '')) + ldflags = shlex.split(os.environ.get('LDFLAGS', '')) + + c_args = cppflags + cflags + cpp_args = cppflags + cxxflags + c_link_args = cflags + ldflags + cpp_link_args = cxxflags + ldflags + + write_args_line(ofile, 'c_args', c_args) + write_args_line(ofile, 'cpp_args', cpp_args) + write_args_line(ofile, 'c_link_args', c_link_args) + write_args_line(ofile, 'cpp_link_args', cpp_link_args) + +cpu_family_map = dict(mips64el="mips64", + i686='x86') +cpu_map = dict(armhf="arm7hlf", + mips64el="mips64",) + def run(options): if options.arch is None: cmd = ['dpkg-architecture'] @@ -62,8 +95,10 @@ data[k] = v host_arch = data['DEB_HOST_GNU_TYPE'] host_os = data['DEB_HOST_ARCH_OS'] - host_cpu_family = data['DEB_HOST_GNU_CPU'] - host_cpu = data['DEB_HOST_ARCH'] # Not really correct, should be arm7hlf etc but it is not exposed. + host_cpu_family = cpu_family_map.get(data['DEB_HOST_GNU_CPU'], + data['DEB_HOST_GNU_CPU']) + host_cpu = cpu_map.get(data['DEB_HOST_ARCH'], + data['DEB_HOST_ARCH']) host_endian = data['DEB_HOST_ARCH_ENDIAN'] with open(options.outfile, "w") as ofile: ofile.write('[binaries]\n') @@ -80,6 +115,7 @@ except ValueError: pass # pkg-config is optional ofile.write('\n[properties]\n') + write_args_from_envvars(ofile) for prop in options.set: assert '=' in prop key, value = prop.split('=', 1)