Package: src:glibc Version: 2.19-7 Severity: wishlist Tags: patch User: helm...@debian.org Usertags: rebootstrap
While attempting to do multilib glibc stage1 cross builds, i noticed that certain libc*-dev-*_extra_pkg_install defines from debian/sysdeps/*.mk would fail to install absent debian/tmp-*/usr/include/gnu/stubs-*.h files. I dug into the reasons and discovered that Ubuntu's eglibc patch (in its *-cross-toolchain-base packages) would just touch the missing files. While this appears to work, I believe that it is the wrong solution, because it adds cruft. Rather, I suggest to update the place that handles them: debian/patches/any/local-bootstrap-headers.diff Looking at that patch one can see that it predates multilib as it only handles the main stubs.h, but doesn't handle the stubs-$abi.h headers. To that end, I am proposing to update said patch rather than papering over its deficiencies. This should keep the packaging simpler. Please consider the attached patch. Helmut
diff -Nru glibc-2.19/debian/changelog glibc-2.19/debian/changelog --- glibc-2.19/debian/changelog 2014-07-13 01:31:22.000000000 +0200 +++ glibc-2.19/debian/changelog 2014-07-30 09:29:34.000000000 +0200 @@ -1,3 +1,11 @@ +glibc (2.19-7.1) UNRELEASED; urgency=low + + * Non-maintainer upload. + * debian/patches/any/local-bootstrap-headers.diff: Update to handle + stubs-$abi.h which is required for multilib bootstraps. (Closes: #-1) + + -- Helmut Grohne <hel...@subdivi.de> Wed, 30 Jul 2014 09:28:26 +0200 + glibc (2.19-7) unstable; urgency=high * debian/patches/localedata/unsubmitted-tst-setlocale3-ENV.diff: Apply diff -Nru glibc-2.19/debian/patches/any/local-bootstrap-headers.diff glibc-2.19/debian/patches/any/local-bootstrap-headers.diff --- glibc-2.19/debian/patches/any/local-bootstrap-headers.diff 2014-07-06 10:13:13.000000000 +0200 +++ glibc-2.19/debian/patches/any/local-bootstrap-headers.diff 2014-07-30 09:28:22.000000000 +0200 @@ -1,5 +1,11 @@ Taken from EGLIBC, r1484 + r1525 +2014-07-30 Helmut Grohne <hel...@subdivi.de> + + * With the advent of multilib gnu/stubs.h became a meta-header that + includes the correct stubs-$abi.h. So install gnu/stubs.h as usual + and install stubs-bootstrap.h as gnu/stubs-$abi.h + 2007-02-20 Jim Blandy <j...@codesourcery.com> * Makefile (install-headers): Preserve old behavior: depend on @@ -33,48 +39,40 @@ + an empty stubs.h like this will do fine for GCC. */ --- a/Makefile +++ b/Makefile -@@ -68,9 +68,18 @@ - vpath %.h $(subdir-dirs) - - # What to install. --install-others = $(inst_includedir)/gnu/stubs.h - install-bin-script = +@@ -177,6 +177,13 @@ + install-others-nosubdir: $(installed-stubs) + endif +# If we're bootstrapping, install a dummy gnu/stubs.h along with the +# other headers, so 'make install-headers' produces a useable include +# tree. Otherwise, install gnu/stubs.h later, after the rest of the +# build is done. +ifeq ($(install-bootstrap-headers),yes) -+install-headers: $(inst_includedir)/gnu/stubs.h -+else -+install-others = $(inst_includedir)/gnu/stubs.h ++install-headers: $(inst_includedir)/gnu/stubs.h $(installed-stubs) +endif -+ - ifeq (yes,$(build-shared)) - headers += gnu/lib-names.h - endif -@@ -150,6 +159,16 @@ - - subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs) + # Since stubs.h is never needed when building the library, we simplify the + # hairy installation process by producing it in place only as the last part +@@ -184,6 +191,14 @@ + # iterates over all the subdirs; subdir_install in each subdir depends on + # the subdir's stubs file. Having more direct dependencies would result in + # extra iterations over the list for subdirs and many recursive makes. ++ifeq ($(install-bootstrap-headers),yes) +# gnu/stubs.h depends (via the subdir 'stubs' targets) on all the .o +# files in GLIBC. For bootstrapping a GCC/GLIBC pair, an empty +# gnu/stubs.h is good enough. -+ifeq ($(install-bootstrap-headers),yes) -+$(inst_includedir)/gnu/stubs.h: include/stubs-bootstrap.h $(+force) ++$(installed-stubs): include/stubs-bootstrap.h $(+force) + $(make-target-directory) + $(INSTALL_DATA) $< $@ -+ -+installed-stubs = +else - ifndef abi-variants - installed-stubs = $(inst_includedir)/gnu/stubs.h - else -@@ -176,6 +195,7 @@ - - install-others-nosubdir: $(installed-stubs) - endif + $(installed-stubs): include/stubs-prologue.h subdir_install + $(make-target-directory) + @rm -f $(objpfx)stubs.h +@@ -192,6 +207,7 @@ + then echo 'stubs.h unchanged'; \ + else $(INSTALL_DATA) $(objpfx)stubs.h $@; fi + rm -f $(objpfx)stubs.h +endif - - - # Since stubs.h is never needed when building the library, we simplify the + + # This makes the Info or DVI file of the documentation from the Texinfo source. + .PHONY: info dvi pdf html