Merge pull request #256292 from K900/firefox-bin-cleanup

firefox-bin: cleanup, use autoPatchelfHook
This commit is contained in:
K900 2023-09-25 18:29:19 +03:00 committed by GitHub
commit 3f97b1d307
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 138 deletions

View File

@ -1,44 +1,13 @@
{ lib, stdenv, fetchurl, config, wrapGAppsHook
{ lib, stdenv, fetchurl, config, wrapGAppsHook, autoPatchelfHook
, alsa-lib
, atk
, cairo
, curl
, cups
, dbus-glib
, dbus
, fontconfig
, freetype
, gdk-pixbuf
, glib
, glibc
, gtk3
, libkrb5
, libX11
, libXScrnSaver
, libxcb
, libXcomposite
, libXcursor
, libXdamage
, libXext
, libXfixes
, libXi
, libXinerama
, libXrender
, libXrandr
, libXt
, libXtst
, libcanberra
, libnotify
, adwaita-icon-theme
, libGLU, libGL
, nspr
, nss
, pango
, pipewire
, libva
, pciutils
, heimdal
, libpulseaudio
, systemd
, pipewire
, adwaita-icon-theme
, channel
, generated
, writeScript
@ -48,9 +17,7 @@
, gnused
, gnugrep
, gnupg
, ffmpeg
, runtimeShell
, mesa # firefox wants gbm for drm+dmabuf
, systemLocale ? config.i18n.defaultLocale or "en_US"
}:
@ -58,6 +25,8 @@ let
inherit (generated) version sources;
binaryName = if channel == "release" then "firefox" else "firefox-${channel}";
mozillaPlatforms = {
i686-linux = "linux-i686";
x86_64-linux = "linux-x86_64";
@ -95,115 +64,54 @@ stdenv.mkDerivation {
src = fetchurl { inherit (source) url sha256; };
libPath = lib.makeLibraryPath
[ stdenv.cc.cc
alsa-lib
atk
cairo
curl
cups
dbus-glib
dbus
fontconfig
freetype
gdk-pixbuf
glib
glibc
gtk3
libkrb5
mesa
libX11
libXScrnSaver
libXcomposite
libXcursor
libxcb
libXdamage
libXext
libXfixes
libXi
libXinerama
libXrender
libXrandr
libXt
libXtst
libcanberra
libnotify
libGLU libGL
nspr
nss
pango
pipewire
pciutils
heimdal
libpulseaudio
systemd
ffmpeg
] + ":" + lib.makeSearchPathOutput "lib" "lib64" [
stdenv.cc.cc
];
inherit gtk3;
nativeBuildInputs = [ wrapGAppsHook ];
buildInputs = [ gtk3 adwaita-icon-theme ];
# "strip" after "patchelf" may break binaries.
# See: https://github.com/NixOS/patchelf/issues/10
dontStrip = true;
dontPatchELF = true;
postPatch = ''
# Don't download updates from Mozilla directly
echo 'pref("app.update.auto", "false");' >> defaults/pref/channel-prefs.js
'';
nativeBuildInputs = [ wrapGAppsHook autoPatchelfHook ];
buildInputs = [
gtk3
adwaita-icon-theme
alsa-lib
dbus-glib
libXtst
];
runtimeDependencies = [
curl
libva.out
pciutils
];
appendRunpaths = [
"${pipewire.lib}/lib"
];
installPhase =
''
mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
cp -r * "$prefix/usr/lib/firefox-bin-${version}"
mkdir -p "$prefix/lib/firefox-bin-${version}"
cp -r * "$prefix/lib/firefox-bin-${version}"
mkdir -p "$out/bin"
ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
for executable in \
firefox firefox-bin plugin-container \
updater crashreporter webapprt-stub \
glxtest vaapitest
do
if [ -e "$out/usr/lib/firefox-bin-${version}/$executable" ]; then
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
"$out/usr/lib/firefox-bin-${version}/$executable"
fi
done
find . -executable -type f -exec \
patchelf --set-rpath "$libPath" \
"$out/usr/lib/firefox-bin-${version}/{}" \;
# wrapFirefox expects "$out/lib" instead of "$out/usr/lib"
ln -s "$out/usr/lib" "$out/lib"
gappsWrapperArgs+=(--argv0 "$out/bin/.firefox-wrapped")
ln -s "$prefix/lib/firefox-bin-${version}/firefox" "$out/bin/${binaryName}"
# See: https://github.com/mozilla/policy-templates/blob/master/README.md
mkdir -p "$out/lib/firefox-bin-${version}/distribution";
ln -s ${policiesJson} "$out/lib/firefox-bin-${version}/distribution/policies.json";
'';
passthru.binaryName = "firefox";
passthru.libName = "firefox-bin-${version}";
passthru.execdir = "/bin";
passthru.ffmpegSupport = true;
passthru.gssSupport = true;
# update with:
# $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped
passthru.updateScript = import ./update.nix {
inherit pname channel lib writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell;
baseUrl =
if channel == "devedition"
then "https://archive.mozilla.org/pub/devedition/releases/"
else "https://archive.mozilla.org/pub/firefox/releases/";
passthru = {
inherit binaryName;
libName = "firefox-bin-${version}";
ffmpegSupport = true;
gssSupport = true;
gtk3 = gtk3;
# update with:
# $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped
updateScript = import ./update.nix {
inherit pname channel lib writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell;
baseUrl =
if channel == "devedition"
then "https://archive.mozilla.org/pub/devedition/releases/"
else "https://archive.mozilla.org/pub/firefox/releases/";
};
};
meta = with lib; {
changelog = "https://www.mozilla.org/en-US/firefox/${version}/releasenotes/";
description = "Mozilla Firefox, free web browser (binary package)";
@ -213,5 +121,6 @@ stdenv.mkDerivation {
platforms = builtins.attrNames mozillaPlatforms;
hydraPlatforms = [];
maintainers = with maintainers; [ taku0 lovesegfault ];
mainProgram = binaryName;
};
}

View File

@ -32121,20 +32121,18 @@ with pkgs;
firefox-beta-bin = res.wrapFirefox firefox-beta-bin-unwrapped {
pname = "firefox-beta-bin";
desktopName = "Firefox Beta";
wmClass = "firefox-beta";
};
firefox-devedition-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin {
inherit (gnome) adwaita-icon-theme;
channel = "devedition";
channel = "developer-edition";
generated = import ../applications/networking/browsers/firefox-bin/devedition_sources.nix;
};
firefox-devedition-bin = res.wrapFirefox firefox-devedition-bin-unwrapped {
nameSuffix = "-devedition";
pname = "firefox-devedition-bin";
desktopName = "Firefox DevEdition";
wmClass = "firefox-devedition";
wmClass = "firefox-aurora";
};
librewolf-unwrapped = callPackage ../applications/networking/browsers/librewolf { };