guix_mirror_bot pushed a commit to branch gnuzilla-updates
in repository guix.

commit bfcd8ad5f7f7f04e3c90f12099483eb5eb9c5013
Author: Maxim Cournoyer <[email protected]>
AuthorDate: Tue Aug 26 22:31:26 2025 +0900

    gnu: icecat: Update to 140.2.0 [security fixes].
    
    For Firefox/IceCat, this fixes at least CVE-2025-6427, CVE-2025-6428,
    CVE-2025-6431, CVE-2025-6432, CVE-2025-6433, CVE-2025-6434, CVE-2025-6435 
and
    CVE-2025-6436.
    
    For Thunderbird/IceDove, this fixes too many CVEs to be named here. Consult
    <https://www.mozilla.org/en-US/security/known-vulnerabilities/thunderbird> 
to
    read the details.
    
    * gnu/packages/image.scm (libpng-apng-for-librewolf): Rename to...
    (libpng-apng-next): ... this.
    * gnu/packages/librewolf.scm (librewolf) [inputs]: Adjust accordingly.
    * gnu/packages/gnuzilla.scm (icecat-minimal): Update to 140.2.0.
    [#:configure-flags]: Add --disable-fhs.  Remove --enable-official-branding.
    [#:phases] {apply-guix-specific-patches}: Apply
    icecat-fhs-configure-option.patch.
    {remove-cargo-frozen-flag}: Remove --frozen from rust.mk.
    {install-desktop-entry}: Adjust and streamline.
    {install-icons}: Use the 'unofficial' branding directory.
    [inputs]: Replace libpng-apng with libpng-apng-next.
    [native-search-paths]: Replace ICECAT_SYSTEM_DIR with MOZILLA_SYSTEM_DIR.
    (icecat-source): Remove obsolete cleanups.  Switch tarball compression to
    zstd.
    (make-l10n-package): No longer set GUIX_PYTHONPATH.
    [#:phases] {build}: Register the "tb_common" mach site.
    [native-inputs]: Replace python-wrapper with python. Add python-aiohttp,
    python-async-timeout and python-dateutil.
    (mozilla-115-compare-locales, mozilla-115-locale, mozilla-115-locales)
    (update-mozilla-115-locales, all-mozilla-115-locales, 
%icecat-115-base-version)
    (%icecat-115-version, %icecat-115-build-id
    (icecat-115-source): Delete variables.
    (mozilla-l10n): Update to correct changeset.
    (format-locales): New procedure.
    (%icecat-locales): Update.
    (%icecat-base-version): Set to the version of mozjs.
    (%icecat-build-id): Bump.
    (%icedove-build-id): Bump.
    (%icedove-version): Set to 140.2.0.
    (thunderbird-comm-source): Update accordingly.
    (comm-source->locales+changeset): Delete variable.
    (%icedove-locales): Regenerate.
    (thunderbird-comm-l10n): Adjust URI.
    (icedove-source): Compress resulting tarball via zstd. Adjust patching based
    on changed file names and content. Make "comm" files writable.
    (icedove-minimal) [#:phases] {configure}: Do not set PYTHON. Add
    'ac_add_options --enable-rust-simd' flag.
    {do-not-verify-vendored-rust-dependencies}: New phase.
    {patch-cargo-checksums}: Sync with IceCat, add "comm" directory.
    {remove-cargo-frozen-flag}: Sync phase with that of IceCat.
    [inputs]: Sort. Add ffmpeg. Remove gtk+-2. Replace nss with nss-rapid.
    [native-inputs]: Replace clang-15 with clang-20, llvm-15 with llvm-20. 
Replace
    rust-cbindgen-0.24 with rust-cbindgen.
    * gnu/packages/patches/icecat-makeicecat-update.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Register it.
    * gnu/packages/patches/icecat-compare-paths.patch: Update.
    * gnu/packages/patches/icecat-use-system-wide-dir.patch: Rework, with the 
goal
    to of upstreaming it.
    
    Change-Id: Ib420388b9e7c7b59baa74920951afbda99cfe5a2
---
 gnu/local.mk                                       |   1 +
 gnu/packages/gnuzilla.scm                          | 758 +++++++++------------
 gnu/packages/image.scm                             |  59 +-
 gnu/packages/librewolf.scm                         |   2 +-
 gnu/packages/patches/icecat-compare-paths.patch    |  17 +-
 .../patches/icecat-fhs-configure-option.patch      |  38 ++
 .../patches/icecat-makeicecat-update.patch         | 409 +++++++++++
 .../patches/icecat-use-system-wide-dir.patch       |  58 +-
 8 files changed, 837 insertions(+), 505 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 1017920785..a1d6a696a7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1599,6 +1599,7 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/hwloc-1-test-btrfs.patch                        \
   %D%/packages/patches/i7z-gcc-10.patch                                \
   %D%/packages/patches/icecat-makeicecat.patch                 \
+  %D%/packages/patches/icecat-makeicecat-update.patch          \
   %D%/packages/patches/icecat-avoid-bundled-libraries.patch    \
   %D%/packages/patches/icecat-compare-paths.patch              \
   %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch      \
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 92b90b2213..60ddc98387 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -41,6 +41,8 @@
   #:use-module ((srfi srfi-1) #:hide (zip))
   #:use-module (ice-9 format)
   #:use-module (ice-9 match)
+  #:autoload (ice-9 pretty-print) (pretty-print)
+  #:autoload (ice-9 textual-ports) (get-string-all)
   #:use-module (gnu packages)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -74,6 +76,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages fonts)
@@ -100,7 +103,7 @@
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sqlite)
-  #:autoload (json parser) (json->scm))
+  #:use-module (gnu packages time))
 
 (define-public mozjs
   (package
@@ -372,330 +375,14 @@ fractional-second-digits-append-item.js")
     (inputs
      (list icu4c-73 readline zlib))))
 
-
-;;;
-;;; Localization helper procedures.
-;;;
-(define mozilla-115-compare-locales
-  (origin
-    (method hg-fetch)
-    (uri (hg-reference
-          (url "https://hg.mozilla.org/l10n/compare-locales/";)
-          (changeset "RELEASE_8_1_0")))
-    (file-name "mozilla-compare-locales")
-    (sha256 (base32 "00bpkaqf2ng1nn9ajyb5mli0jq58q5fm2n3yy90jy0hp4q2gbs50"))))
-
-(define (mozilla-115-locale locale changeset hash-string)
-  (origin
-    (method hg-fetch)
-    (uri (hg-reference
-          (url (string-append "https://hg.mozilla.org/l10n-central/";
-                              locale))
-          (changeset changeset)))
-    (file-name (string-append "mozilla-locale-" locale))
-    (sha256 (base32 hash-string))))
-
-(define-syntax-rule (mozilla-115-locales (hash-string changeset locale) ...)
-  (list (mozilla-115-locale locale changeset hash-string)
-        ...))
-
-(define (update-mozilla-115-locales changesets.json)
-  "Output a new list of Mozilla locales, to update the ALL-MOZILLA-115-LOCALES
-variable defined below.  It requires guile-json to be installed."
-  (match (call-with-input-file changesets.json json->scm)
-    (((lang ("revision" . revision) platforms pin) ...)
-     (let ((data (reverse (map (lambda (rev lang)
-                                 `(,(list->string (make-list 40 #\0))
-                                   ,(string-take rev 12) ,lang))
-                               revision lang))))
-       (format #t "~{~s~%~}" data)
-       data))))
-
-(define-public all-mozilla-115-locales
-  (mozilla-115-locales
-   ;;                      sha256                            changeset    
locale
-   
;;---------------------------------------------------------------------------
-   ("152dc3nxbsjhawq8wm040hbnhq96l039j3k8ll4q93qm93msj507" "de9eb6a1e3e0" 
"ach")
-   ("0rfbzyv87x5d4qspjaiwsvqcf57g0d93daibj4rc4xsq3g2gw45v" "45b72420bf17" "af")
-   ("13lfl3nq0nr3zvh1zddpnyk8x054784yz08nkprmqhzyvfv3i5wq" "babed417b5e8" "an")
-   ("07fjh9wvl9jgvyqbvsd7l4pq895y4sv725fd8fr274s6l4x7pzz0" "7df35a519b47" "ar")
-   ("04zmfr15a3zhalj66ydpcrh3nxk1q7wb2gckfqsq55q72i3hvkcy" "fd0068a8989f" 
"ast")
-   ("1x2hnsa1nfmysd7w53ly14bp8hk1vbgfj1016wapcshvf1kap3mr" "4df6d5edc74d" "az")
-   ("1synmbnng6ai8gmz8srxdgf3qgadjvymb66inp3g2lww0c98c4qn" "97829729f043" "be")
-   ("1zank8f4145v4fv28y47ssknn55zrpyll3kxhha2h54za4zkn4p1" "4f568ae49cf3" "bg")
-   ("00wdllmdmzg11x6dcj3f2i047y3bgab1qw2zjaa92i36d5nd2hdr" "a634f8559ffd" "bn")
-   ("0b5f50ar7zj2z1jjvhv8841rabx5a2ylcl0rma3qiz5i6r41lgli" "4ca046b16e37" "br")
-   ("1g1qh8b496psq9yknjzi7drzqzhd5g50xl5qiwd6pr61xyqfvnkx" "690960700526" "bs")
-   ("1wd463lfhdybx0nz0dqvhrsi7f9xl5qd7mvshpgqxlj5x1nhamzy" "58714a456fd6" "ca")
-   ("1s9ls2fh9xfgb8q9vay5lkszfhh0k99lrp28m3fi83b5vv8qj8fq" "12760eef74bc" 
"cak")
-   ("0abwslv88hda2wfsnkyi7si9v16923gf4xfbq3h0a6mpxf1mylhs" "703352c2a9b4" 
"ca-valencia")
-   ("05pfacr2kk0sxrpw3s15c8rvchkzxgvsy1njp5q72b270sw98i7h" "6a7eef3982fb" "cs")
-   ("0cidwylb4s7n1hdw4yjqj89bl2qsscf3b1vnfl7hsxf68lj2lzaj" "9c30e4ec1dde" "cy")
-   ("10d7mn2qq0nvw3073ga4garwnvpk5xqkgn3dgw1az2g5pncclhfk" "668cf42570ef" "da")
-   ("0nfb3nf47gavafb35mm4ghl82kpylyj0r1vqc47nz151mjj2mnli" "c968a5118cda" "de")
-   ("1qjf12aymz1x281chv7sqyarbz6f8w7nxsli3b4srsar12l5f0lb" "27dd7f4a3f3f" 
"dsb")
-   ("040165lwplyj0cv9ccagdjwigy527rli3qda6b633bqrpx6310sw" "920e28aa6758" "el")
-   ("1h5zk58rmrqnbfhxyiwcn0385v6r5ayfkblpwqkji80p135n74sa" "b0e55a5a6413" 
"en-CA")
-   ("1w5q4b1a9ysgc76dg45cr2q55y4djdcrj2qzs0imq61sjrvih2fv" "9aae743f32df" 
"en-GB")
-   ("0mxsp5ipg36jdpphwrdra877z9vz1ifbhas988awhc3i9byx7zbh" "3c825be76f39" "eo")
-   ("1nxscjmk80wh359lv4cxgh1y85f8qw522dppy292pkqnqnsrfnq1" "ffac56bd3aef" 
"es-AR")
-   ("02353n524fy5icp2myjn198n511lzb03hcd4a61bgd7f26cpkhy5" "77e209bb2114" 
"es-CL")
-   ("1863d4zy2745hfw2kgw5z0625znvzkqwlwbvcj8cw6nv3r6dxgdv" "215ced58e499" 
"es-ES")
-   ("0asrcxvig4i75r4kpkmcfsc1kzjl8cbaz11an5kny2slcy63av7i" "d748a2a91643" 
"es-MX")
-   ("1p40zmf29mq81blssjh6gs8fih925mia3l1gya9vzgyp5i4dvln6" "66edf9863a04" "et")
-   ("1hr4q01856j8jmjia39586mxfbv5ijkq7i6cyxz1r422gqivv13v" "752b6aa2225e" "eu")
-   ("0d6vgd6anz237ckgc3a30nzdxa98fw33rc1r2wkr4y3yfvd2bidc" "4a57be1cf783" "fa")
-   ("1kjb8k55vkgn7fpzgvayahzx7cbx7vryyv89kynp2lv052smhh01" "e42c0149059c" "ff")
-   ("0d392s3fh1cl491b72cxlj7la6in84mfxbcn862f0sr63iz0q7wn" "0a2a3e96367c" "fi")
-   ("10rvxinl9as9wdd9yrhsskjwsklzxd35j4b1ygr4jlvslcrmdhpn" "119b009eba98" "fr")
-   ("1x0bfp7gaplnwcmfvv8c87znxp9fxsa99nl88j87qxn45h9kz8q6" "475065215d5c" 
"fur")
-   ("0p20jlm8vxlzixm446wcqjs5sz7m9x7v4zgqczvriwyspad7d8xp" "6909c0c42a2e" 
"fy-NL")
-   ("1rh8mvlamawzdfis0ah8rgnjk30mzpxhgh1yx8rxppps7l5n2hpj" "2f350c9ba505" 
"ga-IE")
-   ("1n2dxvv0q77azg2cz4nasq47pbsh1l6fngphy3lzz1wj4x3s8z7g" "3fe4a6bcac31" "gd")
-   ("15x51q3lsr67lklci13cqlxmgjyk8px12qc3qfrfdv2dk68znwmq" "0482da4a3d5b" "gl")
-   ("1zx7a0l781hyi9k6bi0m9ghgzcb116cqy88q7bf9sm0gar85yxwi" "bb255fc733c3" "gn")
-   ("1p6ycyjp7qsv1fk19yca5bwvyg72y3v87fr3wmhq7xzmdz6994fm" "dd3707daa411" 
"gu-IN")
-   ("02r68v2yhxxdfms9l2yq8pk7rarg1ysv67mbny04gaws6k5fv3an" "c247293030ae" "he")
-   ("116s9qgcwb0j1mzwy5napq5ww9cs5hcj41xiq2k6kz4gjxw4jazl" "e9c1a1fe1b79" 
"hi-IN")
-   ("1kg7xiw75ks490kiay2gndlc2akkg4bxdx4q7ysaxf6kpgisakxg" "068c00ca7cae" "hr")
-   ("1xjqvqn65nyb0dlchy3bikpf0g3qjba7i5g68jcicz0hcyrfagvd" "5fd424d1061b" 
"hsb")
-   ("1j81cv599h3iv26yzzdf8m5vkdw9kdhrlls8c6zd3fslpd91yn5q" "0ef89daff942" "hu")
-   ("0wwjyjpqcxvjsw7md6sz2zxncay3wk066qiv4p2vpqv5sw9z1sdh" "771fd65bc781" 
"hy-AM")
-   ("0pxjvzkkhls3d28c1656y3fc78snhc90f0mj5jx9rhh7l6hg0801" "6cfa8fc01f2a" "ia")
-   ("1xh93qkj7y4ad10sqyldr9hymsbffnq7kya0smvci1nwmnndd8bk" "ae863f3cd230" "id")
-   ("1npyaz5zyk6yr8z8sj2gbd0ahynglxmalw27rcdb57h81n0520y7" "d465499a6600" "is")
-   ("14hhl050vzbrwwppvpyicqfcqazpvyaygnr8hgrz0jgyb30lfvhw" "a8ac50410815" "it")
-   ("1jz9i0x22qig74gwrrrvnwc7s50h1x18sl797lr678xiw4f6p0ar" "13abbdd8abdf" "ja")
-   ("04k53mnskapqv968gphpmzhxbg1m0jxbzf24z9g0lgspnhcgwpx9" "1f388ad7f0e9" 
"ja-JP-mac")
-   ("1n9ayc6l72fy08zdqpwag54rh6j5aagj7y7976gyvjl1ssz745fs" "ed774dd2eff3" "ka")
-   ("09bw4sk8g7bmx9xxxiy8y9p8zhf3h3gvaddlx86zdk12k44iqmnc" "c9cfab9734b4" 
"kab")
-   ("0lmwsq72vk424nlrgnq46apdbgivzrmx303rvng8h03wrp9qjz1m" "4797db4a0fcb" "kk")
-   ("0al453bmiq85kkkfaba11iwnx0dy9f3dl9hlz0j38ysgcipwap5l" "f312da458d8b" "km")
-   ("1rjf875nwcqnlbfgk92vpa8msy3vp2xcgfasj7kksr37rxcbwa8m" "a30ac878de56" "kn")
-   ("0v5a1v0a6xziwhspfqpdccl00h0b4j4k4vwmmijld44cdmj208v9" "6f5e9c8eb029" "ko")
-   ("0kx0hz0dp9bdgf0r0m9qsip2ybrc4dwmry3kp488z2pig0asai7x" "dcdf4bf4482b" 
"lij")
-   ("1iawv3hbl0wab1xzhhihxiqsz2i6icf64ipmjrpm9srlg6kaxgg5" "913770b70ead" "lt")
-   ("15ppml5b0f78ycdswff0yqr27d649fr2rggv5dnxqxxm2bx5hzw6" "6351f7efe4d7" "lv")
-   ("0crbysr0raqh90ayb5rq73d3cddfryfaj4bdbzijk2j2rpdlwv1m" "6acffb2c66ee" "mk")
-   ("0b5dw5a904w5ibd7yz1839a0cv2hmnlv2bz0kpsr6xf52jv20g6a" "942eca4c76b6" "mr")
-   ("0fr83kiq7xmw1kyrjrmm3iirlfcp94dyacdkkj9df6gr5qp6wn7i" "de00ab4bb6fe" "ms")
-   ("011y1yyl97avjawja3gmwwa74kxcvm2g2wn47yv01xqy74wbbss7" "2ce7138cd126" "my")
-   ("0f6ffh76g31df9kfj6azip2qy0b14s287isgm7sxnclch4jwq83s" "5cc51d238790" 
"nb-NO")
-   ("193nw6l0z7vlcd7flb72bc8h7vd9vjj8xlz5lhf7irmfr2bldj0r" "db205a4fd15a" 
"ne-NP")
-   ("14qizkrcs1avd78ci4i4hr7v3bz3m51if1jc5wxydkx9n0yb8cgn" "1abc02acab91" "nl")
-   ("1cjglsaf8ynm4wgzpbcf68gj8jhvnzldrnjlni4c4vvl0bfxnxa2" "b4ff1a7885c2" 
"nn-NO")
-   ("0jpdq7zpqs3gnyzz1xvccvjqbzwga35sj85z52vprm6zcxd8gm0m" "1c7d5471dba9" "oc")
-   ("14apl3vhxkqcy8l5a0ny71f9dkmbb5fakvkpngqv5xgbbl0byfk3" "cf3fd8eb605b" 
"pa-IN")
-   ("1aglsx0w3xgbn1dhdbzwcqn8sdkp4bncl5bj7nlick56rbkicj9j" "3c9c3c67830a" "pl")
-   ("10hqfd0fjbcbgdsj0jxdfvm9abiya05lw2bpy0cz6h61mgjywqiz" "68bf2b7c6f25" 
"pt-BR")
-   ("1vvs0kkvnnnsxn1d5fnma55fizzs1bbx5sv5k2w4164k6h7fhxfv" "fae18b48519f" 
"pt-PT")
-   ("0c8dl12n5fjdd3bjaf8idyaxsf8ppbma132vdw8bk2wqnh4cv69a" "92110fd6e211" "rm")
-   ("0mxxy56kj0k5jhjxjv8v4zz57pha819mz7j803lcilax7w52wgca" "5eeba1f64743" "ro")
-   ("0jrd95n108r4sxdwgy39zjynm5nlzzmiijsfpxxfwj7886wl4faz" "47131134e349" "ru")
-   ("1lwm5jv3hvjp84a70186x2083nhr3mfcl7kpmw5in9amaflfi41b" "a5cd6d3d67ee" 
"sat")
-   ("1q6pn3iixzcas9blf61bhvwgppbsh0am0wdz6a6p9f9978894d73" "880b7986692a" "sc")
-   ("0xndsph4v725q3xcpmxxjb9vxv19sssqnng82m9215cdsv9klgpb" "bf5f6e362f6f" 
"sco")
-   ("0l70n8817mbmbc09fsnn2aqjj9k9dhad2gmzgphmiilf9mqm2dpf" "1f705c926a99" "si")
-   ("19bqjazazww08chd1qc08dsnr2521088jq5jd4j3185yb1ypm3nr" "c1bd10d70325" "sk")
-   ("12q1nv6z4bk8yaw3vhl9xs41i7kpx1415mwg635v76fx8h94ycl3" "00eaf8d9e83b" 
"skr")
-   ("11nmjmy2j249588ahg4mh9lxdqr476jbh28a07qxxibfa76j9vk3" "44be3cbf69b6" "sl")
-   ("1ww35141nixg2s03kfmmq9fk6m3qiz2vg7p5a85shjp7i89pyj1d" "800576ff8ef9" 
"son")
-   ("1q7nfybwc8mxdwi9fpvfhayq18mykzygkpakr5ngfz2316k8lf5r" "4de8638ac27f" "sq")
-   ("06wr7zx6kvaxsly5f3ci7kb2zaqlwjjbg1vrimp0jcqs4l5x6wpl" "ec560d96370c" "sr")
-   ("01n1ly9lihnznrab3kcby2i93k0qwg99c9fh55xpi90vkyq77gmq" "c5754f9325a1" 
"sv-SE")
-   ("09kk9bj2139j34md26zysaaf8cqyh5nmf861vxnc2vdsd37nr4x4" "c3fa195a8edf" 
"szl")
-   ("1vpr88vj9n7pm87dynyqyyiv1v2igd3w0f3a65g8rirknh3wfw44" "755763981e95" "ta")
-   ("19qwvi642fpg7zyhlcj9fgnm0bbkvqby6apr7iijayammg2vnyx3" "3a34078388af" "te")
-   ("1lh3m1d8rblas50g990qwcr2qv2nk5m6isjvi0gr57zhc4l9a4lw" "24c3a61f463c" "tg")
-   ("0sr0wa886a5gwrgn7rmn08sn6qz4p58037wx9gskacclhrzs53aw" "6dad5f8774df" "th")
-   ("19cvf42lmi9996mxlmplpk1b65p1fh4ja36xprs115z2n1iky9y5" "befaa7917b35" "tl")
-   ("04p50pd380hdalizz09qix7camipazkjyyi97f3sl04h6i67vz17" "66c8bc5e9da6" "tr")
-   ("0lqbaxkdvi8hjns8myssmv6bxymh53glf0w2nfpj72zh40rr1n09" "9e86caeded11" 
"trs")
-   ("13qmsji7gyad0d23ac7lx4181zhm3kb9xym82z786f7k271jq7kl" "bd5e0aad5f0b" "uk")
-   ("0m52xl2vy0paj5kcfk8jy70hhck5bgdg8lb6cvjqm2mhl5sli0ka" "040d506ed663" "ur")
-   ("1n0gdgjwwwd5yd69ylr05hskjxasydnkqw33rncpx7491x3nf4kf" "7e4e5290c700" "uz")
-   ("140lnl9dq82azlw1qic386h4z0xbilcf3jvjy93qid67mvnmwqqm" "b8196f646583" "vi")
-   ("07yc91645aiks3fxzx16kw4kzvksyrj36n9iz59wn9wppzlampx6" "ef98e07b4b9e" "xh")
-   ("1c1sfaincridbdp66bzgwgxgp5gqpvzkf10m9yafm9bgkif18vwy" "f614d8a31562" 
"zh-CN")
-   ("0s9chi76476gznrxjcn6slhgsznjnaps0h29kck6ijb0x3yx98xi" "ab22459ceb2f" 
"zh-TW")))
-
 (define computed-origin-method (@@ (guix packages) computed-origin-method))
 
-(define %icecat-115-base-version "115.24.0")
-(define %icecat-115-version (string-append %icecat-115-base-version "-guix1"))
-(define %icecat-115-build-id "20250527000000") ;must be of the form 
YYYYMMDDhhmmss
-
-(define icecat-115-source
-  (let* ((major-version (first  (string-split %icecat-115-base-version #\.)))
-         (minor-version (second (string-split %icecat-115-base-version #\.)))
-         (sub-version   (third  (string-split %icecat-115-base-version #\.)))
-
-         (upstream-firefox-version (string-append %icecat-115-base-version 
"esr"))
-         (upstream-firefox-source
-          (origin
-            (method url-fetch)
-            (uri (string-append
-                  "https://ftp.mozilla.org/pub/firefox/releases/";
-                  upstream-firefox-version "/source/"
-                  "firefox-" upstream-firefox-version ".source.tar.xz"))
-            (sha256
-             (base32
-              "00229s39xidjzf7afpkyai9jz6ffqqcghn2wniraxyqa2rc5mfc1"))))
-
-         ;; The upstream-icecat-base-version may be older than the
-         ;; %icecat-base-version.
-         (upstream-icecat-base-version "115.24.0")
-         (gnuzilla-commit "b1da0f01591182b43e179451ce2484d0fee88dd8")
-         (gnuzilla-source
-          (origin
-            (method git-fetch)
-            (uri (git-reference
-                  (url "git://git.savannah.gnu.org/gnuzilla.git")
-                  (commit gnuzilla-commit)))
-            (file-name (git-file-name "gnuzilla"
-                                      ;;upstream-icecat-base-version
-                                      (string-take gnuzilla-commit 8)))
-            (sha256
-             (base32
-              "1nrswd5g75wq8z997dilh2mxd0ssjrp1kp7v7l6x2gqmfiwa8r7h"))))
-
-         ;; 'search-patch' returns either a valid file name or #f, so wrap it
-         ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
-         (makeicecat-patch
-          (local-file (assume-valid-file-name
-                       (search-patch "icecat-makeicecat.patch")))))
-
-    (origin
-      (method computed-origin-method)
-      (file-name (string-append "icecat-" %icecat-115-version ".tar.xz"))
-      (sha256 #f)
-      (uri
-       (delay
-        (with-imported-modules '((guix build utils))
-          #~(begin
-              (use-modules (guix build utils))
-              (let ((firefox-dir
-                     (string-append "firefox-" #$%icecat-115-base-version))
-                    (icecat-dir
-                     (string-append "icecat-" #$%icecat-115-version)))
-
-                (set-path-environment-variable
-                 "PATH" '("bin")
-                 (list #+python
-                       #+(canonical-package bash)
-                       #+(canonical-package coreutils)
-                       #+(canonical-package findutils)
-                       #+(canonical-package patch)
-                       #+(canonical-package xz)
-                       #+(canonical-package sed)
-                       #+(canonical-package grep)
-                       #+(canonical-package bzip2)
-                       #+(canonical-package gzip)
-                       #+(canonical-package tar)))
-
-                (set-path-environment-variable
-                 "PYTHONPATH"
-                 (list #+(format #f "lib/python~a/site-packages"
-                                 (version-major+minor
-                                  (package-version python))))
-                 '#+(cons python-jsonschema
-                          (map second
-                               (package-transitive-propagated-inputs
-                                python-jsonschema))))
-
-                ;; We copy the gnuzilla source directory because it is
-                ;; read-only in 'gnuzilla-source', and the makeicecat script
-                ;; uses "cp -a" to copy parts of it and assumes that the
-                ;; copies will be writable.
-                (copy-recursively #+gnuzilla-source "/tmp/gnuzilla"
-                                  #:log (%make-void-port "w"))
-
-                (with-directory-excursion "/tmp/gnuzilla"
-                  (make-file-writable "makeicecat")
-                  (invoke "patch" "--force" "--no-backup-if-mismatch"
-                          "-p1" "--input" #+makeicecat-patch)
-                  (patch-shebang "makeicecat")
-                  (substitute* "makeicecat"
-                    (("^readonly FFMAJOR=(.*)" all ffmajor)
-                     (unless (string=? #$major-version
-                                       (string-trim-both ffmajor))
-                       ;; The makeicecat script cannot be expected to work
-                       ;; properly on a different version of Firefox, even if
-                       ;; no errors occur during execution.
-                       (error "makeicecat major version mismatch"))
-                     (string-append "readonly FFMAJOR=" #$major-version "\n"))
-                    (("^readonly FFMINOR=.*")
-                     (string-append "readonly FFMINOR=" #$minor-version "\n"))
-                    (("^readonly FFSUB=.*")
-                     (string-append "readonly FFSUB=" #$sub-version "\n"))
-                    (("^readonly DATADIR=.*")
-                     "readonly DATADIR=/tmp/gnuzilla/data\n")
-                    (("^readonly SOURCEDIR=.*")
-                     (string-append "readonly SOURCEDIR=" icecat-dir "\n"))
-                    (("/bin/sed")
-                     #+(file-append (canonical-package sed) "/bin/sed"))))
-
-                (format #t "Unpacking upstream firefox tarball...~%")
-                (force-output)
-                (invoke "tar" "xf" #+upstream-firefox-source)
-                (rename-file firefox-dir icecat-dir)
-
-                (with-directory-excursion icecat-dir
-                  (format #t "Populating l10n directory...~%")
-                  (force-output)
-                  (mkdir "l10n")
-                  (with-directory-excursion "l10n"
-                    (for-each
-                     (lambda (locale-dir)
-                       (let ((locale
-                              (string-drop (basename locale-dir)
-                                           (+ 32  ; length of hash
-                                              (string-length 
"-mozilla-locale-")))))
-                         (format #t "  ~a~%" locale)
-                         (force-output)
-                         (copy-recursively locale-dir locale
-                                           #:log (%make-void-port "w"))
-                         (for-each make-file-writable (find-files locale))
-                         (with-directory-excursion locale
-                           (when (file-exists? ".hgtags")
-                             (delete-file ".hgtags"))
-                           (mkdir-p "browser/chrome/browser/preferences")
-                           (call-with-output-file
-                               
"browser/chrome/browser/preferences/advanced-scripts.dtd"
-                             (lambda (port) #f)))))
-                     '#+all-mozilla-115-locales)
-                    (copy-recursively #+mozilla-115-compare-locales
-                                      "compare-locales"
-                                      #:log (%make-void-port "w"))
-                    (delete-file "compare-locales/.gitignore")
-                    (delete-file "compare-locales/.hgignore")
-                    (delete-file "compare-locales/.hgtags")))
-
-                (format #t "Running makeicecat script...~%")
-                (force-output)
-                (invoke "bash" "/tmp/gnuzilla/makeicecat")
-
-                (format #t "Packing IceCat source tarball...~%")
-                (force-output)
-                (setenv "XZ_DEFAULTS" (string-join (%xz-parallel-args)))
-                (invoke "tar" "cfa" #$output
-                        ;; Avoid non-determinism in the archive.  We set the
-                        ;; mtime of files in the archive to early 1980 because
-                        ;; the build process fails if the mtime of source
-                        ;; files is pre-1980, due to the creation of zip
-                        ;; archives.
-                        "--mtime=@315619200" ; 1980-01-02 UTC
-                        "--owner=root:0"
-                        "--group=root:0"
-                        "--sort=name"
-                        icecat-dir)))))))))
-
 (define mozilla-compare-locales
   (origin
     (method git-fetch)
     (uri (git-reference
           (url "https://github.com/mozilla/compare-locales";)
-          (commit "RELEASE_9_0_4")))
+          (commit "RELEASE_9_0_4")))    ;use the latest release
     (file-name "mozilla-compare-locales")
     (sha256 (base32 "13qn983j0pgs2550fgd5gvnl4lq6ywqjvgbyx850jwg79w8b0ifz"))))
 
@@ -703,25 +390,143 @@ variable defined below.  It requires guile-json to be 
installed."
   (origin
     (method git-fetch)
     (uri (git-reference
-          (url "https://github.com/mozilla-l10n/firefox-l10n";)
-          (commit "fcd0300e8478d1ec4d1c097a073ddb8e1e0351e3")))
+           (url "https://github.com/mozilla-l10n/firefox-l10n";)
+           ;; Use the revision specified in the
+           ;; browser/locales/l10n-changesets.json file of the used firefox
+           ;; source (all the languages normally use the same revision).
+          (commit "a0c1ffda4ed19c0399e4175610361179e09829de")))
     (file-name "mozilla-l10n")
-    (sha256 (base32 "1pzw65852ix6a6qb3wwhg5vrkz8337cs6lznk2vj0md5cvf2rrc4"))))
-
+    (sha256 (base32 "1gqphgj4qzhmc2aqj3r1hzwnshcjsrkyws3lbrcqn0yzwvzc8b73"))))
+
+(define (format-locales all-locales-file)
+  "Format a Scheme list of all the locales string found in ALL-LOCALES-FILE.
+In the case of Thunderbird, that file is comm/mail/locales/all-locales, while
+in the case of Firefox, it is browser/locales/all-locales."
+  (pretty-print (string-split
+                 (string-trim-right
+                  (call-with-input-file all-locales-file
+                    get-string-all))
+                 #\newline)))
+
+;;; To regenerate, use the above `format-locales' procedure.
 (define %icecat-locales
-  '("ach" "af" "an" "ar" "ast" "az" "be" "bg" "bn" "br" "bs" "ca" "cak"
-    "ca-valencia" "cs" "cy" "da" "de" "dsb" "el" "en-CA" "en-GB" "eo"
-    "es-AR" "es-CL" "es-ES" "es-MX" "et" "eu" "fa" "ff" "fi" "fr" "fur"
-    "fy-NL" "ga-IE" "gd" "gl" "gn" "gu-IN" "he" "hi-IN" "hr" "hsb" "hu"
-    "hy-AM" "ia" "id" "is" "it" "ja" "ja-JP-mac" "ka" "kab" "kk" "km"
-    "kn" "ko" "lij" "lt" "lv" "mk" "mr" "ms" "my" "nb-NO" "ne-NP" "nl"
-    "nn-NO" "oc" "pa-IN" "pl" "pt-BR" "pt-PT" "rm" "ro" "ru" "sat" "sc"
-    "sco" "si" "sk" "skr" "sl" "son" "sq" "sr" "sv-SE" "szl" "ta" "te"
-    "tg" "th" "tl" "tr" "trs" "uk" "ur" "uz" "vi" "xh" "zh-CN" "zh-TW"))
-
-(define %icecat-base-version "128.14.0")
+  '("ach"
+    "af"
+    "an"
+    "ar"
+    "ast"
+    "az"
+    "be"
+    "bg"
+    "bn"
+    "bo"
+    "br"
+    "brx"
+    "bs"
+    "ca"
+    "ca-valencia"
+    "cak"
+    "ckb"
+    "cs"
+    "cy"
+    "da"
+    "de"
+    "dsb"
+    "el"
+    "en-CA"
+    "en-GB"
+    "eo"
+    "es-AR"
+    "es-CL"
+    "es-ES"
+    "es-MX"
+    "et"
+    "eu"
+    "fa"
+    "ff"
+    "fi"
+    "fr"
+    "fur"
+    "fy-NL"
+    "ga-IE"
+    "gd"
+    "gl"
+    "gn"
+    "gu-IN"
+    "he"
+    "hi-IN"
+    "hr"
+    "hsb"
+    "hu"
+    "hy-AM"
+    "hye"
+    "ia"
+    "id"
+    "is"
+    "it"
+    "ja"
+    "ja-JP-mac"
+    "ka"
+    "kab"
+    "kk"
+    "km"
+    "kn"
+    "ko"
+    "lij"
+    "lo"
+    "lt"
+    "ltg"
+    "lv"
+    "meh"
+    "mk"
+    "ml"
+    "mr"
+    "ms"
+    "my"
+    "nb-NO"
+    "ne-NP"
+    "nl"
+    "nn-NO"
+    "oc"
+    "pa-IN"
+    "pl"
+    "pt-BR"
+    "pt-PT"
+    "rm"
+    "ro"
+    "ru"
+    "sat"
+    "sc"
+    "scn"
+    "sco"
+    "si"
+    "sk"
+    "skr"
+    "sl"
+    "son"
+    "sq"
+    "sr"
+    "sv-SE"
+    "szl"
+    "ta"
+    "te"
+    "tg"
+    "th"
+    "tl"
+    "tr"
+    "trs"
+    "uk"
+    "ur"
+    "uz"
+    "vi"
+    "wo"
+    "xh"
+    "zh-CN"
+    "zh-TW"))
+
+(define %icecat-base-version (package-version mozjs))
 (define %icecat-version (string-append %icecat-base-version "-gnu1"))
-(define %icecat-build-id "20250819000000") ;must be of the form YYYYMMDDhhmmss
+(define %icecat-build-id "20250826000000") ;must be of the form YYYYMMDDhhmmss
 
 ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball
 ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat'
@@ -732,16 +537,7 @@ variable defined below.  It requires guile-json to be 
installed."
          (sub-version   (third  (string-split %icecat-base-version #\.)))
 
          (upstream-firefox-version (string-append %icecat-base-version "esr"))
-         (upstream-firefox-source
-          (origin
-            (method url-fetch)
-            (uri (string-append
-                  "https://ftp.mozilla.org/pub/firefox/releases/";
-                  upstream-firefox-version "/source/"
-                  "firefox-" upstream-firefox-version ".source.tar.xz"))
-            (sha256
-             (base32
-              "0lwsn1y988naxs9031sbzsh9b0x7c6zmpf89y4pv477l55ifzfck"))))
+         (upstream-firefox-source (package-source mozjs))
 
          (gnuzilla-commit "ba161be3de71bb556be951ac4dbb81c807f68770")
          (gnuzilla-source
@@ -760,11 +556,14 @@ variable defined below.  It requires guile-json to be 
installed."
          ;; in 'assume-valid-file-name' to avoid 'local-file' warnings.
          (makeicecat-patch
           (local-file (assume-valid-file-name
-                       (search-patch "icecat-makeicecat.patch")))))
+                       (search-patch "icecat-makeicecat.patch"))))
+         (makeicecat-update-patch
+          (local-file (assume-valid-file-name
+                       (search-patch "icecat-makeicecat-update.patch")))))
 
     (origin
       (method computed-origin-method)
-      (file-name (string-append "icecat-" %icecat-version ".tar.xz"))
+      (file-name (string-append "icecat-" %icecat-version ".tar.zst"))
       (sha256 #f)
       (uri
        (delay
@@ -784,6 +583,7 @@ variable defined below.  It requires guile-json to be 
installed."
                        #+(canonical-package findutils)
                        #+(canonical-package patch)
                        #+(canonical-package xz)
+                       #+(canonical-package zstd)
                        #+(canonical-package sed)
                        #+(canonical-package grep)
                        #+(canonical-package bzip2)
@@ -811,6 +611,8 @@ variable defined below.  It requires guile-json to be 
installed."
                   (make-file-writable "makeicecat")
                   (invoke "patch" "--force" "--no-backup-if-mismatch"
                           "-p1" "--input" #+makeicecat-patch)
+                  (invoke "patch" "--force" "--no-backup-if-mismatch"
+                          "-p1" "--input" #+makeicecat-update-patch)
                   (patch-shebang "makeicecat")
                   (substitute* "makeicecat"
                     (("^readonly FFMAJOR=(.*)" all ffmajor)
@@ -844,27 +646,23 @@ variable defined below.  It requires guile-json to be 
installed."
                   (with-directory-excursion "l10n"
                     (for-each
                      (lambda (locale)
-                       (let ((locale-dir
-                              (string-append #+mozilla-l10n "/" locale)))
+                       (let ((locale-dir (string-append #+mozilla-l10n "/"
+                                                        locale)))
                          (format #t "  ~a~%" locale)
                          (force-output)
                          (copy-recursively locale-dir locale
                                            #:log (%make-void-port "w"))
                          (for-each make-file-writable (find-files locale))
                          (with-directory-excursion locale
-                           (when (file-exists? ".hgtags")
-                             (delete-file ".hgtags"))
                            (mkdir-p "browser/chrome/browser/preferences")
-                           (call-with-output-file
-                               
"browser/chrome/browser/preferences/advanced-scripts.dtd"
+                           (call-with-output-file "browser/chrome/browser/\
+preferences/advanced-scripts.dtd"
                              (lambda (port) #f)))))
                      '#+%icecat-locales)
                     (copy-recursively #+mozilla-compare-locales
                                       "compare-locales"
                                       #:log (%make-void-port "w"))
-                    (delete-file "compare-locales/.gitignore")
-                    (delete-file "compare-locales/.hgignore")
-                    (delete-file "compare-locales/.hgtags")))
+                    (delete-file "compare-locales/.gitignore")))
 
                 (format #t "Running makeicecat script...~%")
                 (force-output)
@@ -872,7 +670,7 @@ variable defined below.  It requires guile-json to be 
installed."
 
                 (format #t "Packing IceCat source tarball...~%")
                 (force-output)
-                (setenv "XZ_DEFAULTS" (string-join (%xz-parallel-args)))
+                (setenv "ZSTD_NBTHREADS" (number->string (parallel-job-count)))
                 (invoke "tar" "cfa" #$output
                         ;; Avoid non-determinism in the archive.  We set the
                         ;; mtime of files in the archive to early 1980 because
@@ -909,7 +707,7 @@ variable defined below.  It requires guile-json to be 
installed."
            libcanberra
            libgnome
            libjpeg-turbo
-           libpng-apng
+           libpng-apng-next
            ;; UNBUNDLE-ME! libogg
            ;; UNBUNDLE-ME! libtheora ; wants theora-1.2, not yet released
            ;; UNBUNDLE-ME! libvorbis
@@ -974,6 +772,7 @@ variable defined below.  It requires guile-json to be 
installed."
 
       #:configure-flags
       #~(list
+         "--disable-fhs"
          "--enable-application=browser"
          "--with-distribution-id=org.gnu"
          "--enable-geckodriver"
@@ -1011,8 +810,6 @@ variable defined below.  It requires guile-json to be 
installed."
                         (dirname (search-input-file %build-inputs
                                                     "lib/libclang.so")))
 
-         "--enable-official-branding"
-
          ;; TODO: Add support for wasm sandboxed libraries.
          "--without-wasm-sandboxed-libraries"
 
@@ -1058,7 +855,9 @@ variable defined below.  It requires guile-json to be 
installed."
                '(#$(local-file
                     (search-patch "icecat-compare-paths.patch"))
                  #$(local-file
-                    (search-patch "icecat-use-system-wide-dir.patch"))))))
+                    (search-patch "icecat-use-system-wide-dir.patch"))
+                 #$(local-file
+                    (search-patch "icecat-fhs-configure-option.patch"))))))
           (add-after 'apply-guix-specific-patches 'remove-bundled-libraries
             (lambda _
               ;; Remove bundled libraries that we don't use, since they may
@@ -1176,7 +975,9 @@ variable defined below.  It requires guile-json to be 
installed."
               ;; complain that it's not able to change Cargo.lock.
               ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
               (substitute* "build/RunCbindgen.py"
-                (("args.append\\(\"--frozen\"\\)") "pass"))))
+                (("args.append\\(\"--frozen\"\\)") "pass"))
+              (substitute* "config/makefiles/rust.mk"
+                (("cargo_build_flags \\+= --frozen") ""))))
           (delete 'bootstrap)
           (replace 'configure
             ;; configure does not work followed by both "SHELL=..." and
@@ -1287,20 +1088,24 @@ variable defined below.  It requires guile-json to be 
installed."
           (add-after 'wrap-program 'install-desktop-entry
             (lambda _
               ;; Install the '.desktop' file.
-              (let* ((desktop-file 
"taskcluster/docker/icecat-snap/icecat.desktop")
+              (let* ((desktop-file (string-append "toolkit/mozapps/installer"
+                                                  
"/linux/rpm/mozilla.desktop"))
                      (applications (string-append #$output 
"/share/applications")))
                 (substitute* desktop-file
-                  (("^Exec=icecat")     (string-append "Exec=" #$output 
"/bin/icecat"))
-                  (("IceCat")           "GNU IceCat")
-                  (("Icon=.*")          "Icon=icecat\n")
-                  (("NewWindow")        "new-window")
-                  (("NewPrivateWindow") "new-private-window")
-                  (("StartupNotify=true")
-                   "StartupNotify=true\nStartupWMClass=Icecat"))
-                (install-file desktop-file applications))))
+                  (("@MOZ_APP_NAME@")
+                   "icecat")
+                  (("^Exec=icecat")
+                   (string-append "Exec=" #$output "/bin/icecat"))
+                  (("@MOZ_APP_DISPLAYNAME@")
+                   "GNU IceCat")
+                  (("@MOZ_APP_REMOTINGNAME@")
+                   "Icecat"))
+                (mkdir-p applications)
+                (copy-file desktop-file
+                           (string-append applications "/icecat.desktop")))))
           (add-after 'install-desktop-entry 'install-icons
             (lambda _
-              (with-directory-excursion "browser/branding/official"
+              (with-directory-excursion "browser/branding/unofficial"
                 (for-each
                  (lambda (file)
                    (let* ((size (string-filter char-numeric? file))
@@ -1309,13 +1114,13 @@ variable defined below.  It requires guile-json to be 
installed."
                      (mkdir-p icons)
                      (copy-file file (string-append icons "/icecat.png"))))
                  '("default16.png" "default22.png" "default24.png"
-                   "default32.png" "default48.png" "content/icon64.png"
-                   "mozicon128.png" "default256.png"))))))))
+                   "default32.png" "default48.png" "default256.png"
+                   "content/icon64.png" "mozicon128.png" ))))))))
     (native-search-paths
      (list (search-path-specification
-            (variable "ICECAT_SYSTEM_DIR")
-            (separator #f)              ;single entry
-            (files '("lib/icecat")))))
+             (variable "MOZILLA_SYSTEM_DIR")
+             (separator #f)             ;single entry
+             (files '("lib/icecat")))))
     (home-page "https://www.gnu.org/software/gnuzilla/";)
     (synopsis "Entirely free browser derived from Mozilla Firefox")
     (description
@@ -1330,57 +1135,109 @@ testing.")
        (cpe-name . "firefox_esr")
        (cpe-version . ,(first (string-split version #\-)))))))
 
-(define %icedove-build-id "20241119000000") ;must be of the form YYYYMMDDhhmmss
-(define %icedove-version "115.16.3")
+(define %icedove-build-id "20250901000000") ;must be of the form YYYYMMDDhhmmss
+(define %icedove-version "140.2.0")
 
 ;; Provides the "comm" folder which is inserted into the icecat source.
-;; Avoids the duplication of Icecat's source tarball.
+;; Avoids the duplication of Icecat's source tarball.  Pick the changeset that
+;; matches the most recent tag of the form 'THUNDERBIRD_140_2_0esr_RELEASE'.
 (define thunderbird-comm-source
   (origin
     (method hg-fetch)
     (uri (hg-reference
-          (url "https://hg.mozilla.org/releases/comm-esr115";)
-          (changeset "8ab43355c97d91f5adaae732fb8c9f5ca210fe8b")))
+          (url "https://hg.mozilla.org/releases/comm-esr140";)
+          (changeset "8414dffeb4d53578bd90c11d4a2dd933bdc08b85")))
     (file-name (string-append "thunderbird-" %icedove-version "-checkout"))
     (sha256
      (base32
-      "1fax5sdc087ly62fh2g4yvi7v80vrhn94hpzdr98a4m3psdgglh0"))))
-
-(define (comm-source->locales+changeset source)
-  "Given SOURCE, a checkout of the Thunderbird 'comm' component, return the
-list of languages supported as well as the currently used changeset."
-  (match (update-mozilla-115-locales
-          (string-append source "/mail/locales/l10n-changesets.json"))
-    (((_ changeset locale) ...)
-     (values locale (first changeset)))))
+      "0w12dc5h9bp8sx8qcgy5krd2y74x35hh1jwg9i1gjm9fidh4x64r"))))
 
-;;; Generated with comm-source->locales+changeset.
+;;; To regenerate, see the `format-locales' helper defined above.
 (define %icedove-locales
-  '("af" "ar" "ast" "be" "bg" "br" "ca" "cak" "cs" "cy" "da" "de" "dsb" "el"
-    "en-CA" "en-GB" "es-AR" "es-ES" "es-MX" "et" "eu" "fi" "fr" "fy-NL" "ga-IE"
-    "gd" "gl" "he" "hr" "hsb" "hu" "hy-AM" "id" "is" "it" "ja" "ja-JP-mac" "ka"
-    "kab" "kk" "ko" "lt" "lv" "ms" "nb-NO" "nl" "nn-NO" "pa-IN" "pl" "pt-BR"
-    "pt-PT" "rm" "ro" "ru" "sk" "sl" "sq" "sr" "sv-SE" "th" "tr" "uk" "uz" "vi"
-    "zh-CN" "zh-TW"))
+  '("af"
+    "ar"
+    "ast"
+    "be"
+    "bg"
+    "br"
+    "ca"
+    "cak"
+    "cs"
+    "cy"
+    "da"
+    "de"
+    "dsb"
+    "el"
+    "en-CA"
+    "en-GB"
+    "es-AR"
+    "es-ES"
+    "es-MX"
+    "et"
+    "eu"
+    "fi"
+    "fr"
+    "fy-NL"
+    "ga-IE"
+    "gd"
+    "gl"
+    "he"
+    "hr"
+    "hsb"
+    "hu"
+    "hy-AM"
+    "id"
+    "is"
+    "it"
+    "ja"
+    "ja-JP-mac"
+    "ka"
+    "kab"
+    "kk"
+    "ko"
+    "lt"
+    "lv"
+    "mk"
+    "ms"
+    "nb-NO"
+    "nl"
+    "nn-NO"
+    "pa-IN"
+    "pl"
+    "pt-BR"
+    "pt-PT"
+    "rm"
+    "ro"
+    "ru"
+    "sk"
+    "sl"
+    "sq"
+    "sr"
+    "sv-SE"
+    "th"
+    "tr"
+    "uk"
+    "uz"
+    "vi"
+    "zh-CN"
+    "zh-TW"))
 
 (define thunderbird-comm-l10n
   (origin
     (method url-fetch)
     (uri (string-append
           "https://ftp.mozilla.org/pub/thunderbird/releases/";
-          %icedove-version
-          "/source/thunderbird-"
-          %icedove-version
-          ".strings_all.tar.zst"))
+          %icedove-version "esr/source/thunderbird-"
+          %icedove-version "esr.strings_all.tar.zst"))
     (sha256
      (base32
-      "1nnvnfhbb7174898i62a9sy1zxc5qw3nhmf9agy1p6jvldn5nb8z"))))
+      "0aaxpp165nvw3kqz9d7lgn0vsdxdn6mzz0s86llp72wmb06kp7ip"))))
 
 (define icedove-source
   (let ((name (string-append "icedove-" %icedove-version)))
     (origin
       (method computed-origin-method)
-      (file-name (string-append name ".tar.xz"))
+      (file-name (string-append name ".tar.zst"))
       (sha256 #f)
       (uri
        (delay
@@ -1392,30 +1249,28 @@ list of languages supported as well as the currently 
used changeset."
                (set-path-environment-variable
                 "PATH" '("bin")
                 (list #+(canonical-package tar)
-                      #+(canonical-package xz)
                       #+(canonical-package zstd)))
 
                ;; Extract the base Icecat tarball, renaming its top-level
                ;; directory.
                (invoke "tar" "--transform" (string-append "s,[^/]*," #$name 
",")
-                       "-xf" #$icecat-115-source)
+                       "-xf" #$icecat-source)
                (chdir #$name)
 
                ;; Merge the Thunderdbird localization data.
                (invoke "tar" "--extract" "--file" #$thunderbird-comm-l10n
                        "--directory" "l10n/")
 
-               ;; Add the Thunderbird-specific "comm" directory..
+               ;; Add the Thunderbird-specific "comm" directory.
                (mkdir "comm")
                (copy-recursively #$thunderbird-comm-source "comm")
+               (for-each make-file-writable (find-files "comm"))
                (delete-file "sourcestamp.txt")
 
                ;; Adjust the application name.
-               (substitute* "comm/mail/confvars.sh"
-                 (("MOZ_APP_NAME=thunderbird")
-                  "MOZ_APP_NAME=icedove")
-                 (("MOZ_UPDATER=1")
-                  "MOZ_UPDATER=0"))
+               (substitute* "comm/mail/moz.configure"
+                 (("\"MOZ_APP_NAME\", \"thunderbird\"")
+                  "\"MOZ_APP_NAME\", \"icedove\""))
 
                ;; Remove branding to comply with Mozilla's trademark policy
                (with-directory-excursion "comm/mail/branding/nightly"
@@ -1443,7 +1298,7 @@ list of languages supported as well as the currently used 
changeset."
                  (substitute* '("overrides/app-license-name.html")
                    (("Thunderbird") "Icedove")))
                (with-directory-excursion "comm/mail/components/"
-                 (substitute* '("MailGlue.jsm"
+                 (substitute* '("MailGlue.sys.mjs"
                                 "extensions/schemas/addressBook.json"
                                 "extensions/schemas/tabs.json"
                                 "extensions/schemas/cloudFile.json"
@@ -1487,11 +1342,21 @@ list of languages supported as well as the currently 
used changeset."
                   (string-append anchor
                                  "pref(\"intl.locale.requested\", \"\");\n")))
 
+               ;; Fix more discrepancies caused by the fact that the
+               ;; makeicecat script didn't run on the Thunderbird sources.
+               (substitute* '("Cargo.lock"
+                              "comm/rust/Cargo.lock"
+                              "comm/rust/Cargo.toml"
+                              "gfx/qcms/Cargo.toml"
+                              "toolkit/library/rust/shared/Cargo.toml")
+                 (("IceCatGraphics") "FirefoxGraphics")
+                 (("firefox-on-glean") "icecat-on-glean"))
+
                ;; Step out of the directory and create the tarball.
                (chdir "..")
                (format #t "Packing Icedove source tarball...~%")
                (force-output)
-               (setenv "XZ_DEFAULTS" (string-join (%xz-parallel-args)))
+               (setenv "ZSTD_NBTHREADS" (number->string (parallel-job-count)))
                (invoke "tar" "cfa" #$output
                        "--mtime=@315619200" ;1980-01-02 UTC
                        "--owner=root:0"
@@ -1517,6 +1382,11 @@ list of languages supported as well as the currently 
used changeset."
                   ,@%default-gnu-modules)
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'do-not-verify-vendored-rust-dependencies
+            (lambda _
+              (substitute* "comm/python/rocbuild/rocbuild/rust.py"
+                (("result = check_vendored_dependencies\\(topsrcdir)")
+                 "sys.exit(0)"))))
           (add-after 'patch-source-shebangs 'patch-cargo-checksums
             (lambda _
               (use-modules (guix build cargo-utils))
@@ -1529,15 +1399,35 @@ ca495991b7852b855"))
                                (string-append "checksum = \"" null-hash 
"\""))))
                           (find-files "." "Cargo.lock$"))
                 (for-each generate-all-checksums
-                          '("third_party/rust"
-                            "toolkit/library/rust")))))
+                          '("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"
+                            ;; Thunderbird-specific.
+                            "comm")))))
           (add-after 'patch-cargo-checksums 'remove-cargo-frozen-flag
             (lambda _
               ;; Remove --frozen flag from cargo invocation, otherwise it'll
               ;; complain that it's not able to change Cargo.lock.
               ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1726373
               (substitute* "build/RunCbindgen.py"
-                (("\"--frozen\",") ""))))
+                (("args.append\\(\"--frozen\"\\)") "pass"))
+              (substitute* "config/makefiles/rust.mk"
+                (("cargo_build_flags \\+= --frozen") ""))))
           ;; Fixes issue where each installation directory generates its own
           ;; profile (see:
           ;; https://trac.torproject.org/projects/tor/ticket/31457).
@@ -1587,8 +1477,6 @@ ca495991b7852b855"))
 
                 (setenv "MOZ_NOSPAM" "1")
                 (setenv "MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE" "system")
-                (setenv "PYTHON"
-                        (search-input-file inputs "/bin/python"))
                 (setenv "GUIX_PYTHONPATH"
                         (string-append (getcwd)
                                        
"/obj-x86_64-pc-linux-gnu/_virtualenvs/build"))
@@ -1622,6 +1510,7 @@ ca495991b7852b855"))
                       "ac_add_options --enable-optimize\n"
                       "ac_add_options --enable-pulseaudio\n"
                       "ac_add_options --enable-release\n"
+                      "ac_add_options --enable-rust-simd\n"
                       "ac_add_options --enable-strip\n"
                       "ac_add_options --enable-system-ffi\n"
                       "ac_add_options --enable-system-pixman\n"
@@ -1721,14 +1610,13 @@ ca495991b7852b855"))
            cairo
            cups
            dbus-glib
-           ;; Support for FFmpeg 6 was only added in version 112 (see:
-           ;; https://bugzilla.mozilla.org/show_bug.cgi?id=1819374).
+           eudev
+           ffmpeg
            freetype
            gdk-pixbuf
            glib
            gpgme
            gtk+
-           gtk+-2
            hunspell
            icu4c
            libcanberra
@@ -1738,31 +1626,29 @@ ca495991b7852b855"))
            libjpeg-turbo
            libnotify
            libpng-apng
+           libva
            libvpx
            libxcomposite
            libxft
            libxinerama
            libxscrnsaver
            libxt
-           libva
            mesa
            mit-krb5
            nspr
-           nss
+           nss-rapid
            pango
            pciutils
            pixman
            pulseaudio
            sqlite
            startup-notification
-           eudev
            unzip
            zip
            zlib))
     (native-inputs
-     (list `(,rust "cargo")
-           clang-15
-           llvm-15
+     (list clang-20
+           llvm-20
            m4
            nasm
            node-lts
@@ -1770,7 +1656,8 @@ ca495991b7852b855"))
            pkg-config
            python-wrapper
            rust
-           rust-cbindgen-0.24
+           `(,rust "cargo")
+           rust-cbindgen
            which
            yasm))
     (home-page "https://www.thunderbird.net";)
@@ -1831,9 +1718,6 @@ their corresponding VERSION, SOURCE and LOCALES 
variables."
                         (string-append (getcwd) "/mach_state"))
                 (setenv "MOZCONFIG" (string-append (getcwd) "/.mozconfig"))
                 (setenv "MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE" "system")
-                (setenv "GUIX_PYTHONPATH"
-                        (string-append (getcwd)
-                                       
"/obj/_virtualenvs/build/lib/python3.11/site-packages"))
                 (setenv "BUILD_BACKENDS" "FasterMake,RecursiveMake")))
             (replace 'build             ;build and install data files
               (lambda* (#:key outputs #:allow-other-keys)
@@ -1843,6 +1727,13 @@ their corresponding VERSION, SOURCE and LOCALES 
variables."
                       (error "could not find file in dir" name dir))
                     (car files)))
 
+                ;; Register "tb_common" as a valid site, to please the mach
+                ;; virtualenv machinery (see:
+                ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=1986420>).
+                (substitute* "python/mach/mach/site.py"
+                  (("\"mach\", \"build\", \"common\"" all)
+                   (string-append all ", \"tb_common\"")))
+
                 (for-each
                  (lambda (l)
                    (let* ((out (assoc-ref outputs l))
@@ -1884,7 +1775,10 @@ their corresponding VERSION, SOURCE and LOCALES 
variables."
       (native-inputs
        (list m4
              perl
-             python-wrapper
+             python
+             python-aiohttp
+             python-async-timeout
+             python-dateutil
              node-lts
              unzip))
       (home-page "https://www.mozilla.org/";)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 33e8b32c10..2b7c6821af 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -332,36 +332,35 @@ APNG patch provides APNG support to libpng.")
 
 ;; Temporary, until 76798 merges into core-packages-team, and that merges into
 ;; master.
-(define-public libpng-apng-for-librewolf
-  (hidden-package
-   (package
-     (inherit libpng-apng)
-     (version "1.6.46")
-     (source
-      (origin
-        (method url-fetch)
-        (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
-                                  version "/libpng-" version ".tar.xz")
-                   (string-append
-                    "ftp://ftp.simplesystems.org/pub/libpng/png/src";
-                    "/libpng16/libpng-" version ".tar.xz")
-                   (string-append
-                    "ftp://ftp.simplesystems.org/pub/libpng/png/src/history";
-                    "/libpng16/libpng-" version ".tar.xz")))
-        (sha256
-         (base32
-          "1cbwf20zlm4gcv8rpjivkngrjgl5366w21lr9qmbk2lr0dq8papk"))))
-     (inputs
-      (modify-inputs (package-inputs libpng-apng)
-        (replace "apng"
-          (origin
-            (method url-fetch)
-            (uri
-             (string-append "mirror://sourceforge/libpng-apng/libpng16/"
-                            version "/libpng-" version "-apng.patch.gz"))
-            (sha256
-             (base32
-              "00ykl1bzb79xsjwrq7dl0yz9dz5g3zwj0lry5zam3vs6s3gw5gi9")))))))))
+(define-public libpng-apng-next
+  (package
+    (inherit libpng-apng)
+    (version "1.6.46")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
+                                 version "/libpng-" version ".tar.xz")
+                  (string-append
+                   "ftp://ftp.simplesystems.org/pub/libpng/png/src";
+                   "/libpng16/libpng-" version ".tar.xz")
+                  (string-append
+                   "ftp://ftp.simplesystems.org/pub/libpng/png/src/history";
+                   "/libpng16/libpng-" version ".tar.xz")))
+       (sha256
+        (base32
+         "1cbwf20zlm4gcv8rpjivkngrjgl5366w21lr9qmbk2lr0dq8papk"))))
+    (inputs
+     (modify-inputs (package-inputs libpng-apng)
+       (replace "apng"
+         (origin
+           (method url-fetch)
+           (uri
+            (string-append "mirror://sourceforge/libpng-apng/libpng16/"
+                           version "/libpng-" version "-apng.patch.gz"))
+           (sha256
+            (base32
+             "00ykl1bzb79xsjwrq7dl0yz9dz5g3zwj0lry5zam3vs6s3gw5gi9"))))))))
 
 (define-public pngcrush
   (package
diff --git a/gnu/packages/librewolf.scm b/gnu/packages/librewolf.scm
index 346249f504..4531b0b9ad 100644
--- a/gnu/packages/librewolf.scm
+++ b/gnu/packages/librewolf.scm
@@ -641,7 +641,7 @@
                   libjpeg-turbo
                   libnotify
                   libpciaccess
-                  libpng-apng-for-librewolf
+                  libpng-apng-next
                   libva
                   libvpx
                   libwebp
diff --git a/gnu/packages/patches/icecat-compare-paths.patch 
b/gnu/packages/patches/icecat-compare-paths.patch
index 87a49d58fa..6c3f503f35 100644
--- a/gnu/packages/patches/icecat-compare-paths.patch
+++ b/gnu/packages/patches/icecat-compare-paths.patch
@@ -2,20 +2,11 @@ See comment in gnu/build/icecat-extension.scm.
 
 --- a/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
 +++ b/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs
-@@ -3613,6 +3613,7 @@ const XPIDatabaseReconcile = {
+@@ -3753,6 +3753,7 @@
      if (
        newAddon ||
        oldAddon.updateDate != xpiState.mtime ||
 +      oldAddon.path != xpiState.path ||
-       (aUpdateCompatibility && this.isAppBundledLocation(installLocation))
-     ) {
-       newAddon = this.updateMetadata(
-@@ -3621,8 +3622,6 @@ const XPIDatabaseReconcile = {
-         xpiState,
-         newAddon
-       );
--    } else if (oldAddon.path != xpiState.path) {
--      newAddon = this.updatePath(installLocation, oldAddon, xpiState);
-     } else if (aUpdateCompatibility || aSchemaChange) {
-       newAddon = this.updateCompatibility(
-         installLocation,
+       (aUpdateCompatibility && this.isAppBundledLocation(installLocation)) ||
+       // update addon metadata if the addon in bundled into
+       // the omni jar and version or the resource URI pointing
diff --git a/gnu/packages/patches/icecat-fhs-configure-option.patch 
b/gnu/packages/patches/icecat-fhs-configure-option.patch
new file mode 100644
index 0000000000..6c1e4b8b83
--- /dev/null
+++ b/gnu/packages/patches/icecat-fhs-configure-option.patch
@@ -0,0 +1,38 @@
+Upstream-status: https://phabricator.services.mozilla.com/D263231
+
+diff --git a/build/moz.configure/init.configure 
b/build/moz.configure/init.configure
+index 6162d68699dd..193272588caa 100644
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -1351,3 +1351,17 @@ option(
+     help="Object code libraries in DIR",
+ )
+ set_config("libdir", depends("--libdir")(lambda ldir: ldir[0]))
++
++# Support for using platform-specific standard (FHS-like) locations.
++option(
++    "--enable-fhs",
++    default=True,
++    help="Enable the search of standard platform-specific (FHS-like) 
locations",
++)
++
++@depends("--enable-fhs")
++def use_fhs(value):
++    return bool(value)
++
++set_config("USE_FHS", use_fhs)
++set_define("USE_FHS", use_fhs)
+diff --git a/toolkit/xre/nsXREDirProvider.cpp 
b/toolkit/xre/nsXREDirProvider.cpp
+index 547cc4c255c4..79133c879be4 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -295,6 +295,9 @@ static nsresult GetSystemParentDirectory(nsIFile** aFile) {
+     localDir.forget(aFile);
+     return rv;
+   }
++#  ifndef USE_FHS
++  return rv;
++#  endif
+ 
+   // ... falling back to the conventional fixed location otherwise.
+ #  if defined(XP_MACOSX)
diff --git a/gnu/packages/patches/icecat-makeicecat-update.patch 
b/gnu/packages/patches/icecat-makeicecat-update.patch
new file mode 100644
index 0000000000..13fd279aa6
--- /dev/null
+++ b/gnu/packages/patches/icecat-makeicecat-update.patch
@@ -0,0 +1,409 @@
+Upstream-status: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79355
+
+diff --git a/data/branding/icecat/configure.sh 
b/data/branding/icecat/configure.sh
+index 7481c2c..edcf9a8 100644
+--- a/data/branding/icecat/configure.sh
++++ b/data/branding/icecat/configure.sh
+@@ -2,4 +2,4 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+-MOZ_APP_DISPLAYNAME=IceCat
++MOZ_APP_DISPLAYNAME=GNU IceCat
+diff --git a/data/patches/hide-firefox-view-button.patch 
b/data/patches/hide-firefox-view-button.patch
+index ef24a34..52bad1c 100644
+--- a/data/patches/hide-firefox-view-button.patch
++++ b/data/patches/hide-firefox-view-button.patch
+@@ -1,10 +1,10 @@
+---- a/browser/base/content/navigator-toolbox.inc.xhtml
+-+++ b/browser/base/content/navigator-toolbox.inc.xhtml
+-@@ -43,6 +43,7 @@
+-                          oncommand="FirefoxViewHandler.openTab();"
+-                          
onmousedown="FirefoxViewHandler.openToolbarMouseEvent(event);"
+-                          cui-areatype="toolbar"
+-+                         hidden="true"
+-                          removable="true"/>
++--- a/browser/base/content/navigator-toolbox.inc.xhtml        2025-08-12 
02:31:44.000000000 +0900
+++++ b/browser/base/content/navigator-toolbox.inc.xhtml        2025-08-26 
21:10:15.709368257 +0900
++@@ -41,6 +41,7 @@
++                        role="button"
++                        aria-pressed="false"
++                        cui-areatype="toolbar"
+++                       hidden="true"
++                        removable="true"/>
+  
+-           <tabs id="tabbrowser-tabs"
++         <tabs id="tabbrowser-tabs"
+diff --git a/data/patches/hide-submit-feedback-menu-item.patch 
b/data/patches/hide-submit-feedback-menu-item.patch
+index 402ba31..5278da7 100644
+--- a/data/patches/hide-submit-feedback-menu-item.patch
++++ b/data/patches/hide-submit-feedback-menu-item.patch
+@@ -1,10 +1,10 @@
+---- a/browser/base/content/browser-menubar.inc
+-+++ b/browser/base/content/browser-menubar.inc
+-@@ -465,6 +465,7 @@
+-                           hidden="true"
+-                           appmenu-data-l10n-id="menu-report-broken-site"/>
++--- a/browser/base/content/browser-menubar.inc        2025-08-26 
21:16:57.929903122 +0900
+++++ b/browser/base/content/browser-menubar.inc        2025-08-26 
21:17:09.257918204 +0900
++@@ -431,6 +431,7 @@
++                           disabled="true"
++                           
appmenu-data-l10n-id="appmenuitem-report-broken-site"/>
+                  <menuitem id="feedbackPage"
+ +                          hidden="true"
+-                           oncommand="openFeedbackPage()"
+                            data-l10n-id="menu-help-share-ideas"
+                            appmenu-data-l10n-id="appmenu-help-share-ideas"/>
++                 <menuitem id="helpSafeMode"
+diff --git a/data/patches/icecat-about-dialog.patch 
b/data/patches/icecat-about-dialog.patch
+index c7e77b0..87dc835 100644
+--- a/data/patches/icecat-about-dialog.patch
++++ b/data/patches/icecat-about-dialog.patch
+@@ -1,16 +1,16 @@
+---- a/browser/base/content/aboutDialog.xhtml
+-+++ b/browser/base/content/aboutDialog.xhtml
+-@@ -148,7 +148,6 @@
++--- a/browser/base/content/aboutDialog.xhtml  2025-08-26 21:23:08.866394736 
+0900
+++++ b/browser/base/content/aboutDialog.xhtml  2025-08-26 21:23:19.986408921 
+0900
++@@ -139,7 +139,6 @@
+        <hbox pack="center">
+          <label is="text-link" class="bottom-link" useoriginprincipal="true" 
href="about:license" data-l10n-id="bottomLinks-license"/>
+-         <label is="text-link" class="bottom-link" useoriginprincipal="true" 
href="about:rights" data-l10n-id="bottomLinks-rights"/>
+--        <label is="text-link" class="bottom-link" 
href="https://www.mozilla.org/privacy/?utm_source=firefox-browser&#38;utm_medium=firefox-desktop&#38;utm_campaign=about-dialog";
 data-l10n-id="bottomLinks-privacy"/>
++         <label is="text-link" class="bottom-link" 
href="https://www.mozilla.org/about/legal/terms/firefox/"; 
data-l10n-id="bottom-links-terms"/>
++-        <label is="text-link" class="bottom-link" 
href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&#38;utm_medium=firefox-desktop&#38;utm_campaign=about-dialog";
 data-l10n-id="bottom-links-privacy"/>
+        </hbox>
+        <description id="trademark" data-l10n-id="trademarkInfo"></description>
+      </vbox>
+---- a/browser/base/content/aboutDialog.css
+-+++ b/browser/base/content/aboutDialog.css
+-@@ -38,10 +38,9 @@
++--- a/browser/base/content/aboutDialog.css    2025-08-26 21:26:43.618669160 
+0900
+++++ b/browser/base/content/aboutDialog.css    2025-08-26 21:31:54.207067616 
+0900
++@@ -32,10 +32,9 @@
+  #rightBox {
+    background-image: url("chrome://branding/content/about-wordmark.svg");
+    background-repeat: no-repeat;
+@@ -19,6 +19,9 @@
+    padding-top: 38px;
+ -  margin-top: 20px;
+ +  margin-top: 60px;
+- }
+- 
++   /* We don't want this box to contribute arbitrarily to the intrinsic size 
of
++    * the dialog, so set the width to a reasonable size, but let it flex to 
take
++    * all available space. */
++--- a/browser/base/content/aboutDialog.css
+++++ b/browser/base/content/aboutDialog.css
+  #rightBox:-moz-locale-dir(rtl) {
+diff --git a/data/patches/icecat-fix-install.patch 
b/data/patches/icecat-fix-install.patch
+new file mode 100644
+index 0000000..b62d36f
+--- /dev/null
++++ b/data/patches/icecat-fix-install.patch
+@@ -0,0 +1,14 @@
++diff --git a/browser/installer/package-manifest.in 
b/browser/installer/package-manifest.in
++index 6ebf2f62c477..2ddcef37816c 100644
++--- a/browser/installer/package-manifest.in
+++++ b/browser/installer/package-manifest.in
++@@ -174,7 +174,9 @@
++ @RESPATH@/components/nsUpdateService.manifest
++ #endif
++ @RESPATH@/components/ProcessSingleton.manifest
+++#ifdef MOZ_SERVICES_SYNC
++ @RESPATH@/components/SyncComponents.manifest
+++#endif
++ @RESPATH@/components/servicesComponents.manifest
++ @RESPATH@/components/servicesSettings.manifest
++ @RESPATH@/components/cryptoComponents.manifest
+diff --git a/data/patches/moz-configure-changes.patch 
b/data/patches/moz-configure-changes.patch
+index 6f0525e..5745b38 100644
+--- a/data/patches/moz-configure-changes.patch
++++ b/data/patches/moz-configure-changes.patch
+@@ -1,18 +1,41 @@
++diff --git a/browser/moz.configure b/browser/moz.configure
++index e8b401a7dfb2..d5b3117ce3d8 100644
+ --- a/browser/moz.configure
+ +++ b/browser/moz.configure
+-@@ -5,11 +5,11 @@
++@@ -5,16 +5,17 @@
+  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+  
+  imply_option("MOZ_PLACES", True)
+ -imply_option("MOZ_SERVICES_HEALTHREPORT", True)
+-+imply_option("MOZ_SERVICES_HEALTHREPORT", False)
+- imply_option("MOZ_SERVICES_SYNC", True)
++-imply_option("MOZ_SERVICES_SYNC", True)
+ -imply_option("MOZ_DEDICATED_PROFILES", True)
+ -imply_option("MOZ_BLOCK_PROFILE_DOWNGRADE", True)
+ -imply_option("MOZ_NORMANDY", True)
+++imply_option("MOZ_SERVICES_HEALTHREPORT", False)
+++imply_option("MOZ_SERVICES_SYNC", False)
+ +imply_option("MOZ_DEDICATED_PROFILES", False)
+ +imply_option("MOZ_BLOCK_PROFILE_DOWNGRADE", False)
+ +imply_option("MOZ_NORMANDY", False)
++ imply_option("MOZ_PROFILE_MIGRATOR", True)
++ 
++ 
++-imply_option("MOZ_APP_VENDOR", "Mozilla")
+++imply_option("MOZ_APP_VENDOR", "GNU")
++ imply_option("MOZ_APP_ID", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}")
+++imply_option("MOZ_APP_PROFILE", "mozilla/icecat")
++ # Include the DevTools client, not just the server (which is the default)
++ imply_option("MOZ_DEVTOOLS", "all")
++ imply_option("BROWSER_CHROME_URL", "chrome://browser/content/browser.xhtml")
++diff --git a/build/moz.configure/init.configure 
b/build/moz.configure/init.configure
++index 193272588caa..da8a729548c8 100644
++--- a/build/moz.configure/init.configure
+++++ b/build/moz.configure/init.configure
++@@ -991,7 +991,7 @@ set_config("MOZ_BUILD_APP", build_project)
++ set_define("MOZ_BUILD_APP", build_project)
++ 
++ 
++-option(env="MOZILLA_OFFICIAL", help="Build an official release")
+++option(env="MOZILLA_OFFICIAL", help="Build an official release", 
default=False)
++ 
+  
+- with only_when(target_has_linux_kernel & compile_environment):
+-     option(env="MOZ_NO_PIE_COMPAT", help="Enable non-PIE wrapper")
++ @depends("MOZILLA_OFFICIAL")
+diff --git a/makeicecat b/makeicecat
+index fc0bb76..f47f089 100755
+--- a/makeicecat
++++ b/makeicecat
+@@ -21,12 +21,13 @@
+ 
+ 
+ # metadata
+-readonly FFMAJOR=128
+-readonly FFMINOR=14
++readonly FFMAJOR=140
++readonly FFMINOR=2
+ readonly FFSUB=0
+ readonly FFBUILD=1
+ readonly GNUVERSION=1
+-readonly 
SOURCEBALL_CHECKSUM='93b9ef6229f41cb22ff109b95bbf61a78395a0fe4b870192eeca22947cb09a53'
++# SHA-256
++readonly 
SOURCEBALL_CHECKSUM='956dce675c3b706d563caf07ed3ca9af632ab830be710dfd4351da78a0a2ef55'
+ readonly SOURCEBALL_SIGNINGKEY='14F26682D0916CDD81E37B6D61B7B526D98F0353'
+ readonly FFVERSION=${FFMAJOR}.${FFMINOR}.${FFSUB}
+ readonly SOURCEBALL=firefox-${FFVERSION}esr.source.tar.xz
+@@ -41,7 +42,7 @@ readonly LIST_URL=lists.gnu.org/mailman/listinfo/bug-gnuzilla
+ 
+ # l10n
+ readonly L10N_URL=https://github.com/mozilla-l10n/firefox-l10n
+-readonly L10N_REV=fcd0300e8478d1ec4d1c097a073ddb8e1e0351e3
++readonly L10N_REV=4846304555affc92db4c693149c0f1c59afc7828
+ readonly L10N_CMP_URL=https://github.com/mozilla/compare-locales
+ readonly L10N_CMP_REV=RELEASE_9_0_4
+ readonly L10N_PREFS_DIR=browser/chrome/browser/preferences
+@@ -377,7 +378,7 @@ configure()
+     sed '/"datareporting\.healthreport\.uploadEnabled"/s/true/false/' -i 
modules/libpref/init/all.js
+ 
+     # Custom privacy statement link
+-    sed 
"s|https://www\\.mozilla\\.org/legal/privacy/|https://${LEGALINFO_URL}|" -i 
./browser/app/profile/firefox.js ./toolkit/content/aboutRights.xhtml
++    sed 
"s|https://www\\.mozilla\\.org/legal/privacy/|https://${LEGALINFO_URL}|" -i 
./browser/app/profile/firefox.js
+ 
+     # Sanitize lists
+     local plugin_file
+@@ -393,8 +394,8 @@ configure()
+     # Disable activity-stream anti-features.
+     # These are not condensed into a single sed script so that it
+     # fails on individual commands that didn't change the source
+-    local activity_stream=browser/components/newtab/lib/ActivityStream.sys.mjs
+-    sed '/^const DEFAULT_SITES/,/^])\;/c const DEFAULT_SITES = new 
Map\([[""]]\);' -i browser/components/newtab/lib/DefaultSites.sys.mjs
++    local activity_stream=browser/extensions/newtab/lib/ActivityStream.sys.mjs
++    sed '/^const DEFAULT_SITES/,/^])\;/c const DEFAULT_SITES = new 
Map\([[""]]\);' -i browser/extensions/newtab/lib/DefaultSites.sys.mjs
+     sed '/"showSponsored"/,/value/s/value: true/value: false/' -i 
$activity_stream
+     sed '/  "telemetry"/,/value/s/value: true/value: false/' -i 
$activity_stream
+     sed '/"section\.highlights\.includePocket"/,/value/s/value: true/value: 
false/' -i $activity_stream
+@@ -405,11 +406,10 @@ configure()
+     sed '/"telemetry\.structuredIngestion\.endpoint"/,/value/s/value: 
.*/value: "",/' -i $activity_stream
+     sed '/name: "telemetry"/,/value/s/value: true/value: false/' -i 
$activity_stream
+     sed '/name: "system\.topstories"/,/},/s/.*!!locales.*/false/' -i 
$activity_stream
+-    sed 's/Ubuntu, //' -i browser/components/newtab/css/activity-stream*.css
+ 
+-    sed '/^]$/d' -i 
browser/components/newtab/data/content/tippytop/top_sites.json
+-    sed 's/}$/},/' -i 
browser/components/newtab/data/content/tippytop/top_sites.json
+-    cat << EOF >> 
browser/components/newtab/data/content/tippytop/top_sites.json
++    sed '/^]$/d' -i 
browser/components/topsites/content/tippytop/top_sites.json
++    sed 's/}$/},/' -i 
browser/components/topsites/content/tippytop/top_sites.json
++    cat << EOF >> browser/components/topsites/content/tippytop/top_sites.json
+ {
+   "domains": ["gnu.org"],
+   "image_url": "images/gnu.png",
+@@ -505,8 +505,8 @@ EOF
+ }
+ EOF
+ 
+-    cp "${DATADIR}"/newtab/*.ico 
browser/components/newtab/data/content/tippytop/favicons/
+-    cp "${DATADIR}"/newtab/*.png 
browser/components/newtab/data/content/tippytop/images/
++    cp "${DATADIR}"/newtab/*.ico 
browser/components/topsites/content/tippytop/favicons/
++    cp "${DATADIR}"/newtab/*.png 
browser/components/topsites/content/tippytop/images/
+ 
+     # IceCat menu l10n
+     /bin/sed '/appmenuitem-settings/,+1s/\(.*.label = 
\)\(.*\)/\1\2\nappmenuitem-icecat-settings =\n\1IceCat \2/' -i 
./l10n/*/browser/browser/appmenu.ftl ./browser/locales/en-US/browser/appmenu.ftl
+@@ -541,7 +541,6 @@ configure_mobile()
+ 
+     cat << EOF >> mobile/android/confvars.sh
+ # IceCat settings
+-MOZ_APP_VENDOR=GNU
+ MOZ_APP_VERSION=${FFVERSION}
+ MOZ_PAY=0
+ MOZ_SERVICES_HEALTHREPORT=0
+@@ -606,15 +605,6 @@ apply_branding()
+ 
+     # Custom legal about pages
+     find l10n -wholename '*/brand.ftl' | xargs /bin/sed 's/^trademarkInfo = 
.*/trademarkInfo = The IceCat logo is Copyright 2008-2015 Free Software 
Foundation, released under the terms of the GNU Lesser General Public License, 
version 3 or any later version./' -i
+-    local string
+-    for string in rights-intro-point-2 rights-intro-point-3 
rights-intro-point-4 rights-intro-point-5 rights-intro-point-6 
rights-webservices rights-safebrowsing
+-    do
+-        find -name aboutRights.ftl | xargs sed -i "s/^${string}.*/${string} = 
/"
+-    done
+-    for string in helpus community-2 community-exp
+-    do
+-        find -wholename '*/browser/aboutDialog.ftl' | xargs sed -i 
"s/^${string}.*/${string} = /"
+-    done
+     cp "${DATADIR}"/aboutRights.xhtml toolkit/content/aboutRights.xhtml
+     cp "${DATADIR}"/aboutRights.xhtml 
toolkit/content/aboutRights-unbranded.xhtml
+     sed -i 's|<a href="http://www\.mozilla\.org/";>Mozilla Project</a>|<a 
href="http://www.gnu.org/";>GNU Project</a>|g' 
browser/base/content/overrides/app-license.html
+@@ -632,8 +622,10 @@ apply_branding()
+ 
+ apply_batch_branding()
+ {
+-    find . -depth | grep -i fennec  | rename_files -e s/fennec/icecatmobile/g 
-e s/Fennec/IceCatMobile/g
+-    find . -depth | grep -i firefox | rename_files -e s/firefox/icecat/g -e 
s/Firefox/IceCat/g
++    find . -depth | grep -i fennec |
++        rename_files -e s/fennec/icecatmobile/g -e s/Fennec/IceCatMobile/g
++    find . -depth | grep -i firefox |
++        rename_files -e s/firefox/icecat/g -e s/Firefox/IceCat/g
+ 
+     echo "Running batch rebranding (this will take a while)"
+     local sed_script="
+@@ -672,7 +664,9 @@ 
s|https://www\\.mozilla\\.org/icecat/?utm_source=synceol|https://www.mozilla.org
+ 
+ 
s|www\\.gnu\\.org/software/gnuzilla/icecat-help|libreplanet.org/wiki/Group:IceCat/Help|g;
+ "
+-    find . -type f -not -iregex '.*changelog.*' -not -iregex '.*copyright.*' 
-not -iregex '.*third_party/rust.*' -execdir /bin/sed --follow-symlinks -i 
"${sed_script}" '{}' ';'
++    find . -type f -not -iregex '.*changelog.*' -not -iregex '.*copyright.*' \
++         -not -iregex '.*third_party/rust.*' \
++         -execdir /bin/sed --follow-symlinks -i "${sed_script}" '{}' ';'
+ 
+     find l10n -type f -execdir /bin/sed --follow-symlinks -i "s/from GNU/from 
Mozilla/g" '{}' ';'
+ 
+@@ -713,27 +707,18 @@ s/OpenSource/Free Software/g;
+     # Ditto for browser/modules/moz.build
+     sort_inner_list_in_file "EXTRA_JS_MODULES += [" "]" 
browser/modules/moz.build
+ 
++    # Adjust the capitalization of IceCat to match the expected symbol
++    # names in build-time generated source files like TelemetryEventEnums.h.
++    sed 's/IceCatview/Icecatview/g' -i 
browser/components/icecatview/metrics.yaml
++
+     # Copy js settings
+     cat "${DATADIR}"/settings.js >> browser/app/profile/icecat.js
+ 
+     cat << EOF >> browser/confvars.sh
+ # IceCat settings
+ MOZ_APP_BASENAME=IceCat
+-MOZ_APP_UA_NAME=Firefox
+-MOZ_APP_VENDOR=GNU
+ MOZ_APP_VERSION=${FFVERSION}
+-MOZ_APP_PROFILE=mozilla/icecat
+-MOZ_PAY=0
+-MOZ_SERVICES_HEALTHREPORT=0
+-MOZ_SERVICES_HEALTHREPORTER=0
+-MOZ_SERVICES_FXACCOUNTS=0
+-MOZ_SERVICES_METRICS=0
+ MOZ_DATA_REPORTING=0
+-MOZ_NORMANDY=0
+-MOZ_SERVICES_SYNC=0
+-MOZ_DEVICES=0
+-MOZ_ANDROID_GOOGLE_PLAY_SERVICES=0
+-MOZ_ADDON_SIGNING=0
+ EOF
+ }
+ 
+diff --git a/tools/process-json-files.py b/tools/process-json-files.py
+index d449057..2407fa9 100644
+--- a/tools/process-json-files.py
++++ b/tools/process-json-files.py
+@@ -148,48 +148,6 @@ class Changes(RemoteSettings):
+         return File(cls.OUTPUT_PATH, changes)
+ 
+ 
+-class SearchConfig(RemoteSettings):
+-    JSON_PATHS = (
+-        RemoteSettings.DUMPS_PATH_ABSOLUTE /
+-        'main/search-config.json',
+-    )
+-    SCHEMA_PATH = arguments.MAIN_PATH / \
+-        'toolkit/components/search/schema/search-config-schema.json'
+-    OUTPUT_PATH = JSON_PATHS[0]
+-
+-    _DUCKDUCKGO_SEARCH_ENGINE_ID = '[email protected]'
+-
+-    @classmethod
+-    def should_drop_record(cls, search_engine):
+-        return search_engine['webExtension']['id'] not in (
+-            cls._DUCKDUCKGO_SEARCH_ENGINE_ID, '[email protected]')
+-
+-    @classmethod
+-    def process_record(cls, search_engine):
+-        [search_engine.pop(key, None)
+-         for key in ['extraParams', 'telemetryId']]
+-
+-        general_specifier = {}
+-        for specifier in search_engine['appliesTo'].copy():
+-            if 'application' in specifier:
+-                if 'distributions' in specifier['application']:
+-                    search_engine['appliesTo'].remove(specifier)
+-                    continue
+-                specifier['application'].pop('extraParams', None)
+-
+-            if 'included' in specifier and 'everywhere' in specifier[
+-                    'included'] and specifier['included']['everywhere']:
+-                general_specifier = specifier
+-
+-        if not general_specifier:
+-            general_specifier = {'included': {'everywhere': True}}
+-            search_engine['appliesTo'].insert(0, general_specifier)
+-        if search_engine['webExtension']['id'] == 
cls._DUCKDUCKGO_SEARCH_ENGINE_ID:
+-            general_specifier['default'] = 'yes'
+-
+-        return search_engine
+-
+-
+ class SearchConfigV2(RemoteSettings):
+     JSON_PATHS = (
+         RemoteSettings.DUMPS_PATH_ABSOLUTE /
+@@ -224,20 +182,6 @@ class SearchConfigV2(RemoteSettings):
+         return record
+ 
+ 
+-class SearchConfigOverrides(RemoteSettings):
+-    JSON_PATHS = (
+-        RemoteSettings.DUMPS_PATH_ABSOLUTE /
+-        'main/search-config-overrides.json',
+-    )
+-    SCHEMA_PATH = arguments.MAIN_PATH / \
+-        'toolkit/components/search/schema/search-config-overrides-schema.json'
+-    OUTPUT_PATH = JSON_PATHS[0]
+-
+-    @classmethod
+-    def should_drop_record(cls, record):
+-        return True
+-
+-
+ class SearchConfigOverridesV2(RemoteSettings):
+     JSON_PATHS = (
+         RemoteSettings.DUMPS_PATH_ABSOLUTE /
+@@ -295,8 +239,7 @@ class TopSites(RemoteSettings):
+ 
+ # To reflect the latest timestamps, Changes class should always come after
+ # all other RemoteSettings subclasses
+-processors = (SearchConfig,   SearchConfigOverrides,
+-              SearchConfigV2, SearchConfigOverridesV2,
++processors = (SearchConfigV2, SearchConfigOverridesV2,
+               Changes)
+ 
+ for processor in processors:
diff --git a/gnu/packages/patches/icecat-use-system-wide-dir.patch 
b/gnu/packages/patches/icecat-use-system-wide-dir.patch
index 223467a9c1..c7454a72b9 100644
--- a/gnu/packages/patches/icecat-use-system-wide-dir.patch
+++ b/gnu/packages/patches/icecat-use-system-wide-dir.patch
@@ -1,36 +1,36 @@
-Replace "/usr/lib/mozilla" (the system-wide directory for extensions and
-native manifests) with "$ICECAT_SYSTEM_DIR".
+Upstream-status: https://bugzilla.mozilla.org/show_bug.cgi?id=1986219
 
+diff --git a/toolkit/xre/nsXREDirProvider.cpp 
b/toolkit/xre/nsXREDirProvider.cpp
+index 9c94cb8808aa..dfee051b302f 100644
 --- a/toolkit/xre/nsXREDirProvider.cpp
 +++ b/toolkit/xre/nsXREDirProvider.cpp
-@@ -296,24 +296,12 @@ nsresult 
nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
+@@ -276,11 +276,27 @@ nsresult 
nsXREDirProvider::GetBackgroundTasksProfilesRootDir(
+  *
+  * On OSX this is /Library/Application Support/Mozilla
+  * On Linux this is /usr/{lib,lib64}/mozilla
+- *   (for 32- and 64-bit systems respsectively)
++ *   (for 32- and 64-bit systems respectively)
++ *
++ * The MOZILLA_SYSTEM_DIR environment variable can be used to override
++ * the system directory used.
+  */
  static nsresult GetSystemParentDirectory(nsIFile** aFile) {
-   nsresult rv;
+-  nsresult rv;
++  nsresult rv = NS_ERROR_FAILURE;
    nsCOMPtr<nsIFile> localDir;
--#  if defined(XP_MACOSX)
--  rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
--                        getter_AddRefs(localDir));
--  if (NS_SUCCEEDED(rv)) {
--    rv = localDir->AppendNative("Mozilla"_ns);
--  }
--#  else
--  constexpr auto dirname =
--#    ifdef HAVE_USR_LIB64_DIR
--      "/usr/lib64/mozilla"_ns
--#    elif defined(__OpenBSD__) || defined(__FreeBSD__)
--      "/usr/local/lib/mozilla"_ns
--#    else
--      "/usr/lib/mozilla"_ns
--#    endif
--      ;
--  rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
--#  endif
 +
-+  const char* systemParentDir = getenv("ICECAT_SYSTEM_DIR");
-+  if (!systemParentDir || !*systemParentDir) return NS_ERROR_FAILURE;
++  // Honor a the MOZILLA_SYSTEM_DIR environment variable first...
++  const char* systemParentDir = getenv("MOZILLA_SYSTEM_DIR");
++  if (systemParentDir) {
++    rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir),
++                               getter_AddRefs(localDir));
++  }
++  if (NS_SUCCEEDED(rv)) {
++    localDir.forget(aFile);
++    return rv;
++  }
 +
-+  rv = NS_NewNativeLocalFile(nsDependentCString(systemParentDir), false,
-+                             getter_AddRefs(localDir));
- 
-   if (NS_SUCCEEDED(rv)) {
-     localDir.forget(aFile);
++  // ... falling back to the conventional fixed location otherwise.
+ #  if defined(XP_MACOSX)
+   rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
+                         getter_AddRefs(localDir));

Reply via email to