GNU bug report logs - #73152
[PATCH 0/6] NSS updates

Previous Next

Package: guix-patches;

Reported by: Ian Eure <ian <at> retrospec.tv>

Date: Mon, 9 Sep 2024 17:54:02 UTC

Severity: normal

Tags: patch

Done: Ian Eure <ian <at> retrospec.tv>

To reply to this bug, email your comments to 73152 AT debbugs.gnu.org.
There is no need to reopen the bug first.

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

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


Report forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:54:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ian Eure <ian <at> retrospec.tv>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 09 Sep 2024 17:54:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: guix-patches <at> gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 0/6] NSS updates
Date: Mon,  9 Sep 2024 10:52:48 -0700
Hello,

This is a first pass at getting the nss packages into shape, as I proposed
earlier this year[1].  Many packages depend on nss, so these patches need to
be applied to a new branch -- my suggestion is `nss-updates', but I have no
strong preference.

This patch series:

- Ungrafts nss
- Factors out package creation into the `make-nss' procedure.
- Updates nss and nss-rapid to use that procedure.
- Updates nss and nss-certs to 3.102.1, the current ESR.
- Updates nss-rapid to 3.104, the latest release.
- Removes nspr-4.32, as it doesn’t appear to be used by anything.

[1]: https://lists.gnu.org/archive/html/guix-devel/2024-06/msg00318.html

Ian Eure (6):
  gnu: Remove nss/fixed.
  gnu: Remove nspr-4.32.
  gnu: Add make-nss.
  gnu: nss: Update to 3.102.1.
  gnu: nss-rapid: Update to 3.104.
  gnu: nss-certs: Update to 3.102.1.

 gnu/packages/certs.scm |   4 +-
 gnu/packages/nss.scm   | 208 +++++++++++------------------------------
 2 files changed, 59 insertions(+), 153 deletions(-)

-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:56:01 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 1/1] gnu: nss-certs: Update to 3.102.1.
Date: Mon,  9 Sep 2024 10:55:33 -0700
* gnu/packages/certs.scm (nss-certs): Update to 3.102.1.

Change-Id: Ibb0b39ef97e04afc37c62c5dc23ab93eef1c1f10
---
 gnu/packages/certs.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index e2de6b168b..9756b089c0 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -133,7 +133,7 @@ (define-public nss-certs
     ;; FIXME We used to refer to the nss package here, but that eventually caused
     ;; module cycles.  The below is a quick copy-paste job that must be kept in
     ;; sync manually.  Surely there's a better way…?
-    (version "3.99")
+    (version "3.102.1")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -144,7 +144,7 @@ (define-public nss-certs
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
+                "1k1pjxz0ab4lg8xqggbb8pw77c1q8h4bldi09z4pj5g4hwsjv62l"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:57:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 1/6] gnu: Remove nss/fixed.
Date: Mon,  9 Sep 2024 10:55:34 -0700
* gnu/packages/nss.scm (nss/fixed): Delete variable.

Change-Id: I0a071a8c3c4a9e2a24b873177402735912192212
---
 gnu/packages/nss.scm | 51 --------------------------------------------
 1 file changed, 51 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 6c60e9fbae..718a3ba4c0 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -271,57 +271,6 @@ (define-public nss
 security standards.")
     (license license:mpl2.0)))
 
-(define-public nss/fixed
-  (let ((actual-version "3.99"))
-    (hidden-package
-     (package
-       (inherit nss)
-       (version (string-append actual-version ".0")) ;for grafts requirements
-       (source (origin
-                 (inherit (package-source nss))
-                 (uri (let ((version-with-underscores
-                             (string-join (string-split actual-version #\.) "_")))
-                        (string-append
-                         "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                         "releases/NSS_" version-with-underscores "_RTM/src/"
-                         "nss-" actual-version ".tar.gz")))
-                 (sha256
-                  (base32
-                   "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))))
-       (arguments
-        (substitute-keyword-arguments (package-arguments nss)
-          ((#:phases phases)
-           #~(modify-phases #$phases
-               (replace 'check
-                 (lambda* (#:key tests? #:allow-other-keys)
-                   (if tests?
-                       (begin
-                         ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for
-                         ;; testing.  The latter requires a working DNS or /etc/hosts.
-                         (setenv "DOMSUF" "localdomain")
-                         (setenv "USE_IP" "TRUE")
-                         (setenv "IP_ADDRESS" "127.0.0.1")
-
-                         ;; This specific test is looking at performance "now
-                         ;; verify that we can quickly dump a database", and
-                         ;; we're not testing performance here (especially
-                         ;; since we're using faketime), so raise the
-                         ;; threshold
-                         (substitute* "nss/tests/dbtests/dbtests.sh"
-                           ((" -lt 5") " -lt 50"))
-
-                         ;; Since the test suite is very lengthy, run the test
-                         ;; suite once, not thrice as done by default, by
-                         ;; selecting only the 'standard' cycle.
-                         (setenv "NSS_CYCLES" "standard")
-
-                         ;; 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"))
-                       (format #t "test suite not run~%"))))))))))))
-
 ;; nss-rapid tracks the rapid release channel.  Unless your package requires a
 ;; newer version, you should prefer the `nss' package, which tracks the ESR
 ;; channel.
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:57:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 2/6] gnu: Remove nspr-4.32.
Date: Mon,  9 Sep 2024 10:55:35 -0700
* gnu/packages/nss.scm (nspr-4.32): Delete variable.

Change-Id: I05c97fe6fc32d045618334df118a84836c0d0261
---
 gnu/packages/nss.scm | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 718a3ba4c0..60b4b34d4e 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -94,18 +94,6 @@ (define-public nspr
 in the Mozilla clients.")
     (license license:mpl2.0)))
 
-(define-public nspr-4.32
-  (package
-    (inherit nspr)
-    (version "4.32")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
-                   version "/src/nspr-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0v3zds1id71j5a5si42a658fjz8nv2f6zp6w4gqrqmdr6ksz8sxv"))))))
 
 ;; nss should track ESRs, but currently doesn't.  3.102.1 is the current ESR.
 
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:57:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 3/6] gnu: Add make-nss.
Date: Mon,  9 Sep 2024 10:55:36 -0700
* gnu/packages/nss.scm (make-nss): New variable.
NSS builds require time-shifting to their approximate release date to build
repeatably, because it ships with test certificates which expire.  To avoid
duplicating the whole package definition between `nss' and `nss-rapid', move
the bulk of the definition into `make-nss', which accepts a version, hash, and
release date, allowing reuse between the two definitions.

Change-Id: Iaab1bb167ceed985a3dcde57f7fe35dce3deaa36
---
 gnu/packages/nss.scm | 166 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 166 insertions(+)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 60b4b34d4e..b51bebda3d 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -94,6 +94,172 @@ (define-public nspr
 in the Mozilla clients.")
     (license license:mpl2.0)))
 
+(define* (make-nss #:key version release-date hash)
+  (package
+    (name "nss")
+    ;; IMPORTANT: Also update and test the nss-certs package, which duplicates
+    ;; version and source to avoid a top-level variable reference & module
+    ;; cycle.
+    (version version)
+    (source
+     (origin
+       (method url-fetch)
+       (uri (let ((version-with-underscores
+                   (string-join (string-split version #\.) "_")))
+              (string-append
+               "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+               "releases/NSS_" version-with-underscores "_RTM/src/"
+               "nss-" version ".tar.gz")))
+       (sha256
+        (base32 hash))
+       ;; Create nss.pc and nss-config.
+       (patches (search-patches "nss-3.56-pkgconfig.patch"
+                                "nss-getcwd-nonnull.patch"
+                                "nss-increase-test-timeout.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Delete the bundled copy of these libraries.
+           (delete-file-recursively "nss/lib/zlib")
+           (delete-file-recursively "nss/lib/sqlite")))))
+    (build-system gnu-build-system)
+    (outputs '("out" "bin"))
+    (arguments
+     (list
+      #:make-flags
+      #~(let ((rpath (string-append "-Wl,-rpath=" #$output "/lib/nss")))
+          (list "-C" "nss"
+                (string-append "PREFIX=" #$output)
+                "NSDISTMODE=copy"
+                "NSS_USE_SYSTEM_SQLITE=1"
+                ;; The gtests fail to compile on riscv64.
+                ;; Skipping them doesn't affect the test suite.
+                #$@(if (target-riscv64?)
+                       #~("NSS_DISABLE_GTESTS=1")
+                       #~())
+                ;; Ensure we are building for the (%current-target-system).
+                #$@(if (%current-target-system)
+                       #~((string-append
+                           "OS_TEST="
+                           (string-take #$(%current-target-system)
+                                        (string-index #$(%current-target-system) #\-)))
+                          (string-append
+                           "KERNEL=" (cond (#$(target-hurd?) "gnu")
+                                           (#$(target-linux?) "linux")
+                                           (else ""))))
+                       #~())
+                #$@(if (%current-target-system)
+                       #~("CROSS_COMPILE=1")
+                       #~())
+                (string-append "NSPR_INCLUDE_DIR="
+                               (search-input-directory %build-inputs
+                                                       "include/nspr"))
+                ;; Add $out/lib/nss to RPATH.
+                (string-append "RPATH=" rpath)
+                (string-append "LDFLAGS=" rpath)))
+      #:modules '((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 match)
+                  (srfi srfi-26))
+      #:tests? (not (or (%current-target-system)
+                        ;; Tests take more than 30 hours on some architectures.
+                        (target-riscv64?)
+                        (target-ppc32?)))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'configure
+            (lambda _
+              (setenv "CC" #$(cc-for-target))
+              (setenv "CCC" #$(cxx-for-target))
+              (setenv "NATIVE_CC" "gcc")
+              ;; No VSX on powerpc-linux.
+              #$@(if (target-ppc32?)
+                     #~((setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
+                     #~())
+              ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
+              #$@(if (target-64bit?)
+                     #~((setenv "USE_64" "1"))
+                     #~())))
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (if tests?
+                  (begin
+                    ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for
+                    ;; testing.  The latter requires a working DNS or /etc/hosts.
+                    (setenv "DOMSUF" "localdomain")
+                    (setenv "USE_IP" "TRUE")
+                    (setenv "IP_ADDRESS" "127.0.0.1")
+
+                    ;; This specific test is looking at performance "now
+                    ;; verify that we can quickly dump a database", and
+                    ;; we're not testing performance here (especially
+                    ;; since we're using faketime), so raise the
+                    ;; threshold
+                    (substitute* "nss/tests/dbtests/dbtests.sh"
+                      ((" -lt 5") " -lt 50"))
+
+                    ;; Since the test suite is very lengthy, run the test
+                    ;; suite once, not thrice as done by default, by
+                    ;; selecting only the 'standard' cycle.
+                    (setenv "NSS_CYCLES" "standard")
+
+                    #$@(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 #$(if (target-64bit?) "faketime" "datefudge")
+                            #$release-date "./nss/tests/all.sh"))
+                  (format #t "test suite not run~%"))))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (bin (string-append (assoc-ref outputs "bin") "/bin"))
+                     (inc (string-append out "/include/nss"))
+                     (lib (string-append out "/lib/nss"))
+                     (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
+                            ((obj) (string-append "dist/" obj)))))
+                ;; Install nss-config to $out/bin.
+                (install-file (string-append obj "/bin/nss-config")
+                              (string-append out "/bin"))
+                (delete-file (string-append obj "/bin/nss-config"))
+                ;; Install nss.pc to $out/lib/pkgconfig.
+                (install-file (string-append obj "/lib/pkgconfig/nss.pc")
+                              (string-append out "/lib/pkgconfig"))
+                (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
+                (rmdir (string-append obj "/lib/pkgconfig"))
+                ;; Install other files.
+                (copy-recursively "dist/public/nss" inc)
+                (copy-recursively (string-append obj "/bin") bin)
+                (copy-recursively (string-append obj "/lib") lib)))))))
+    (inputs (list sqlite zlib))
+    (propagated-inputs (list nspr))               ;required by nss.pc.
+    (native-inputs (list perl                     ;for tests
+                         (if (target-64bit?) libfaketime datefudge)
+                         which))
+
+    ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
+    ;; another build is happening concurrently on the same machine.
+    (properties '((timeout . 216000)))  ;60 hours
+
+    (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
+    (synopsis "Network Security Services")
+    (description
+     "Network Security Services (@dfn{NSS}) is a set of libraries designed to
+support cross-platform development of security-enabled client and server
+applications.  Applications built with NSS can support SSL v2 and v3, TLS,
+PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
+security standards.")
+    (license license:mpl2.0)))
 
 ;; nss should track ESRs, but currently doesn't.  3.102.1 is the current ESR.
 
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:57:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 4/6] gnu: nss: Update to 3.102.1.
Date: Mon,  9 Sep 2024 10:55:37 -0700
gnu/packages/nss.scm (nss): Update to 3.102.1.

Change-Id: Ic24624279b1d2efbe6f4dd82cb73cc63f50f2e14
---
 gnu/packages/nss.scm | 172 +++----------------------------------------
 1 file changed, 10 insertions(+), 162 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index b51bebda3d..b4fdd13abc 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -261,169 +261,17 @@ (define* (make-nss #:key version release-date hash)
 security standards.")
     (license license:mpl2.0)))
 
-;; nss should track ESRs, but currently doesn't.  3.102.1 is the current ESR.
-
 (define-public nss
-  (package
-    (name "nss")
-    ;; IMPORTANT: Also update and test the nss-certs package, which duplicates
-    ;; version and source to avoid a top-level variable reference & module
-    ;; cycle.
-    (version "3.99")
-    (source (origin
-              (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
-                     (string-append
-                      "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                      "releases/NSS_" version-with-underscores "_RTM/src/"
-                      "nss-" version ".tar.gz")))
-              (sha256
-               (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
-              ;; Create nss.pc and nss-config.
-              (patches (search-patches "nss-3.56-pkgconfig.patch"
-                                       "nss-getcwd-nonnull.patch"
-                                       "nss-increase-test-timeout.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               '(begin
-                  ;; Delete the bundled copy of these libraries.
-                  (delete-file-recursively "nss/lib/zlib")
-                  (delete-file-recursively "nss/lib/sqlite")))))
-    (build-system gnu-build-system)
-    (outputs '("out" "bin"))
-    (arguments
-     (list
-      #:make-flags
-      #~(let ((rpath (string-append "-Wl,-rpath=" #$output "/lib/nss")))
-          (list "-C" "nss"
-                (string-append "PREFIX=" #$output)
-                "NSDISTMODE=copy"
-                "NSS_USE_SYSTEM_SQLITE=1"
-                ;; The gtests fail to compile on riscv64.
-                ;; Skipping them doesn't affect the test suite.
-                #$@(if (target-riscv64?)
-                       #~("NSS_DISABLE_GTESTS=1")
-                       #~())
-                ;; Ensure we are building for the (%current-target-system).
-                #$@(if (%current-target-system)
-                       #~((string-append
-                            "OS_TEST="
-                            (string-take #$(%current-target-system)
-                                         (string-index #$(%current-target-system) #\-)))
-                          (string-append
-                            "KERNEL=" (cond (#$(target-hurd?) "gnu")
-                                            (#$(target-linux?) "linux")
-                                            (else ""))))
-                       #~())
-                #$@(if (%current-target-system)
-                       #~("CROSS_COMPILE=1")
-                       #~())
-                (string-append "NSPR_INCLUDE_DIR="
-                               (search-input-directory %build-inputs
-                                                       "include/nspr"))
-                ;; Add $out/lib/nss to RPATH.
-                (string-append "RPATH=" rpath)
-                (string-append "LDFLAGS=" rpath)))
-      #:modules '((guix build gnu-build-system)
-                  (guix build utils)
-                  (ice-9 ftw)
-                  (ice-9 match)
-                  (srfi srfi-26))
-      #:tests? (not (or (%current-target-system)
-                        ;; Tests take more than 30 hours on some architectures.
-                        (target-riscv64?)
-                        (target-ppc32?)))
-      #:phases
-      #~(modify-phases %standard-phases
-          (replace 'configure
-            (lambda _
-              (setenv "CC" #$(cc-for-target))
-              (setenv "CCC" #$(cxx-for-target))
-              (setenv "NATIVE_CC" "gcc")
-              ;; No VSX on powerpc-linux.
-              #$@(if (target-ppc32?)
-                     #~((setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
-                     #~())
-              ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
-              #$@(if (target-64bit?)
-                     #~((setenv "USE_64" "1"))
-                     #~())))
-          (replace 'check
-            (lambda* (#:key tests? #:allow-other-keys)
-              (if tests?
-                  (begin
-                    ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for
-                    ;; testing.  The latter requires a working DNS or /etc/hosts.
-                    (setenv "DOMSUF" "localdomain")
-                    (setenv "USE_IP" "TRUE")
-                    (setenv "IP_ADDRESS" "127.0.0.1")
-
-                    ;; This specific test is looking at performance "now
-                    ;; verify that we can quickly dump a database", and
-                    ;; we're not testing performance here (especially
-                    ;; since we're using faketime), so raise the
-                    ;; threshold
-                    (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 #$(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)
-              (let* ((out (assoc-ref outputs "out"))
-                     (bin (string-append (assoc-ref outputs "bin") "/bin"))
-                     (inc (string-append out "/include/nss"))
-                     (lib (string-append out "/lib/nss"))
-                     (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
-                            ((obj) (string-append "dist/" obj)))))
-                ;; Install nss-config to $out/bin.
-                (install-file (string-append obj "/bin/nss-config")
-                              (string-append out "/bin"))
-                (delete-file (string-append obj "/bin/nss-config"))
-                ;; Install nss.pc to $out/lib/pkgconfig.
-                (install-file (string-append obj "/lib/pkgconfig/nss.pc")
-                              (string-append out "/lib/pkgconfig"))
-                (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
-                (rmdir (string-append obj "/lib/pkgconfig"))
-                ;; Install other files.
-                (copy-recursively "dist/public/nss" inc)
-                (copy-recursively (string-append obj "/bin") bin)
-                (copy-recursively (string-append obj "/lib") lib)))))))
-    (inputs (list sqlite zlib))
-    (propagated-inputs (list nspr))               ;required by nss.pc.
-    (native-inputs (list perl                     ;for tests
-                         (if (target-64bit?) libfaketime datefudge)
-                         which))
-
-    ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
-    ;; another build is happening concurrently on the same machine.
-    (properties '((timeout . 216000)))  ;60 hours
-
-    (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
-    (synopsis "Network Security Services")
-    (description
-     "Network Security Services (@dfn{NSS}) is a set of libraries designed to
-support cross-platform development of security-enabled client and server
-applications.  Applications built with NSS can support SSL v2 and v3, TLS,
-PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
-security standards.")
-    (license license:mpl2.0)))
+  (let ((base (make-nss
+               #:version "3.102.1"
+               #:release-date "2024-07-24"
+               #:hash "1k1pjxz0ab4lg8xqggbb8pw77c1q8h4bldi09z4pj5g4hwsjv62l")))
+    (package
+      (inherit base)
+      (synopsis (string-append (package-synopsis base) " (ESR)"))
+      (description
+       (string-append (package-description base) "
+This package tracks the Extended Support Release channel.")))))
 
 ;; nss-rapid tracks the rapid release channel.  Unless your package requires a
 ;; newer version, you should prefer the `nss' package, which tracks the ESR
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:57:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 5/6] gnu: nss-rapid: Update to 3.104.
Date: Mon,  9 Sep 2024 10:55:38 -0700
* gnu/packages/nss.scm (nss-rapid): Update to 3.104.

Change-Id: I22772d75a98a479a65717ea7bcbfbb7986bd0c77
---
 gnu/packages/nss.scm | 67 ++++++++------------------------------------
 1 file changed, 11 insertions(+), 56 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index b4fdd13abc..b53e6e22cf 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -281,63 +281,18 @@ (define-public nss
 ;; and https://wiki.mozilla.org/Rapid_Release_Model
 
 (define-public nss-rapid
-  (package
-   (inherit nss)
-   (name "nss-rapid")
-   (version "3.103")
-   (source (origin
-             (inherit (package-source nss))
-             (uri (let ((version-with-underscores
-                         (string-join (string-split version #\.) "_")))
-                    (string-append
-                     "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                     "releases/NSS_" version-with-underscores "_RTM/src/"
-                     "nss-" version ".tar.gz")))
-             (sha256
-              (base32
-               "0qp9rs226rr6gh51b42cdbydr4mj80cli3bfqhh7bp3jyxbvcjkv"))))
-   (arguments
-    (substitute-keyword-arguments (package-arguments nss)
-      ((#:phases phases)
-       #~(modify-phases #$phases
-           (replace 'check
-             (lambda* (#:key tests? #:allow-other-keys)
-               (if tests?
-                   (begin
-                     ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for
-                     ;; testing.  The latter requires a working DNS or /etc/hosts.
-                     (setenv "DOMSUF" "localdomain")
-                     (setenv "USE_IP" "TRUE")
-                     (setenv "IP_ADDRESS" "127.0.0.1")
-
-                     ;; This specific test is looking at performance "now
-                     ;; verify that we can quickly dump a database", and
-                     ;; we're not testing performance here (especially
-                     ;; since we're using faketime), so raise the
-                     ;; threshold
-                     (substitute* "nss/tests/dbtests/dbtests.sh"
-                       ((" -lt 5") " -lt 50"))
-
-                     ;; Since the test suite is very lengthy, run the test
-                     ;; suite once, not thrice as done by default, by
-                     ;; selecting only the 'standard' cycle.
-                     (setenv "NSS_CYCLES" "standard")
-
-                     ;; 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-08-17" "./nss/tests/all.sh"))
-                   (format #t "test suite not run~%"))))))))
-   (synopsis "Network Security Services (Rapid Release)")
-   (description
-    "Network Security Services (@dfn{NSS}) is a set of libraries designed to
-support cross-platform development of security-enabled client and server
-applications.  Applications built with NSS can support SSL v2 and v3, TLS,
-PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
-security standards.
+  (let ((base (make-nss
+               #:version "3.104"
+               #:release-date "2024-08-30"
+               #:hash "13mca2y92sm05kxb40qvlkq8l93ghmrhh0s3iawpc7idc8ik4xp2")))
+    (package
+      (inherit base)
+      (name (string-append (package-name base) "-rapid"))
+      (synopsis (string-append (package-synopsis base) " (Rapid Release)"))
+      (description
+       (string-append (package-description base) "
+This package tracks the Rapid Release channel, which updates frequently.")))))
 
-This package tracks the Rapid Release channel, which updates frequently.")))
 (define-public nsncd
   (package
     (name "nsncd")
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Mon, 09 Sep 2024 17:57:04 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH 6/6] gnu: nss-certs: Update to 3.102.1.
Date: Mon,  9 Sep 2024 10:55:39 -0700
* gnu/packages/certs.scm (nss-certs): Update to 3.102.1.

Change-Id: Ibb0b39ef97e04afc37c62c5dc23ab93eef1c1f10
---
 gnu/packages/certs.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index e2de6b168b..9756b089c0 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -133,7 +133,7 @@ (define-public nss-certs
     ;; FIXME We used to refer to the nss package here, but that eventually caused
     ;; module cycles.  The below is a quick copy-paste job that must be kept in
     ;; sync manually.  Surely there's a better way…?
-    (version "3.99")
+    (version "3.102.1")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -144,7 +144,7 @@ (define-public nss-certs
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
+                "1k1pjxz0ab4lg8xqggbb8pw77c1q8h4bldi09z4pj5g4hwsjv62l"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
-- 
2.46.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 10 Sep 2024 18:01:02 GMT) Full text and rfc822 format available.

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

From: Liliana Marie Prikler <liliana.prikler <at> gmail.com>
To: Ian Eure <ian <at> retrospec.tv>, 73152 <at> debbugs.gnu.org
Subject: Re: [PATCH 3/6] gnu: Add make-nss.
Date: Tue, 10 Sep 2024 19:59:14 +0200
Am Montag, dem 09.09.2024 um 10:55 -0700 schrieb Ian Eure:
> * gnu/packages/nss.scm (make-nss): New variable.
> NSS builds require time-shifting to their approximate release date to
> build repeatably, because it ships with test certificates which
> expire.  To avoid duplicating the whole package definition between
> `nss' and `nss-rapid', move the bulk of the definition into `make-
> nss', which accepts a version, hash, and release date, allowing reuse
> between the two definitions.
> 
> Change-Id: Iaab1bb167ceed985a3dcde57f7fe35dce3deaa36
> ---
Note: the explanation should come before the ChangeLog.

Cheers




Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Sun, 16 Feb 2025 14:48:02 GMT) Full text and rfc822 format available.

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

From: Christopher Baines <mail <at> cbaines.net>
To: Ian Eure <ian <at> retrospec.tv>
Cc: 73152 <at> debbugs.gnu.org
Subject: Re: [bug#73152] [PATCH 3/6] gnu: Add make-nss.
Date: Sun, 16 Feb 2025 14:47:28 +0000
[Message part 1 (text/plain, inline)]
Ian Eure <ian <at> retrospec.tv> writes:

> * gnu/packages/nss.scm (make-nss): New variable.
> NSS builds require time-shifting to their approximate release date to build
> repeatably, because it ships with test certificates which expire.  To avoid
> duplicating the whole package definition between `nss' and `nss-rapid', move
> the bulk of the definition into `make-nss', which accepts a version, hash, and
> release date, allowing reuse between the two definitions.
>
> Change-Id: Iaab1bb167ceed985a3dcde57f7fe35dce3deaa36
> ---
>  gnu/packages/nss.scm | 166 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 166 insertions(+)

I'm not sure the refactoring here is overall helpful, I think I
understand the motivation but I think it would be simpler and more
readable to stick with the package inheritance approach.

If you just need to change the source, plus the faketime date in
nss-rapid, but want to avoid replacing the entire check phase, maybe you
could change the nss package to use an environment variable
(e.g. GUIX_CHECK_FAKETIME_DATE) for this, and set this environment
variable in a single phase.

So in nss you'd have:

  (add-before 'check 'set-GUIX_CHECK_FAKETIME_DATE
    (lambda _
      (setenv "GUIX_CHECK_FAKETIME_DATE" "2024-01-23")))
  (replace 'check
    (lambda* (#:key tests? #:allow-other-keys)
      ...
      (invoke #$(if (target-64bit?) "faketime" "datefudge")
              (getenv "GUIX_CHECK_FAKETIME_DATE") "./nss/tests/all.sh")))

Then in nss-rapid you'd just do

  (replace 'set-GUIX_CHECK_FAKETIME_DATE
    (lambda _
      (setenv "GUIX_CHECK_FAKETIME_DATE" "2024-08-30")))

Maybe there's a more elegant way to share a value between phases in the
builder, but I think even doing it via an environment variable is still
preferable than using a procedure to create the package. I've spent many
hours debugging complex functional and performance related issues caused
by procedures returning packages, and while it's a powerful tool, it's
something to be avoided unless necessary.

In terms of how to make this kind of change, I'd split it in to two
parts. Introducing the environment variable can definately go to the
core-packages-team branch in my opinion, and the package updates could
maybe as well, but I'd think of it as two separate patch series.
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Sun, 16 Feb 2025 18:49:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: Christopher Baines <mail <at> cbaines.net>
Cc: 73152 <at> debbugs.gnu.org
Subject: Re: [bug#73152] [PATCH 3/6] gnu: Add make-nss.
Date: Sun, 16 Feb 2025 10:48:38 -0800
Hi Christopher,

Christopher Baines <mail <at> cbaines.net> writes:

> Ian Eure <ian <at> retrospec.tv> writes:
>
>> * gnu/packages/nss.scm (make-nss): New variable.
>> NSS builds require time-shifting to their approximate release 
>> date to build
>> repeatably, because it ships with test certificates which 
>> expire.  To avoid
>> duplicating the whole package definition between `nss' and 
>> `nss-rapid', move
>> the bulk of the definition into `make-nss', which accepts a 
>> version, hash, and
>> release date, allowing reuse between the two definitions.
>>
>> Change-Id: Iaab1bb167ceed985a3dcde57f7fe35dce3deaa36
>> ---
>>  gnu/packages/nss.scm | 166 
>>  +++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 166 insertions(+)
>
> I'm not sure the refactoring here is overall helpful, I think I
> understand the motivation but I think it would be simpler and 
> more
> readable to stick with the package inheritance approach.
>
> If you just need to change the source, plus the faketime date in
> nss-rapid, but want to avoid replacing the entire check phase, 
> maybe you
> could change the nss package to use an environment variable
> (e.g. GUIX_CHECK_FAKETIME_DATE) for this, and set this 
> environment
> variable in a single phase.
>
> So in nss you'd have:
>
>   (add-before 'check 'set-GUIX_CHECK_FAKETIME_DATE
>     (lambda _
>       (setenv "GUIX_CHECK_FAKETIME_DATE" "2024-01-23")))
>   (replace 'check
>     (lambda* (#:key tests? #:allow-other-keys)
>       ...
>       (invoke #$(if (target-64bit?) "faketime" "datefudge")
>               (getenv "GUIX_CHECK_FAKETIME_DATE") 
>               "./nss/tests/all.sh")))
>
> Then in nss-rapid you'd just do
>
>   (replace 'set-GUIX_CHECK_FAKETIME_DATE
>     (lambda _
>       (setenv "GUIX_CHECK_FAKETIME_DATE" "2024-08-30")))
>
> Maybe there's a more elegant way to share a value between phases 
> in the
> builder, but I think even doing it via an environment variable 
> is still
> preferable than using a procedure to create the package. I've 
> spent many
> hours debugging complex functional and performance related 
> issues caused
> by procedures returning packages, and while it's a powerful 
> tool, it's
> something to be avoided unless necessary.

Thank you very much for the detailed review and suggestion.  I 
like the environment variable approach a lot, and will send an 
updated patch series which uses it.  I agree with you that 
straightforward package definitions are preferable, and this is a 
much simpler approach.

> In terms of how to make this kind of change, I'd split it in to 
> two
> parts. Introducing the environment variable can definately go to 
> the
> core-packages-team branch in my opinion, and the package updates 
> could
> maybe as well, but I'd think of it as two separate patch series.

The split that makes sense to me is to send one series to 
core-packages-team, consisting of: one patch to use an environment 
variable for the release date; a second patch to ungraft nss; and 
a third package updatingd nss to the latest ESR.  I believe each 
patch in this series will cause nss dependents to rebuild, so it 
seems preferable to put those into a single series, rather than 
turn a 15k package build into a 45k one.

Then, after core-packages-team merges, a second patch to master 
which updates nss-rapid to use the environment variable mechainsm. 
Since very little depends on this package, it’s safe to update in 
master any time.

If that sounds good to you, I’ll close this bug and open a new one 
with the first series.

Thank you again for engaging with me on moving forward on this 
work.

 -- Ian




Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 06 May 2025 22:52:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v2 1/6] gnu: nspr: Update to 4.36.
Date: Tue,  6 May 2025 15:51:03 -0700
* gnu/packages/nss.scm (nspr): Update to 4.36.

Change-Id: Iac06cba18730773438f9de4e00376c0213bf4c15
---
 gnu/packages/nss.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index f253edce99..73b010eea9 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -47,7 +47,7 @@ (define-module (gnu packages nss)
 (define-public nspr
   (package
     (name "nspr")
-    (version "4.35")
+    (version "4.36")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -55,7 +55,7 @@ (define-public nspr
                     version "/src/nspr-" version ".tar.gz"))
               (sha256
                (base32
-                "13xwda56yhp1w7v02qvlxvlqiniw8kr4g3fxlljmv6wnlmz2k8vy"))))
+                "15b83ipjxrmw0909l5qqz13pbarhp50d6i58vgjx4720y4bw7pjm"))))
     (build-system gnu-build-system)
     (inputs
      (list perl                         ;for 'compile-et.pl'
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 06 May 2025 22:52:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v2 2/6] gnu: Remove nss/fixed.
Date: Tue,  6 May 2025 15:51:04 -0700
* gnu/packages/nss.scm (nss/fixed): Delete variable.

Change-Id: Iaff60eed7eb9e000da27f899973b230939bfb41a
---
 gnu/packages/nss.scm | 51 --------------------------------------------
 1 file changed, 51 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 73b010eea9..ab238330a4 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -260,57 +260,6 @@ (define-public nss
 security standards.")
     (license license:mpl2.0)))
 
-(define-public nss/fixed
-  (let ((actual-version "3.99"))
-    (hidden-package
-     (package
-       (inherit nss)
-       (version (string-append actual-version ".0")) ;for grafts requirements
-       (source (origin
-                 (inherit (package-source nss))
-                 (uri (let ((version-with-underscores
-                             (string-join (string-split actual-version #\.) "_")))
-                        (string-append
-                         "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                         "releases/NSS_" version-with-underscores "_RTM/src/"
-                         "nss-" actual-version ".tar.gz")))
-                 (sha256
-                  (base32
-                   "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))))
-       (arguments
-        (substitute-keyword-arguments (package-arguments nss)
-          ((#:phases phases)
-           #~(modify-phases #$phases
-               (replace 'check
-                 (lambda* (#:key tests? #:allow-other-keys)
-                   (if tests?
-                       (begin
-                         ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for
-                         ;; testing.  The latter requires a working DNS or /etc/hosts.
-                         (setenv "DOMSUF" "localdomain")
-                         (setenv "USE_IP" "TRUE")
-                         (setenv "IP_ADDRESS" "127.0.0.1")
-
-                         ;; This specific test is looking at performance "now
-                         ;; verify that we can quickly dump a database", and
-                         ;; we're not testing performance here (especially
-                         ;; since we're using faketime), so raise the
-                         ;; threshold
-                         (substitute* "nss/tests/dbtests/dbtests.sh"
-                           ((" -lt 5") " -lt 50"))
-
-                         ;; Since the test suite is very lengthy, run the test
-                         ;; suite once, not thrice as done by default, by
-                         ;; selecting only the 'standard' cycle.
-                         (setenv "NSS_CYCLES" "standard")
-
-                         ;; 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"))
-                       (format #t "test suite not run~%"))))))))))))
-
 ;; nss-rapid tracks the rapid release channel.  Unless your package requires a
 ;; newer version, you should prefer the `nss' package, which tracks the ESR
 ;; channel.
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 06 May 2025 22:52:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v2 3/6] gnu: nss: Store the package release date in an
 environment variable.
Date: Tue,  6 May 2025 15:51:05 -0700
* gnu/packages/nss.scm (nss): Store the package release date in an environment
variable.

Change-Id: Ic3708c0a32e2fc15b0400e42611735f33839b78b
---
 gnu/packages/nss.scm | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index ab238330a4..abaee7e980 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -172,6 +172,13 @@ (define-public nss
                         (target-ppc32?)))
       #:phases
       #~(modify-phases %standard-phases
+          ;; 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.
+          (add-after 'unpack 'set-release-date
+            (lambda _
+              (setenv "GUIX_NSS_RELEASE_DATE" "2024-01-23")))
           (replace 'configure
             (lambda _
               (setenv "CC" #$(cc-for-target))
@@ -212,12 +219,12 @@ (define-public nss
                                 (("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 #$(if (target-64bit?) "faketime" "datefudge")
-                            "2024-01-23" "./nss/tests/all.sh"))
+
+                    (let ((release-date (getenv "GUIX_NSS_RELEASE_DATE")))
+                      (when (string=? "" release-date)
+                        (raise-exception "`GUIX_NSS_RELEASE_DATE' unset"))
+                      (invoke #$(if (target-64bit?) "faketime" "datefudge")
+                              release-date "./nss/tests/all.sh")))
                   (format #t "test suite not run~%"))))
           (replace 'install
             (lambda* (#:key outputs #:allow-other-keys)
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 06 May 2025 22:52:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v2 4/6] gnu: nss: Clean up.
Date: Tue,  6 May 2025 15:51:06 -0700
Platform-specific build conditionals currently use ungexp to inject code into
the build phase: #$@(if ... #~(...) #~(...)).  Change these to use unless/when
where appropriate, and ungexp the test value instead of the whole form.

* gnu/packages/nss.scm (nss): Clean up gexps.
* gnu/packages/nss.scm (nss): Extract URI code into `nss-uri'.
* gnu/packages/nss.scm (nss-uri): New variable.

Change-Id: I5843eb5bf80f01650e0e87a9c479d5d1ab187f9e
---
 gnu/packages/nss.scm | 46 ++++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index abaee7e980..1deb92c00f 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -95,8 +95,16 @@ (define-public nspr
 in the Mozilla clients.")
     (license license:mpl2.0)))
 
-
-;; nss should track ESRs, but currently doesn't.  3.102.1 is the current ESR.
+(define (nss-uri version)
+  (let* ((versions (string-split version #\.))
+         (directory-version (string-join versions "_"))
+         ;; 3.101.3 release has a typo in the filename.
+         (filename-version
+          (if (string=? "3.101.3" version) "3.101_3" version)))
+    (string-append
+     "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+     "releases/NSS_" directory-version "_RTM/src/"
+     "nss-" filename-version ".tar.gz")))
 
 (define-public nss
   (package
@@ -107,12 +115,7 @@ (define-public nss
     (version "3.99")
     (source (origin
               (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
-                     (string-append
-                      "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                      "releases/NSS_" version-with-underscores "_RTM/src/"
-                      "nss-" version ".tar.gz")))
+              (uri (nss-uri version))
               (sha256
                (base32
                 "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
@@ -185,13 +188,12 @@ (define-public nss
               (setenv "CCC" #$(cxx-for-target))
               (setenv "NATIVE_CC" "gcc")
               ;; No VSX on powerpc-linux.
-              #$@(if (target-ppc32?)
-                     #~((setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
-                     #~())
+              (when #$(target-ppc32?)
+                (setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
+
               ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
-              #$@(if (target-64bit?)
-                     #~((setenv "USE_64" "1"))
-                     #~())))
+              (when #$(target-64bit?)
+                (setenv "USE_64" "1"))))
           (replace 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (if tests?
@@ -210,15 +212,13 @@ (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")))))
-
+                    (unless #$(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")))))
 
                     (let ((release-date (getenv "GUIX_NSS_RELEASE_DATE")))
                       (when (string=? "" release-date)
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 06 May 2025 22:52:04 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v2 5/6] gnu: nss: Update to 3.101.3.
Date: Tue,  6 May 2025 15:51:07 -0700
* gnu/packages/nss.scm (nss): Update to 3.101.3.

Change-Id: Iaf474377f0441e6ee16bcb30265fec6de3d9c76a
---
 gnu/packages/nss.scm                          | 24 +++++++++-----
 .../patches/nss-disable-broken-tests.patch    | 33 +++++++++++++++++++
 2 files changed, 49 insertions(+), 8 deletions(-)
 create mode 100644 gnu/packages/patches/nss-disable-broken-tests.patch

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 1deb92c00f..424fa5cc66 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -42,7 +42,9 @@ (define-module (gnu packages nss)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages sqlite)
-  #:use-module (gnu packages time))
+  #:use-module (gnu packages time)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26))
 
 (define-public nspr
   (package
@@ -112,17 +114,18 @@ (define-public nss
     ;; IMPORTANT: Also update and test the nss-certs package, which duplicates
     ;; version and source to avoid a top-level variable reference & module
     ;; cycle.
-    (version "3.99")
+    (version "3.101.3")
     (source (origin
               (method url-fetch)
               (uri (nss-uri version))
               (sha256
                (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
+                "1gkpbyh90aw9yhjnyj1bsp79s2bxab886d9ihkaw1i2kzqfvf3dg"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
-                                       "nss-increase-test-timeout.patch"))
+                                       "nss-increase-test-timeout.patch"
+                                       "nss-disable-broken-tests.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -181,7 +184,7 @@ (define-public nss
           ;; around that, set the time to roughly the release date.
           (add-after 'unpack 'set-release-date
             (lambda _
-              (setenv "GUIX_NSS_RELEASE_DATE" "2024-01-23")))
+              (setenv "GUIX_NSS_RELEASE_DATE" "2025-02-05")))
           (replace 'configure
             (lambda _
               (setenv "CC" #$(cc-for-target))
@@ -258,13 +261,15 @@ (define-public nss
     (properties '((timeout . 216000)))  ;60 hours
 
     (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
-    (synopsis "Network Security Services")
+    (synopsis "Network Security Services (ESR)")
     (description
      "Network Security Services (@dfn{NSS}) is a set of libraries designed to
 support cross-platform development of security-enabled client and server
 applications.  Applications built with NSS can support SSL v2 and v3, TLS,
 PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
-security standards.")
+security standards.
+
+This package tracks the Extended Support Release (ESR) channel.")
     (license license:mpl2.0)))
 
 ;; nss-rapid tracks the rapid release channel.  Unless your package requires a
@@ -289,7 +294,10 @@ (define-public nss-rapid
                      "nss-" version ".tar.gz")))
              (sha256
               (base32
-               "12y156frnhaqvwkla1c07gqr2lnp4yb3619g4088kk8qc4jnr95y"))))
+               "12y156frnhaqvwkla1c07gqr2lnp4yb3619g4088kk8qc4jnr95y"))
+             (patches
+              (remove (cut string-contains <> "nss-disable-broken-tests.patch")
+                      (origin-patches (package-source nss))))))
    (arguments
     (substitute-keyword-arguments (package-arguments nss)
       ((#:phases phases)
diff --git a/gnu/packages/patches/nss-disable-broken-tests.patch b/gnu/packages/patches/nss-disable-broken-tests.patch
new file mode 100644
index 0000000000..8d6e101471
--- /dev/null
+++ b/gnu/packages/patches/nss-disable-broken-tests.patch
@@ -0,0 +1,33 @@
+These tests are broken in 3.101.3.
+
+See https://bugzilla.mozilla.org/show_bug.cgi?id=1964304
+
+--- nss-3.101.3/nss/tests/tools/tools.sh	1969-12-31 16:00:01.000000000 -0800
++++ nss-3.101.3/nss/tests/tools/tools.sh	2025-05-05 16:36:47.835447542 -0700
+@@ -540,26 +540,6 @@
+   ret=$?
+   html_msg $ret 0 "Importing private key pbmac1 hmac-sha-512 from PKCS#12 file"
+   check_tmpfile
+-
+-  echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+-  ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+-  ret=$?
+-  html_msg $ret 19 "Fail to list private key with bad iterator"
+-  check_tmpfile
+-
+-  echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+-  ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+-  ret=$?
+-  echo "Fail to list private key with bad salt val=$ret"
+-  html_msg $ret 19 "Fail to import private key with bad salt"
+-  check_tmpfile
+-
+-  echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+-  ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+-  ret=$?
+-  echo "Fail to import private key with no length val=$ret"
+-  html_msg $ret 19 "Fail to import private key with no length"
+-  check_tmpfile
+ }
+ 
+ ############################## tools_p12 ###############################
\ No newline at end of file
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Tue, 06 May 2025 22:52:04 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v2 6/6] gnu: nss-certs: Update to 3.101.3.
Date: Tue,  6 May 2025 15:51:08 -0700
* gnu/packages/certs.scm (nss-certs): Update to 3.101.3.

Change-Id: Ibe9aa969046d375eea308594ac1a3c1cf23f75c2
---
 gnu/packages/certs.scm | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index e2de6b168b..08db871bf2 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -133,18 +133,21 @@ (define-public nss-certs
     ;; FIXME We used to refer to the nss package here, but that eventually caused
     ;; module cycles.  The below is a quick copy-paste job that must be kept in
     ;; sync manually.  Surely there's a better way…?
-    (version "3.99")
+    (version "3.101.3")
     (source (origin
               (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
+              (uri (let* ((versions (string-split version #\.))
+                          (directory-version (string-join versions "_"))
+                          ;; 3.101.3 release has a typo in the filename.
+                          (filename-version
+                           (if (string=? "3.101.3" version) "3.101_3" version)))
                      (string-append
                       "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                      "releases/NSS_" version-with-underscores "_RTM/src/"
-                      "nss-" version ".tar.gz")))
+                      "releases/NSS_" directory-version "_RTM/src/"
+                      "nss-" filename-version ".tar.gz")))
               (sha256
                (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
+                "1gkpbyh90aw9yhjnyj1bsp79s2bxab886d9ihkaw1i2kzqfvf3dg"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:01 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 2/7] gnu: nspr: Update to 4.36.
Date: Wed,  7 May 2025 17:06:04 -0700
* gnu/packages/nss.scm (nspr): Update to 4.36.

Change-Id: Iac06cba18730773438f9de4e00376c0213bf4c15
---
 gnu/packages/nss.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index f253edce99..73b010eea9 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -47,7 +47,7 @@ (define-module (gnu packages nss)
 (define-public nspr
   (package
     (name "nspr")
-    (version "4.35")
+    (version "4.36")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -55,7 +55,7 @@ (define-public nspr
                     version "/src/nspr-" version ".tar.gz"))
               (sha256
                (base32
-                "13xwda56yhp1w7v02qvlxvlqiniw8kr4g3fxlljmv6wnlmz2k8vy"))))
+                "15b83ipjxrmw0909l5qqz13pbarhp50d6i58vgjx4720y4bw7pjm"))))
     (build-system gnu-build-system)
     (inputs
      (list perl                         ;for 'compile-et.pl'
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 1/7] gnu: Remove nspr-4.32.
Date: Wed,  7 May 2025 17:06:03 -0700
Nothing uses this, so remove it.

* gnu/packages/nss.scm (nspr-4.32): Delete variable.

Change-Id: I05c97fe6fc32d045618334df118a84836c0d0261
---
 gnu/packages/nss.scm | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 8bcb593ed7..f253edce99 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -95,18 +95,6 @@ (define-public nspr
 in the Mozilla clients.")
     (license license:mpl2.0)))
 
-(define-public nspr-4.32
-  (package
-    (inherit nspr)
-    (version "4.32")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append
-                   "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
-                   version "/src/nspr-" version ".tar.gz"))
-             (sha256
-              (base32
-               "0v3zds1id71j5a5si42a658fjz8nv2f6zp6w4gqrqmdr6ksz8sxv"))))))
 
 ;; nss should track ESRs, but currently doesn't.  3.102.1 is the current ESR.
 
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 3/7] gnu: Remove nss/fixed.
Date: Wed,  7 May 2025 17:06:05 -0700
* gnu/packages/nss.scm (nss/fixed): Delete variable.

Change-Id: Iaff60eed7eb9e000da27f899973b230939bfb41a
---
 gnu/packages/nss.scm | 51 --------------------------------------------
 1 file changed, 51 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 73b010eea9..ab238330a4 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -260,57 +260,6 @@ (define-public nss
 security standards.")
     (license license:mpl2.0)))
 
-(define-public nss/fixed
-  (let ((actual-version "3.99"))
-    (hidden-package
-     (package
-       (inherit nss)
-       (version (string-append actual-version ".0")) ;for grafts requirements
-       (source (origin
-                 (inherit (package-source nss))
-                 (uri (let ((version-with-underscores
-                             (string-join (string-split actual-version #\.) "_")))
-                        (string-append
-                         "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                         "releases/NSS_" version-with-underscores "_RTM/src/"
-                         "nss-" actual-version ".tar.gz")))
-                 (sha256
-                  (base32
-                   "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))))
-       (arguments
-        (substitute-keyword-arguments (package-arguments nss)
-          ((#:phases phases)
-           #~(modify-phases #$phases
-               (replace 'check
-                 (lambda* (#:key tests? #:allow-other-keys)
-                   (if tests?
-                       (begin
-                         ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for
-                         ;; testing.  The latter requires a working DNS or /etc/hosts.
-                         (setenv "DOMSUF" "localdomain")
-                         (setenv "USE_IP" "TRUE")
-                         (setenv "IP_ADDRESS" "127.0.0.1")
-
-                         ;; This specific test is looking at performance "now
-                         ;; verify that we can quickly dump a database", and
-                         ;; we're not testing performance here (especially
-                         ;; since we're using faketime), so raise the
-                         ;; threshold
-                         (substitute* "nss/tests/dbtests/dbtests.sh"
-                           ((" -lt 5") " -lt 50"))
-
-                         ;; Since the test suite is very lengthy, run the test
-                         ;; suite once, not thrice as done by default, by
-                         ;; selecting only the 'standard' cycle.
-                         (setenv "NSS_CYCLES" "standard")
-
-                         ;; 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"))
-                       (format #t "test suite not run~%"))))))))))))
-
 ;; nss-rapid tracks the rapid release channel.  Unless your package requires a
 ;; newer version, you should prefer the `nss' package, which tracks the ESR
 ;; channel.
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 4/7] gnu: nss: Store the package release date in an
 environment variable.
Date: Wed,  7 May 2025 17:06:06 -0700
* gnu/packages/nss.scm (nss): Store the package release date in an environment
variable.

Change-Id: Ic3708c0a32e2fc15b0400e42611735f33839b78b
---
 gnu/packages/nss.scm | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index ab238330a4..abaee7e980 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -172,6 +172,13 @@ (define-public nss
                         (target-ppc32?)))
       #:phases
       #~(modify-phases %standard-phases
+          ;; 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.
+          (add-after 'unpack 'set-release-date
+            (lambda _
+              (setenv "GUIX_NSS_RELEASE_DATE" "2024-01-23")))
           (replace 'configure
             (lambda _
               (setenv "CC" #$(cc-for-target))
@@ -212,12 +219,12 @@ (define-public nss
                                 (("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 #$(if (target-64bit?) "faketime" "datefudge")
-                            "2024-01-23" "./nss/tests/all.sh"))
+
+                    (let ((release-date (getenv "GUIX_NSS_RELEASE_DATE")))
+                      (when (string=? "" release-date)
+                        (raise-exception "`GUIX_NSS_RELEASE_DATE' unset"))
+                      (invoke #$(if (target-64bit?) "faketime" "datefudge")
+                              release-date "./nss/tests/all.sh")))
                   (format #t "test suite not run~%"))))
           (replace 'install
             (lambda* (#:key outputs #:allow-other-keys)
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:03 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 5/7] gnu: nss: Clean up.
Date: Wed,  7 May 2025 17:06:07 -0700
Platform-specific build conditionals currently use ungexp to inject code into
the build phase: #$@(if ... #~(...) #~(...)).  Change these to use unless/when
where appropriate, and ungexp the test value instead of the whole form.

* gnu/packages/nss.scm (nss): Clean up gexps.
* gnu/packages/nss.scm (nss): Extract URI code into `nss-uri'.
* gnu/packages/nss.scm (nss-uri): New variable.

Change-Id: I5843eb5bf80f01650e0e87a9c479d5d1ab187f9e
---
 gnu/packages/nss.scm | 46 ++++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index abaee7e980..1deb92c00f 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -95,8 +95,16 @@ (define-public nspr
 in the Mozilla clients.")
     (license license:mpl2.0)))
 
-
-;; nss should track ESRs, but currently doesn't.  3.102.1 is the current ESR.
+(define (nss-uri version)
+  (let* ((versions (string-split version #\.))
+         (directory-version (string-join versions "_"))
+         ;; 3.101.3 release has a typo in the filename.
+         (filename-version
+          (if (string=? "3.101.3" version) "3.101_3" version)))
+    (string-append
+     "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+     "releases/NSS_" directory-version "_RTM/src/"
+     "nss-" filename-version ".tar.gz")))
 
 (define-public nss
   (package
@@ -107,12 +115,7 @@ (define-public nss
     (version "3.99")
     (source (origin
               (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
-                     (string-append
-                      "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                      "releases/NSS_" version-with-underscores "_RTM/src/"
-                      "nss-" version ".tar.gz")))
+              (uri (nss-uri version))
               (sha256
                (base32
                 "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
@@ -185,13 +188,12 @@ (define-public nss
               (setenv "CCC" #$(cxx-for-target))
               (setenv "NATIVE_CC" "gcc")
               ;; No VSX on powerpc-linux.
-              #$@(if (target-ppc32?)
-                     #~((setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
-                     #~())
+              (when #$(target-ppc32?)
+                (setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
+
               ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
-              #$@(if (target-64bit?)
-                     #~((setenv "USE_64" "1"))
-                     #~())))
+              (when #$(target-64bit?)
+                (setenv "USE_64" "1"))))
           (replace 'check
             (lambda* (#:key tests? #:allow-other-keys)
               (if tests?
@@ -210,15 +212,13 @@ (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")))))
-
+                    (unless #$(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")))))
 
                     (let ((release-date (getenv "GUIX_NSS_RELEASE_DATE")))
                       (when (string=? "" release-date)
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:04 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 6/7] gnu: nss: Update to 3.101.3.
Date: Wed,  7 May 2025 17:06:08 -0700
* gnu/packages/nss.scm (nss): Update to 3.101.3.

Change-Id: Iaf474377f0441e6ee16bcb30265fec6de3d9c76a
---
 gnu/packages/nss.scm                          | 24 +++++++++-----
 .../patches/nss-disable-broken-tests.patch    | 33 +++++++++++++++++++
 2 files changed, 49 insertions(+), 8 deletions(-)
 create mode 100644 gnu/packages/patches/nss-disable-broken-tests.patch

diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 1deb92c00f..424fa5cc66 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -42,7 +42,9 @@ (define-module (gnu packages nss)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages sqlite)
-  #:use-module (gnu packages time))
+  #:use-module (gnu packages time)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26))
 
 (define-public nspr
   (package
@@ -112,17 +114,18 @@ (define-public nss
     ;; IMPORTANT: Also update and test the nss-certs package, which duplicates
     ;; version and source to avoid a top-level variable reference & module
     ;; cycle.
-    (version "3.99")
+    (version "3.101.3")
     (source (origin
               (method url-fetch)
               (uri (nss-uri version))
               (sha256
                (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
+                "1gkpbyh90aw9yhjnyj1bsp79s2bxab886d9ihkaw1i2kzqfvf3dg"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
-                                       "nss-increase-test-timeout.patch"))
+                                       "nss-increase-test-timeout.patch"
+                                       "nss-disable-broken-tests.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -181,7 +184,7 @@ (define-public nss
           ;; around that, set the time to roughly the release date.
           (add-after 'unpack 'set-release-date
             (lambda _
-              (setenv "GUIX_NSS_RELEASE_DATE" "2024-01-23")))
+              (setenv "GUIX_NSS_RELEASE_DATE" "2025-02-05")))
           (replace 'configure
             (lambda _
               (setenv "CC" #$(cc-for-target))
@@ -258,13 +261,15 @@ (define-public nss
     (properties '((timeout . 216000)))  ;60 hours
 
     (home-page "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
-    (synopsis "Network Security Services")
+    (synopsis "Network Security Services (ESR)")
     (description
      "Network Security Services (@dfn{NSS}) is a set of libraries designed to
 support cross-platform development of security-enabled client and server
 applications.  Applications built with NSS can support SSL v2 and v3, TLS,
 PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
-security standards.")
+security standards.
+
+This package tracks the Extended Support Release (ESR) channel.")
     (license license:mpl2.0)))
 
 ;; nss-rapid tracks the rapid release channel.  Unless your package requires a
@@ -289,7 +294,10 @@ (define-public nss-rapid
                      "nss-" version ".tar.gz")))
              (sha256
               (base32
-               "12y156frnhaqvwkla1c07gqr2lnp4yb3619g4088kk8qc4jnr95y"))))
+               "12y156frnhaqvwkla1c07gqr2lnp4yb3619g4088kk8qc4jnr95y"))
+             (patches
+              (remove (cut string-contains <> "nss-disable-broken-tests.patch")
+                      (origin-patches (package-source nss))))))
    (arguments
     (substitute-keyword-arguments (package-arguments nss)
       ((#:phases phases)
diff --git a/gnu/packages/patches/nss-disable-broken-tests.patch b/gnu/packages/patches/nss-disable-broken-tests.patch
new file mode 100644
index 0000000000..8d6e101471
--- /dev/null
+++ b/gnu/packages/patches/nss-disable-broken-tests.patch
@@ -0,0 +1,33 @@
+These tests are broken in 3.101.3.
+
+See https://bugzilla.mozilla.org/show_bug.cgi?id=1964304
+
+--- nss-3.101.3/nss/tests/tools/tools.sh	1969-12-31 16:00:01.000000000 -0800
++++ nss-3.101.3/nss/tests/tools/tools.sh	2025-05-05 16:36:47.835447542 -0700
+@@ -540,26 +540,6 @@
+   ret=$?
+   html_msg $ret 0 "Importing private key pbmac1 hmac-sha-512 from PKCS#12 file"
+   check_tmpfile
+-
+-  echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+-  ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-iter.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+-  ret=$?
+-  html_msg $ret 19 "Fail to list private key with bad iterator"
+-  check_tmpfile
+-
+-  echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+-  ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-bad-salt.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+-  ret=$?
+-  echo "Fail to list private key with bad salt val=$ret"
+-  html_msg $ret 19 "Fail to import private key with bad salt"
+-  check_tmpfile
+-
+-  echo "${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234'"
+-  ${BINDIR}/pk12util -l ${TOOLSDIR}/data/pbmac1-invalid-no-length.p12 -d ${P_R_COPYDIR} -k ${R_PWFILE} -W '1234' 2>&1
+-  ret=$?
+-  echo "Fail to import private key with no length val=$ret"
+-  html_msg $ret 19 "Fail to import private key with no length"
+-  check_tmpfile
+ }
+ 
+ ############################## tools_p12 ###############################
\ No newline at end of file
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Thu, 08 May 2025 00:07:05 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: 73152 <at> debbugs.gnu.org
Cc: Ian Eure <ian <at> retrospec.tv>
Subject: [PATCH v3 7/7] gnu: nss-certs: Update to 3.101.3.
Date: Wed,  7 May 2025 17:06:09 -0700
* gnu/packages/certs.scm (nss-certs): Update to 3.101.3.

Change-Id: Ibe9aa969046d375eea308594ac1a3c1cf23f75c2
---
 gnu/packages/certs.scm | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
index e2de6b168b..08db871bf2 100644
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@ -133,18 +133,21 @@ (define-public nss-certs
     ;; FIXME We used to refer to the nss package here, but that eventually caused
     ;; module cycles.  The below is a quick copy-paste job that must be kept in
     ;; sync manually.  Surely there's a better way…?
-    (version "3.99")
+    (version "3.101.3")
     (source (origin
               (method url-fetch)
-              (uri (let ((version-with-underscores
-                          (string-join (string-split version #\.) "_")))
+              (uri (let* ((versions (string-split version #\.))
+                          (directory-version (string-join versions "_"))
+                          ;; 3.101.3 release has a typo in the filename.
+                          (filename-version
+                           (if (string=? "3.101.3" version) "3.101_3" version)))
                      (string-append
                       "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                      "releases/NSS_" version-with-underscores "_RTM/src/"
-                      "nss-" version ".tar.gz")))
+                      "releases/NSS_" directory-version "_RTM/src/"
+                      "nss-" filename-version ".tar.gz")))
               (sha256
                (base32
-                "1g89ig40gfi1sp02gybvl2z818lawcnrqjzsws36cdva834c5maw"))
+                "1gkpbyh90aw9yhjnyj1bsp79s2bxab886d9ihkaw1i2kzqfvf3dg"))
               ;; Create nss.pc and nss-config.
               (patches (search-patches "nss-3.56-pkgconfig.patch"
                                        "nss-getcwd-nonnull.patch"
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#73152; Package guix-patches. (Sat, 17 May 2025 18:20:02 GMT) Full text and rfc822 format available.

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

From: Ian Eure <ian <at> retrospec.tv>
To: Christopher Baines <mail <at> cbaines.net>, Liliana Marie Prikler
 <liliana.prikler <at> gmail.com>
Cc: 73152 <at> debbugs.gnu.org
Subject: Re: [bug#73152] [PATCH 3/6] gnu: Add make-nss.
Date: Sat, 17 May 2025 11:19:14 -0700
Hi Liliana, Christopher,

Liliana Marie Prikler <liliana.prikler <at> gmail.com> writes:

> Note: the explanation should come before the ChangeLog.

Fixed, thanks.


Christopher Baines <mail <at> cbaines.net> writes:

> Maybe there's a more elegant way to share a value between phases 
> in the
> builder, but I think even doing it via an environment variable 
> is still
> preferable than using a procedure to create the package. I've 
> spent many
> hours debugging complex functional and performance related 
> issues caused
> by procedures returning packages, and while it's a powerful 
> tool, it's
> something to be avoided unless necessary.

I adopted this suggestion, and it made for a much cleaner setup. 
Thank you!

The current patch series is working and ready for review.  I 
haven’t rebuilt all the dependent packages (and QA is down, so I’m 
not sure whether it has, but it’s had a week to do so), but the 
direct nss/nspr changes build and seem to work for me.

> In terms of how to make this kind of change, I'd split it in to 
> two
> parts. Introducing the environment variable can definately go to 
> the
> core-packages-team branch in my opinion, and the package updates 
> could
> maybe as well, but I'd think of it as two separate patch series.

This patch series updates nss, but leaves nss-rapid for a later 
series.  I’d prefer not to block this on core-package-team, but if 
you feel strongly that some or all of these changes should go 
there, I will direct them.  Given that it’s been 8 months since I 
opened the series and that will extend the timeline greatly, I’m 
disinclined to complicate things more -- and would likely end up 
needing to move all the changes to Codeberg with the added delay. 
WDYT?

-- Ian




bug closed, send any further explanations to 73152 <at> debbugs.gnu.org and Ian Eure <ian <at> retrospec.tv> Request was from Ian Eure <ian <at> retrospec.tv> to control <at> debbugs.gnu.org. (Sun, 25 May 2025 17:50:01 GMT) Full text and rfc822 format available.

This bug report was last modified 22 days ago.

Previous Next


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