[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: