Bug#797831: glibc: further problems with stage1
On 2015-09-02 23:19, Helmut Grohne wrote:
> Source: glibc
> Version: 2.21-0experimental1
> Tags: patch
> User: helmutg@debian.org
> Usertags: rebootstrap
>
> Hi Aurelien,
Hi,
> thank you very much for applying #766877 and uploading to experimental.
> This has moved us a big step closer to a working stage1. We are not
> quite there yet. At this point I estimate a remaining patch stack for
> the following problems:
>
> * stage1 fails to build for various reasons
> * stage1 libc6-dev not installable due to dependency on libc6
> * wrong set of packages being built for stage1
> * dh_shlibdeps fails
> * linux headers cannot be found
> * various hurd things
>
> Even though I still carry patches for these, it is not clear that all of
> these problems are still reproducible. The above list is meant as an
> outlook, not a cumulative bug report.
>
> This particular bug shall address only the first of those problems
> above, because I have a good understanding and can answer your
> questions. I am attaching a patch and also explain the individual hunks
> in what follows. All of them apply to stage1-specific code.
>
> - *:/lib32 | *:/lib64 | *:/libx32 | *:/lib/arm-linux-gnueabi*) \
> + *:/lib32 | *:/lib64 | *:/libo32 | *:/libx32 | *:/lib/arm-linux-gnueabi*) \
>
> The code fails to identify a certain mips architecture multilib build
> and thus places the multilib build into the main package.
>
> + *:* ) \
> + templates="" \
> + ;; \
>
> This extra case ensures that no templates are interpolated for optimized
> builds (e.g. libc6-i686). These do not generate development packages
> anyway, so dropping them (for stage1) is the right thing to do. Failing
> to do so again overwrites the main package.
>
> - -e "/$$libdir.*.a /d" \
> + -e "/LIBDIR.*\.a /d" \
>
> The immediate error resulting from this sed invocation is that the
> command "u" is not understood by sed. $libdir becomes
> "/usr/lib/triplet". Thus the resulting sed command starts with "//u"
> which sed does not like. Fixing the escaping is not enough however,
> since LIBDIR is not yet interpolated. That only happens a few lines
> later. So instead, the match needs to target non-interpolated filenames
> and thus match LIBDIR.
>
> I hope that the level of detail given is sufficient. If not, please ask.
Thanks for the patch and the detailed explanation. The changes make sense,
so I have applied the patch.
That said looking as this part of the code as a whole, it ends up being a
bit complicated. Basically we define defaults value before the case, but
then we basically handle all cases. Then we use a for loop as a if, as
$templates contains either zero or one value.
The complexity comes from the fact this piece of code has been forked from
the non-staged one. I therefore wonder if we should try to either:
1) Simplify it.
2) make it as common as possible with the non-stage code. I believe it's
not a problem if we generate debhelper files that we don't use in
practice, as long as the stage ones are correct.
> Otherwise, please consider applying the patch. I would appreciate
> another experimental upload that also includes the hurd changes staged
> to SVN by Samuel Thibault already within a month from now. Thank you for
> your support.
For what I understood, Samuel has committed is change in both the unstable
and experimental branches, so the changes should have been in the last
upload to experimental. That said he has done a few more changes in the
meantime.
Aurelien
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
Reply to: