all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#72239: libfaketime (still) broken on i686-linux
@ 2024-07-21 22:21 Ludovic Courtès
  2024-07-22  7:08 ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2024-07-21 22:21 UTC (permalink / raw)
  To: 72239; +Cc: Christopher Baines, Z572

[-- Attachment #1: Type: text/plain, Size: 2230 bytes --]

Hi,

This bug report is to keep track of the discussions around libfaketime
for i686-linux.  Right now, libfaketime segfaults when used to run the
test suite of ‘nss’ on i686-linux.  This can be reproduced in a simple
way as of ‘core-updates’ commit
05e6bd3efe1b03190839d2b91b09fa768c4ef83c:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix shell -s i686-linux libfaketime bash -- \
     faketime 2023-01-01 bash -c true
Caught Segmentation fault
--8<---------------cut here---------------end--------------->8---

Commit 127f1842fb037cc5acfc5406e373ccd723127732 (“gnu: libfaketime:
Support compilation with glibc 2.39 on i686-linux.”) was written under
the assumption that packages in Guix would be built with
‘_TIME_BITS=64’.

Alas, as Z572 found out, packages that use Gnulib are typically built
that way, but other packages, such as ‘nss’ and ‘bash’, are often built
with a 32-bit ‘time_t’.  Our modified libfaketime fails badly in these
cases.

The libfaketime limitations are discussed in
<https://github.com/wolfcw/libfaketime/issues/418>.

OTOH, datefudge explicitly provides replacements for both the 32-bit and
64-bit variants of the relevant libc symbols on 32-bit platforms.  It
seems to work fine with 32-bit time_t programs (like ‘bash’) and 64-bit
time_t programs (like ‘date’ from Coreutils):

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix shell -s i686-linux datefudge bash coreutils -- datefudge 2023-01-01 bash -c true
$ ./pre-inst-env guix shell -s i686-linux datefudge bash coreutils -- datefudge 2023-01-01 date
Sun Jan  1 00:00:00 CET 2023
--8<---------------cut here---------------end--------------->8---

So the easiest short-term solution seems to be using datefudge to run
the ‘nss’ tests on 32-bit platforms, as Chris already suggested before
(patch below; it’s being built right now, I’ll see tomorrow if it
worked…).

Longer-term, as discussed with Z572, we should set up a branch where
we’d ensure “everything” uses 64-bit ‘time_t’ on 32-bit platforms
(that’s beyond the scope of this issue though).

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1654 bytes --]

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 49276817ae..da3847fcb1 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -40,7 +40,8 @@ (define-module (gnu packages nss)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages sqlite))
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages time))
 
 (define-public nspr
   (package
@@ -215,7 +216,8 @@ (define-public nss
                     ;; leading to test failures:
                     ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
                     ;; work around that, set the time to roughly the release date.
-                    (invoke "faketime" "2024-01-23" "./nss/tests/all.sh"))
+                    (invoke #$(if (target-64bit?) "faketime" "datefudge")
+                            "2024-01-23" "./nss/tests/all.sh"))
                   (format #t "test suite not run~%"))))
           (replace 'install
             (lambda* (#:key outputs #:allow-other-keys)
@@ -240,7 +242,9 @@ (define-public nss
                 (copy-recursively (string-append obj "/lib") lib)))))))
     (inputs (list sqlite zlib))
     (propagated-inputs (list nspr))               ;required by nss.pc.
-    (native-inputs (list perl libfaketime which)) ;for tests
+    (native-inputs (list perl
+                         (if (target-64bit?) libfaketime datefudge)
+                         which)) ;for tests
 
     ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
     ;; another build is happening concurrently on the same machine.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#72239: libfaketime (still) broken on i686-linux
  2024-07-21 22:21 bug#72239: libfaketime (still) broken on i686-linux Ludovic Courtès
@ 2024-07-22  7:08 ` Ludovic Courtès
  2024-07-22 12:55   ` Christopher Baines
  0 siblings, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2024-07-22  7:08 UTC (permalink / raw)
  To: 72239; +Cc: Christopher Baines, Z572

Ludovic Courtès <ludovic.courtes@inria.fr> skribis:

> So the easiest short-term solution seems to be using datefudge to run
> the ‘nss’ tests on 32-bit platforms, as Chris already suggested before
> (patch below; it’s being built right now, I’ll see tomorrow if it
> worked…).

It failed:

--8<---------------cut here---------------start------------->8---
$ gunzip < /var/log/guix/drvs/yk/8dxp7v6v29nbhkyiv5x8sk04gszycm-nss-3.99.drv.gz | tail -20
NSS_DISABLE_HW_SHA2=
NSS_DISABLE_PCLMUL=
NSS_DISABLE_AVX=
NSS_DISABLE_ARM_NEON=
NSS_DISABLE_SSSE3=

Tests summary:
--------------
Passed:             79015
Failed:             2
Failed with core:   0
ASan failures:      0
Unknown status:     2
TinderboxPrint:Unknown: 2

error: in phase 'check': uncaught exception:
%exception #<&invoke-error program: "datefudge" arguments: ("2024-01-23" "./nss/tests/all.sh") exit-status: 1 term-signal: #f stop-signal: #f>
phase `check' failed after 12784.8 seconds
command "datefudge" "2024-01-23" "./nss/tests/all.sh" failed with status 1
build process 18 exited with status 256

$ zgrep -B5 ' - FAILED$' /var/log/guix/drvs/yk/8dxp7v6v29nbhkyiv5x8sk04gszycm-nss-3.99.drv.gz
[  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha256
[  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha512
[  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPssMisc

39 FAILED TESTS
gtests.sh: #54: pk11_gtest run successfully  - FAILED
--
[  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha256
[  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha512
[  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPssMisc

39 FAILED TESTS
gtests.sh: #54: pk11_gtest run successfully  - FAILED
--8<---------------cut here---------------end--------------->8---

Not sure if it’s because datefudge doesn’t interpose on every symbol
that we need or if there’s another problem.

Thoughts?

Ludo’.




^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72239: libfaketime (still) broken on i686-linux
  2024-07-22  7:08 ` Ludovic Courtès
@ 2024-07-22 12:55   ` Christopher Baines
  2024-07-23 10:41     ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Christopher Baines @ 2024-07-22 12:55 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Z572, 72239

[-- Attachment #1: Type: text/plain, Size: 3975 bytes --]

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

> Ludovic Courtès <ludovic.courtes@inria.fr> skribis:
>
>> So the easiest short-term solution seems to be using datefudge to run
>> the ‘nss’ tests on 32-bit platforms, as Chris already suggested before
>> (patch below; it’s being built right now, I’ll see tomorrow if it
>> worked…).
>
> It failed:
>
> --8<---------------cut here---------------start------------->8---
> $ gunzip < /var/log/guix/drvs/yk/8dxp7v6v29nbhkyiv5x8sk04gszycm-nss-3.99.drv.gz | tail -20
> NSS_DISABLE_HW_SHA2=
> NSS_DISABLE_PCLMUL=
> NSS_DISABLE_AVX=
> NSS_DISABLE_ARM_NEON=
> NSS_DISABLE_SSSE3=
>
> Tests summary:
> --------------
> Passed:             79015
> Failed:             2
> Failed with core:   0
> ASan failures:      0
> Unknown status:     2
> TinderboxPrint:Unknown: 2
>
> error: in phase 'check': uncaught exception:
> %exception #<&invoke-error program: "datefudge" arguments: ("2024-01-23" "./nss/tests/all.sh") exit-status: 1 term-signal: #f stop-signal: #f>
> phase `check' failed after 12784.8 seconds
> command "datefudge" "2024-01-23" "./nss/tests/all.sh" failed with status 1
> build process 18 exited with status 256
>
> $ zgrep -B5 ' - FAILED$' /var/log/guix/drvs/yk/8dxp7v6v29nbhkyiv5x8sk04gszycm-nss-3.99.drv.gz
> [  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha256
> [  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha512
> [  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPssMisc
>
> 39 FAILED TESTS
> gtests.sh: #54: pk11_gtest run successfully  - FAILED
> -
> [  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha256
> [  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPss4096Sha512
> [  FAILED  ] Pkcs11RsaPssTestWycheproof.RsaPssMisc
>
> 39 FAILED TESTS
> gtests.sh: #54: pk11_gtest run successfully  - FAILED
> --8<---------------cut here---------------end--------------->8---
>
> Not sure if it’s because datefudge doesn’t interpose on every symbol
> that we need or if there’s another problem.
>
> Thoughts?

So you can run just this failing gtests by adding (setenv "NSS_TESTS"
"gtests") to the check phase.

Then if you build with datefudge and without datefudge, there's some
difference in the output when the testsuite starts.

When running without datefudge, the tests work and the cd in gtests.sh
seems to fail:

Running tests for gtests
TIMESTAMP gtests BEGIN: Mon Jul 22 10:09:27 UTC 2024
./gtests.sh: line 25: cd: ./nss/tests: No such file or directory
/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests

But when running with datefudge, the cd seems to work, but the tests
fail:

Running tests for gtests
TIMESTAMP gtests BEGIN: Tue Jan 23 00:00:01 UTC 2024
/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests


This seems to relate to the test failures, as they seem to fail reading
a JSON file because they're using the wrong filename:

[----------] 1 test from Pkcs11AESKeyWrapKwpTest
[ RUN      ] Pkcs11AESKeyWrapKwpTest.TestVectors
json_reader.cc:13: Failure
Value of: f_
  Actual: false
Expected: true
error opening vectors from: /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/../../gtests/pk11_gtest/../common/testvectors/kwp-vectors.json
json_reader.cc:130: Failure
Failed
Unexpected '\0'
json_reader.cc:49: Failure
Expected equality of these values:
  take()
    Which is: '\0'
  ':'
    Which is: ':' (58, 0x3A)
pk11_aeskeywrapkwp_unittest.cc:120: Failure
Expected equality of these values:
  "numberOfTests"
  r.ReadLabel()
    Which is: ""
[  FAILED  ] Pkcs11AESKeyWrapKwpTest.TestVectors (0 ms)


There's two many .. here, it should be
/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/../gtests/pk11_gtest/../common/testvectors/kwp-vectors.json


Removing the cd line from the gtests.sh script seems to get the package
to build for i686-linux with datefudge, so I've sent a patch (#72244) to
this effect. It's odd that the cd command works but the tests fail
though.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72239: libfaketime (still) broken on i686-linux
  2024-07-22 12:55   ` Christopher Baines
@ 2024-07-23 10:41     ` Ludovic Courtès
  2024-07-23 11:40       ` Christopher Baines
  0 siblings, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2024-07-23 10:41 UTC (permalink / raw)
  To: Christopher Baines; +Cc: Z572, 72239

Hi!

Christopher Baines <mail@cbaines.net> skribis:

> When running without datefudge, the tests work and the cd in gtests.sh
> seems to fail:
>
> Running tests for gtests
> TIMESTAMP gtests BEGIN: Mon Jul 22 10:09:27 UTC 2024
> ./gtests.sh: line 25: cd: ./nss/tests: No such file or directory
> /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests
>
> But when running with datefudge, the cd seems to work, but the tests
> fail:
>
> Running tests for gtests
> TIMESTAMP gtests BEGIN: Tue Jan 23 00:00:01 UTC 2024
> /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests

I added ‘set -x’ in ‘gtests.sh’.  With ‘datefudge’, it goes like this:

--8<---------------cut here---------------start------------->8---
log-Running tests for gtests
log-TIMESTAMP gtests BEGIN: Tue Jan 23 00:00:00 CET 2024
log-++ echo FOOOOO
log-FOOOOO
log-+++ dirname /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/all.sh
log-++ cd /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests
log-++ pwd
log-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests
log:++ SOURCE_DIR=/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/../..
log-++ set +x
log-gtests: base_gtest certhigh_gtest certdb_gtest der_gtest pk11_gtest util_gtest freebl_gtest softoken_gtest sysinit_gtest smime_gtest mozpkix_gtest
log-gtests.sh: base_gtest ===============================
log-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -N -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.7/gtests/base_gtest --empty-password
log-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -S -z ../tests_noise -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.7/gtests/base_gtest -n dummy -s CN=dummy -t ,, -x -m 1 -w -2 -v 120 -k ec -q nistp256 -Z SHA256 -1 -2
log-
log-
log-Generating key.  This may take a few moments...
--8<---------------cut here---------------end--------------->8---

*Without* ‘datefudge’:

--8<---------------cut here---------------start------------->8---
log.good-TIMESTAMP gtests BEGIN: Tue Jul 23 12:37:50 CEST 2024
log.good-++ echo FOOOOO
log.good-FOOOOO
log.good-+++ dirname ./nss/tests/all.sh
log.good-++ cd ./nss/tests
log.good-./gtests.sh: line 27: cd: ./nss/tests: No such file or directory
log.good-++ pwd
log.good-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests
log.good:++ SOURCE_DIR=/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests/../..
log.good-++ set +x
log.good-gtests: base_gtest certhigh_gtest certdb_gtest der_gtest pk11_gtest util_gtest freebl_gtest softoken_gtest sysinit_gtest smime_gtest mozpkix_gtest
log.good-gtests.sh: base_gtest ===============================
log.good-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -N -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.6/gtests/base_gtest --empty-password
log.good-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -S -z ../tests_noise -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.6/gtests/base_gtest -n dummy -s CN=dummy -t ,, -x -m 1 -w -2 -v 120 -k ec -q nistp256 -Z SHA256 -1 -2
log.good-
log.good-
log.good-Generating key.  This may take a few moments...
--8<---------------cut here---------------end--------------->8---

In the latter case, the scripts gets a relative file name, which makes
it fail to cd, which then makes it succeed by chance.

This script looks extremely fragile.

My suggestion would be to:

  (substitute* "nss/tests/gtests/gtests.sh"
    (("SOURCE_DIR=.*")
     (string-append "SOURCE_DIR=" (getcwd) "/nss\n")))

WDYT?

(There’s a tension between getting a reasonably good understanding of
what’s happening and moving forward!)

Ludo’.




^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72239: libfaketime (still) broken on i686-linux
  2024-07-23 10:41     ` Ludovic Courtès
@ 2024-07-23 11:40       ` Christopher Baines
  2024-07-23 21:11         ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Christopher Baines @ 2024-07-23 11:40 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Z572, 72239

[-- Attachment #1: Type: text/plain, Size: 4157 bytes --]

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

> Hi!
>
> Christopher Baines <mail@cbaines.net> skribis:
>
>> When running without datefudge, the tests work and the cd in gtests.sh
>> seems to fail:
>>
>> Running tests for gtests
>> TIMESTAMP gtests BEGIN: Mon Jul 22 10:09:27 UTC 2024
>> ./gtests.sh: line 25: cd: ./nss/tests: No such file or directory
>> /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests
>>
>> But when running with datefudge, the cd seems to work, but the tests
>> fail:
>>
>> Running tests for gtests
>> TIMESTAMP gtests BEGIN: Tue Jan 23 00:00:01 UTC 2024
>> /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests
>
> I added ‘set -x’ in ‘gtests.sh’.  With ‘datefudge’, it goes like this:
>
> --8<---------------cut here---------------start------------->8---
> log-Running tests for gtests
> log-TIMESTAMP gtests BEGIN: Tue Jan 23 00:00:00 CET 2024
> log-++ echo FOOOOO
> log-FOOOOO
> log-+++ dirname /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/all.sh
> log-++ cd /tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests
> log-++ pwd
> log-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests
> log:++ SOURCE_DIR=/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/../..
> log-++ set +x
> log-gtests: base_gtest certhigh_gtest certdb_gtest der_gtest pk11_gtest util_gtest freebl_gtest softoken_gtest sysinit_gtest smime_gtest mozpkix_gtest
> log-gtests.sh: base_gtest ===============================
> log-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -N -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.7/gtests/base_gtest --empty-password
> log-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -S -z ../tests_noise -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.7/gtests/base_gtest -n dummy -s CN=dummy -t ,, -x -m 1 -w -2 -v 120 -k ec -q nistp256 -Z SHA256 -1 -2
> log-
> log-
> log-Generating key.  This may take a few moments...
> --8<---------------cut here---------------end--------------->8---
>
> *Without* ‘datefudge’:
>
> --8<---------------cut here---------------start------------->8---
> log.good-TIMESTAMP gtests BEGIN: Tue Jul 23 12:37:50 CEST 2024
> log.good-++ echo FOOOOO
> log.good-FOOOOO
> log.good-+++ dirname ./nss/tests/all.sh
> log.good-++ cd ./nss/tests
> log.good-./gtests.sh: line 27: cd: ./nss/tests: No such file or directory
> log.good-++ pwd
> log.good-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests
> log.good:++ SOURCE_DIR=/tmp/guix-build-nss-3.99.drv-0/nss-3.99/nss/tests/gtests/../..
> log.good-++ set +x
> log.good-gtests: base_gtest certhigh_gtest certdb_gtest der_gtest pk11_gtest util_gtest freebl_gtest softoken_gtest sysinit_gtest smime_gtest mozpkix_gtest
> log.good-gtests.sh: base_gtest ===============================
> log.good-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -N -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.6/gtests/base_gtest --empty-password
> log.good-/tmp/guix-build-nss-3.99.drv-0/nss-3.99/dist/Linux6.9_x86_gcc_glibc_PTH_DBG.OBJ/bin/certutil -S -z ../tests_noise -d /tmp/guix-build-nss-3.99.drv-0/nss-3.99/tests_results/security/guix-hpc5.6/gtests/base_gtest -n dummy -s CN=dummy -t ,, -x -m 1 -w -2 -v 120 -k ec -q nistp256 -Z SHA256 -1 -2
> log.good-
> log.good-
> log.good-Generating key.  This may take a few moments...
> --8<---------------cut here---------------end--------------->8---
>
> In the latter case, the scripts gets a relative file name, which makes
> it fail to cd, which then makes it succeed by chance.
>
> This script looks extremely fragile.
>
> My suggestion would be to:
>
>   (substitute* "nss/tests/gtests/gtests.sh"
>     (("SOURCE_DIR=.*")
>      (string-append "SOURCE_DIR=" (getcwd) "/nss\n")))
>
> WDYT?

That looks good to me.

In a related note, I was going to push the original patch yesterday, but
I got stuck rebasing core-updates. There's some substantial rust changes
on the branch which clash with master.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 987 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#72239: libfaketime (still) broken on i686-linux
  2024-07-23 11:40       ` Christopher Baines
@ 2024-07-23 21:11         ` Ludovic Courtès
  2024-07-26  9:13           ` Ludovic Courtès
  0 siblings, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2024-07-23 21:11 UTC (permalink / raw)
  To: Christopher Baines; +Cc: Z572, 72239

[-- Attachment #1: Type: text/plain, Size: 342 bytes --]

Hi,

Christopher Baines <mail@cbaines.net> skribis:

>> My suggestion would be to:
>>
>>   (substitute* "nss/tests/gtests/gtests.sh"
>>     (("SOURCE_DIR=.*")
>>      (string-append "SOURCE_DIR=" (getcwd) "/nss\n")))
>>
>> WDYT?
>
> That looks good to me.

I have tested the following patch and successfully built nss on
i686-linux with it:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 2369 bytes --]

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 49276817ae..4b4d907e61 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -40,7 +40,8 @@ (define-module (gnu packages nss)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages perl)
-  #:use-module (gnu packages sqlite))
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages time))
 
 (define-public nspr
   (package
@@ -211,11 +212,21 @@ (define-public nss
                     (substitute* "nss/tests/dbtests/dbtests.sh"
                       ((" -lt 5") " -lt 50"))
 
+                    #$@(if (target-64bit?)
+                           '()
+                           ;; The script fails to determine the source
+                           ;; directory when running under 'datefudge' (see
+                           ;; <https://issues.guix.gnu.org/72239>).  Help it.
+                           #~((substitute* "nss/tests/gtests/gtests.sh"
+                                (("SOURCE_DIR=.*")
+                                 (string-append "SOURCE_DIR=" (getcwd) "/nss\n")))))
+
                     ;; The "PayPalEE.cert" certificate expires every six months,
                     ;; leading to test failures:
                     ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>.  To
                     ;; work around that, set the time to roughly the release date.
-                    (invoke "faketime" "2024-01-23" "./nss/tests/all.sh"))
+                    (invoke #$(if (target-64bit?) "faketime" "datefudge")
+                            "2024-01-23" "./nss/tests/all.sh"))
                   (format #t "test suite not run~%"))))
           (replace 'install
             (lambda* (#:key outputs #:allow-other-keys)
@@ -240,7 +251,9 @@ (define-public nss
                 (copy-recursively (string-append obj "/lib") lib)))))))
     (inputs (list sqlite zlib))
     (propagated-inputs (list nspr))               ;required by nss.pc.
-    (native-inputs (list perl libfaketime which)) ;for tests
+    (native-inputs (list perl
+                         (if (target-64bit?) libfaketime datefudge)
+                         which)) ;for tests
 
     ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
     ;; another build is happening concurrently on the same machine.

[-- Attachment #3: Type: text/plain, Size: 35 bytes --]


Go for it?

Thanks,
Ludo’.

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#72239: libfaketime (still) broken on i686-linux
  2024-07-23 21:11         ` Ludovic Courtès
@ 2024-07-26  9:13           ` Ludovic Courtès
  0 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2024-07-26  9:13 UTC (permalink / raw)
  To: Christopher Baines; +Cc: Z572, 72239-done

Hi,

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

> I have tested the following patch and successfully built nss on
> i686-linux with it:

I pushed it as 21fe1e077aa77488bd413ef3255973c60d7468fe on
‘core-updates’.

Ludo’.




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-07-26  9:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-21 22:21 bug#72239: libfaketime (still) broken on i686-linux Ludovic Courtès
2024-07-22  7:08 ` Ludovic Courtès
2024-07-22 12:55   ` Christopher Baines
2024-07-23 10:41     ` Ludovic Courtès
2024-07-23 11:40       ` Christopher Baines
2024-07-23 21:11         ` Ludovic Courtès
2024-07-26  9:13           ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.