[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#63789: Native compilation broken on the Hurd (with patch)
From: |
Janneke Nieuwenhuizen |
Subject: |
bug#63789: Native compilation broken on the Hurd (with patch) |
Date: |
Fri, 02 Jun 2023 07:27:07 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
Ludovic Courtès writes:
Hello,
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
[..]
>>
>> (snippet
>> #~(begin
>> ;; XXX: The GCC test suite contains files with non-ASCII file
>> ;; names, which cannot be repacked by BOOTSTRAP-ORIGIN. Nor
>> ;; can it be deleted from Guile, so resort to this evil hack.
>> #$(origin-snippet (package-source gcc))
>> (system* #$(file-append coreutils-boot0 "/bin/rm") "-rf"
>>
>> "gcc/testsuite/go.test/test/fixedbugs/issue27836.dir"))))))
>>
>>
>> This is problematic, because coreutils-boot0 doesn't build for the Hurd:
>> coreutils needs hurd headers, and our hurd-headers-boot0 depends
>> on...coreutils-boot0.
>>
>> Why was coreutils-boot0 used instead of the canonical
>> delete-file-recursively?
>
> That was my first reaction too :-), but it’s explained in the comment:
> there are non-ASCII file names that Guile fails to decode (throwing a
> decoding error at that point.)
Ah, I missed that. Makes sense.
> Seeing is believing so I had to try:
>
> applying
> '/gnu/store/5705r4ajxl8lav1hz9xm19w75zdcz1n2-gcc-5.0-libvtv-runpath.patch'...
> applying
> '/gnu/store/c2f49hzb4scsqaccfr8vf74f06z0yvp1-gcc-10-tree-sra-union-handling.patch'...
> find-files:
> gcc-11.3.0/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go: No
> such file or directory
> Backtrace:
Ooh...
> When decoded as UTF-8, those file names look like this:
>
> $ export LC_ALL=en_US.UTF-8
> -rw-r--r-- rguenther/users 192 2022-04-21 07:58
> gcc-11.3.0/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go
> -rw-r--r-- rguenther/users 203 2022-04-21 07:58
> gcc-11.3.0/gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go
...interesting!
>> So, until we can correct the gcc-boot0 snippet problem in the next
>> rebuild cycle (how does that work now that we don't have core-updates
>> anymore?, I made coreutils-boot0 build on the Hurd. See the patch
>> below.
>
> Re “how does that work?”, good question! :-)
:-)
> We should get rid of that hack though.
[..]
>> * gnu/packages/commencement.scm (coreutils-boot0)[arguments]: When building
>> for the hurd, add new phase 'add-hurd_types.h' and use it. Add
>> "ac_cv_member_struct_stat_st_author=no" and -Wl,-rpath for %bootstrap-libc to
>> configure flags when building for the Hurd. Add make-flags with
>> "IGNORE_UNUSED_LIBRARIES_CFLAGS=" to avoid -Wl,--as-needed, which undoes
>> previous rpath option.
[..]
> Neat! This is probably okay but I wonder if we can either shrink this
> patch or use a different strategy.
>
> I tried a few things; I thought we could get ‘coreutils-boot0’ to build
> nothing but ‘rm’ (since the build failure the patch above works around
> is in ‘src/copy.c’), but my attempt below doesn’t work: it insists on
> building other things, including ‘src/copy.c’. I ran out of time but I
> think it should be possible to make it work.
Nice idea!
> Even better would have been ‘--enable-no-install-program=cp’ but
> ‘src/copy.c’ is still getting built.
>
> (Time passes…)
Hm...
> Just as I was about to give up, I looked at:
>
> guix graph -e '(@@ (gnu packages commencement) guile-final)' -s i586-gnu
> -M3 |xdot -
>
> and found the solution:
>
> diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
> index 78cfa4acd0..de3728ae26 100644
> --- a/gnu/packages/commencement.scm
> +++ b/gnu/packages/commencement.scm
> @@ -2333,7 +2333,13 @@ (define gcc-boot0
> ;; names, which cannot be repacked by BOOTSTRAP-ORIGIN. Nor
> ;; can it be deleted from Guile, so resort to this evil hack.
> #$(origin-snippet (package-source gcc))
> - (system* #$(file-append coreutils-boot0 "/bin/rm") "-rf"
> + (system* #$(file-append (let-system system
> + ;; Work around
> + ;;
> <https://issues.guix.gnu.org/63789>.
> + (if (target-hurd? system)
> + %bootstrap-coreutils&co
> + coreutils-boot0))
> + "/bin/rm") "-rf"
>
> "gcc/testsuite/go.test/test/fixedbugs/issue27836.dir"))))))
> (arguments
> (cons*
> How does that sound? :-)
That's great, thanks! Using this now on my current wip-hurd and it's
working for me!
Greetings,
Janneke
> diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
> index 78cfa4acd0..17745705f7 100644
Some nice tricks here, thanks for sharing!
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com