forked from mirrors/nixpkgs
firefox: drop darwin support
Darwin support was marked broken in 2019 with Firefox 69 and has missed therefore missed out and not been tested on the following 29 major releases since. It cannot be supported again without a darwin user stepping up to take care and work on and test every major release, which hasn't happened since I took over maintainership. The recommendation of the people that tend to the firefox source build is for darwin users to use firefox-bin instead.
This commit is contained in:
parent
71d879b16b
commit
08ea534e67
|
@ -188,7 +188,7 @@ stdenv.mkDerivation {
|
|||
ln -s ${policiesJson} "$out/lib/firefox-bin-${version}/distribution/policies.json";
|
||||
'';
|
||||
|
||||
passthru.applicationName = "firefox";
|
||||
passthru.binaryName = "firefox";
|
||||
passthru.libName = "firefox-bin-${version}";
|
||||
passthru.execdir = "/bin";
|
||||
passthru.ffmpegSupport = true;
|
||||
|
|
|
@ -58,10 +58,6 @@
|
|||
, safeBrowsingSupport ? false
|
||||
, drmSupport ? false
|
||||
|
||||
# macOS dependencies
|
||||
, xcbuild, CoreMedia, ExceptionHandling, Kerberos, AVFoundation, MediaToolbox
|
||||
, CoreLocation, Foundation, AddressBook, libobjc, cups, rsync
|
||||
|
||||
## other
|
||||
|
||||
# As stated by Sylvestre Ledru (@sylvestre) on Nov 22, 2017 at
|
||||
|
@ -90,31 +86,14 @@
|
|||
|
||||
assert stdenv.cc.libc or null != null;
|
||||
assert pipewireSupport -> !waylandSupport || !webrtcSupport -> throw "pipewireSupport requires both wayland and webrtc support.";
|
||||
assert ltoSupport -> stdenv.isDarwin -> throw "LTO is broken on Darwin (see PR#19312).";
|
||||
|
||||
let
|
||||
flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")];
|
||||
|
||||
default-toolkit = if stdenv.isDarwin then "cairo-cocoa"
|
||||
else "cairo-gtk3${lib.optionalString waylandSupport "-wayland"}";
|
||||
|
||||
binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName;
|
||||
|
||||
applicationName = if stdenv.isDarwin then binaryNameCapitalized else binaryName;
|
||||
|
||||
execdir = if stdenv.isDarwin
|
||||
then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS"
|
||||
else "/bin";
|
||||
|
||||
inherit (rustPackages) rustc cargo;
|
||||
|
||||
# Darwin's stdenv provides the default llvmPackages version, match that since
|
||||
# clang LTO on Darwin is broken so the stdenv is not being changed.
|
||||
# Target the LLVM version that rustc -Vv reports it is built with for LTO.
|
||||
llvmPackages0 =
|
||||
if stdenv.isDarwin
|
||||
then buildPackages.llvmPackages
|
||||
else rustc.llvmPackages;
|
||||
llvmPackages0 = rustc.llvmPackages;
|
||||
|
||||
# Force the use of lld and other llvm tools for LTO
|
||||
llvmPackages = llvmPackages0.override {
|
||||
|
@ -122,8 +101,6 @@ let
|
|||
bootBintools = null;
|
||||
};
|
||||
|
||||
# When LTO for Darwin is fixed, the following will need updating as lld
|
||||
# doesn't work on it. For now it is fine since ltoSupport implies no Darwin.
|
||||
buildStdenv = if ltoSupport
|
||||
# LTO requires LLVM bintools including ld.lld and llvm-ar.
|
||||
then overrideCC llvmPackages.stdenv (llvmPackages.stdenv.cc.override {
|
||||
|
@ -187,10 +164,7 @@ buildStdenv.mkDerivation ({
|
|||
++ lib.optional pulseaudioSupport libpulseaudio # only headers are needed
|
||||
++ lib.optional gssSupport libkrb5
|
||||
++ lib.optionals waylandSupport [ libxkbcommon libdrm ]
|
||||
++ lib.optional jemallocSupport jemalloc
|
||||
++ lib.optionals buildStdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos
|
||||
AVFoundation MediaToolbox CoreLocation
|
||||
Foundation libobjc AddressBook cups ];
|
||||
++ lib.optional jemallocSupport jemalloc;
|
||||
|
||||
MACH_USE_SYSTEM_PYTHON = "1";
|
||||
|
||||
|
@ -212,7 +186,6 @@ buildStdenv.mkDerivation ({
|
|||
wrapGAppsHook
|
||||
rustPlatform.bindgenHook
|
||||
]
|
||||
++ lib.optionals buildStdenv.isDarwin [ xcbuild rsync ]
|
||||
++ extraNativeBuildInputs;
|
||||
|
||||
separateDebugInfo = enableDebugSymbols;
|
||||
|
@ -261,22 +234,18 @@ buildStdenv.mkDerivation ({
|
|||
"--enable-system-pixman"
|
||||
"--disable-tests"
|
||||
"--disable-updater"
|
||||
"--enable-default-toolkit=${default-toolkit}"
|
||||
"--enable-default-toolkit=cairo-gtk3${lib.optionalString waylandSupport "-wayland"}"
|
||||
"--with-libclang-path=${llvmPackages.libclang.lib}/lib"
|
||||
"--with-system-nspr"
|
||||
"--with-system-nss"
|
||||
"--with-system-webp"
|
||||
]
|
||||
++ lib.optional (buildStdenv.isDarwin) "--disable-xcode-checks"
|
||||
++ lib.optional (!ltoSupport) "--with-clang-path=${llvmPackages.clang}/bin/clang"
|
||||
# LTO is done using clang and lld on Linux.
|
||||
# Darwin needs to use the default linker as lld is not supported (yet?):
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1538724
|
||||
# elf-hack is broken when using clang+lld:
|
||||
# https://bugzilla.mozilla.org/show_bug.cgi?id=1482204
|
||||
++ lib.optional ltoSupport "--enable-lto=cross" # Cross-language LTO.
|
||||
++ lib.optionals ltoSupport [ "--enable-lto=cross" "--enable-linker=lld" ]
|
||||
++ lib.optional (ltoSupport && (buildStdenv.isAarch32 || buildStdenv.isi686 || buildStdenv.isx86_64)) "--disable-elf-hack"
|
||||
++ lib.optional (ltoSupport && !buildStdenv.isDarwin) "--enable-linker=lld"
|
||||
++ lib.optional (lib.versionAtLeast version "95") "--with-wasi-sysroot=${wasiSysRoot}"
|
||||
|
||||
++ flag alsaSupport "alsa"
|
||||
|
@ -309,11 +278,6 @@ buildStdenv.mkDerivation ({
|
|||
enableParallelBuilding = true;
|
||||
doCheck = false; # "--disable-tests" above
|
||||
|
||||
installPhase = if buildStdenv.isDarwin then ''
|
||||
mkdir -p $out/Applications
|
||||
cp -LR dist/${binaryNameCapitalized}.app $out/Applications
|
||||
'' else null;
|
||||
|
||||
postInstall = lib.optionalString buildStdenv.isLinux ''
|
||||
# Remove SDK cruft. FIXME: move to a separate output?
|
||||
rm -rf $out/share/idl $out/include $out/lib/${binaryName}-devel-*
|
||||
|
@ -361,19 +325,18 @@ buildStdenv.mkDerivation ({
|
|||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
# Some basic testing
|
||||
"$out${execdir}/${applicationName}" --version
|
||||
"$out/bin/${binaryName}" --version
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit updateScript;
|
||||
inherit version;
|
||||
inherit alsaSupport;
|
||||
inherit binaryName;
|
||||
inherit pipewireSupport;
|
||||
inherit nspr;
|
||||
inherit ffmpegSupport;
|
||||
inherit gssSupport;
|
||||
inherit execdir;
|
||||
inherit applicationName;
|
||||
inherit tests;
|
||||
inherit gtk3;
|
||||
inherit wasiSysRoot;
|
||||
|
|
|
@ -20,7 +20,7 @@ browser:
|
|||
|
||||
let
|
||||
wrapper =
|
||||
{ applicationName ? browser.applicationName or (lib.getName browser)
|
||||
{ applicationName ? browser.binaryName or (lib.getName browser)
|
||||
, pname ? applicationName
|
||||
, version ? lib.getVersion browser
|
||||
, desktopName ? # applicationName with first letter capitalized
|
||||
|
@ -179,14 +179,10 @@ let
|
|||
buildInputs = [ browser.gtk3 ];
|
||||
|
||||
|
||||
buildCommand = lib.optionalString stdenv.isDarwin ''
|
||||
mkdir -p $out/Applications
|
||||
cp -R --no-preserve=mode,ownership ${browser}/Applications/${applicationName}.app $out/Applications
|
||||
rm -f $out${browser.execdir or "/bin"}/${applicationName}
|
||||
'' + ''
|
||||
if [ ! -x "${browser}${browser.execdir or "/bin"}/${applicationName}" ]
|
||||
buildCommand = ''
|
||||
if [ ! -x "${browser}/bin/${applicationName}" ]
|
||||
then
|
||||
echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${applicationName}'"
|
||||
echo "cannot find executable file \`${browser}/bin/${applicationName}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -223,12 +219,12 @@ let
|
|||
|
||||
# create the wrapper
|
||||
|
||||
executablePrefix="$out${browser.execdir or "/bin"}"
|
||||
executablePrefix="$out/bin"
|
||||
executablePath="$executablePrefix/${applicationName}"
|
||||
|
||||
if [ ! -x "$executablePath" ]
|
||||
then
|
||||
echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${applicationName}'"
|
||||
echo "cannot find executable file \`${browser}/bin/${applicationName}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -243,18 +239,18 @@ let
|
|||
oldExe="$(readlink -v --canonicalize-existing "$executablePath")"
|
||||
fi
|
||||
|
||||
if [ ! -x "${browser}${browser.execdir or "/bin"}/${applicationName}" ]
|
||||
if [ ! -x "${browser}/bin/${applicationName}" ]
|
||||
then
|
||||
echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${applicationName}'"
|
||||
echo "cannot find executable file \`${browser}/bin/${applicationName}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
makeWrapper "$oldExe" \
|
||||
"$out${browser.execdir or "/bin"}/${applicationName}${nameSuffix}" \
|
||||
"$out/bin/${applicationName}${nameSuffix}" \
|
||||
--prefix LD_LIBRARY_PATH ':' "$libs" \
|
||||
--suffix-each GTK_PATH ':' "$gtk_modules" \
|
||||
--prefix PATH ':' "${xdg-utils}/bin" \
|
||||
--suffix PATH ':' "$out${browser.execdir or "/bin"}" \
|
||||
--suffix PATH ':' "$out/bin" \
|
||||
--set MOZ_APP_LAUNCHER "${applicationName}${nameSuffix}" \
|
||||
--set MOZ_SYSTEM_DIR "$out/lib/mozilla" \
|
||||
--set MOZ_LEGACY_PROFILES 1 \
|
||||
|
@ -278,7 +274,7 @@ let
|
|||
mkdir -p "$out/share/icons/hicolor/''${res}x''${res}/apps"
|
||||
icon=$( find "${browser}/lib/" -name "default''${res}.png" )
|
||||
if [ -e "$icon" ]; then ln -s "$icon" \
|
||||
"$out/share/icons/hicolor/''${res}x''${res}/apps/${applicationName}.png"
|
||||
"$out/share/icons/hicolor/''${res}x''${res}/apps/${icon}.png"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
|
|
@ -25972,10 +25972,6 @@ with pkgs;
|
|||
callPackage = newScope {
|
||||
inherit (rustPackages) cargo rustc;
|
||||
gnused = gnused_422;
|
||||
inherit (darwin.apple_sdk.frameworks) CoreMedia ExceptionHandling
|
||||
Kerberos AVFoundation MediaToolbox
|
||||
CoreLocation Foundation AddressBook;
|
||||
inherit (darwin) libobjc;
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -29461,10 +29457,6 @@ with pkgs;
|
|||
callPackage = newScope {
|
||||
inherit (rustPackages) cargo rustc;
|
||||
gnused = gnused_422;
|
||||
inherit (darwin.apple_sdk.frameworks) CoreMedia ExceptionHandling
|
||||
Kerberos AVFoundation MediaToolbox
|
||||
CoreLocation Foundation AddressBook;
|
||||
inherit (darwin) libobjc;
|
||||
};
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue