unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
@ 2020-09-07 19:57 Mark H Weaver
  2020-09-08 17:09 ` Jonathan Brielmaier
  0 siblings, 1 reply; 10+ messages in thread
From: Mark H Weaver @ 2020-09-07 19:57 UTC (permalink / raw)
  To: Jonathan Brielmaier; +Cc: guix-devel

Hi Jonathan, and other fellow Guix!

I've pushed a preview of IceCat-78.2 to the 'wip-icecat-78' branch on
Savannah.  It's ready for early testing by interested parties.  It works
well enough that I've switched to it as my primary browser.  This
version also supports Wayland natively.  However, in case the IceCat 78
preview doesn't (yet) work well for your use case, early testers might
want to make a backup of ~/.mozilla before running it, in case you need
to switch back to 68.  I don't know off-hand whether IceCat 68 would
cope with a profile that 78 has been run on.

There's one thing that needs to be done before this can be pushed to
'master': IceDove needs to be updated to version 78 as well.  For now,
IceDove is almost certainly broken on the 'wip-icecat-78' branch.

Jonathan: you seem to be the defacto maintainer of our IceDove package.
Would you like to work on updating it to 78 on the 'wip-icecat-78'
branch?  We have about 2 weeks before IceCat 78 must be pushed to
'master'.

    Best regards,
        Mark


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-07 19:57 IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78 Mark H Weaver
@ 2020-09-08 17:09 ` Jonathan Brielmaier
  2020-09-14 21:14   ` Jonathan Brielmaier
  0 siblings, 1 reply; 10+ messages in thread
From: Jonathan Brielmaier @ 2020-09-08 17:09 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

Am Mon, 7 Sep 2020 15:57:37 -0400, Mark H Weaver schrieb:
> Hi Jonathan, and other fellow Guix!
>
> I've pushed a preview of IceCat-78.2 to the 'wip-icecat-78' branch on
> Savannah.  It's ready for early testing by interested parties.  It works
> well enough that I've switched to it as my primary browser.  This
> version also supports Wayland natively.  However, in case the IceCat 78
> preview doesn't (yet) work well for your use case, early testers might
> want to make a backup of ~/.mozilla before running it, in case you need
> to switch back to 68.  I don't know off-hand whether IceCat 68 would
> cope with a profile that 78 has been run on.
>
> There's one thing that needs to be done before this can be pushed to
> 'master': IceDove needs to be updated to version 78 as well.  For now,
> IceDove is almost certainly broken on the 'wip-icecat-78' branch.
>
> Jonathan: you seem to be the defacto maintainer of our IceDove package.
> Would you like to work on updating it to 78 on the 'wip-icecat-78'
> branch?  We have about 2 weeks before IceCat 78 must be pushed to
> 'master'.
>
Hi Mark,

Nice work. I will have a look at the week end.

--
Sent from Ubuntu Touch


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-08 17:09 ` Jonathan Brielmaier
@ 2020-09-14 21:14   ` Jonathan Brielmaier
  2020-09-15  7:40     ` Andreas Enge
  2020-09-15 10:52     ` Mark H Weaver
  0 siblings, 2 replies; 10+ messages in thread
From: Jonathan Brielmaier @ 2020-09-14 21:14 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

On 08.09.20 19:09, Jonathan Brielmaier wrote:
>> Jonathan: you seem to be the defacto maintainer of our IceDove package.
>> Would you like to work on updating it to 78 on the 'wip-icecat-78'
>> branch?  We have about 2 weeks before IceCat 78 must be pushed to
>> 'master'.
>>
> Hi Mark,
>
> Nice work. I will have a look at the week end.

I had a look. It's at the moment two WIP patches here:
https://gitlab.com/jonsger/Guix/-/tree/wip-icedove-78

Icedove 78 needs nss >= 3.53.1 and we have only 3.52.1. I didn't get
3.53-3.55 building so I tried 3.56 which worked but fails in the install
phase, but the backtrace is to short and there is no way to make it longer:

Backtrace:
           8 (primitive-load "/gnu/store/qjiyb1f5dpi689cwicvh7w5036a…")
In ice-9/eval.scm:
   191:35  7 (_ _)
In guix/build/gnu-build-system.scm:
    838:2  6 (gnu-build #:source _ #:outputs _ #:inputs _ #:phases . #)
In ice-9/boot-9.scm:
  1736:10  5 (with-exception-handler _ _ #:unwind? _ # _)
In srfi/srfi-1.scm:
   857:16  4 (every1 #<procedure 7ffff4b6c5e0 at guix/build/gnu-bui…> …)
In guix/build/gnu-build-system.scm:
   847:30  3 (_ _)
In ice-9/eval.scm:
    619:8  2 (_ #(#(#(#(#(#(#(#<directory (guile-…>) …) …) …) …) …) …))
In unknown file:
           1 (delete-file "/gnu/store/278vm4vls3fqzpx9ixf4cqyhcfbs80…")
In ice-9/boot-9.scm:
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure delete-file: No such file or directory

So I'm not sure when I'm done with the update...


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-14 21:14   ` Jonathan Brielmaier
@ 2020-09-15  7:40     ` Andreas Enge
  2020-09-15 10:52     ` Mark H Weaver
  1 sibling, 0 replies; 10+ messages in thread
From: Andreas Enge @ 2020-09-15  7:40 UTC (permalink / raw)
  To: Jonathan Brielmaier; +Cc: guix-devel

Hello,

On Mon, Sep 14, 2020 at 11:14:03PM +0200, Jonathan Brielmaier wrote:
> ice-9/boot-9.scm:1669:16: In procedure raise-exception:
> In procedure delete-file: No such file or directory

just a quick guess: The nss recipe calls "delete-file" a few times in
the replaced "install" phase. Maybe you could uncomment these lines and
see whether one of the files does not exist any more with a newer nss.

Andreas



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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-14 21:14   ` Jonathan Brielmaier
  2020-09-15  7:40     ` Andreas Enge
@ 2020-09-15 10:52     ` Mark H Weaver
  2020-09-22 19:00       ` Jonathan Brielmaier
  1 sibling, 1 reply; 10+ messages in thread
From: Mark H Weaver @ 2020-09-15 10:52 UTC (permalink / raw)
  To: Jonathan Brielmaier; +Cc: guix-devel

Hi Jonathan,

Jonathan Brielmaier <jonathan.brielmaier@web.de> writes:
> I had a look. It's at the moment two WIP patches here:
> https://gitlab.com/jonsger/Guix/-/tree/wip-icedove-78

Thanks very much for working on it.

> Icedove 78 needs nss >= 3.53.1 and we have only 3.52.1.

An easy solution for now would be to use the bundled NSS, by simply
removing --with-system-nss from the mozconfig and removing 'nss' from
the inputs.  What do you think?

       Mark


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-15 10:52     ` Mark H Weaver
@ 2020-09-22 19:00       ` Jonathan Brielmaier
  2020-09-27 15:21         ` Jonathan Brielmaier
  0 siblings, 1 reply; 10+ messages in thread
From: Jonathan Brielmaier @ 2020-09-22 19:00 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

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

On 15.09.20 12:52, Mark H Weaver wrote:
> Hi Jonathan,
>
> Jonathan Brielmaier <jonathan.brielmaier@web.de> writes:
>> I had a look. It's at the moment two WIP patches here:
>> https://gitlab.com/jonsger/Guix/-/tree/wip-icedove-78
>
> Thanks very much for working on it.
>
>> Icedove 78 needs nss >= 3.53.1 and we have only 3.52.1.
>
> An easy solution for now would be to use the bundled NSS, by simply
> removing --with-system-nss from the mozconfig and removing 'nss' from
> the inputs.  What do you think?

In the mean time I got icedove 78 working. The two patches are attached.

gnu: Add nss@3.56.
- It's basically like nss 3.52.1 apart from two files are gone in
'install phase. The only way I found is to copy all phases over and
remove those two lines.
```
(delete-file (string-append lib "/libgtest1.so"))
(delete-file (string-append lib "/libgtestutil.so"))
```
- nss-3.56-pkgconfig.patch is like nss-pkgconfig.patch with only
difference in a slightly adjusted nss/manifest.mn diff. I don't know how
to do that more elegant

gnu: icedove: Update to 78.2.2.
- Mostly house keeping and some updates of components. To get icedove
run properly we need icedove-78-fix-new-page.patch, otherwise it's
completely broken. I found no other way to add it, then to use the
release tarball instead of the icecat sources.

~Jonathan
Sent from Icedove 78 :P

[-- Attachment #2: 0001-gnu-Add-nss-3.56.patch --]
[-- Type: text/x-patch, Size: 12301 bytes --]

From 86df2060bf729d848badffd569ac18daf705c4ad Mon Sep 17 00:00:00 2001
From: Jonathan Brielmaier <jonathan.brielmaier@web.de>
Date: Tue, 22 Sep 2020 20:34:42 +0200
Subject: [PATCH 1/2] gnu: Add nss@3.56.

Icedove 78 requires nss > 3.53. This version is the only one building
out-of-the-box.

* gnu/packages/nss.scm (nss-3.56): New variable.
* gnu/packages/patches/nss-3.56-pkgconfig.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/nss.scm                          |  92 +++++++
 gnu/packages/patches/nss-3.56-pkgconfig.patch | 228 ++++++++++++++++++
 3 files changed, 321 insertions(+)
 create mode 100644 gnu/packages/patches/nss-3.56-pkgconfig.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index dd15126b26..579974b517 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1352,6 +1352,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/nsis-env-passthru.patch			\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-pkgconfig.patch			\
+  %D%/packages/patches/nss-3.56-pkgconfig.patch			\
   %D%/packages/patches/ntfs-3g-CVE-2019-9755.patch		\
   %D%/packages/patches/nvi-assume-preserve-path.patch		\
   %D%/packages/patches/nvi-dbpagesize-binpower.patch		\
diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index b19ad7e1e9..32267b0a83 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -191,3 +192,94 @@ 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)))
+
+(define-public nss-3.56
+  (package
+     (inherit nss)
+     (version "3.56")
+     (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
+                "174f0ki2f8szkgv02jlsg2ci332sl9dabr2vcwnyjp1vxplf0xgq"))
+              ;; Create nss.pc and nss-config.
+              (patches (search-patches "nss-3.56-pkgconfig.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")
+                  #t))))
+     (arguments
+      `(#:parallel-build? #f ; not supported
+        #:make-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (nspr (string-append (assoc-ref %build-inputs "nspr")))
+              (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
+         (list "-C" "nss" (string-append "PREFIX=" out)
+               "NSDISTMODE=copy"
+               "NSS_USE_SYSTEM_SQLITE=1"
+               (string-append "NSPR_INCLUDE_DIR=" nspr "/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))
+          #:phases
+         (modify-phases %standard-phases
+          (replace 'configure
+           (lambda _
+             (setenv "CC" "gcc")
+             ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
+             ,@(match (%current-system)
+                 ((or "x86_64-linux" "aarch64-linux")
+                  `((setenv "USE_64" "1")))
+                 (_
+                  '()))
+             #t))
+         (replace 'check
+           (lambda _
+             ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
+             ;; The later requires a working DNS or /etc/hosts.
+             (setenv "DOMSUF" "localdomain")
+             (setenv "USE_IP" "TRUE")
+             (setenv "IP_ADDRESS" "127.0.0.1")
+
+             ;; 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" "2020-02-01" "./nss/tests/all.sh")))
+           (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)
+                 #t))))))))
diff --git a/gnu/packages/patches/nss-3.56-pkgconfig.patch b/gnu/packages/patches/nss-3.56-pkgconfig.patch
new file mode 100644
index 0000000000..42fff822bc
--- /dev/null
+++ b/gnu/packages/patches/nss-3.56-pkgconfig.patch
@@ -0,0 +1,228 @@
+Description: Create nss.pc and nss-config
+Author: Lars Wendler <polynomial-c@gentoo.org>
+Source: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/dev-libs/nss/files/nss-3.17.1-gentoo-fixups.patch
+
+Modifications:
+  Change libdir from ${prefix}/lib64 to ${prefix}/lib/nss.
+  Remove optional patching in nss/Makefile.
+  Include -L$libdir in output from "nss-config --libs".
+
+Later adapted to apply cleanly to nss-3.53.
+
+--- nss-3.21/nss/config/Makefile
++++ nss-3.21/nss/config/Makefile
+@@ -0,0 +1,40 @@
++CORE_DEPTH = ..
++DEPTH      = ..
++
++include $(CORE_DEPTH)/coreconf/config.mk
++
++NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'`
++NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'`
++NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'`
++PREFIX = /usr
++
++all: export libs
++
++export:
++	# Create the nss.pc file
++	mkdir -p $(DIST)/lib/pkgconfig
++	sed -e "s,@prefix@,$(PREFIX)," \
++	    -e "s,@exec_prefix@,\$${prefix}," \
++	    -e "s,@libdir@,\$${prefix}/lib/nss," \
++	    -e "s,@includedir@,\$${prefix}/include/nss," \
++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \
++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
++	    nss.pc.in > nss.pc
++	chmod 0644 nss.pc
++	cp nss.pc $(DIST)/lib/pkgconfig
++
++	# Create the nss-config script
++	mkdir -p $(DIST)/bin
++	sed -e "s,@prefix@,$(PREFIX)," \
++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \
++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
++	    nss-config.in > nss-config
++	chmod 0755 nss-config
++	cp nss-config $(DIST)/bin
++
++libs:
++
++dummy: all export libs
++
+--- nss-3.21/nss/config/nss-config.in
++++ nss-3.21/nss/config/nss-config.in
+@@ -0,0 +1,145 @@
++#!/bin/sh
++
++prefix=@prefix@
++
++major_version=@NSS_MAJOR_VERSION@
++minor_version=@NSS_MINOR_VERSION@
++patch_version=@NSS_PATCH_VERSION@
++
++usage()
++{
++	cat <<EOF
++Usage: nss-config [OPTIONS] [LIBRARIES]
++Options:
++	[--prefix[=DIR]]
++	[--exec-prefix[=DIR]]
++	[--includedir[=DIR]]
++	[--libdir[=DIR]]
++	[--version]
++	[--libs]
++	[--cflags]
++Dynamic Libraries:
++	nss
++	ssl
++	smime
++	nssutil
++EOF
++	exit $1
++}
++
++if test $# -eq 0; then
++	usage 1 1>&2
++fi
++
++lib_ssl=yes
++lib_smime=yes
++lib_nss=yes
++lib_nssutil=yes
++
++while test $# -gt 0; do
++  case "$1" in
++  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++  *) optarg= ;;
++  esac
++
++  case $1 in
++    --prefix=*)
++      prefix=$optarg
++      ;;
++    --prefix)
++      echo_prefix=yes
++      ;;
++    --exec-prefix=*)
++      exec_prefix=$optarg
++      ;;
++    --exec-prefix)
++      echo_exec_prefix=yes
++      ;;
++    --includedir=*)
++      includedir=$optarg
++      ;;
++    --includedir)
++      echo_includedir=yes
++      ;;
++    --libdir=*)
++      libdir=$optarg
++      ;;
++    --libdir)
++      echo_libdir=yes
++      ;;
++    --version)
++      echo ${major_version}.${minor_version}.${patch_version}
++      ;;
++    --cflags)
++      echo_cflags=yes
++      ;;
++    --libs)
++      echo_libs=yes
++      ;;
++    ssl)
++      lib_ssl=yes
++      ;;
++    smime)
++      lib_smime=yes
++      ;;
++    nss)
++      lib_nss=yes
++      ;;
++    nssutil)
++      lib_nssutil=yes
++      ;;
++    *)
++      usage 1 1>&2
++      ;;
++  esac
++  shift
++done
++
++# Set variables that may be dependent upon other variables
++if test -z "$exec_prefix"; then
++    exec_prefix=`pkg-config --variable=exec_prefix nss`
++fi
++if test -z "$includedir"; then
++    includedir=`pkg-config --variable=includedir nss`
++fi
++if test -z "$libdir"; then
++    libdir=`pkg-config --variable=libdir nss`
++fi
++
++if test "$echo_prefix" = "yes"; then
++    echo $prefix
++fi
++
++if test "$echo_exec_prefix" = "yes"; then
++    echo $exec_prefix
++fi
++
++if test "$echo_includedir" = "yes"; then
++    echo $includedir
++fi
++
++if test "$echo_libdir" = "yes"; then
++    echo $libdir
++fi
++
++if test "$echo_cflags" = "yes"; then
++    echo -I$includedir
++fi
++
++if test "$echo_libs" = "yes"; then
++      libdirs=-L$libdir
++      if test -n "$lib_ssl"; then
++	libdirs="$libdirs -lssl${major_version}"
++      fi
++      if test -n "$lib_smime"; then
++	libdirs="$libdirs -lsmime${major_version}"
++      fi
++      if test -n "$lib_nss"; then
++	libdirs="$libdirs -lnss${major_version}"
++      fi
++      if test -n "$lib_nssutil"; then
++       libdirs="$libdirs -lnssutil${major_version}"
++      fi
++      echo $libdirs
++fi
++
+--- nss-3.21/nss/config/nss.pc.in
++++ nss-3.21/nss/config/nss.pc.in
+@@ -0,0 +1,12 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: NSS
++Description: Network Security Services
++Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@
++Requires: nspr >= 4.8
++Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lnssutil3
++Cflags: -I${includedir}
++
+--- nss-3.21/nss/manifest.mn
++++ nss-3.21/nss/manifest.mn
+@@ -10,7 +10,7 @@
+
+ RELEASE = nss
+
+-DIRS = coreconf lib cmd cpputil gtests
++DIRS = coreconf lib cmd cpputil gtests config
+
+ lib: coreconf
+ cmd: lib
--
2.28.0


[-- Attachment #3: 0002-gnu-icedove-Update-to-78.2.2.patch --]
[-- Type: text/x-patch, Size: 13576 bytes --]

From d4fc615be83009ac79a36ecd9a0997d6a11dde55 Mon Sep 17 00:00:00 2001
From: Jonathan Brielmaier <jonathan.brielmaier@web.de>
Date: Tue, 22 Sep 2020 20:40:49 +0200
Subject: [PATCH 2/2] gnu: icedove: Update to 78.2.2.

* gnu/packages/gnuzilla.scm (icedove): Update to 78.2.2.
[source]: Separate from icecat-source. This allows adding patches for
icedove only.
[arguments]: We don't need to copy stuff in 'prepare-thunderbird-sources
phase anymore. Use more flexible approach for generating cargo checksums
from icecat. Update files in 'rename-to-icedove phase. Remove gone
configure flags and rename disable-ion to disable-jit.
[inputs]: Update icu4c to version 67 and nss to 3.56.
[native-inputs]: Remove thunderbird-sources as the release tarball is
used instead. Update rust and cargo to 1.41, rust-cbindgen to 0.14 and
node to 10.22.
* gnu/packages/patches/icedove-78-fix-new-page.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.

Tested-by: Jonathan Brielmaier <jonathan.brielmaier@web.de>
---
 gnu/local.mk                                  |  1 +
 gnu/packages/gnuzilla.scm                     | 77 ++++++++-----------
 .../patches/icedove-78-fix-new-page.patch     | 63 +++++++++++++++
 3 files changed, 94 insertions(+), 47 deletions(-)
 create mode 100644 gnu/packages/patches/icedove-78-fix-new-page.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 579974b517..f715a09b49 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1137,6 +1137,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/icecat-use-system-media-libs.patch	\
   %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch  \
   %D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch  \
+  %D%/packages/patches/icedove-78-fix-new-page.patch \
   %D%/packages/patches/icu4c-CVE-2020-10531.patch  		\
   %D%/packages/patches/id3lib-CVE-2007-4460.patch			\
   %D%/packages/patches/id3lib-UTF16-writing-bug.patch			\
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 5f4d179b87..3c96775c11 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -1154,12 +1154,19 @@ standards of the IceCat project.")
        (cpe-version . ,(first (string-split version #\-)))))))

 ;; Update this together with icecat!
-(define %icedove-build-id "20200825000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-build-id "20200910000000") ;must be of the form YYYYMMDDhhmmss
 (define-public icedove
   (package
     (name "icedove")
-    (version "68.12.0")
-    (source icecat-source)
+    (version "78.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://ftp.mozilla.org/pub/thunderbird/releases/"
+                    version "/source/thunderbird-" version ".source.tar.xz"))
+              (patches (search-patches "icedove-78-fix-new-page.patch")) ; remove in 78.3.0
+              (sha256
+               (base32
+                "0rzcfkcsxwspbbcf9c0fwclvajixwfx600hhbqc6l7yja4an9s33"))))
     (properties
      `((cpe-name . "thunderbird_esr")))
     (build-system gnu-build-system)
@@ -1174,9 +1181,6 @@ standards of the IceCat project.")
        (modify-phases %standard-phases
          (add-after 'unpack 'prepare-thunderbird-sources
            (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir "comm")
-             (copy-recursively (assoc-ref inputs "thunderbird-sources")
-                               "comm")
              (delete-file-recursively "obj-x86_64-pc-linux-gnu")
              (delete-file "sourcestamp.txt")
              #t))
@@ -1184,10 +1188,15 @@ standards of the IceCat project.")
            (lambda _
              (use-modules (guix build cargo-utils))
              (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
-               (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock")
-                 (("(\"checksum .* = )\".*\"" all name)
-                  (string-append name "\"" null-hash "\"")))
-               (generate-all-checksums "third_party/rust"))
+               (for-each (lambda (file)
+                           (format #t "patching checksums in ~a~%" file)
+                           (substitute* (find-files "." "Cargo.lock$")
+                             (("^checksum = \".*\"")
+                              (string-append "checksum = \"" null-hash "\""))))
+                         (find-files "." "Cargo.lock$"))
+               (for-each generate-all-checksums
+                         '("third_party/rust"
+                           "toolkit/library/rust")))
              #t))
          ;; Fixes issue where each installation directory generates its own profile.
          ;; See e.g. https://trac.torproject.org/projects/tor/ticket/31457
@@ -1229,12 +1238,10 @@ standards of the IceCat project.")
                  (("mozilla.org") "guix.gnu.org")))
              ;; Remove other mentions of Thunderbird in user-visible text.
              (with-directory-excursion "comm/mail/base/content"
-               (substitute* '("newInstallPage.xhtml"
-                              "overrides/app-license-name.html"
-                              "newInstall.xul")
+               (substitute* '("overrides/app-license-name.html")
                  (("Thunderbird") "Icedove")))
              (with-directory-excursion "comm/mail/components/"
-               (substitute* '("mailGlue.js"
+               (substitute* '("MailGlue.jsm"
                               "extensions/schemas/addressBook.json"
                               "extensions/schemas/tabs.json"
                               "extensions/schemas/cloudFile.json"
@@ -1244,14 +1251,9 @@ standards of the IceCat project.")
                               "im/messages/mail/Info.plist"
                               "enterprisepolicies/moz.build"
                               "enterprisepolicies/helpers/moz.build"
-                              "enterprisepolicies/schemas/moz.build"
-                              "preferences/chat.inc.xul")
+                              "enterprisepolicies/schemas/moz.build")
                  (("Thunderbird") "Icedove")))
-             (substitute* "comm/calendar/lightning/lightning-packager.mk"
-               (("ifeq \\(thunderbird")
-                "ifeq (icedove"))
              (substitute* '("comm/mailnews/base/prefs/content/accountUtils.js"
-                            "comm/mailnews/extensions/newsblog/content/feed-subscriptions.js"
                             "comm/common/src/customizeToolbar.js")
                (("AppConstants.MOZ_APP_NAME (.)= \"thunderbird" _ e)
                 (format #f "AppConstants.MOZ_APP_NAME ~a= \"icedove" e)))
@@ -1324,8 +1326,7 @@ standards of the IceCat project.")
                      "ac_add_options --disable-debug\n"
                      "ac_add_options --disable-debug-symbols\n"
                      "ac_add_options --disable-elf-hack\n"
-                     "ac_add_options --disable-gconf\n"
-                     "ac_add_options --disable-ion\n"
+                     "ac_add_options --disable-jit\n"
                      "ac_add_options --disable-necko-wifi\n"
                      "ac_add_options --disable-official-branding\n"
                      "ac_add_options --disable-tests\n"
@@ -1333,16 +1334,13 @@ standards of the IceCat project.")
                      "ac_add_options --disable-webrtc\n"
                      "ac_add_options --enable-application=comm/mail\n"
                      "ac_add_options --enable-calendar\n"
-                     "ac_add_options --enable-content-sandbox\n"
                      "ac_add_options --enable-default-toolkit=\"cairo-gtk3\"\n"
                      "ac_add_options --enable-optimize\n"
                      "ac_add_options --enable-pulseaudio\n"
                      "ac_add_options --enable-release\n"
-                     "ac_add_options --enable-startup-notification\n"
                      "ac_add_options --enable-strip\n"
                      "ac_add_options --enable-system-ffi\n"
                      "ac_add_options --enable-system-pixman\n"
-                     "ac_add_options --enable-system-sqlite\n"
                      "ac_add_options --prefix=" out "\n"
                      "ac_add_options --with-clang-path=" (assoc-ref %build-inputs "clang") "/bin/clang\n"
                      "ac_add_options --with-distribution-id=org.gnu\n"
@@ -1413,7 +1411,7 @@ standards of the IceCat project.")
        ("gtk+" ,gtk+)
        ("gtk+-2" ,gtk+-2)
        ("hunspell" ,hunspell)
-       ("icu4c" ,icu4c)
+       ("icu4c" ,icu4c-67)
        ("libcanberra" ,libcanberra)
        ("libevent" ,libevent)
        ("libffi" ,libffi)
@@ -1429,7 +1427,7 @@ standards of the IceCat project.")
        ("mesa" ,mesa)
        ("mit-krb5" ,mit-krb5)
        ("nspr" ,nspr)
-       ("nss" ,nss)
+       ("nss" ,nss-3.56)
        ("pango" ,pango)
        ("pixman" ,pixman)
        ("pulseaudio" ,pulseaudio)
@@ -1439,33 +1437,18 @@ standards of the IceCat project.")
        ("zip" ,zip)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("thunderbird-sources"
-        ;; The changeset identifier is taken from the file "sourcestamp.txt"
-        ;; in the Thunderbird release tarball.  We don't use the release
-        ;; tarball because it duplicates the Icecat sources and only adds the
-        ;; "comm" directory, which is provided by this repository.
-        ,(let ((changeset "b41cdff70b185358d9c4c1d4a36cfad15a24f001"))
-           (origin
-             (method hg-fetch)
-             (uri (hg-reference
-                   (url "https://hg.mozilla.org/releases/comm-esr68")
-                   (changeset changeset)))
-             (file-name (string-append "thunderbird-" version "-checkout"))
-             (sha256
-              (base32
-               "1xvky8p5r41mxdyg9amydy94p51wmmdwdz0zq2vzspr9viixf7xm")))))
-       ("autoconf" ,autoconf-2.13)
-       ("cargo" ,rust "cargo")
+     `(("autoconf" ,autoconf-2.13)
+       ("cargo" ,rust-1.41 "cargo")
        ("clang" ,clang)
        ("llvm" ,llvm)
        ("nasm" ,nasm)
-       ("node" ,node)
+       ("node" ,node-10.22)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("python" ,python)
        ("python2" ,python-2.7)
-       ("rust" ,rust)
-       ("rust-cbindgen" ,rust-cbindgen)
+       ("rust" ,rust-1.41)
+       ("rust-cbindgen" ,rust-cbindgen-0.14)
        ("which" ,which)
        ("yasm" ,yasm)))
     (home-page "https://www.thunderbird.net")
diff --git a/gnu/packages/patches/icedove-78-fix-new-page.patch b/gnu/packages/patches/icedove-78-fix-new-page.patch
new file mode 100644
index 0000000000..fe886ca9fa
--- /dev/null
+++ b/gnu/packages/patches/icedove-78-fix-new-page.patch
@@ -0,0 +1,63 @@
+# HG changeset patch
+# User Rob Lemley <rob@thunderbird.net>
+# Date 1600079976 -10800
+# Node ID f085dbd311bc4b013605202de04de9a81bb55ed1
+# Parent  391f1b69f6d617dd566297dd92c5f1188c6eca20
+Bug 1664607 - Don't try to load what's new page when built with updater disabled. r=mkmelin  a=wsmwk
+
+
+When Thunderbird is built with --disable-updater, as it done by most Linux
+distributions, accessing the nsIUpdateManager service will throw an error
+resulting in a broken UI. Check AppConstants.MOZ_UPDATER when using
+nsIUpdateManger to prevent errors.
+
+Differential Revision: https://phabricator.services.mozilla.com/D90023
+
+Added "comm" to the file paths (by Jonathan Brielmaier <jonathan.brielmaier@web.de>)
+
+diff --git a/comm/mail/base/content/specialTabs.js b/comm/mail/base/content/specialTabs.js
+--- a/comm/mail/base/content/specialTabs.js
++++ b/comm/mail/base/content/specialTabs.js
+@@ -1043,28 +1043,30 @@ var specialTabs = {
+       ""
+     );
+
+     let mstone = Services.appinfo.version;
+     if (mstone != old_mstone) {
+       Services.prefs.setCharPref("mailnews.start_page_override.mstone", mstone);
+     }
+
+-    let update = Cc["@mozilla.org/updates/update-manager;1"].getService(
+-      Ci.nsIUpdateManager
+-    ).activeUpdate;
++    if (AppConstants.MOZ_UPDATER) {
++      let update = Cc["@mozilla.org/updates/update-manager;1"].getService(
++        Ci.nsIUpdateManager
++      ).activeUpdate;
+
+-    if (update && Services.vc.compare(update.appVersion, old_mstone) > 0) {
+-      let overridePage = Services.urlFormatter.formatURLPref(
+-        "mailnews.start_page.override_url"
+-      );
+-      overridePage = this.getPostUpdateOverridePage(update, overridePage);
+-      overridePage = overridePage.replace("%OLD_VERSION%", old_mstone);
+-      if (overridePage) {
+-        openLinkExternally(overridePage);
++      if (update && Services.vc.compare(update.appVersion, old_mstone) > 0) {
++        let overridePage = Services.urlFormatter.formatURLPref(
++          "mailnews.start_page.override_url"
++        );
++        overridePage = this.getPostUpdateOverridePage(update, overridePage);
++        overridePage = overridePage.replace("%OLD_VERSION%", old_mstone);
++        if (overridePage) {
++          openLinkExternally(overridePage);
++        }
+       }
+     }
+   },
+
+   /**
+    * Gets the override page for the first run after the application has been
+    * updated.
+    * @param {nsIUpdate} update - The nsIUpdate for the update that has been applied.
+
--
2.28.0


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
@ 2020-09-27 15:03 Zhu Zihao
  2020-09-27 20:15 ` Mark H Weaver
  0 siblings, 1 reply; 10+ messages in thread
From: Zhu Zihao @ 2020-09-27 15:03 UTC (permalink / raw)
  To: mhw; +Cc: guix-devel@gnu.org

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

@@ -1017,10 +1010,31 @@ from forcing GEXP-PROMISE."
            (lambda _
              (use-modules (guix build cargo-utils))
              (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
-               (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock")
-                 (("(\"checksum .* = )\".*\"" all name)
-                  (string-append name "\"" null-hash "\"")))
-               (generate-all-checksums "third_party/rust"))
+               (for-each (lambda (file)
+                           (format #t "patching checksums in ~a~%" file)
+                           (substitute* (find-files "." "Cargo.lock$")
+                             (("^checksum = \".*\"")
+                              (string-append "checksum = \"" null-hash "\""))))
+                         (find-files "." "Cargo.lock$"))
+               (for-each generate-all-checksums
+                         '("services"
+                           "js"
+                           "third_party/rust"
+                           "dom/media"
+                           "dom/webauthn"
+                           "toolkit"
+                           "gfx"
+                           "storage"
+                           "modules"
+                           "xpcom/rust"
+                           "media"
+                           "mozglue/static/rust"
+                           "netwerk"
+                           "remote"
+                           "intl"
+                           "servo"
+                           "security/manager/ssl"
+                           "build")))




Why we need another `find-files` in `substitute*`? The outer `find-files` should find all locks file for you, maybe you can use the arg of lambda instead.


@@ -756,8 +750,8 @@ from forcing GEXP-PROMISE."
        ("libxt" ,libxt)
        ("libffi" ,libffi)
        ("ffmpeg" ,ffmpeg)
-       ("libvpx" ,libvpx)
-       ("icu4c" ,icu4c)
+       ;; UNBUNDLE-ME! ("libvpx" ,libvpx)
+       ;; UNBUNDLE-ME! ("icu4c" ,icu4c)
        ("pixman" ,pixman)
        ("pulseaudio" ,pulseaudio)
        ("mesa" ,mesa)



IceCat 78 may need icu4c v67, which variable name is `icu4c-67` in guix channel.

[-- Attachment #2: Type: text/html, Size: 6528 bytes --]

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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-22 19:00       ` Jonathan Brielmaier
@ 2020-09-27 15:21         ` Jonathan Brielmaier
  2020-09-27 23:50           ` Mark H Weaver
  0 siblings, 1 reply; 10+ messages in thread
From: Jonathan Brielmaier @ 2020-09-27 15:21 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

On 22.09.20 21:00, Jonathan Brielmaier wrote:
> On 15.09.20 12:52, Mark H Weaver wrote:
>> Hi Jonathan,
>>
>> Jonathan Brielmaier <jonathan.brielmaier@web.de> writes:
>>> I had a look. It's at the moment two WIP patches here:
>>> https://gitlab.com/jonsger/Guix/-/tree/wip-icedove-78
>>
>> Thanks very much for working on it.
>>
>>> Icedove 78 needs nss >= 3.53.1 and we have only 3.52.1.
>>
>> An easy solution for now would be to use the bundled NSS, by simply
>> removing --with-system-nss from the mozconfig and removing 'nss' from
>> the inputs.  What do you think?
>
> In the mean time I got icedove 78 working. The two patches are attached.
>
> gnu: Add nss@3.56.
> - It's basically like nss 3.52.1 apart from two files are gone in
> 'install phase. The only way I found is to copy all phases over and
> remove those two lines.
> ```
> (delete-file (string-append lib "/libgtest1.so"))
> (delete-file (string-append lib "/libgtestutil.so"))
> ```
> - nss-3.56-pkgconfig.patch is like nss-pkgconfig.patch with only
> difference in a slightly adjusted nss/manifest.mn diff. I don't know how
> to do that more elegant
>
> gnu: icedove: Update to 78.2.2.
> - Mostly house keeping and some updates of components. To get icedove
> run properly we need icedove-78-fix-new-page.patch, otherwise it's
> completely broken. I found no other way to add it, then to use the
> release tarball instead of the icecat sources.
>
> ~Jonathan
> Sent from Icedove 78 :P

I updated the patches in the mean time for 78.3.0, see
http://issues.guix.gnu.org/43647


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-27 15:03 Zhu Zihao
@ 2020-09-27 20:15 ` Mark H Weaver
  0 siblings, 0 replies; 10+ messages in thread
From: Mark H Weaver @ 2020-09-27 20:15 UTC (permalink / raw)
  To: Zhu Zihao; +Cc: guix-devel

Hi,

"Zhu Zihao" <all_but_last@163.com> writes:

> @@ -1017,10 +1010,31 @@ from forcing GEXP-PROMISE."
>             (lambda _
>               (use-modules (guix build cargo-utils))
>               (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
> -               (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock")
> -                 (("(\"checksum .* = )\".*\"" all name)
> -                  (string-append name "\"" null-hash "\"")))
> -               (generate-all-checksums "third_party/rust"))
> +               (for-each (lambda (file)
> +                           (format #t "patching checksums in ~a~%" file)
> +                           (substitute* (find-files "." "Cargo.lock$")
> +                             (("^checksum = \".*\"")
> +                              (string-append "checksum = \"" null-hash "\""))))
> +                         (find-files "." "Cargo.lock$"))
[...]
> Why we need another `find-files` in `substitute*`? The outer
> `find-files` should find all locks file for you, maybe you can use the
> arg of lambda instead.

Indeed, that's clearly what I had intended to do, but then I apparently
forgot a step.  Good catch, thanks!

> @@ -756,8 +750,8 @@ from forcing GEXP-PROMISE."
>         ("libxt" ,libxt)
>         ("libffi" ,libffi)
>         ("ffmpeg" ,ffmpeg)
> -       ("libvpx" ,libvpx)
> -       ("icu4c" ,icu4c)
> +       ;; UNBUNDLE-ME! ("libvpx" ,libvpx)
> +       ;; UNBUNDLE-ME! ("icu4c" ,icu4c)
>         ("pixman" ,pixman)
>         ("pulseaudio" ,pulseaudio)
>         ("mesa" ,mesa)
>
> IceCat 78 may need icu4c v67, which variable name is `icu4c-67` in
> guix channel.

Good idea!  Would you like to propose a patch, test it, and report back?
If not, I'll try it eventually.  I would certainly be very glad to
reduce the number of bundled libraries in our IceCat package, which
seems to be getting worse over time.  Any help on that effort would be
much appreciated.

       Best,
        Mark


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

* Re: IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78.
  2020-09-27 15:21         ` Jonathan Brielmaier
@ 2020-09-27 23:50           ` Mark H Weaver
  0 siblings, 0 replies; 10+ messages in thread
From: Mark H Weaver @ 2020-09-27 23:50 UTC (permalink / raw)
  To: Jonathan Brielmaier; +Cc: guix-devel

Jonathan Brielmaier <jonathan.brielmaier@web.de> writes:
> I updated the patches in the mean time for 78.3.0, see
> http://issues.guix.gnu.org/43647

Thank you, Jonathan!  Your updated patches look good to me.
I've followed up at <https://issues.guix.gnu.org/43647> and we can
continue the discussion there.

     Best,
      Mark


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

end of thread, other threads:[~2020-09-27 23:51 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-07 19:57 IceCat-78.2 preview on 'wip-icecat-78' branch; need icedove-78 Mark H Weaver
2020-09-08 17:09 ` Jonathan Brielmaier
2020-09-14 21:14   ` Jonathan Brielmaier
2020-09-15  7:40     ` Andreas Enge
2020-09-15 10:52     ` Mark H Weaver
2020-09-22 19:00       ` Jonathan Brielmaier
2020-09-27 15:21         ` Jonathan Brielmaier
2020-09-27 23:50           ` Mark H Weaver
  -- strict thread matches above, loose matches on Subject: below --
2020-09-27 15:03 Zhu Zihao
2020-09-27 20:15 ` Mark H Weaver

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).