GNU bug report logs - #63258
GCC package lacks librt.so (and instead only provides versioned librt.so.1)

Previous Next

Package: guix;

Reported by: Mekeor Melire <mekeor <at> posteo.de>

Date: Thu, 4 May 2023 09:29:02 UTC

Severity: normal

Merged with 63728

To reply to this bug, email your comments to 63258 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#63258; Package guix. (Thu, 04 May 2023 09:29:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Mekeor Melire <mekeor <at> posteo.de>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Thu, 04 May 2023 09:29:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Mekeor Melire <mekeor <at> posteo.de>
To: bug-guix <at> gnu.org
Cc: Josselin Poiret <dev <at> jpoiret.xyz>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: GCC package lacks librt.so (and instead only provides versioned
 librt.so.1)
Date: Thu, 04 May 2023 09:16:17 +0000
The "gcc" package (as well as the "gcc-toolchain" package) (since 
version 12?) lacks the librt.so file which some stuff links to.

As a consequence, in bug#63012, Josselin Poiret (CC) had to patch 
Zig to not link to that file. Another consequence is that I had to 
install gcc-toolchain:static in order to make GHC compile XMonad.

On #guix IRC channel, Josselin Poiret stated that we should 
include an empty librt.a in the output of the "gcc" package. And 
Ludo (CC) suggested to temporarily include that file only in 
gcc-toolchain, in order to avoid world rebuild.

Here's the full relevant IRC log:

--8<---------------cut here---------------start------------->8---
2023-05-04 09:49:54 mekeor: bjc: for me, gcc-toolchain <at> 12 is 
shipped with librt.so.1 which is present in my ~/.guix-profile/lib 
folder which is listed in my $LIBRARY_PATH variable. still, ghc 
can't find it :/
2023-05-04 09:56:15 jpoiret: mekeor: that's because ghc and others 
look for librt.so, not librt.so.1
2023-05-04 09:56:31 jpoiret: we forgot to include an empty librt.a 
in the out output of gcc unfortunately
2023-05-04 09:56:59 jpoiret: you can add gcc-toolchain:static for 
now
2023-05-04 09:57:04 mekeor: jpoiret: is there a workaround? :) 
also, is there a patch already
2023-05-04 09:57:08 mekeor: oh cool
2023-05-04 09:57:12 jpoiret: I don't think so
2023-05-04 09:57:50 jpoiret: basically librt.so.1 is empty now, 
since everything is provided by libc
2023-05-04 09:59:43 mekeor: the "static" output fixes my problem. 
thank you very much, jpoiret!
2023-05-04 09:59:47 jpoiret: the problem is that it'll require a 
world rebuild so it's not an easy change to make now. But we'll 
probably have to do it anyway
2023-05-04 10:00:01 jpoiret: might as well batch some other 
important changes like updating the glibc again
2023-05-04 10:00:08 jpoiret: just to break everything again :)
2023-05-04 10:00:41 civodul: jpoiret: we could add an empty 
librt.a in gcc-toolchain, rather than gcc?
2023-05-04 10:01:00 civodul: that would address most practical 
issues, no?
2023-05-04 10:01:26 jpoiret: ah, that's right :)
2023-05-04 10:01:55 jpoiret: but still, it's probably a good idea 
to have it in gcc, zig wanted it and I had to patch out -librt
2023-05-04 10:01:59 jpoiret: -lrt *
2023-05-04 10:02:54 civodul: yes, that'd be the right fix, but in 
the meantime we could have the easy fix :-)
--8<---------------cut here---------------end--------------->8---




Information forwarded to bug-guix <at> gnu.org:
bug#63258; Package guix. (Thu, 04 May 2023 19:51:02 GMT) Full text and rfc822 format available.

Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Josselin Poiret <dev <at> jpoiret.xyz>
To: Mekeor Melire <mekeor <at> posteo.de>,
	bug-guix <at> gnu.org
Cc: Josselin Poiret <dev <at> jpoiret.xyz>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH] gnu: gcc-toolchain: Add empty librt.a.
Date: Thu,  4 May 2023 21:50:37 +0200
From: Josselin Poiret <dev <at> jpoiret.xyz>

* gnu/packages/commencememnt.scm (make-gcc-toolchain): Add empty librt.a.
* gnu/packages/base.scm (gcc): Add a warning regarding the missing librt.a.
---
Hi,

This patch should be enough for -lrt to work with gcc-toolchain.  This doesn't
fix the underlying issue for the gcc package though, as it would incur a world
rebuild.

Best,
Josselin

 gnu/packages/base.scm         | 4 ++++
 gnu/packages/commencement.scm | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 6911ea78be..4350fd4041 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -945,6 +945,10 @@ (define-public glibc
                      ;; library is empty by some criterion (such as their file
                      ;; size equaling eight bytes) rather than hardcoding them
                      ;; by name.
+
+                     ;; XXX: We forgot librt.a for the current version!  In
+                     ;; the meantime, gcc-toolchain provides it, but remove
+                     ;; that fix once librt.a is added here.
                      (define empty-static-libraries
                        '("libpthread.a" "libdl.a" "libutil.a" "libanl.a"))
                      (define (empty-static-library? file)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 25e96b1aa6..26d5eb3819 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3452,6 +3452,13 @@ (define* (make-gcc-toolchain gcc
                        (union-build (assoc-ref %outputs "static")
                                     (list (assoc-ref %build-inputs
                                                      "libc-static")))
+                       ;; XXX Remove once an empty librt.a is added to
+                       ;; libc:out.
+                       (copy-file
+                        (string-append (assoc-ref %outputs "out")
+                                       "/lib/libpthread.a")
+                        (string-append (assoc-ref %outputs "out")
+                                       "/lib/librt.a"))
                        #t))))
 
       (native-search-paths

base-commit: f14d3944cc699d1426c31b304fb49b72a579666a
-- 
2.39.2





Merged 63258 63728. Request was from Antero Mejr <antero <at> mailbox.org> to control <at> debbugs.gnu.org. (Fri, 26 May 2023 15:17:03 GMT) Full text and rfc822 format available.

Information forwarded to bug-guix <at> gnu.org:
bug#63258; Package guix. (Fri, 25 Aug 2023 16:37:02 GMT) Full text and rfc822 format available.

Message #13 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Josselin Poiret <dev <at> jpoiret.xyz>
To: Mekeor Melire <mekeor <at> posteo.de>, bug-guix <at> gnu.org
Cc: Ludovic Courtès <ludo <at> gnu.org>
Subject: Re: [PATCH] gnu: gcc-toolchain: Add empty librt.a.
Date: Fri, 25 Aug 2023 18:36:02 +0200
[Message part 1 (text/plain, inline)]
Hi everyone,

Josselin Poiret <dev <at> jpoiret.xyz> writes:

> From: Josselin Poiret <dev <at> jpoiret.xyz>
>
> * gnu/packages/commencememnt.scm (make-gcc-toolchain): Add empty librt.a.
> * gnu/packages/base.scm (gcc): Add a warning regarding the missing librt.a.

Pushed as 6c447ababfb11581a75cff8281e96f701e216692.

This does not fully fix this bug though, since the gcc package still
doesn't provide it.  It will incur a world rebuild if we also do that,
so that should be kept for core-updates.

Best,
-- 
Josselin Poiret
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 1 year and 349 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.