Package Details: icecat 115.17.0-1

Git Clone URL: https://aur.archlinux.org/icecat.git (read-only, click to copy)
Package Base: icecat
Description: GNU version of the Firefox ESR browser
Upstream URL: https://git.savannah.gnu.org/cgit/gnuzilla.git
Keywords: browser esr gnuzilla web
Licenses: MPL-2.0
Submitter: None
Maintainer: figue (xiota)
Last Packager: xiota
Votes: 250
Popularity: 0.40
First Submitted: 2007-12-09 10:12 (UTC)
Last Updated: 2024-11-04 00:48 (UTC)

Dependencies (51)

Sources (10)

Pinned Comments

xiota commented on 2024-02-26 07:32 (UTC) (edited on 2024-08-08 03:44 (UTC) by xiota)

PKGBUILD has been updated. Major changes:

  • Downloads Firefox ESR and localization using the source array. Files are saved for reuse.
  • Saves freshly patched IceCat sources in a tarball for reuse.
  • Saves the PGO profile for reuse.

Notes:

  • Currently requires clang/llvm 17, which has to be built from AUR.
  • Wayland users, consider setting _build_pgo_xvfb=false. This will use xwayland-run for profiling.
  • PGO should work now, but if it doesn't and you're willing to go without, try _build_pgo=false.
  • Running out of RAM? Try adding mk_add_options MOZ_PARALLEL_BUILD=___ around line 300. Pick a value less than number of cores and free RAM in GB. For example, on a system with 8 cores, 64GB total RAM, but only 6 GB free, the value should be set to 4 or 5.
    • If a few people can confirm this is helpful, I will consider adding it as an additional option.
    • Main resource hog seems to be linking libxul.so. Leave a comment if you have a potential solution.

Having problems? Please provide details: processor make and model, number of cores, free -m, full log in pastebin, whether using AUR helper/makepkg/clean chroot, etc.

Latest Comments

« First ‹ Previous 1 .. 3 4 5 6 7 8 9 10 11 12 13 .. 85 Next › Last »

Charlie.f94b92 commented on 2023-06-12 12:11 (UTC) (edited on 2023-06-12 12:12 (UTC) by Charlie.f94b92)

Broken build on 102.12.0-2. Fixed it:

diff --git a/PKGBUILD b/PKGBUILD
index 9934a89..565e9cc 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -36,7 +36,7 @@ sha256sums=('0f629c78f24dc56b7369b337aa8d72d948c1d00a2c1f6761468c9511ca8320be'
             '33dd309eeb99ec730c97ba844bf6ce6c7840f7d27da19c82389cdefee8c20208'
             'ca3cedc5edce26040d3caf735afa8744fe08f3a1695eb2cda3796f4f336632d3'
             '2a12b187a8803b0c3a4385d4567e1debf8bfa3e17c4c8cefdf39fb7434d3d932'
-            'db2fb4df9738c83c59ff037093d5474bc0fb64ac4ea0f71945ac741d4173211a')
+            '53a45dd7ffd004d04c89492fd6c9aa1759f44f212730479d98e72ce20a74e254')

 prepare() {
   cd gnuzilla-${_commit}
@@ -73,7 +73,7 @@ prepare() {

   # fix mp4parse (thank you @seo.disparate :: https://aur.archlinux.org/packages/icecat#comment-918458)
   patch -Np1 -i ../../../mp4parse_macro_mul.patch
-  sed -e 's|src/lib.rs":"73114a5c28472e77082ad259113ffafb418ed602c1741f26da3e10278b0bf93e|src/lib.rs":"bded10689ddd8fd3fcb4ab01be1ecf3642691d68c3651fc4b00f3ccba67fc7cd|' -i output/icecat-${pkgver}/third_party/rust/mp4parse/.cargo-checksum.json
+  sed -e 's|src/lib.rs":"73114a5c28472e77082ad259113ffafb418ed602c1741f26da3e10278b0bf93e|src/lib.rs":"bded10689ddd8fd3fcb4ab01be1ecf3642691d68c3651fc4b00f3ccba67fc7cd|' -i third_party/rust/mp4parse/.cargo-checksum.json

   # Patch to move files directly to /usr/lib/icecat. No more symlinks.
   sed -e 's;$(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION);$(libdir)/$(MOZ_APP_NAME);g' -i config/baseconfig.mk
diff --git a/mp4parse_macro_mul.patch b/mp4parse_macro_mul.patch
index 10619f1..a14dbf2 100644
--- a/mp4parse_macro_mul.patch
+++ b/mp4parse_macro_mul.patch
@@ -1,5 +1,5 @@
---- a/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs
-+++ b/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs
+--- a/third_party/rust/mp4parse/src/lib.rs
++++ b/third_party/rust/mp4parse/src/lib.rs
 @@ -3184,8 +3184,8 @@
              type Output = $output;

figue commented on 2023-06-10 10:55 (UTC)

@seo.disparate thank you. I'll check it!

@unphysicalix as you say, the history is simply that IceCat comes from GNU, Librewolf is an independent project.

Use the browser you like. I currently run several of them according to what I need.

Cheers

unphysicalix commented on 2023-06-09 13:07 (UTC)

since there is no simple "heads up" or "thumbs up" to your reply, @seo.disparate, another comment: Your patch works well for me. Could compile it, works, writing this wir 102.12.0.

General remark: since upstream does not seem to be a big community: where is the difference to LibreWolf. Can't the two projects be merged? Or can icecat at least a lot easier and more modern be derived from LibreWolf instead from firefox?

I know, almost always posing these questions shows that the one asking it does not understand the history or the motivation/goal, the problems or the work involved. Nevertheless, from the user perspective I am happy with icecat, but I could be happier with librewolf in some occations... I'll try it at least.

Anyway: Cheers to you, @figue and @seo.disparate !

seo.disparate commented on 2023-06-09 07:25 (UTC) (edited on 2023-06-09 07:36 (UTC) by seo.disparate)

So I figured out a patch that fixes the build of mp4parse that only touches two lines (based on what exists in the current version of mp4parse):

mp4parse_macro_mul.patch
--- a/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs
+++ b/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs
@@ -3184,8 +3184,8 @@
             type Output = $output;

             fn mul(self, rhs: $rhs) -> Self::Output {
-                static_assertions::const_assert!(<$output>::MAX <= <$inner>::MAX as u64);
-                static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
+                static_assertions::const_assert!(<$output as UpperBounded>::MAX <= <$inner>::MAX as u64);
+                static_assertions::const_assert!(<$lhs as UpperBounded>::MAX * <$rhs as UpperBounded>::MAX <= <$output as UpperBounded>::MAX);

                 let lhs: $inner = self.get().into();
                 let rhs: $inner = rhs.get().into();

I also needed to change the checksum for mp4parse/src/lib.rs, as otherwise the build would fail complaining about the changed source. Thus, the entries in the PKGBUILD should look like:

...
# Produce IceCat sources
bash makeicecat

patch -p1 < "$srcdir/mp4parse_macro_mul.patch"
sed -e 's|src/lib.rs":"73114a5c28472e77082ad259113ffafb418ed602c1741f26da3e10278b0bf93e|src/lib.rs":"bded10689ddd8fd3fcb4ab01be1ecf3642691d68c3651fc4b00f3ccba67fc7cd|' -i output/icecat-102.12.0/third_party/rust/mp4parse/.cargo-checksum.json

cd output/icecat-${pkgver}
...

Naturally, one will need to add the patch to the array of SOURCES for the PKGBUILD.

seo.disparate commented on 2023-06-09 05:32 (UTC) (edited on 2023-06-09 06:03 (UTC) by seo.disparate)

I did some digging on the compile issue, and it turns out that Rust 1.70 seems to break the build, such that the code needed to be updated.

https://github.com/mozilla/mp4parse-rust/issues/406
https://github.com/mozilla/mp4parse-rust/issues/387

Looking at the error log, the build uses commit 3bfc47d9a571d0842676043ba60716318e946c06 of mp4parse which was merged in late 2021. So the fix is either to downgrade Rust, or patch the source to use a more recent version of mp4parse, or get upstream to not use the old version of mp4parse.

EDIT: I did more digging and it looks like mp4parse (and mp4parse_capi) is bundled in the firefox esr tarball with sources looking identical to commit 3bfc47d9a571d0842676043ba60716318e946c06 . I think Mozilla may have to change the ESR version to use a newer mp4parse version (assuming there is no API breaking changes)...

EDIT: I think theoretically one could patch the source with the source used in the latest version: https://github.com/mozilla/mp4parse-rust/blob/b363e1362726450bac1a4f81ef0d7a12dc51a86e/mp4parse/src/lib.rs#L3486-L3580

seo.disparate commented on 2023-06-09 04:00 (UTC) (edited on 2023-06-09 04:00 (UTC) by seo.disparate)

@unphysicalix @figue

I'm running into the same compiler error trying to compile icecat (building in a chroot):

12:21.93    Compiling mp4parse v0.13.0 (https://github.com/mozilla/mp4parse-rust?rev=3bfc47d9a571d0842676043ba60716318e946c06#3bfc47d9)
12:22.20 error[E0277]: the trait bound `u64: Mul<NonZeroU8>` is not satisfied
12:22.20     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3188:62
12:22.20      |
12:22.20 3188 |                 static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
12:22.20      |                                                              ^ no implementation for `u64 * NonZeroU8`
12:22.20 ...
12:22.20 3198 | impl_mul!((U8, std::num::NonZeroU8) => (U16, u16));
12:22.20      | -------------------------------------------------- in this macro invocation
12:22.20      |
12:22.20      = help: the trait `~const Mul<NonZeroU8>` is not implemented for `u64`
12:22.20      = help: the following other types implement trait `Mul<Rhs>`:
12:22.20                <&'a u64 as Mul<u64>>
12:22.20                <&u64 as Mul<&u64>>
12:22.20                <u64 as Mul<&u64>>
12:22.20                <u64 as Mul>
12:22.20      = note: this error originates in the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.20 note: erroneous constant used
12:22.20     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3198:1
12:22.20      |
12:22.20 3198 | impl_mul!((U8, std::num::NonZeroU8) => (U16, u16));
12:22.20      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12:22.20      |
12:22.20      = note: this note originates in the macro `static_assertions::const_assert` which comes from the expansion of the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.21 error[E0277]: the trait bound `u64: Mul<NonZeroU8>` is not satisfied
12:22.21     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3188:62
12:22.21      |
12:22.21 3188 |                 static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
12:22.21      |                                                              ^ no implementation for `u64 * NonZeroU8`
12:22.21 ...
12:22.21 3199 | impl_mul!((U32, std::num::NonZeroU8) => (U32MulU8, u64));
12:22.21      | -------------------------------------------------------- in this macro invocation
12:22.21      |
12:22.21      = help: the trait `~const Mul<NonZeroU8>` is not implemented for `u64`
12:22.21      = help: the following other types implement trait `Mul<Rhs>`:
12:22.21                <&'a u64 as Mul<u64>>
12:22.21                <&u64 as Mul<&u64>>
12:22.21                <u64 as Mul<&u64>>
12:22.21                <u64 as Mul>
12:22.21      = note: this error originates in the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.21 note: erroneous constant used
12:22.21     --> /build/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3199:1
12:22.21      |
12:22.21 3199 | impl_mul!((U32, std::num::NonZeroU8) => (U32MulU8, u64));
12:22.21      | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12:22.21      |
12:22.21      = note: this note originates in the macro `static_assertions::const_assert` which comes from the expansion of the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
12:22.23 For more information about this error, try `rustc --explain E0277`.
12:22.24 error: could not compile `mp4parse` (lib) due to 2 previous errors

figue commented on 2023-06-08 18:04 (UTC)

@unphysicalix I've build it 3 days ago and it was fine. Did you clean local builddir before?

unphysicalix commented on 2023-06-08 17:23 (UTC) (edited on 2023-06-08 17:23 (UTC) by unphysicalix)

Hi. icecat 102.12.0-1 does not compile anymore, 102.11.x did. Here is the error message:

4:53.05    Compiling pulse v0.3.0 (https://github.com/mozilla/cubeb-pulse-rs?rev=df4dc0288b07b865440f4c7e41ca49ca9ccffc63#df4dc028)
 4:53.07 error[E0277]: the trait bound `u64: Mul<NonZeroU8>` is not satisfied
 4:53.07     --> /home/archie/data/yay-cache/icecat/src/gnuzilla-b2d463b0e331795eebe3ee62f2c58c1bd05b9899/output/icecat-102.12.0/third_party/rust/mp4parse/src/lib.rs:3188:62
 4:53.07      |
 4:53.07 3188 |                 static_assertions::const_assert!(<$lhs>::MAX * <$rhs>::MAX <= <$output>::MAX);
 4:53.07      |                                                              ^ no implementation for `u64 * NonZeroU8`
 4:53.07 ...
4:53.08 3198 | impl_mul!((U8, std::num::NonZeroU8) => (U16, u16));
 4:53.08      | -------------------------------------------------- in this macro invocation
 4:53.08      |
 4:53.08      = help: the trait `~const Mul<NonZeroU8>` is not implemented for `u64`
 4:53.08      = help: the following other types implement trait `Mul<Rhs>`:
 4:53.08                <&'a u64 as Mul<u64>>
 4:53.08                <&u64 as Mul<&u64>>
 4:53.08                <u64 as Mul<&u64>>
 4:53.08                <u64 as Mul>
 4:53.08      = note: this error originates in the macro `impl_mul` (in Nightly builds, run with -Z macro-backtrace for more info)
 4:53.08 note: erroneous constant used

...later with one more of above (in the same line of code)

 4:53.12 error: could not compile `mp4parse` (lib) due to 2 previous errors
 4:53.12 warning: build failed, waiting for other jobs to finish...

if this is only on my machine, please tell me.

figue commented on 2023-06-03 21:29 (UTC)

@AgentLoneStar007 it's weird because python-jsonschema is a makedepend. Can you try removing all build directory cache and try again?

AgentLoneStar007 commented on 2023-06-03 17:17 (UTC)

Getting this error upon attempting to install: ==> Extracting sources... -> Extracting gnuzilla-5a1894fc966840dc242110ec0459471c637a4675.tar.gz with bsdtar ==> Starting prepare()...

ERROR: This script requires Python 3 jsonschema: e.g.: 'jsonschema' from the Guix 'python-jsonschema' package 'jsonschema' from the Parabola 'python-jsonschema' package 'jsonschema' from the Trisquel 'python3-jsonschema' package ==> ERROR: A failure occurred in prepare(). Aborting... -> error making: icecat-exit status 4