[core-updates-frozen] glibc looks for $sysconfdir/etc/localtime rather than /etc/localtime

  • Done
  • quality assurance status badge
Details
4 participants
  • John Kehayias
  • Leo Famulari
  • Ludovic Courtès
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Ludovic Courtès
Severity
important
L
L
Ludovic Courtès wrote on 26 Sep 2021 22:46
(address . bug-guix@gnu.org)
87czovkqtp.fsf@inria.fr
As podiki reported on IRC, with ‘core-updates-frozen’
ca. 1fb75128a5202b406622da6272bc809c46d1f439, libc looks for
/gnu/store/…-glibc-2.33/etc/localtime instead of /etc/localtime.

Consequently, commands such as ‘date’ display UTC time regardless of the
configured timezone.

Fixing it will require a world rebuild that we could batch with Maxime’s

Thanks,
Ludo’.
L
L
Ludovic Courtès wrote on 26 Sep 2021 22:47
control message for bug #50830
(address . control@debbugs.gnu.org)
87bl4fkqsi.fsf@gnu.org
severity 50830 important
quit
J
J
John Kehayias wrote on 26 Sep 2021 23:06
[core-updates-frozen] glibc looks for $sysconfdir/etc/localtime rather than /etc/localtime
(name . 50830@debbugs.gnu.org)(address . 50830@debbugs.gnu.org)
bXUzWJdaNKU-2XUblcVg5r8dyx8mGZUvEZUJUw-bq1cPItFBC_0hsoS5PZ-3QgqCRHoEFReHQT-TB8mj9gfCcsUvCFA2VI3ePieDxdox8Uo=@protonmail.com
Just to followup, here is the relevant part of my `guix describe`:

guix c6a8d6d
branch: core-updates-frozen
commit: c6a8d6db77520097bd0b2df99bfab659bfcfd64c

On a side note, nearly everything else seems to work well for me on core-updates-frozen. Will be happy to test a post-world-rebuild when that comes.
L
L
Ludovic Courtès wrote on 27 Sep 2021 23:08
(name . John Kehayias)(address . john.kehayias@protonmail.com)(name . 50830@debbugs.gnu.org)(address . 50830@debbugs.gnu.org)
87mtnxhgk5.fsf@gnu.org
Hi,

John Kehayias <john.kehayias@protonmail.com> skribis:

Toggle quote (9 lines)
> Just to followup, here is the relevant part of my `guix describe`:
>
> guix c6a8d6d
> repository URL: https://git.savannah.gnu.org/git/guix.git
> branch: core-updates-frozen
> commit: c6a8d6db77520097bd0b2df99bfab659bfcfd64c
>
> On a side note, nearly everything else seems to work well for me on core-updates-frozen. Will be happy to test a post-world-rebuild when that comes.

Yay, nice!

So here’s a patch to fix it, and another one to do a minor cleanup
operation.

I’ve confirmed that glibc 2.33 builds fine, as well as 2.31.

I haven’t checked cross-compilation yet.

Ludo’.
From d27621e9af056c91e1419ce678614b9dfd5956d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Mon, 27 Sep 2021 14:18:12 +0200
Subject: [PATCH 1/2] gnu: glibc: Remove unneeded nscd patching.

This change had no effect already in glibc 2.29, which has proper
versioning.

* gnu/packages/base.scm (glibc)[arguments]: Remove obsolete
'nscd/nscd_stat.c' 'substitute*' statement.
---
gnu/packages/base.scm | 9 ---------
1 file changed, 9 deletions(-)

Toggle diff (22 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 174af43917..9c45f524dc 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -830,15 +830,6 @@ the store.")
(string-append "#define _PATH_BSHELL \""
bash "/bin/sh\"\n")))
- ;; Nscd uses __DATE__ and __TIME__ to create a string to
- ;; make sure the client and server come from the same
- ;; libc. Use something deterministic instead.
- (substitute* "nscd/nscd_stat.c"
- (("static const char compilation\\[21\\] =.*$")
- (string-append
- "static const char compilation[21] = \""
- (string-take (basename out) 20) "\";\n")))
-
;; Make sure we don't retain a reference to the
;; bootstrap Perl.
(substitute* "malloc/mtrace.pl"
--
2.33.0
From 73120bc3a430b677afb3d9e0ead1567fdb961aa5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Mon, 27 Sep 2021 14:19:48 +0200
Subject: [PATCH 2/2] gnu: glibc: Look for the current timezone in
/etc/localtime.

Reported by podiki on #guix.

Previously, glibc 2.33 would look for
/gnu/store/...-glibc-2.33/etc/localtime instead of /etc/localtime.

* gnu/packages/base.scm (glibc)[arguments]: Remove #:make-flags.
[phases]: In 'pre-configure', modify 'inet/Makefile' instead of
'sunrpc/Makefile' since this is where these bits are in 2.33.
(glibc-2.31)[arguments]: Add 'set-etc-rpc-installation-directory'
phase.
(glibc-2.30): Inherit from GLIBC-2.31.
* gnu/tests/base.scm (run-basic-test)["libc honors /etc/localtime"]: New
test.
---
gnu/packages/base.scm | 25 ++++++++++++++++---------
gnu/tests/base.scm | 11 +++++++++++
2 files changed, 27 insertions(+), 9 deletions(-)

Toggle diff (84 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 9c45f524dc..68f238a2fe 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -775,11 +775,6 @@ the store.")
'("--disable-werror")
'()))
- ;; Arrange so that /etc/rpc & co. go to $out/etc.
- #:make-flags (list (string-append "sysconfdir="
- (assoc-ref %outputs "out")
- "/etc"))
-
#:tests? #f ; XXX
#:phases (modify-phases %standard-phases
(add-before
@@ -793,8 +788,7 @@ the store.")
(bash (or (assoc-ref inputs "static-bash")
(assoc-ref native-inputs "static-bash"))))
;; Install the rpc data base file under `$out/etc/rpc'.
- ;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ];
- (substitute* "sunrpc/Makefile"
+ (substitute* "inet/Makefile"
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
(string-append out "/etc/rpc" suffix "\n"))
(("^install-others =.*$")
@@ -950,11 +944,24 @@ with the Linux kernel.")
"glibc-2.31-hurd-clock_gettime_monotonic.patch"
"glibc-hurd-signal-sa-siginfo.patch"
"glibc-hurd-mach-print.patch"
- "glibc-hurd-gettyent.patch"))))))
+ "glibc-hurd-gettyent.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments glibc)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'configure 'set-etc-rpc-installation-directory
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Install the rpc data base file under `$out/etc/rpc'.
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "sunrpc/Makefile"
+ (("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
+ (string-append out "/etc/rpc" suffix "\n"))
+ (("^install-others =.*$")
+ (string-append "install-others = " out "/etc/rpc\n"))))))))))))
(define-public glibc-2.30
(package
- (inherit glibc)
+ (inherit glibc-2.31)
(version "2.30")
(native-inputs
;; This fails with a build error in libc-tls.c when using GCC 10. Use an
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm
index 4bc3598874..ce4e682200 100644
--- a/gnu/tests/base.scm
+++ b/gnu/tests/base.scm
@@ -87,6 +87,7 @@ Otherwise assume that there is no password for root."
(use-modules (gnu build marionette)
(guix build syscalls)
(srfi srfi-1)
+ (srfi srfi-19)
(srfi srfi-26)
(srfi srfi-64)
(ice-9 match))
@@ -196,6 +197,16 @@ info --version")
(pk 'services services)
'(root #$@(operating-system-shepherd-service-names os)))))
+ (test-equal "libc honors /etc/localtime"
+ -7200 ;CEST = GMT+2
+ ;; Assume OS is configured to have a CEST timezone.
+ (let* ((sept-2021 (time-second
+ (date->time-utc
+ (make-date 0 0 00 12 01 09 2021 7200)))))
+ (marionette-eval
+ `(tm:gmtoff (localtime ,sept-2021))
+ marionette)))
+
(test-equal "/var/log/messages is not world-readable"
#o640 ;<https://bugs.gnu.org/40405>
(begin
--
2.33.0
L
L
Ludovic Courtès wrote on 27 Sep 2021 23:26
control message for bug #50358
(address . control@debbugs.gnu.org)
87lf3hhfqx.fsf@gnu.org
block 50358 by 50830
quit
L
L
Leo Famulari wrote on 28 Sep 2021 01:09
Re: bug#50830: [core-updates-frozen] glibc looks for $sysconfdir/etc/localtime rather than /etc/localtime
(name . Ludovic Courtès)(address . ludo@gnu.org)
YVJPR6Uo1r+oes3m@jasmine.lan
On Mon, Sep 27, 2021 at 11:08:58PM +0200, Ludovic Courtès wrote:
Toggle quote (3 lines)
> So here’s a patch to fix it, and another one to do a minor cleanup
> operation.

I created a "tracking bug" to coordinate rebuilding the world:

L
L
Leo Famulari wrote on 28 Sep 2021 01:11
(no subject)
(address . control@debbugs.gnu.org)
YVJPiWdiI80d7glp@jasmine.lan
block 50860 with 50859
block 50860 with 50830
block 50860 with 50358
L
L
Ludovic Courtès wrote on 28 Sep 2021 11:25
Re: bug#50830: [core-updates-frozen] glibc looks for $sysconfdir/etc/localtime rather than /etc/localtime
(name . Leo Famulari)(address . leo@famulari.name)
87ee99f3vq.fsf@gnu.org
Leo Famulari <leo@famulari.name> skribis:

Toggle quote (8 lines)
> On Mon, Sep 27, 2021 at 11:08:58PM +0200, Ludovic Courtès wrote:
>> So here’s a patch to fix it, and another one to do a minor cleanup
>> operation.
>
> I created a "tracking bug" to coordinate rebuilding the world:
>
> <https://bugs.gnu.org/50860>

There was already https://issues.guix.gnu.org/50358, and I made this
bug a blocker. I’ll email guix-devel so we can coordinate.

Thanks,
Ludo’.
L
L
Leo Famulari wrote on 29 Sep 2021 16:35
(name . Ludovic Courtès)(address . ludo@gnu.org)
YVR5zmgXa25ukyus@jasmine.lan
On Tue, Sep 28, 2021 at 11:25:45AM +0200, Ludovic Courtès wrote:
Toggle quote (13 lines)
> Leo Famulari <leo@famulari.name> skribis:
>
> > On Mon, Sep 27, 2021 at 11:08:58PM +0200, Ludovic Courtès wrote:
> >> So here’s a patch to fix it, and another one to do a minor cleanup
> >> operation.
> >
> > I created a "tracking bug" to coordinate rebuilding the world:
> >
> > <https://bugs.gnu.org/50860>
>
> There was already <https://issues.guix.gnu.org/50358>, and I made this
> bug a blocker. I’ll email guix-devel so we can coordinate.

Oh, my mistake. I hadn't noticed that #50358 was about more than the
Rust bootstrap. I'm closing my duplicated bug.
M
M
Maxim Cournoyer wrote on 12 Nov 2021 07:07
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 50830-done@debbugs.gnu.org)
87y25toqjw.fsf@gmail.com
Hello,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (13 lines)
> As podiki reported on IRC, with ‘core-updates-frozen’
> ca. 1fb75128a5202b406622da6272bc809c46d1f439, libc looks for
> /gnu/store/…-glibc-2.33/etc/localtime instead of /etc/localtime.
>
> Consequently, commands such as ‘date’ display UTC time regardless of the
> configured timezone.
>
> Fixing it will require a world rebuild that we could batch with Maxime’s
> changes at <https://issues.guix.gnu.org/50358>.
>
> Thanks,
> Ludo’.

That's now in core-updates-frozen with commit
8c801194b548d1f2d6f47dfcdd5611ae72e29759.

Thanks!

Closing.

Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 50830@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 50830
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch