File ff-dev-edition.spec of Package ff-dev-edition
#
# spec file for package ff-dev-edition
#
# Copyright (c) 2025 itachi_re
#
Name: ff-dev-edition
Release: 0
License: MPL-2.0
Summary: Mozilla Firefox Web Browser (Developer Edition)
URL: https://www.firefox.com/en-US/channel/desktop/developer
Group: Productivity/Networking/Web/Browsers
Version: 146.0b5
Source1: ff-dev-edition.desktop
# Please create your own keys should you need them :)
Source2: google-geolocation-api-key
Source3: google-safe-browsing-api-key
Source0: https://ftp.mozilla.org/pub/devedition/releases/%{version}/source/firefox-%{version}.source.tar.xz
Source20: https://ftp.mozilla.org/pub/devedition/releases/%{version}/source/firefox-%{version}.source.tar.xz.asc
Source21: https://ftp.mozilla.org/pub/devedition/releases/%{version}/KEY#/mozilla.keyring
Source99: https://archive.archlinux.org/packages/c/cbindgen/cbindgen-0.29.2-1-x86_64.pkg.tar.zst
#Source9: cbindgen
# MANUAL BINARY INJECTION (Upload the executable file 'cbindgen' to your sources)
%define major_version %{lua: print((string.gsub(rpm.expand("%{version}"), "b%d+$", "")))}
BuildRequires: alsa-devel
BuildRequires: clang-devel
BuildRequires: cargo
BuildRequires: curl
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: libXt-devel
BuildRequires: libproxy-devel
BuildRequires: nasm
BuildRequires: nodejs >= 12.22.12
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(libpulse)
BuildRequires: python3
BuildRequires: python3-curses
BuildRequires: python3-devel
BuildRequires: rust
# We provide our own cbindgen binary via Source99
# BuildRequires: rust-cbindgen
BuildRequires: sccache
BuildRequires: unzip
BuildRequires: zstd
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils
%description
Firefox Developer Edition provides early access to the latest web development
features and tools.
%define progdir %{_prefix}/%_lib/ff-dev-edition
%prep
%autosetup -p1 -n firefox-%{major_version}
# FIX WM CLASS (Keep this!)
sed -i '/MOZ_APP_REMOTINGNAME=firefox-dev/d' browser/branding/aurora/configure.sh
%build
# --- AUTOMATED CBINDGEN SETUP ---
# 1. Extract the Arch Linux package (it contains usr/bin/cbindgen)
tar --use-compress-program=unzstd -xf %{SOURCE99}
# 2. Move binary to current folder and make executable
cp usr/bin/cbindgen .
chmod +x ./cbindgen
# 3. Add to PATH
export PATH=$PWD:$PATH
echo "Using bootstrapped cbindgen version:"
./cbindgen --version
# -----------------------------
# Recursion Fix: Filter flags safely using shell
cat << EOF > .obsenv.sh
export CFLAGS=\$(echo "%{optflags}" | sed -e 's/-flto=auto//')
export CXXFLAGS="\$CFLAGS"
export LDFLAGS="\$LDFLAGS -fPIC -Wl,-z,relro,-z,now"
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
export MOZCONFIG=$RPM_BUILD_DIR/mozconfig
export MOZILLA_OFFICIAL=1
export MOZ_TELEMETRY_REPORTING=1
EOF
source ./.obsenv.sh
cat << EOF > $MOZCONFIG
export MOZ_APP_REMOTINGNAME=ff-dev-edition
mk_add_options BUILD_OFFICIAL=1
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options MOZ_DEV_EDITION=1
mk_add_options MOZ_MAKE_FLAGS=%{?_smp_mflags}
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj
. \$topsrcdir/browser/config/mozconfig
ac_add_options --disable-bootstrap
ac_add_options --prefix=%{_prefix}
ac_add_options --libdir=%{_libdir}
ac_add_options --includedir=%{_includedir}
ac_add_options --allow-addon-sideload
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
ac_add_options --disable-updater
ac_add_options --disable-tests
ac_add_options --enable-alsa
ac_add_options --enable-crashreporter
ac_add_options --enable-default-toolkit=cairo-gtk3-wayland
ac_add_options --enable-install-strip
ac_add_options --enable-libproxy
ac_add_options --enable-lto
ac_add_options --enable-optimize
ac_add_options --enable-release
ac_add_options --enable-rust-simd
ac_add_options --enable-update-channel=aurora
ac_add_options --with-branding=browser/branding/aurora
ac_add_options --with-ccache=sccache
ac_add_options --with-google-location-service-api-keyfile=%{SOURCE2}
ac_add_options --with-google-safebrowsing-api-keyfile=%{SOURCE3}
ac_add_options --with-system-zlib
ac_add_options --with-unsigned-addon-scopes=app
ac_add_options --without-wasm-sandboxed-libraries
EOF
sccache -s
./mach build
sccache -s
%install
source ./.obsenv.sh
install -Dm 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/ff-dev-edition.desktop
DESTDIR="%{buildroot}" ./mach install
mv %{buildroot}%{_prefix}/%_lib/firefox %{buildroot}%{progdir}
find %{buildroot}%{progdir} \
-name "*.js" -o \
-name "*.jsm" -o \
-name "*.rdf" -o \
-name "*.properties" -o \
-name "*.dtd" -o \
-name "*.txt" -o \
-name "*.xml" -o \
-name "*.css" \
-exec chmod a-x {} +
find %{buildroot}%{progdir} -type f -name ".mkdir.done" -delete
rm %{buildroot}%{_bindir}/firefox
ln -sf ../%{_lib}/ff-dev-edition/firefox-bin %{buildroot}%{_bindir}/firefox-aurora
for size in 16 32 48 64 128; do
mkdir -p %{buildroot}%{_prefix}/share/icons/hicolor/${size}x${size}/apps
cp %{buildroot}%{progdir}/browser/chrome/icons/default/default$size.png \
%{buildroot}%{_prefix}/share/icons/hicolor/${size}x${size}/apps/ff-dev-edition.png
done
rm -f %{buildroot}%{progdir}/updater.ini
rm -f %{buildroot}%{progdir}/removed-files
rm -f %{buildroot}%{progdir}/README.txt
rm -f %{buildroot}%{progdir}/old-homepage-default.properties
rm -f %{buildroot}%{progdir}/run-mozilla.sh
rm -f %{buildroot}%{progdir}/LICENSE
rm -f %{buildroot}%{progdir}/precomplete
rm -f %{buildroot}%{progdir}/update-settings.ini
%fdupes %{buildroot}%{progdir}
%fdupes %{buildroot}%{_datadir}
%post
%desktop_database_post
%icon_theme_cache_post
exit 0
%postun
%icon_theme_cache_postun
%desktop_database_postun
exit 0
%files
%defattr(-,root,root)
%dir %{progdir}
%dir %{progdir}/browser/
%dir %{progdir}/browser/chrome/
%{progdir}/browser/chrome/icons
%{progdir}/browser/omni.ja
%{progdir}/defaults/
%{progdir}/gmp-clearkey/
%{progdir}/firefox
%{progdir}/firefox-bin
%{progdir}/application.ini
%{progdir}/dependentlibs.list
%{progdir}/*.so
%{progdir}/glxtest
%{progdir}/vaapitest
%{progdir}/omni.ja
%{progdir}/fonts/
%{progdir}/pingsender
%{progdir}/platform.ini
%{progdir}/crashhelper
%{progdir}/crashreporter
%{_datadir}/applications/ff-dev-edition.desktop
%{_prefix}/share/icons/hicolor/
%{_bindir}/firefox-aurora
%changelog