Package Details: firedragon 1:11.21.0_1-1

Git Clone URL: https://aur.archlinux.org/firedragon.git (read-only, click to copy)
Package Base: firedragon
Description: Floorp fork build using custom branding and settings
Upstream URL: https://firedragon.garudalinux.org
Keywords: browser firedragon firefox floorp
Licenses: MPL2
Replaces: firedragon-next
Submitter: polyzen
Maintainer: dr460nf1r3 (FGD, garudalinux)
Last Packager: garudalinux
Votes: 23
Popularity: 0.32
First Submitted: 2021-04-22 10:57 (UTC)
Last Updated: 2024-11-24 16:56 (UTC)

Dependencies (52)

Sources (3)

Pinned Comments

dr460nf1r3 commented on 2024-04-17 16:23 (UTC) (edited on 2024-04-17 16:26 (UTC) by dr460nf1r3)

Everyone can now participate in the general package update process! The process is almost entirely automated, these are the necessary steps:

  1. Create an MR with your changes to the source repo (the firedragon folder contains the files of this repo)
  2. Wait for a maintainer to review and merge it
  3. Done! When merging, the PKGBUILD will automatically be deployed to AUR via the CI pipeline.

FGD commented on 2024-02-03 22:31 (UTC)

We are finally there! After being frozen on version 119 and investing quite some time improving the app, Firedragon now has an entirely new base!

Please see the Announcement post:

https://forum.garudalinux.org/t/new-firedragon-major-version-is-out/34585

Latest Comments

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

Neko-san commented on 2021-12-16 21:33 (UTC) (edited on 2021-12-16 21:35 (UTC) by Neko-san)

Seems the python-pip dependency must've been some fluke; Idk quite what caused it but the new PKGBUILD doesn't need it, so... :/

And the old PKGBUILDs used to actually need !lto but I left it enabled as a test last night and that wasn't necessary - though, I'd still leave it disabled in case it does ever become an issue again, since it was an issue for a long time before?

Either way, leaving it disabled to shouldn't be detrimental to the script because the script does the heavy lifting with that

dr460nf1r3 commented on 2021-12-16 08:53 (UTC)

Sounds good, I added both :)

Neko-san commented on 2021-12-16 08:25 (UTC) (edited on 2021-12-16 08:35 (UTC) by Neko-san)

Also... options+=(!lto) should be added to make sure that any global makepkg.conf override a random, unaware, user so that doesn't interfere with the build-script's handling of LTO/PGO

Unless the new PKGBUILD handles that?

prg commented on 2021-12-15 17:18 (UTC)

I can confirm that I'm able to build as of firedragon 95.0-2. Huzzah! \o/

Neko-san commented on 2021-12-15 09:40 (UTC) (edited on 2021-12-16 08:25 (UTC) by Neko-san)

@dr460nf1r3 Unfortunately, this was the case

In a chroot, it would fail if I didn't have it as a makedepend, with an error message about pip, but it actually built if I added it to both the PKGBUILD and the .SRCINFO

I originally found this out though when trying to build it locally with makepkg and it decided to look for all the python-packages on my system (from the repos and AUR) and wanted to "update" them, then it spewed out a wall of text about contacting URLs for that and whatnot - though, I will try again

dr460nf1r3 commented on 2021-12-15 08:07 (UTC) (edited on 2021-12-15 08:09 (UTC) by dr460nf1r3)

Hey guys, the build has finally been fixed! There were several showstoppers this time but I'm glad they are resolved now :) Also @Neko-san thanks for the ongoing suggestens, they are pretty helpful! A question concerning python-pip though, is this really required? If there are pip install attempts, it would be quite suboptimal actually <.<

Neko-san commented on 2021-12-12 10:02 (UTC) (edited on 2021-12-12 10:38 (UTC) by Neko-san)

python-pip is required as a makedepend for this package with this build; I verified it with a chroot (building it outside of the chroot almost flooded my system with wonderful pip install attempts... o_o)

But, as @prg said, there's an error:

6:27.34 In file included from Unified_cpp_dom_media_platforms0.cpp:65:
 6:27.34 /build/firedragon/src/firefox-95.0/dom/media/platforms/agnostic/DAV1DDecoder.cpp:40:12: error: no member named 'n_threads' in 'Dav1dSettings'
 6:27.34   settings.n_threads =
 6:27.34   ~~~~~~~~ ^
 6:27.34 1 error generated.
6:27.34 make[4]: *** [/build/firedragon/src/firefox-95.0/config/rules.mk:662: Unified_cpp_dom_media_platforms0.o] Error 1
 6:27.34 make[4]: *** Waiting for unfinished jobs....
 6:27.35 dom/media/webaudio/blink
 6:29.16 dom/media/webaudio
 6:32.37 make[3]: *** [/build/firedragon/src/firefox-95.0/config/recurse.mk:72: dom/media/platforms/target-objects] Error 2
 6:32.37 make[3]: *** Waiting for unfinished jobs....

prg commented on 2021-12-10 15:47 (UTC)

Looks like firedragon 95.0-1 is currently failing to build:

8:30.12    Compiling neqo_glue v0.1.0 (/home/user/.cache/yay/firedragon/src/firefox-95.0/netwerk/socket/neqo_glue)
 9:16.10 warning: In file included from src/gl.cc:2664:
 9:16.10 warning: In file included from /home/user/.cache/yay/firedragon/src/firefox-95.0/obj/x86_64-unknown-linux-gnu/release/build/swgl-b4692cee3be69717/out/load_shader.h:58:
 9:16.10 warning: /home/user/.cache/yay/firedragon/src/firefox-95.0/obj/x86_64-unknown-linux-g
nu/release/build/swgl-b4692cee3be69717/out/cs_clip_rectangle_FAST_PATH.h:697:7: warning: variable 'start_corner' set but not used [-Wunused-but-set-variable]
 9:16.10 warning:  bool start_corner = false;
 9:16.10 warning:       ^
 9:16.10 warning: /home/user/.cache/yay/firedragon/src/firefox-95.0/obj/x86_64-unknown-linux-gnu/release/build/swgl-b4692cee3be69717/out/cs_clip_rectangle_FAST_PATH.h:698:7: warning: variable 'end_corner' set but not used [-Wunused-but-set-variable]
 9:16.10 warning:  bool end_corner = false;
 9:16.10 warning:       ^
 9:16.10 warning: 2 warnings generated.
 9:24.39    Compiling geckoservo v0.0.1 (/home/user/.cache/yay/firedragon/src/firefox-95.0/servo/ports/geckolib)
 9:25.20    Compiling webrender_bindings v0.1.0 (/home/user/.cache/yay/firedragon/src/firefox-95.0/gfx/webrender_bindings)
 9:25.80    Compiling gkrust-shared v0.1.0 (/home/user/.cache/yay/firedragon/src/firefox-95.0/toolkit/library/rust/shared)
12:06.71    Compiling gkrust v0.1.0 (/home/user/.cache/yay/firedragon/src/firefox-95.0/toolkit/library/rust)
12:07.29     Finished release [optimized] target(s) in 11m 28s
12:07.45 make[2]: *** [/home/user/.cache/yay/firedragon/src/firefox-95.0/config/recurse.mk:34: compile] Error 2
12:07.45 make[1]: *** [/home/user/.cache/yay/firedragon/src/firefox-95.0/config/rules.mk:352: default] Error 2
12:07.45 make: *** [client.mk:63: build] Error 2
12:07.45 0 compiler warnings present.
12:07.48 Failed to parse ccache stats output: Summary:
==> ERROR: A failure occurred in build().
    Aborting...
 -> error making: firedragon

electricprism commented on 2021-12-02 06:13 (UTC)

WARNING: At least one completion condition is taking too long to complete. Conditions: [{"name":"MediaTrackGraph 7f5f46123000 shutdown","state":"(none)","filename":"/home/main/.cache/paru/clone/firedragon/src/firefox-94.0.2/dom/media/MediaTrackGraph.cpp","lineNumber":1809,"stack":"MediaTrackGraph shutdown"}] Barrier: xpcom-will-shutdown
JavaScript error: resource:///modules/sessionstore/SessionStore.jsm, line 5098: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIWindowMediator.getEnumerator]

Neko-san commented on 2021-11-30 02:02 (UTC) (edited on 2021-11-30 02:04 (UTC) by Neko-san)

Seems to be an unexpected LTO error going on:

13:41.29 toolkit/library/build/libxul.so
16:51.66 ld.lld: warning: Linking two modules of different target triples: '/build/firedragon/src/firefox-94.0.2/obj/x86_64-unknown-linux-gnu/release/libgkrust.a(gl.o at 367984618)' is 'x86_64-unknown-linux-gnu' whereas 'ld-temp.o' is 'x86_64-pc-linux-gnu'
16:53.51 ld.lld: warning: Linking two modules of different target triples: '/build/firedragon/src/firefox-94.0.2/obj/x86_64-unknown-linux-gnu/release/libgkrust.a(wrappers.o at 475807754)' is 'x86_64-unknown-linux-gnu' whereas 'ld-temp.o' is 'x86_64-pc-linux-gnu'
16:53.56 ld.lld: warning: Linking two modules of different target triples: '/build/firedragon/src/firefox-94.0.2/obj/x86_64-unknown-linux-gnu/release/libgkrust.a(mdb.o at 554103838)' is 'x86_64-unknown-linux-gnu' whereas 'ld-temp.o' is 'x86_64-pc-linux-gnu'
16:53.63 ld.lld: warning: Linking two modules of different target triples: '/build/firedragon/src/firefox-94.0.2/obj/x86_64-unknown-linux-gnu/release/libgkrust.a(midl.o at 554605362)' is 'x86_64-unknown-linux-gnu' whereas 'ld-temp.o' is 'x86_64-pc-linux-gnu'
17:18.71 fragment is larger than or outside of variable
17:26.56   call void @llvm.dbg.value(metadata i32 0, metadata !39456699, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32)), !dbg !39456700
17:26.59 !39456699 = !DILocalVariable(name: "s", scope: !39456694, file: !6030965, line: 1414, type: !3320370)
17:26.59 fragment is larger than or outside of variable
17:26.72   call void @llvm.dbg.value(metadata %class.nsISupports* ()* null, metadata !39456699, metadata !DIExpression(DW_OP_LLVM_fragment, 64, 64)), !dbg !39456700
17:26.72 !39456699 = !DILocalVariable(name: "s", scope: !39456694, file: !6030965, line: 1414, type: !3320370)
17:26.72 fragment is larger than or outside of variable
17:26.85   call void @llvm.dbg.value(metadata i32 %0, metadata !39456699, metadata !DIExpression(DW_OP_LLVM_fragment, 0, 32)), !dbg !39456700
17:26.85 !39456699 = !DILocalVariable(name: "s", scope: !39456694, file: !6030965, line: 1414, type: !3320370)
17:28.74 LLVM ERROR: Broken module found, compilation aborted!
17:28.77 PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
17:28.77 Stack dump:
17:28.77 0.     Program arguments: /usr/bin/ld.lld --eh-frame-hdr -m elf_x86_64 -shared -o libxul.so /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib64/crti.o /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/crtbeginS.o -L/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0 -L/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/bin/../lib -L/lib -L/usr/lib -plugin-opt=mcpu=znver2 -plugin-opt=O3 -plugin-opt=-function-sections -plugin-opt=-data-sections -z defs -h libxul.so /build/firedragon/src/firefox-94.0.2/obj/toolkit/library/build/libxul_so.list -lpthread -O3 --sort-common --as-needed -z relro -z now -z noexecstack -z text -z relro -z nocopyreloc -Bsymbolic-functions --build-id=sha1 -rpath-link /build/firedragon/src/firefox-94.0.2/obj/dist/bin -rpath-link /usr/lib ../../../js/src/build/libjs_static.a /build/firedragon/src/firefox-94.0.2/obj/x86_64-unknown-linux-gnu/release/libgkrust.a ../../../security/sandbox/linux/libmozsandbox.so ../../../config/external/lgpllibs/liblgpllibs.so ../../../config/external/sqlite/libmozsqlite3.so ../../../widget/gtk/mozgtk/libmozgtk.so ../../../widget/gtk/mozwayland/libmozwayland.so --version-script symverscript -ldl -licui18n -licuuc -licudata -laom -ldav1d -lrt -lm -lX11 -lX11-xcb -lxcb -lXcomposite -lXcursor -lXdamage -lXext -lXfixes -lXi -lXrender -lpthread -ldl -lc -lffi -lplds4 -lplc4 -lnspr4 -lz -lssl3 -lsmime3 -lnss3 -lnssutil3 -lfreetype -lfontconfig -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lgraphite2 -lwebpdemux -lwebp -levent -lvpx -lpixman-1 -ldbus-glib-1 -ldbus-1 -lxcb-shm -lXrandr -u__llvm_profile_runtime /usr/lib/clang/13.0.0/lib/linux/libclang_rt.profile-x86_64.a -lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/crtendS.o /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/11.1.0/../../../../lib64/crtn.o
17:30.11  #0 0x00007f460a01fc93 (/usr/bin/../lib/libLLVM-13.so+0xba2c93)
17:30.11  #1 0x00007f460a01d4a6 (/usr/bin/../lib/libLLVM-13.so+0xba04a6)
17:30.11  #2 0x00007f460946f870 __restore_rt sigaction.c:0:0
17:30.11  #3 0x00007f46090b6d22 raise (/usr/bin/../lib/libc.so.6+0x3cd22)
17:30.11  #4 0x00007f46090a0862 abort (/usr/bin/../lib/libc.so.6+0x26862)
17:30.11  #5 0x00007f4609f390d4 llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/bin/../lib/libLLVM-13.so+0xabc0d4)
17:30.11  #6 0x00007f4609f39268 (/usr/bin/../lib/libLLVM-13.so+0xabc268)
17:30.11  #7 0x00007f460a1ff68c (/usr/bin/../lib/libLLVM-13.so+0xd8268c)
17:30.11  #8 0x00007f460b999b52 (/usr/bin/../lib/libLLVM-13.so+0x251cb52)
17:30.11  #9 0x00007f460b99ca96 llvm::lto::opt(llvm::lto::Config const&, llvm::TargetMachine*, unsigned int, llvm::Module&, bool, llvm::ModuleSummaryIndex*, llvm::ModuleSummaryIndex const*, std::vector<unsigned char, std::allocator<unsigned char> > const&) (/usr/bin/../lib/libLLVM-13.so+0x251fa96)
17:30.11 #10 0x00007f460b99dc92 llvm::lto::backend(llvm::lto::Config const&, std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) (/usr/bin/../lib/libLLVM-13.so+0x2520c92)
17:30.11 #11 0x00007f460b9925a2 llvm::lto::LTO::runRegularLTO(std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>) (/usr/bin/../lib/libLLVM-13.so+0x25155a2)
17:30.11 #12 0x00007f460b992ace llvm::lto::LTO::run(std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, std::function<std::function<std::unique_ptr<llvm::lto::NativeObjectStream, std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)> (unsigned int, llvm::StringRef)>) (/usr/bin/../lib/libLLVM-13.so+0x2515ace)
17:30.11 #13 0x000056014deb134b lld::elf::BitcodeCompiler::compile() (/usr/bin/ld.lld+0x28e34b)
17:30.11 #14 0x000056014de10447 void lld::elf::LinkerDriver::compileBitcodeFiles<llvm::object::ELFType<(llvm::support::endianness)1, true> >() (/usr/bin/ld.lld+0x1ed447)
17:30.11 #15 0x000056014de25180 void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::opt::InputArgList&) (/usr/bin/ld.lld+0x202180)
17:30.11 #16 0x000056014de2c0e2 lld::elf::LinkerDriver::linkerMain(llvm::ArrayRef<char const*>) (/usr/bin/ld.lld+0x2090e2)
17:30.11 #17 0x000056014de2c478 lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&, llvm::raw_ostream&) (/usr/bin/ld.lld+0x209478)
17:30.11 #18 0x000056014dd1c186 (/usr/bin/ld.lld+0xf9186)
17:30.11 #19 0x000056014dd17e66 main (/usr/bin/ld.lld+0xf4e66)
17:30.11 #20 0x00007f46090a1b25 __libc_start_main (/usr/bin/../lib/libc.so.6+0x27b25)
17:30.11 #21 0x000056014dd1af7e _start (/usr/bin/ld.lld+0xf7f7e)
17:31.38 clang-13: error: unable to execute command: Aborted (core dumped)
17:31.40 clang-13: error: linker command failed due to signal (use -v to see invocation)
17:31.55 make[4]: *** [/build/firedragon/src/firefox-94.0.2/config/rules.mk:545: libxul.so] Error 254
17:31.70 make[3]: *** [/build/firedragon/src/firefox-94.0.2/config/recurse.mk:72: toolkit/library/build/target] Error 2
17:31.70 make[2]: *** [/build/firedragon/src/firefox-94.0.2/config/recurse.mk:34: compile] Error 2
17:31.72 make[1]: *** [/build/firedragon/src/firefox-94.0.2/config/rules.mk:358: default] Error 2
17:31.86 make: *** [client.mk:54: build] Error 2
17:31.88 136 compiler warnings present.
17:34.03 Failed to parse ccache stats output: Summary:
 Config object not found by mach.
Configure complete!
Be sure to run |mach build| to pick up any changes
==> ERROR: A failure occurred in build().
    Aborting...

Prior to the new PKGBUILD and others' recent comments, I had it building fine; here's mine with a few minor edits (that shouldn't affect this issue):

# Maintainer: dr460nf1r3 <dr460nf1r3 at garudalinux dot org>
# Contributor: torvic9 AT mailbox DOT org
# Contributor: lsf

pkgname=firedragon
_pkgname=FireDragon
pkgver=94.0.2
pkgrel=3
pkgdesc="Librewolf fork build using custom branding, settings & KDE patches by OpenSUSE"
arch=(x86_64 x86_64_v3 aarch64)
backup=('usr/lib/firedragon/firedragon.cfg'
        'usr/lib/firedragon/distribution/policies.json')
license=(MPL GPL LGPL)
url="https://gitlab.com/dr460nf1r3/settings/"
depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss nspr ttf-font libpulse
        libwebp libvpx libjpeg zlib icu libevent pipewire aom harfbuzz
        graphite dav1d kfiredragonhelper)
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb
             rust ccache autoconf2.13 clang llvm jack nodejs cbindgen nasm
             python-setuptools python-psutil python-zstandard git binutils lld dump_syms)
optdepends=('firejail-git: Sandboxing the browser using the included profiles'
            'profile-sync-daemon: Load the browser profile into RAM'
            'whoogle: Searching the web using a locally running Whoogle instance'
            'searx: Searching the web using a locally running searX instance'
            'networkmanager: Location detection via available WiFi networks'
            'libnotify: Notification integration'
            'pulseaudio: Audio support'
            'speech-dispatcher: Text-to-Speech'
            'hunspell-en_US: Spell checking, American English'
            'libappindicator-gtk3: Global menu support for GTK apps'
            'appmenu-gtk-module-git: Appmenu for GTK only'
            'plasma5-applets-window-appmenu: Appmenu for Plasma only')
options=(!emptydirs !makeflags !strip !lto)
conflicts=('firedragon-hg')
install=$pkgname.install
source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
        $pkgname.desktop
        "git+https://gitlab.com/dr460nf1r3/common.git"
        "git+https://gitlab.com/dr460nf1r3/settings.git")

sha256sums=('899ba1c806549034793d7e8ca53f4c845d783c810338f314f3d653d39649e575'
            '158152bdb9ef6a83bad62ae03a3d9bc8ae693b34926e53cc8c4de07df20ab22d'
            'SKIP'
            'SKIP')

prepare() {
  if [[ ! -d mozbuild ]];then
      mkdir mozbuild
  fi
  cd firefox-$pkgver

  local _patches_dir="${srcdir}/common/patches"

  sed -i 's/\"BrowserApplication\"\, \"firefox\"/\"BrowserApplication\"\, \"firedragon\"/g' ${_patches_dir}/kde/firefox-kde.patch
  sed -i 's/kmozillahelper/kfiredragonhelper/g' ${_patches_dir}/kde/mozilla-kde.patch

  # Arch patches
  echo "---- Arch patches"
  patch -Np1 -i ${_patches_dir}/arch/0001-Use-remoting-name-for-GDK-application-names.patch

  # KDE patches (W. Rosenauer)
  echo "---- Patching for KDE"
  patch -Np1 -i ${_patches_dir}/kde/mozilla-nongnome-proxies.patch
  patch -Np1 -i ${_patches_dir}/kde/mozilla-kde.patch
  #patch -Np1 -i ${_patches_dir}/kde/firefox-kde.patch Currently broken with PGO

  # Ubuntu patches
  echo "---- Misc patches"
  patch -Np1 -i ${_patches_dir}/misc/fix-hidden-buttons-with-csd-menubar.patch

  # Rust
  patch -Np1 -i ${_patches_dir}/misc/reduce-rust-debuginfo.patch

  # Gentoo patches
  echo "---- Gentoo patches"
  patch -Np1 -i ${_patches_dir}/gentoo/0021-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
  patch -Np1 -i ${_patches_dir}/gentoo/0029-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch

  # Use more system libs
  echo "---- Patching for system libs"
  patch -Np1 -i ${_patches_dir}/gentoo/0004-bmo-847568-Support-system-harfbuzz.patch
  patch -Np1 -i ${_patches_dir}/gentoo/0005-bmo-847568-Support-system-graphite2.patch
  patch -Np1 -i ${_patches_dir}/gentoo/0006-bmo-1559213-Support-system-av1.patch

  # Remove some pre-installed addons that might be questionable
  echo "---- Librewolf patches"
  patch -Np1 -i ${_patches_dir}/librewolf/remove_addons.patch

  # Disable (some) megabar functionality
  # Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations
  patch -Np1 -i ${_patches_dir}/librewolf/megabar.patch

  # Debian patch to enable global menubar
  patch -Np1 -i ${_patches_dir}/librewolf/unity-menubar.patch

  # Custom link in about dialogue
  patch -Np1 -i ${_patches_dir}/librewolf/about-dialog.patch

  # Disabling Pocket
  patch -Np1 -i ${_patches_dir}/sed-patches/disable-pocket.patch

  # Remove Mozilla VPN ads
  patch -Np1 -i ${_patches_dir}/librewolf/mozilla-vpn-ad.patch

  # Allow overriding the color scheme light/dark preference with RFP
  patch -Np1 -i ${_patches_dir}/librewolf/allow_dark_preference_with_rfp.patch  

  # Remove Internal Plugin Certificates
  # => breaks profiled builds since 90.0, it seems
  # patch -Np1 -i ${_patches_dir}/sed-patches/remove-internal-plugin-certs.patch

  # Allow SearchEngines option in non-ESR builds
  patch -Np1 -i ${_patches_dir}/sed-patches/allow-searchengines-non-esr.patch

  # Stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
  patch -Np1 -i ${_patches_dir}/sed-patches/stop-undesired-requests.patch

  echo "---- Librewolf patches - UI"
  # Show a warning saying that changing language is not allowed through the UI,
  # and that it requires to visit our FAQ, instead of telling the user to check his connection.
  patch -Np1 -i ${_patches_dir}/librewolf-ui/add-language-warning.patch

  # Remove references to Firefox from the settings UI, change text in some of the links,
  # explain that we force en-US and suggest enabling history near the session restore checkbox.
  patch -Np1 -i ${_patches_dir}/librewolf-ui/pref-naming.patch

  # Remove Firefox references in the urlbar, when suggesting opened tabs.
  patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-branding-urlbar.patch

  # Remove cfr UI elements, as they are disabled and locked already.
  patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-cfrprefs.patch

  # Do not display your browser is being managed by your organization in the settings.
  patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-organization-policy-banner.patch

  # Hide "snippets" section from the home page settings, as it was already locked.
  patch -Np1 -i ${_patches_dir}/librewolf-ui/remove-snippets-from-home.patch

  # Add warning that sanitizing exceptions are bypassed by the options in History > Clear History when LibreWolf closes > Settings
  patch -Np1 -i ${_patches_dir}/librewolf-ui/sanitizing-description.patch

  echo "---- Fixing build with Wayland"
  # Needed patch to have build working
  patch -Np1 -i ${_patches_dir}/misc/fix-wayland.patch

  cat >../mozconfig <<END
ac_add_options --enable-application=browser
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj

ac_add_options --prefix=/usr
ac_add_options --enable-linker=lld
ac_add_options --enable-release
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
ac_add_options --with-ccache
export AR=llvm-ar
export CC='clang'
export CXX='clang++'
export MOZ_APP_REMOTINGNAME=$_pkgname
export MOZ_REQUIRE_SIGNING=
export NM=llvm-nm
export OBJCOPY='/usr/bin/llvm-objcopy'
export RANLIB=llvm-ranlib
export STRIP=llvm-strip

# Branding
ac_add_options --enable-update-channel=release
ac_add_options --with-app-name=${pkgname}
ac_add_options --with-app-basename='${_pkgname}'
ac_add_options --with-branding=browser/branding/firedragon
ac_add_options --with-distribution-id=org.garudalinux
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload

# System libraries
ac_add_options --disable-libproxy
ac_add_options --enable-system-pixman
ac_add_options --with-system-av1
ac_add_options --with-system-ffi
ac_add_options --with-system-graphite2
ac_add_options --with-system-harfbuzz
ac_add_options --with-system-icu
ac_add_options --with-system-jpeg
ac_add_options --with-system-libevent
ac_add_options --with-system-libvpx
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-webp
ac_add_options --with-system-zlib

# Features
ac_add_options --disable-crashreporter
#ac_add_options --disable-debug
#ac_add_options --disable-debug-js-modules
#ac_add_options --disable-debug-symbols
ac_add_options --disable-gpsd
#ac_add_options --disable-ipdl-tests
#ac_add_options --disable-necko-wifi
#ac_add_options --disable-rust-tests
#ac_add_options --disable-synth-speechd
ac_add_options --disable-tests
#ac_add_options --disable-trace-logging
ac_add_options --disable-updater
#ac_add_options --disable-warnings-as-errors
#ac_add_options --disable-webspeech
#ac_add_options --disable-webspeechtestbackend
ac_add_options --enable-alsa
ac_add_options --enable-jack
ac_add_options --enable-pulseaudio
ac_add_options --enable-strip

# Disables crash reporting, telemetry and other data gathering tools
mk_add_options MOZ_CRASHREPORTER=0
mk_add_options MOZ_DATA_REPORTING=0
mk_add_options MOZ_SERVICES_HEALTHREPORT=0
mk_add_options MOZ_TELEMETRY_REPORTING=0

# options for ci / weaker build systems
mk_add_options MOZ_MAKE_FLAGS="-j$(nproc)"
# ac_add_options --enable-linker=gold
END

if [[ $CARCH == 'aarch64' ]]; then
  cat >>../mozconfig <<END
# taken from manjaro build:
ac_add_options --enable-optimize="-g0 -O3"
# from ALARM
# ac_add_options --disable-webrtc

END

  export MOZ_DEBUG_FLAGS=" "
  export CFLAGS+=" -g0"
  export CXXFLAGS+=" -g0"
  export RUSTFLAGS+="-C debuginfo=0 -C opt-level=3 -C target-cpu=native"

  # we should have more than enough RAM on the CI spot instances.
  # ...or maybe not?
  export LDFLAGS+=" -Wl,--no-keep-memory"
  patch -Np1 -i ${_patches_dir}/librewolf/arm.patch
  patch -Np1 -i ${_patches_dir}/arch/build-arm-libopus.patch

else

  cat >>../mozconfig <<END
# probably not needed, enabled by default?
ac_add_options --enable-optimize
END
fi

  rm -f ${srcdir}/common/source_files/mozconfig
  cp -r ${srcdir}/common/source_files/* ./
}


build() {
  cd firefox-$pkgver

  export MOZ_NOSPAM=1
  export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
  export MOZ_ENABLE_FULL_SYMBOLS=1
  export MACH_USE_SYSTEM_PYTHON=1

  # LTO needs more open files
  ulimit -n 4096

  # -fno-plt with cross-LTO causes obscure LLVM errors
  # LLVM ERROR: Function Import: link error
  CFLAGS="${CFLAGS/-fno-plt/}"
  CXXFLAGS="${CXXFLAGS/-fno-plt/}"

  # Do 3-tier PGO
  echo "Building instrumented browser..."

if [[ $CARCH == 'aarch64' ]]; then

  cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-generate
END

else

  cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-profile-generate=cross
END

fi

  ./mach build

  echo "Profiling instrumented browser..."
  ./mach package
  LLVM_PROFDATA=llvm-profdata \
    JARLOG_FILE="$PWD/jarlog" \
    xvfb-run -s "-screen 0 1920x1080x24 -nolisten local" \
    ./mach python build/pgo/profileserver.py

  stat -c "Profile data found (%s bytes)" merged.profdata
  test -s merged.profdata

  stat -c "Jar log found (%s bytes)" jarlog
  test -s jarlog

  echo "Removing instrumented browser..."
  ./mach clobber

  echo "Building optimized browser..."

if [[ $CARCH == 'aarch64' ]]; then

  cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-lto
ac_add_options --enable-profile-use
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
ac_add_options --enable-linker=lld
END

else

  cat >.mozconfig ../mozconfig - <<END
ac_add_options --enable-lto=cross
ac_add_options --enable-profile-use=cross
ac_add_options --with-pgo-profile-path=${PWD@Q}/merged.profdata
ac_add_options --with-pgo-jarlog=${PWD@Q}/jarlog
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
ac_add_options --disable-bootstrap
END

fi

  ./mach build

  echo "Building symbol archive..."
  ./mach buildsymbols
}

package() {
  cd firefox-$pkgver
  DESTDIR="$pkgdir" ./mach install

  install -Dvm644 "$srcdir/settings/$pkgname.psd" "$pkgdir/usr/share/psd/browsers/$pkgname"

  local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"

  install -Dvm644 /dev/stdin "$vendorjs" <<END
// Use system-provided dictionaries
pref("spellchecker.dictionary_path", "/usr/share/hunspell");

// Don't disable extensions in the application directory
// done in librewolf.cfg
// pref("extensions.autoDisableScopes", 11);
END

  # cd ${srcdir}/settings
  # git checkout ${_settings_commit}
  cd ${srcdir}/firefox-$pkgver
  cp -r ${srcdir}/settings/* ${pkgdir}/usr/lib/${pkgname}/

  local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
  install -Dvm644 /dev/stdin "$distini" <<END
[Global]
id=garudalinux
version=${pkgver}
about=${_pkgname} for Arch Linux

[Preferences]
app.distributor=garudalinux
app.distributor.channel=${pkgname}
app.partner.garudalinux=garudalinux
END

  for i in 16 32 48 64 128; do
    install -Dvm644 browser/branding/${pkgname}/default$i.png \
      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
  done
  install -Dvm644 browser/branding/${pkgname}/content/about-logo.png \
    "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png"

  # Arch upstream provides a separate svg for this. we don't have that, so let's re-use 16.png
  install -Dvm644 browser/branding/${pkgname}/default16.png \
    "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.png"

  install -Dvm644 ../$pkgname.desktop \
    "$pkgdir/usr/share/applications/$pkgname.desktop"

  # Install a wrapper to avoid confusion about binary path
  install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
#!/bin/sh
exec /usr/lib/$pkgname/$pkgname "\$@"
END

  # Replace duplicate binary with wrapper
  # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
  ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/$pkgname-bin"
  # Use system certificates
  local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so"
  if [[ -e $nssckbi ]]; then
    ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
  fi

  # Delete unneeded things from settings repo
  rm "$pkgdir/usr/lib/firedragon/LICENSE.txt"
  rm "$pkgdir/usr/lib/firedragon/about.png"
  rm "$pkgdir/usr/lib/firedragon/firedragon.psd"
  rm "$pkgdir/usr/lib/firedragon/home.png"
  rm "$pkgdir/usr/lib/firedragon/tabliss.json"
}