testing/firefox-developer-edition: new aport

This commit is contained in:
psykose 2022-05-25 13:45:28 +00:00
parent e635d3d826
commit ba853932ae
No known key found for this signature in database
17 changed files with 1516 additions and 0 deletions

View File

@ -0,0 +1,277 @@
# Maintainer: psykose <alice@ayaya.dev>
pkgname=firefox-developer-edition
pkgver=101.0_beta9
_pkgver=${pkgver/_beta/b}
_releasedate=2022-05-20
pkgrel=0
pkgdesc="Firefox web browser"
url="https://www.firefox.com/"
# s390x and riscv64 blocked by rust and cargo
# armhf: https://bugzilla.mozilla.org/show_bug.cgi?id=1680495
# ppc64le: ld.lld: error: undefined hidden symbol: something about video
# x86/armv7: who is using this there?
arch="x86_64 aarch64"
license="GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND MPL-2.0"
depends="ffmpeg-libs"
makedepends="
alsa-lib-dev
automake
bsd-compat-headers
cargo
cbindgen
clang-dev
dbus-glib-dev
gettext
gtk+3.0-dev
hunspell-dev
icu-dev
libevent-dev
libffi-dev
libidl-dev
libjpeg-turbo-dev
libnotify-dev
libogg-dev
libtheora-dev
libtool
libvorbis-dev
libvpx-dev
libwebp-dev
libxcomposite-dev
libxt-dev
lld
llvm-dev
m4
mesa-dev
nasm
nodejs
nspr-dev
nss-dev
nss-static
pipewire-dev
pulseaudio-dev
python3
sed
wasi-sdk
wireless-tools-dev
yasm
zip
"
source="https://ftp.mozilla.org/pub/firefox/releases/$_pkgver/source/firefox-$_pkgver.source.tar.xz
stab.h
fix-fortify-system-wrappers.patch
mallinfo.patch
disable-moz-stackwalk.patch
fix-rust-target.patch
fix-webrtc-glibcisms.patch
allow-custom-rust-vendor.patch
disable-neon-in-aom.patch
sandbox-fork.patch
sandbox-sched_setscheduler.patch
sandbox-largefile.patch
avoid-redefinition.patch
install-dir.patch
firefox-developer-edition.desktop
distribution.ini
vendor-prefs.js
"
options="!check" # no tests
builddir="$srcdir/firefox-${pkgver/_*/}"
_mozappdir=/usr/lib/firefox-developer-edition
# help our shared-object scanner to find the libs
ldpath="$_mozappdir"
sonameprefix="$pkgname:"
# we need this because cargo verifies checksums of all files in vendor
# crates when it builds and gives us no way to override or update the
# file sanely... so just clear out the file list
_clear_vendor_checksums() {
sed -i 's/\("files":{\)[^}]*/\1/' third_party/rust/$1/.cargo-checksum.json
}
prepare() {
default_prepare
cp "$srcdir"/stab.h toolkit/crashreporter/google-breakpad/src/
_clear_vendor_checksums target-lexicon-0.9.0
}
build() {
export SHELL=/bin/sh
export MOZILLA_OFFICIAL=1
export USE_SHORT_LIBNAME=1
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
export MOZ_APP_REMOTINGNAME=firefoxdeveloperedition
export MOZBUILD_STATE_PATH="$srcdir"/mozbuild
# disable desktop notifications
export MOZ_NOSPAM=1
# Find our triplet JSON
export RUST_TARGET="$CTARGET"
# Build with Clang, takes less RAM
export CC="clang"
export CXX="clang++"
# set rpath so linker finds the libs
export LDFLAGS="$LDFLAGS -Wl,-rpath,$_mozappdir"
case "$CARCH" in
aarch64|arm*|x86*)
# disable-elf-hack: exists only on aarch64, arm*, x86, x86_64
_arch_config="--disable-elf-hack"
;;
esac
# webrtc does not build on these
case "$CARCH" in
armv7|ppc64le)
_webrtc_config="--disable-webrtc"
;;
esac
# FF doesn't have SIMD available on armhf/v7
case "$CARCH" in
arm*)
_rust_simd="--disable-rust-simd"
;;
*)
_rust_simd="--enable-rust-simd"
;;
esac
# disable debug on 32-bit (takes too much link memory)
case "$CARCH" in
arm*|x86)
_low_mem_flags="--disable-debug-symbols --disable-debug"
# hardcoded in the file
sed -i 's|debug_info = "2"|debug_info = "0"|' \
../build/moz.configure/toolchain.configure
;;
esac
# sandbox only supported here
case "$CARCH" in
x86*|armv7|aarch64)
_sandbox="--enable-sandbox"
;;
*)
_sandbox="--disable-sandbox"
;;
esac
./mach configure \
--prefix=/usr \
$_arch_config \
$_webrtc_config \
$_low_mem_flags \
$_rust_simd \
$_sandbox \
\
--disable-cargo-incremental \
--disable-crashreporter \
--disable-install-strip \
--disable-jemalloc \
--disable-minify \
--disable-profiling \
--disable-strip \
--disable-tests \
--disable-updater \
\
--enable-alsa \
--enable-dbus \
--enable-default-toolkit=cairo-gtk3-wayland \
--enable-ffmpeg \
--enable-hardening \
--enable-linker=lld \
--enable-necko-wifi \
--enable-official-branding \
--enable-optimize="$CFLAGS -O2" \
--enable-pulseaudio \
--enable-release \
--enable-system-ffi \
--enable-system-pixman \
--enable-update-channel=aurora \
\
--with-branding=browser/branding/aurora \
--with-distribution-id=org.alpinelinux \
--with-libclang-path=/usr/lib \
--with-system-ffi \
--with-system-icu \
--with-system-jpeg \
--with-system-libevent \
--with-system-libvpx \
--with-system-nspr \
--with-system-nss \
--with-system-pixman \
--with-system-png \
--with-system-webp \
--with-system-zlib \
--with-unsigned-addon-scopes=app,system \
--allow-addon-sideload \
--with-wasi-sysroot=/usr/share/wasi-sysroot
./mach build
}
package() {
DESTDIR="$pkgdir" ./mach install
local _png
for _png in ./browser/branding/aurora/default*.png; do
local i=${_png%.png}
i=${i##*/default}
install -Dm644 "$_png" \
"$pkgdir"/usr/share/icons/hicolor/"$i"x"$i"/apps/$pkgname.png
done
install -Dm644 browser/branding/aurora/content/about-logo.png \
"$pkgdir"/usr/share/icons/hicolor/192x192/apps/$pkgname.png
install -Dm644 browser/branding/aurora/content/about-logo@2x.png \
"$pkgdir"/usr/share/icons/hicolor/384x384/apps/$pkgname.png
install -Dm644 browser/branding/aurora/content/about-logo.svg \
"$pkgdir"/usr/share/icons/hicolor/scalable/apps/$pkgname.svg
install -Dm644 "$srcdir"/firefox-developer-edition.desktop \
"$pkgdir"/usr/share/applications/org.mozilla.firefox-developer-edition.desktop
install -Dm644 "$srcdir"/distribution.ini \
"$pkgdir"/$_mozappdir/distribution/distribution.ini
# install our vendor prefs
install -Dm644 "$srcdir"/vendor-prefs.js \
"$pkgdir"/$_mozappdir/browser/defaults/preferences/vendor.js
# Replace duplicate binary with wrapper
# https://bugzilla.mozilla.org/show_bug.cgi?id=658850
install -Dm755 /dev/stdin "$pkgdir"/usr/bin/firefox-developer-edition <<- EOF
#!/bin/sh
exec /usr/lib/$pkgname/firefox "\$@"
EOF
rm "$pkgdir"/$_mozappdir/firefox-bin
ln -sfv /usr/bin/firefox-developer-edition "$pkgdir"/$_mozappdir/firefox-bin
}
sha512sums="
d9491747da5f65caf59deb5ebd1cab6995343f46f26b290026275e6a828c38fb2402336f1df3a60d0b22af5b0c6043b8b711d188be7f8653284b1d3a9c3bbe42 firefox-101.0b9.source.tar.xz
0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
2f4f15974d52de4bb273b62a332d13620945d284bbc6fe6bd0a1f58ff7388443bc1d3bf9c82cc31a8527aad92b0cd3a1bc41d0af5e1800e0dcbd7033e58ffd71 fix-fortify-system-wrappers.patch
a4a3e062661bda64d502d426c480ac9645345860118de9df9ffe6e0597738c70c11e5cdef2d4fd12c5e2ee30a09310159230524655a419a4f7e4eeeb0f3c06b0 mallinfo.patch
454ea3263cabce099accbdc47aaf83be26a19f8b5a4568c01a7ef0384601cf8315efd86cd917f9c8bf419c2c845db89a905f3ff9a8eb0c8e41042e93aa96a85c disable-moz-stackwalk.patch
cd68b89e29e5f6379fbd5679db27b9a5ef70ea65e51c0d0a8137e1f1fd210e35a8cfb047798e9549bc7275606d7ec5c8d8af1335d29da4699db7acd8bc7ff556 fix-rust-target.patch
305c874fdea3096e9c4c6aa6520ac64bb1c347c4b59db8360096646593fe684c3b5377874d91cecd33d56d1410b4714fbdea2b514923723ecbeff79d51265d9b fix-webrtc-glibcisms.patch
4e584621145cf8add069c6dac18e805b3274a1ee402d84e924df2341f7d3c5be261a93ef51283bacbd606f47fbdc628c4323ecc31efc5b403b8d224b18dc278f allow-custom-rust-vendor.patch
55eab1a02e19a19a1ee0e36b11097ab48a44200e07e543d91469967206854f39709c7c0bc31855559528e64642d610868140e9533f1c0e3bebc953353c142fa8 disable-neon-in-aom.patch
2518f2fc75b5db30058e0735f47d60fdf1e7adfaeee4b33fb2afb1bd9a616ce943fd88f4404d0802d4083703f4acf1d5ad42377218d025bc768807fbaf7e1609 sandbox-fork.patch
94433c5ffdbe579c456d95c5f053f61fcbab2f652fa90bc69dcc27d9a1507a8e5c677adeadae9a7a75cc9a55184c1040737f4dfd10b279c088ef016561e6f135 sandbox-sched_setscheduler.patch
b7d0a6126bdf6c0569f80aabf5b37ed2c7a35712eb8a0404a2d85381552f5555d4f97d213ea26cec6a45dc2785f22439376ed5f8e78b4fd664ef0223307b333e sandbox-largefile.patch
b1cb2db3122634f66d2bae7066e76f2dcd455c464e021db4de3b0a08314df95cb667846081682db549dd2af8a00831cabe44a2420c66cdfb5e3b5fa7e6bd21d3 avoid-redefinition.patch
ff471e5160e313a9657bcbb767a6a581bab9da053cced02bde38d1ef03349472ad3602dba026c10d676d55c1712af772dd2b7bdbfa72b5db498c9ce8a2133423 install-dir.patch
2ff0cb8e2eb94cee306b488adf6d7f4debbaff6155be3ed3eeee814cdb356e2e60fe38cc29d6c8d10079937fd2c930cfddf283977cf645395d31eaf76c7f0ac2 firefox-developer-edition.desktop
4fd66382983d406ce0cd3586239fb1110224aeb2f9eee6fc931d980a31d18739d001d1f152208a7f1ccaae80867c40bd3d2ac674484617532a8f38049dc745bd distribution.ini
fc45bc3ffb9404e5338ea26a9f04807b40f6f516324972cddd48bedb91b8bd7c6b8d4e03a0209020f5e67b703bc4ff89389985791b9bd544a0fc3951e2dc338e vendor-prefs.js
"

View File

@ -0,0 +1,564 @@
From a5a3db2d32ff1d359aef5ec586b91164570c1685 Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Tue, 5 Nov 2019 09:56:15 -0800
Subject: [PATCH 1/7] Support custom vendor strings.
Add support for custom vendors, as in "x86_64-gentoo-linux-musl".
Fixes #33.
---
src/targets.rs | 108 ++++++++++++++++++++++++++++++++++++++++++++++++-
src/triple.rs | 4 --
2 files changed, 106 insertions(+), 6 deletions(-)
diff --git a/src/targets.rs b/src/targets.rs
index 6ae570e..90b2736 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
@@ -1,6 +1,8 @@
// This file defines all the identifier enums and target-aware logic.
use crate::triple::{Endianness, PointerWidth, Triple};
+use alloc::boxed::Box;
+use alloc::string::String;
use core::fmt;
use core::str::FromStr;
@@ -292,7 +294,7 @@ impl Aarch64Architecture {
/// The "vendor" field, which in practice is little more than an arbitrary
/// modifier.
-#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[allow(missing_docs)]
pub enum Vendor {
Unknown,
@@ -306,6 +308,15 @@ pub enum Vendor {
Sun,
Uwp,
Wrs,
+
+ /// A custom vendor. "Custom" in this context means that the vendor is
+ /// not specifically recognized by upstream Autotools, LLVM, Rust, or other
+ /// relevant authorities on triple naming. It's useful for people building
+ /// and using locally patched toolchains.
+ ///
+ /// Outside of such patched environments, users of `target-lexicon` should
+ /// treat `Custom` the same as `Unknown` and ignore the string.
+ Custom(Box<String>),
}
/// The "operating system" field, which sometimes implies an environment, and
@@ -717,6 +728,7 @@ impl fmt::Display for Vendor {
Vendor::Sun => "sun",
Vendor::Uwp => "uwp",
Vendor::Wrs => "wrs",
+ Vendor::Custom(ref name) => name,
};
f.write_str(s)
}
@@ -738,7 +750,46 @@ impl FromStr for Vendor {
"sun" => Vendor::Sun,
"uwp" => Vendor::Uwp,
"wrs" => Vendor::Wrs,
- _ => return Err(()),
+ custom => {
+ use alloc::borrow::ToOwned;
+
+ // A custom vendor. Since triple syntax is so loosely defined,
+ // be as conservative as we can to avoid potential ambiguities.
+ // We err on the side of being too strict here, as we can
+ // always relax it if needed.
+
+ // Don't allow empty string names.
+ if custom.is_empty() {
+ return Err(());
+ }
+
+ // Don't allow any other recognized name as a custom vendor,
+ // since vendors can be omitted in some contexts.
+ if Architecture::from_str(custom).is_ok()
+ || OperatingSystem::from_str(custom).is_ok()
+ || Environment::from_str(custom).is_ok()
+ || BinaryFormat::from_str(custom).is_ok()
+ {
+ return Err(());
+ }
+
+ // Require the first character to be an ascii lowercase.
+ if !custom.chars().nth(0).unwrap().is_ascii_lowercase() {
+ return Err(());
+ }
+
+ // Restrict the set of characters permitted in a custom vendor.
+ if custom
+ .find(|c: char| {
+ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
+ })
+ .is_some()
+ {
+ return Err(());
+ }
+
+ Vendor::Custom(Box::new(custom.to_owned()))
+ }
})
}
}
@@ -1120,4 +1171,57 @@ mod tests {
assert_eq!(t.environment, Environment::Eabihf);
assert_eq!(t.binary_format, BinaryFormat::Elf);
}
+
+ #[test]
+ fn custom_vendors() {
+ assert!(Triple::from_str("x86_64--linux").is_err());
+ assert!(Triple::from_str("x86_64-42-linux").is_err());
+ assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err());
+ assert!(Triple::from_str("x86_64-^-linux").is_err());
+ assert!(Triple::from_str("x86_64- -linux").is_err());
+ assert!(Triple::from_str("x86_64-CustomVendor-linux").is_err());
+ assert!(Triple::from_str("x86_64-linux-linux").is_err());
+ assert!(Triple::from_str("x86_64-x86_64-linux").is_err());
+ assert!(Triple::from_str("x86_64-elf-linux").is_err());
+ assert!(Triple::from_str("x86_64-gnu-linux").is_err());
+ assert!(Triple::from_str("x86_64-linux-customvendor").is_err());
+ assert!(Triple::from_str("customvendor").is_err());
+ assert!(Triple::from_str("customvendor-x86_64").is_err());
+ assert!(Triple::from_str("x86_64-").is_err());
+ assert!(Triple::from_str("x86_64--").is_err());
+
+ let t = Triple::from_str("x86_64-customvendor-linux")
+ .expect("can't parse target with custom vendor");
+ assert_eq!(t.architecture, Architecture::X86_64);
+ assert_eq!(
+ t.vendor,
+ Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
+ );
+ assert_eq!(t.operating_system, OperatingSystem::Linux);
+ assert_eq!(t.environment, Environment::Unknown);
+ assert_eq!(t.binary_format, BinaryFormat::Elf);
+ assert_eq!(t.to_string(), "x86_64-customvendor-linux");
+
+ let t = Triple::from_str("x86_64-customvendor")
+ .expect("can't parse target with custom vendor");
+ assert_eq!(t.architecture, Architecture::X86_64);
+ assert_eq!(
+ t.vendor,
+ Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
+ );
+ assert_eq!(t.operating_system, OperatingSystem::Unknown);
+ assert_eq!(t.environment, Environment::Unknown);
+ assert_eq!(t.binary_format, BinaryFormat::Unknown);
+
+ assert_eq!(
+ Triple::from_str("unknown-foo"),
+ Ok(Triple {
+ architecture: Architecture::Unknown,
+ vendor: Vendor::Custom(Box::new(String::from_str("foo").unwrap())),
+ operating_system: OperatingSystem::Unknown,
+ environment: Environment::Unknown,
+ binary_format: BinaryFormat::Unknown,
+ })
+ );
+ }
}
diff --git a/src/triple.rs b/src/triple.rs
index 36dcd9a..1abda26 100644
--- a/third_party/rust/target-lexicon.0.9.0/src/triple.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/triple.rs
@@ -322,10 +322,6 @@ mod tests {
Triple::from_str("foo"),
Err(ParseError::UnrecognizedArchitecture("foo".to_owned()))
);
- assert_eq!(
- Triple::from_str("unknown-foo"),
- Err(ParseError::UnrecognizedVendor("foo".to_owned()))
- );
assert_eq!(
Triple::from_str("unknown-unknown-foo"),
Err(ParseError::UnrecognizedOperatingSystem("foo".to_owned()))
From 6f90d7274dce4e7f9bb120f6b36cf26881bde9a7 Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Tue, 5 Nov 2019 10:33:56 -0800
Subject: [PATCH 2/7] Add more tests.
---
src/targets.rs | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/targets.rs b/src/targets.rs
index 90b2736..7d1f069 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
@@ -1174,6 +1174,7 @@ mod tests {
#[test]
fn custom_vendors() {
+ // Test various invalid cases.
assert!(Triple::from_str("x86_64--linux").is_err());
assert!(Triple::from_str("x86_64-42-linux").is_err());
assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err());
@@ -1190,6 +1191,31 @@ mod tests {
assert!(Triple::from_str("x86_64-").is_err());
assert!(Triple::from_str("x86_64--").is_err());
+ // Test various Unicode things.
+ assert!(
+ Triple::from_str("x86_64-𝓬𝓾𝓼𝓽𝓸𝓶𝓿𝓮𝓷𝓭𝓸𝓻-linux").is_err(),
+ "unicode font hazard"
+ );
+ assert!(
+ Triple::from_str("x86_64-ćúśtőḿvéńdőŕ-linux").is_err(),
+ "diacritical mark stripping hazard"
+ );
+ assert!(
+ Triple::from_str("x86_64-customvendοr-linux").is_err(),
+ "homoglyph hazard"
+ );
+ assert!(Triple::from_str("x86_64-customvendor-linux").is_ok());
+ assert!(
+ Triple::from_str("x86_64-ffi-linux").is_err(),
+ "normalization hazard"
+ );
+ assert!(Triple::from_str("x86_64-ffi-linux").is_ok());
+ assert!(
+ Triple::from_str("x86_64-customvendor-linux").is_err(),
+ "zero-width character hazard"
+ );
+
+ // Test some valid cases.
let t = Triple::from_str("x86_64-customvendor-linux")
.expect("can't parse target with custom vendor");
assert_eq!(t.architecture, Architecture::X86_64);
@@ -1202,8 +1228,8 @@ mod tests {
assert_eq!(t.binary_format, BinaryFormat::Elf);
assert_eq!(t.to_string(), "x86_64-customvendor-linux");
- let t = Triple::from_str("x86_64-customvendor")
- .expect("can't parse target with custom vendor");
+ let t =
+ Triple::from_str("x86_64-customvendor").expect("can't parse target with custom vendor");
assert_eq!(t.architecture, Architecture::X86_64);
assert_eq!(
t.vendor,
From c0e318b3c1be2d1965579f07dd563fb9cc0c4eb1 Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Tue, 5 Nov 2019 12:56:31 -0800
Subject: [PATCH 3/7] Use `.chars().any(...)` instead of
`.find(...).is_some()`.
---
src/targets.rs | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/targets.rs b/src/targets.rs
index 7d1f069..1078dd3 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
+++ b/third_party/rust/target-lexicon/src-0.9.0/targets.rs
@@ -779,12 +779,9 @@ impl FromStr for Vendor {
}
// Restrict the set of characters permitted in a custom vendor.
- if custom
- .find(|c: char| {
- !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
- })
- .is_some()
- {
+ if custom.chars().any(|c: char| {
+ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
+ }) {
return Err(());
}
From f319950528654c772193d9eb3bf40bc8df35fcae Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Thu, 7 Nov 2019 15:15:48 -0800
Subject: [PATCH 4/7] Fix build.rs to generate the correct code to build
Vendors.
---
build.rs | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/build.rs b/build.rs
index a0ba3b7..446f9e7 100644
--- a/third_party/rust/target-lexicon-0.9.0/build.rs
+++ b/third_party/rust/target-lexicon-0.9.0/build.rs
@@ -32,6 +32,7 @@ mod parse_error {
}
}
+use self::targets::Vendor;
use self::triple::Triple;
fn main() {
@@ -60,7 +61,7 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
" architecture: Architecture::{:?},",
triple.architecture
)?;
- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?;
+ writeln!(out, " vendor: {},", vendor_display(&triple.vendor))?;
writeln!(
out,
" operating_system: OperatingSystem::{:?},",
@@ -90,7 +91,7 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
writeln!(out, "impl Vendor {{")?;
writeln!(out, " /// Return the vendor for the current host.")?;
writeln!(out, " pub const fn host() -> Self {{")?;
- writeln!(out, " Vendor::{:?}", triple.vendor)?;
+ writeln!(out, " {}", vendor_display(&triple.vendor))?;
writeln!(out, " }}")?;
writeln!(out, "}}")?;
writeln!(out)?;
@@ -160,3 +161,12 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
Ok(())
}
+
+fn vendor_display(vendor: &Vendor) -> String {
+ match vendor {
+ Vendor::Custom(custom) => {
+ format!("Vendor::Custom(Box::new(String::from_str({:?})))", custom)
+ }
+ known => format!("Vendor::{:?}", known),
+ }
+}
From e558f6934535be3b8ccc9a99a33e861cb7431dfe Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Fri, 8 Nov 2019 12:10:34 -0800
Subject: [PATCH 5/7] Fix custom vendors in `const fn` contexts.
---
build.rs | 15 +++++++++++----
src/lib.rs | 4 ++--
src/targets.rs | 51 ++++++++++++++++++++++++++++++++++++++++++--------
3 files changed, 56 insertions(+), 14 deletions(-)
diff --git a/build.rs b/build.rs
index 446f9e7..e88206e 100644
--- a/third_party/rust/target-lexicon-0.9.0/build.rs
+++ b/third_party/rust/target-lexicon-0.9.0/build.rs
@@ -53,6 +53,8 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
writeln!(out, "use crate::Aarch64Architecture::*;")?;
writeln!(out, "#[allow(unused_imports)]")?;
writeln!(out, "use crate::ArmArchitecture::*;")?;
+ writeln!(out, "#[allow(unused_imports)]")?;
+ writeln!(out, "use crate::CustomVendor;")?;
writeln!(out)?;
writeln!(out, "/// The `Triple` of the current host.")?;
writeln!(out, "pub const HOST: Triple = Triple {{")?;
@@ -139,7 +141,11 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
" architecture: Architecture::{:?},",
triple.architecture
)?;
- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?;
+ writeln!(
+ out,
+ " vendor: {},",
+ vendor_display(&triple.vendor)
+ )?;
writeln!(
out,
" operating_system: OperatingSystem::{:?},",
@@ -164,9 +170,10 @@ fn write_host_rs(mut out: File, triple: Triple) -> io::Result<()> {
fn vendor_display(vendor: &Vendor) -> String {
match vendor {
- Vendor::Custom(custom) => {
- format!("Vendor::Custom(Box::new(String::from_str({:?})))", custom)
- }
+ Vendor::Custom(custom) => format!(
+ "Vendor::Custom(CustomVendor::Static({:?}))",
+ custom.as_str()
+ ),
known => format!("Vendor::{:?}", known),
}
}
diff --git a/src/lib.rs b/src/lib.rs
index 8d6da8d..70f6488 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/lib.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/lib.rs
@@ -28,7 +28,7 @@ mod triple;
pub use self::host::HOST;
pub use self::parse_error::ParseError;
pub use self::targets::{
- Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, Environment, OperatingSystem,
- Vendor,
+ Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, CustomVendor, Environment,
+ OperatingSystem, Vendor,
};
pub use self::triple::{CallingConvention, Endianness, PointerWidth, Triple};
diff --git a/src/targets.rs b/src/targets.rs
index 1078dd3..7152020 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
@@ -4,6 +4,7 @@ use crate::triple::{Endianness, PointerWidth, Triple};
use alloc::boxed::Box;
use alloc::string::String;
use core::fmt;
+use core::hash::{Hash, Hasher};
use core::str::FromStr;
/// The "architecture" field, which in some cases also specifies a specific
@@ -292,6 +293,39 @@ impl Aarch64Architecture {
}
}
+/// A string for a `Vendor::Custom` that can either be used in `const`
+/// contexts or hold dynamic strings.
+#[derive(Clone, Debug, Eq)]
+pub enum CustomVendor {
+ /// An owned `String`. This supports the general case.
+ Owned(Box<String>),
+ /// A static `str`, so that `CustomVendor` can be constructed in `const`
+ /// contexts.
+ Static(&'static str),
+}
+
+impl CustomVendor {
+ /// Extracts a string slice.
+ pub fn as_str(&self) -> &str {
+ match self {
+ CustomVendor::Owned(s) => s,
+ CustomVendor::Static(s) => s,
+ }
+ }
+}
+
+impl PartialEq for CustomVendor {
+ fn eq(&self, other: &Self) -> bool {
+ self.as_str() == other.as_str()
+ }
+}
+
+impl Hash for CustomVendor {
+ fn hash<H: Hasher>(&self, state: &mut H) {
+ self.as_str().hash(state)
+ }
+}
+
/// The "vendor" field, which in practice is little more than an arbitrary
/// modifier.
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
@@ -316,7 +350,7 @@ pub enum Vendor {
///
/// Outside of such patched environments, users of `target-lexicon` should
/// treat `Custom` the same as `Unknown` and ignore the string.
- Custom(Box<String>),
+ Custom(CustomVendor),
}
/// The "operating system" field, which sometimes implies an environment, and
@@ -728,7 +762,7 @@ impl fmt::Display for Vendor {
Vendor::Sun => "sun",
Vendor::Uwp => "uwp",
Vendor::Wrs => "wrs",
- Vendor::Custom(ref name) => name,
+ Vendor::Custom(ref name) => name.as_str(),
};
f.write_str(s)
}
@@ -779,13 +813,14 @@ impl FromStr for Vendor {
}
// Restrict the set of characters permitted in a custom vendor.
- if custom.chars().any(|c: char| {
+ fn is_prohibited_char(c: char) -> bool {
!(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
- }) {
+ }
+ if custom.chars().any(is_prohibited_char) {
return Err(());
}
- Vendor::Custom(Box::new(custom.to_owned()))
+ Vendor::Custom(CustomVendor::Owned(Box::new(custom.to_owned())))
}
})
}
@@ -1218,7 +1253,7 @@ mod tests {
assert_eq!(t.architecture, Architecture::X86_64);
assert_eq!(
t.vendor,
- Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
+ Vendor::Custom(CustomVendor::Static("customvendor"))
);
assert_eq!(t.operating_system, OperatingSystem::Linux);
assert_eq!(t.environment, Environment::Unknown);
@@ -1230,7 +1265,7 @@ mod tests {
assert_eq!(t.architecture, Architecture::X86_64);
assert_eq!(
t.vendor,
- Vendor::Custom(Box::new(String::from_str("customvendor").unwrap()))
+ Vendor::Custom(CustomVendor::Static("customvendor"))
);
assert_eq!(t.operating_system, OperatingSystem::Unknown);
assert_eq!(t.environment, Environment::Unknown);
@@ -1240,7 +1275,7 @@ mod tests {
Triple::from_str("unknown-foo"),
Ok(Triple {
architecture: Architecture::Unknown,
- vendor: Vendor::Custom(Box::new(String::from_str("foo").unwrap())),
+ vendor: Vendor::Custom(CustomVendor::Static("foo")),
operating_system: OperatingSystem::Unknown,
environment: Environment::Unknown,
binary_format: BinaryFormat::Unknown,
From bc4b444133b8a5e56602f7c77c10ef3f1e7a7c78 Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Mon, 18 Nov 2019 13:45:58 -0800
Subject: [PATCH 6/7] Add a testcase with a BOM too, just in case.
---
src/targets.rs | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/targets.rs b/src/targets.rs
index 7152020..9a4d990 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
@@ -1246,6 +1246,10 @@ mod tests {
Triple::from_str("x86_64-customvendor-linux").is_err(),
"zero-width character hazard"
);
+ assert!(
+ Triple::from_str("x86_64-customvendor-linux").is_err(),
+ "BOM hazard"
+ );
// Test some valid cases.
let t = Triple::from_str("x86_64-customvendor-linux")
From 721fbbe1c9cfd3adc9aaf011c62d6a36078f4133 Mon Sep 17 00:00:00 2001
From: Dan Gohman <sunfish@mozilla.com>
Date: Mon, 18 Nov 2019 20:56:40 -0800
Subject: [PATCH 7/7] Use an anonymous function instead of just a local
function.
---
src/targets.rs | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/src/targets.rs b/src/targets.rs
index 9a4d990..eb5a088 100644
--- a/third_party/rust/target-lexicon-0.9.0/src/targets.rs
+++ b/third_party/rust/target-lexicon-0.9.0/src/targets.rs
@@ -813,10 +813,9 @@ impl FromStr for Vendor {
}
// Restrict the set of characters permitted in a custom vendor.
- fn is_prohibited_char(c: char) -> bool {
+ if custom.chars().any(|c: char| {
!(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.')
- }
- if custom.chars().any(is_prohibited_char) {
+ }) {
return Err(());
}

View File

@ -0,0 +1,15 @@
Author: Rasmus Thomsen <oss@cogitri.dev>
Reason: FF is mixing userspace net headers (net/if.h) and kernelspace ones
(linux/if.h), leading to redefinitions. We need to include net/if.h before
linux/if.h because linux/if.h has redifinition guards whereas net/if.h doesnt
Upstream: No
--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c.orig 2020-07-28 19:24:32.359751046 +0200
+++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c 2020-07-28 19:24:37.856343751 +0200
@@ -31,6 +31,7 @@
*/
#if defined(LINUX)
+#include <net/if.h>
#include "addrs-netlink.h"
#include <csi_platform.h>
#include <assert.h>

View File

@ -0,0 +1,18 @@
diff --git a/mozglue/misc/StackWalk.cpp b/mozglue/misc/StackWalk.cpp
index 7d62921..adcfa44 100644
--- a/mozglue/misc/StackWalk.cpp
+++ b/mozglue/misc/StackWalk.cpp
@@ -33,13 +33,7 @@ using namespace mozilla;
# define MOZ_STACKWALK_SUPPORTS_MACOSX 0
#endif
-#if (defined(linux) && \
- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
- defined(HAVE__UNWIND_BACKTRACE)))
-# define MOZ_STACKWALK_SUPPORTS_LINUX 1
-#else
# define MOZ_STACKWALK_SUPPORTS_LINUX 0
-#endif
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
# define HAVE___LIBC_STACK_END 1

View File

@ -0,0 +1,39 @@
Firefox (75) and AOM itself fail to build with NEON enabled. As such
we should disable it for now.
In file included from /home/buildozer/aports/community/firefox/src/firefox-75.0/third_party/aom/aom_dsp/arm/blend_a64_mask_neon.c:12:
/home/buildozer/aports/community/firefox/src/firefox-75.0/third_party/aom/av1/common/arm/mem_neon.h: In function 'load_u8_8x8':
/usr/lib/gcc/armv7-alpine-linux-musleabihf/9.3.0/include/arm_neon.h:10303:1: error: inlining failed in call to always_inline 'vld1_u8': target specific option mismatch
10303 | vld1_u8 (const uint8_t * __a)
| ^~~~~~~
--- a/media/libaom/moz.build 2020-04-09 08:20:14.608439591 +0200
+++ b/media/libaom/moz.build 2020-04-09 08:20:21.801745246 +0200
@@ -42,26 +42,6 @@
ASFLAGS += [ '-I%s/media/libaom/config/linux/ia32/' % TOPSRCDIR ]
LOCAL_INCLUDES += [ '/media/libaom/config/linux/ia32/' ]
EXPORTS.aom += [ 'config/linux/ia32/config/aom_config.h' ]
-elif CONFIG['CPU_ARCH'] == 'arm':
- EXPORTS.aom += files['ARM_EXPORTS']
- ASFLAGS += [
- '-I%s/media/libaom/config/linux/arm/' % TOPSRCDIR,
- '-I%s/libaom' % OBJDIR,
- ]
- LOCAL_INCLUDES += [ '/media/libaom/config/linux/arm/' ]
- EXPORTS.aom += [ 'config/linux/arm/config/aom_config.h' ]
-
- SOURCES += files['ARM_SOURCES']
-
- for f in SOURCES:
- if f.endswith('neon.c'):
- SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
-
- if CONFIG['OS_TARGET'] == 'Android':
- # For cpu-features.h
- LOCAL_INCLUDES += [
- '%%%s/sources/android/cpufeatures' % CONFIG['ANDROID_NDK'],
- ]
else:
# Generic C-only configuration
EXPORTS.aom += files['GENERIC_EXPORTS']

View File

@ -0,0 +1,8 @@
[Global]
id=alpinelinux
version=1.0
about=Mozilla Firefox Developer Edition for Alpine Linux
[Preferences]
app.distributor=alpinelinux
app.distributor.channel=firefox-developer-edition

View File

@ -0,0 +1,340 @@
[Desktop Entry]
Version=1.0
Name=Firefox Developer Edition
GenericName=Web Browser
GenericName[ar]=متصفح ويب
GenericName[ast]=Restolador Web
GenericName[bn]=
GenericName[ca]=Navegador web
GenericName[cs]=Webový prohlížeč
GenericName[da]=Webbrowser
GenericName[de]=Webbrowser
GenericName[el]=Περιηγητής διαδικτύου
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fa]=مرورگر اینترنتی
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gl]=Navegador Web
GenericName[he]=דפדפן אינטרנט
GenericName[hr]=Web preglednik
GenericName[hu]=Webböngésző
GenericName[it]=Browser web
GenericName[ja]=
GenericName[ko]=
GenericName[ku]=Geroka torê
GenericName[lt]=Interneto naršyklė
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[nn]=Nettlesar
GenericName[no]=Nettleser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador Web
GenericName[ro]=Navigator Internet
GenericName[ru]=Веб-браузер
GenericName[sk]=Internetový prehliadač
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[tr]=Web Tarayıcı
GenericName[ug]=توركۆرگۈ
GenericName[uk]=Веб-браузер
GenericName[vi]=Trình duyt Web
GenericName[zh_CN]=
GenericName[zh_TW]=
Comment=Browse the World Wide Web
Comment[ar]=تصفح الشبكة العنكبوتية العالمية
Comment[ast]=Restola pela Rede
Comment[bn]=
Comment[ca]=Navegueu per el web
Comment[cs]=Prohlížení stránek World Wide Webu
Comment[da]=Surf på internettet
Comment[de]=Im Internet surfen
Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
Comment[es]=Navegue por la web
Comment[et]=Lehitse veebi
Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
Comment[fi]=Selaa Internetin WWW-sivuja
Comment[fr]=Naviguer sur le Web
Comment[gl]=Navegar pola rede
Comment[he]=גלישה ברחבי האינטרנט
Comment[hr]=Pretražite web
Comment[hu]=A világháló böngészése
Comment[it]=Esplora il web
Comment[ja]=
Comment[ko]=
Comment[ku]=Li torê bigere
Comment[lt]=Naršykite internete
Comment[nb]=Surf på nettet
Comment[nl]=Verken het internet
Comment[nn]=Surf på nettet
Comment[no]=Surf på nettet
Comment[pl]=Przeglądanie stron WWW
Comment[pt]=Navegue na Internet
Comment[pt_BR]=Navegue na Internet
Comment[ro]=Navigați pe Internet
Comment[ru]=Доступ в Интернет
Comment[sk]=Prehliadanie internetu
Comment[sl]=Brskajte po spletu
Comment[sv]=Surfa på webben
Comment[tr]=İnternet'te Gezinin
Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
Comment[uk]=Перегляд сторінок Інтернету
Comment[vi]=Đ duyt các trang web
Comment[zh_CN]=
Comment[zh_TW]=
Keywords=Internet;WWW;Browser;Web;Explorer
Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
Keywords[es]=Explorador;Internet;WWW
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
Keywords[hr]=Internet;WWW;preglednik;Web
Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
Keywords[it]=Internet;WWW;Browser;Web;Navigatore
Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
Keywords[ja]=Internet;WWW;Web;;;;
Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyt;Trang web
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;;;;;Firefox;ff;;;
Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;;;;;;
Exec=/usr/lib/firefox-developer-edition/firefox --class="firefoxdeveloperedition" %u
Icon=firefox-developer-edition
Terminal=false
X-MultipleArgs=false
Type=Application
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json;
StartupNotify=true
StartupWMClass=firefoxdeveloperedition
Categories=Network;WebBrowser;
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=New Window
Name[ach]=Dirica manyen
Name[af]=Nuwe venster
Name[an]=Nueva finestra
Name[ar]=نافذة جديدة
Name[as]=
Name[ast]=Ventana nueva
Name[az]=Yeni Pəncərə
Name[be]=Новае акно
Name[bg]=Нов прозорец
Name[bn_BD]= (N)
Name[bn_IN]=
Name[br]=Prenestr nevez
Name[brx]= '(N)
Name[bs]=Novi prozor
Name[ca]=Finestra nova
Name[cak]=K'ak'a' tzuwäch
Name[cs]=Nové okno
Name[cy]=Ffenestr Newydd
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[dsb]=Nowe wokno
Name[el]=Νέο παράθυρο
Name[en_GB]=New Window
Name[en_US]=New Window
Name[en_ZA]=New Window
Name[eo]=Nova fenestro
Name[es_AR]=Nueva ventana
Name[es_CL]=Nueva ventana
Name[es_ES]=Nueva ventana
Name[es_MX]=Nueva ventana
Name[et]=Uus aken
Name[eu]=Leiho berria
Name[fa]=پنجره جدید
Name[ff]=Henorde Hesere
Name[fi]=Uusi ikkuna
Name[fr]=Nouvelle fenêtre
Name[fy_NL]=Nij finster
Name[ga_IE]=Fuinneog Nua
Name[gd]=Uinneag ùr
Name[gl]=Nova xanela
Name[gn]=Ovetã pyahu
Name[gu_IN]= િ
Name[he]=חלון חדש
Name[hi_IN]= ि
Name[hr]=Novi prozor
Name[hsb]=Nowe wokno
Name[hu]=Új ablak
Name[hy_AM]=Նոր Պատուհան
Name[id]=Jendela Baru
Name[is]=Nýr gluggi
Name[it]=Nuova finestra
Name[ja]=
Name[ja_JP-mac]=
Name[ka]=
Name[kk]=Жаңа терезе
Name[km]=
Name[kn]= ಿಿ
Name[ko]=
Name[kok]=
Name[ks]=نئئ وِنڈو
Name[lij]=Neuvo barcon
Name[lo]=
Name[lt]=Naujas langas
Name[ltg]=Jauns lūgs
Name[lv]=Jauns logs
Name[mai]= ि
Name[mk]=Нов прозорец
Name[ml]=ി
Name[mr]=
Name[ms]=Tetingkap Baru
Name[my]=
Name[nb_NO]=Nytt vindu
Name[ne_NP]=
Name[nl]=Nieuw venster
Name[nn_NO]=Nytt vindauge
Name[or]= ି
Name[pa_IN]= ਿ
Name[pl]=Nowe okno
Name[pt_BR]=Nova janela
Name[pt_PT]=Nova janela
Name[rm]=Nova fanestra
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sat]= ि (N)
Name[si]=
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[son]=Zanfun taaga
Name[sq]=Dritare e Re
Name[sr]=Нови прозор
Name[sv_SE]=Nytt fönster
Name[ta]=ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni pencere
Name[tsz]=Eraatarakua jimpani
Name[uk]=Нове вікно
Name[ur]=نیا دریچہ
Name[uz]=Yangi oyna
Name[vi]=Ca s mi
Name[wo]=Palanteer bu bees
Name[xh]=Ifestile entsha
Name[zh_CN]=
Name[zh_TW]=
Exec=/usr/lib/firefox-developer-edition/firefox --class="firefoxdeveloperedition" --new-window %u
[Desktop Action new-private-window]
Name=New Private Window
Name[ach]=Dirica manyen me mung
Name[af]=Nuwe privaatvenster
Name[an]=Nueva finestra privada
Name[ar]=نافذة خاصة جديدة
Name[as]= ি
Name[ast]=Ventana privada nueva
Name[az]=Yeni Məxfi Pəncərə
Name[be]=Новае акно адасаблення
Name[bg]=Нов прозорец за поверително сърфиране
Name[bn_BD]= ি
Name[bn_IN]= ি
Name[br]=Prenestr merdeiñ prevez nevez
Name[brx]= '
Name[bs]=Novi privatni prozor
Name[ca]=Finestra privada nova
Name[cak]=K'ak'a' ichinan tzuwäch
Name[cs]=Nové anonymní okno
Name[cy]=Ffenestr Breifat Newydd
Name[da]=Nyt privat vindue
Name[de]=Neues privates Fenster
Name[dsb]=Nowe priwatne wokno
Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
Name[en_GB]=New Private Window
Name[en_US]=New Private Window
Name[en_ZA]=New Private Window
Name[eo]=Nova privata fenestro
Name[es_AR]=Nueva ventana privada
Name[es_CL]=Nueva ventana privada
Name[es_ES]=Nueva ventana privada
Name[es_MX]=Nueva ventana privada
Name[et]=Uus privaatne aken
Name[eu]=Leiho pribatu berria
Name[fa]=پنجره ناشناس جدید
Name[ff]=Henorde Suturo Hesere
Name[fi]=Uusi yksityinen ikkuna
Name[fr]=Nouvelle fenêtre de navigation privée
Name[fy_NL]=Nij priveefinster
Name[ga_IE]=Fuinneog Nua Phríobháideach
Name[gd]=Uinneag phrìobhaideach ùr
Name[gl]=Nova xanela privada
Name[gn]=Ovetã ñemi pyahu
Name[gu_IN]= િ
Name[he]=חלון פרטי חדש
Name[hi_IN]= ि ि
Name[hr]=Novi privatni prozor
Name[hsb]=Nowe priwatne wokno
Name[hu]=Új privát ablak
Name[hy_AM]=Սկսել Գաղտնի դիտարկում
Name[id]=Jendela Mode Pribadi Baru
Name[is]=Nýr huliðsgluggi
Name[it]=Nuova finestra anonima
Name[ja]=
Name[ja_JP-mac]=
Name[ka]=
Name[kk]=Жаңа жекелік терезе
Name[km]=
Name[kn]= ಿ ಿಿ
Name[ko]=
Name[kok]= ि
Name[ks]=نْو پرایوٹ وینڈو
Name[lij]=Nêuvo barcón privòu
Name[lo]=
Name[lt]=Naujas privataus naršymo langas
Name[ltg]=Jauns privatais lūgs
Name[lv]=Jauns privātais logs
Name[mai]= ि ि (W)
Name[mk]=Нов приватен прозорец
Name[ml]=ി
Name[mr]= ि
Name[ms]=Tetingkap Persendirian Baharu
Name[my]=New Private Window
Name[nb_NO]=Nytt privat vindu
Name[ne_NP]= ि
Name[nl]=Nieuw privévenster
Name[nn_NO]=Nytt privat vindauge
Name[or]= ି ି
Name[pa_IN]= ਿ
Name[pl]=Nowe okno prywatne
Name[pt_BR]=Nova janela privativa
Name[pt_PT]=Nova janela privada
Name[rm]=Nova fanestra privata
Name[ro]=Fereastră privată nouă
Name[ru]=Новое приватное окно
Name[sat]= ि ि (W )
Name[si]= (W)
Name[sk]=Nové okno v režime Súkromné prehliadanie
Name[sl]=Novo zasebno okno
Name[son]=Sutura zanfun taaga
Name[sq]=Dritare e Re Private
Name[sr]=Нови приватан прозор
Name[sv_SE]=Nytt privat fönster
Name[ta]=ி ி
Name[te]= ి ి
Name[th]=
Name[tr]=Yeni gizli pencere
Name[tsz]=Juchiiti eraatarakua jimpani
Name[uk]=Приватне вікно
Name[ur]=نیا نجی دریچہ
Name[uz]=Yangi maxfiy oyna
Name[vi]=Ca s riêng tư mi
Name[wo]=Panlanteeru biir bu bees
Name[xh]=Ifestile yangasese entsha
Name[zh_CN]=
Name[zh_TW]=
Exec=/usr/lib/firefox-developer-edition/firefox --class="firefoxdeveloperedition" --private-window %u

View File

@ -0,0 +1,13 @@
The wrapper features.h gets pulled in by system headers causing thigns to
break. We work around it by simply not wrap features.h
--- ./config/system-headers.mozbuild.orig
+++ ./config/system-headers.mozbuild
@@ -229,7 +229,6 @@
'execinfo.h',
'extras.h',
'fcntl.h',
- 'features.h',
'fenv.h',
'ffi.h',
'fibdef.h',

View File

@ -0,0 +1,31 @@
Allow us to just set RUST_TARGEt ourselves instead of hacking around in mozilla's
weird custom build system...
--- a/build/moz.configure/rust.configure
+++ b/build/moz.configure/rust.configure
@@ -225,7 +225,9 @@
data.setdefault(key, []).append(namespace(rust_target=t, target=info))
return data
-
+@imports('os')
+@imports(_from='mozbuild.util', _import='ensure_unicode')
+@imports(_from='mozbuild.util', _import='system_encoding')
def detect_rustc_target(
host_or_target, compiler_info, arm_target, rust_supported_targets
):
@@ -340,13 +342,13 @@
return None
- rustc_target = find_candidate(candidates)
+ rustc_target = os.environ['RUST_TARGET']
if rustc_target is None:
die("Don't know how to translate {} for rustc".format(host_or_target.alias))
- return rustc_target
+ return ensure_unicode(rustc_target, system_encoding)
@imports('os')

View File

@ -0,0 +1,20 @@
--- a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
+++ b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
@@ -18,7 +18,7 @@
#define WEBRTC_GLIBC_PREREQ(a, b) 0
#endif
-#if WEBRTC_GLIBC_PREREQ(2, 16)
+#if !__GLIBC__ || WEBRTC_GLIBC_PREREQ(2, 16)
#include <sys/auxv.h>
#else
#include <errno.h>
@@ -40,7 +40,7 @@
int architecture = 0;
uint64_t hwcap = 0;
const char* platform = NULL;
-#if WEBRTC_GLIBC_PREREQ(2, 16)
+#if !__GLIBC__ || WEBRTC_GLIBC_PREREQ(2, 16)
hwcap = getauxval(AT_HWCAP);
platform = (const char*)getauxval(AT_PLATFORM);
#else

View File

@ -0,0 +1,40 @@
Patch-Source: https://github.com/archlinux/svntogit-community/blob/557ec3a987fa078d42956ae1adf7f2a8dc747963/trunk/firefox-install-dir.patch
diff --git c/browser/branding/aurora/configure.sh i/browser/branding/aurora/configure.sh
index 19d4ff057f73..2c79e136cc67 100644
--- c/browser/branding/aurora/configure.sh
+++ i/browser/branding/aurora/configure.sh
@@ -3,5 +3,4 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
MOZ_APP_DISPLAYNAME="Firefox Developer Edition"
-MOZ_APP_REMOTINGNAME=firefox-dev
MOZ_DEV_EDITION=1
diff --git c/config/baseconfig.mk i/config/baseconfig.mk
index 3ef3af95d611..81530dface0a 100644
--- c/config/baseconfig.mk
+++ i/config/baseconfig.mk
@@ -2,7 +2,7 @@
# directly in python/mozbuild/mozbuild/base.py for gmake validation.
# We thus use INCLUDED_AUTOCONF_MK to enable/disable some parts depending
# whether a normal build is happening or whether the check is running.
-installdir = $(libdir)/$(MOZ_APP_NAME)
+installdir = $(libdir)/$(MOZ_APP_NAME)-developer-edition
ifeq (.,$(DEPTH))
DIST = dist
else
diff --git c/toolkit/mozapps/installer/packager.mk i/toolkit/mozapps/installer/packager.mk
index 64f902a26942..d3313dacbcb7 100644
--- c/toolkit/mozapps/installer/packager.mk
+++ i/toolkit/mozapps/installer/packager.mk
@@ -138,8 +138,8 @@ endif
(cd $(DIST)/$(MOZ_PKG_DIR) && $(TAR) --exclude=precomplete $(TAR_CREATE_FLAGS) - .) | \
(cd $(DESTDIR)$(installdir) && tar -xf -)
$(NSINSTALL) -D $(DESTDIR)$(bindir)
- $(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME)
- ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)
+ $(RM) -f $(DESTDIR)$(bindir)/$(MOZ_APP_NAME)-developer-edition
+ ln -s $(installdir)/$(MOZ_APP_NAME) $(DESTDIR)$(bindir)/$(MOZ_APP_NAME)-developer-edition
upload:
$(PYTHON) -u $(MOZILLA_DIR)/build/upload.py --base-path $(DIST) $(UPLOAD_FILES)

View File

@ -0,0 +1,20 @@
diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp
index 865e1b5430..9a00dafecb 100644
--- a/xpcom/base/nsMemoryReporterManager.cpp
+++ b/xpcom/base/nsMemoryReporterManager.cpp
@@ -124,6 +124,7 @@ static MOZ_MUST_USE nsresult ResidentUniqueDistinguishedAmount(int64_t* aN) {
return GetProcSelfSmapsPrivate(aN);
}
+#ifdef __GLIBC__
# ifdef HAVE_MALLINFO
# define HAVE_SYSTEM_HEAP_REPORTER 1
static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) {
@@ -143,6 +144,7 @@ static MOZ_MUST_USE nsresult SystemHeapSize(int64_t* aSizeOut) {
return NS_OK;
}
# endif
+#endif
#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || \
defined(__OpenBSD__) || defined(__FreeBSD_kernel__)

View File

@ -0,0 +1,15 @@
make SYS_fork non-fatal, musl uses it for fork(2)
--- a/security/sandbox/linux/SandboxFilter.cpp
+++ b/security/sandbox/linux/SandboxFilter.cpp
@@ -1253,6 +1253,10 @@
// usually do something reasonable on error.
case __NR_clone:
return ClonePolicy(Error(EPERM));
+#ifdef __NR_fork
+ case __NR_fork:
+ return Error(ENOSYS);
+#endif
# ifdef __NR_fadvise64
case __NR_fadvise64:

View File

@ -0,0 +1,17 @@
--- a/security/sandbox/linux/SandboxFilter.cpp 2020-11-23 22:41:14.556378950 +0100
+++ b/security/sandbox/linux/SandboxFilter.cpp 2020-11-23 22:40:23.595806444 +0100
@@ -68,7 +68,13 @@
// The headers define O_LARGEFILE as 0 on x86_64, but we need the
// actual value because it shows up in file flags.
-#define O_LARGEFILE_REAL 00100000
+#if defined(__x86_64__) || defined(__i386__) || defined(__mips__)
+#define O_LARGEFILE_REAL 0100000
+#elif defined(__powerpc__)
+#define O_LARGEFILE_REAL 0200000
+#else
+#define O_LARGEFILE_REAL O_LARGEFILE
+#endif
// Not part of UAPI, but userspace sees it in F_GETFL; see bug 1650751.
#define FMODE_NONOTIFY 0x4000000

View File

@ -0,0 +1,16 @@
upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1657849
--- a/security/sandbox/linux/SandboxFilter.cpp
+++ b/security/sandbox/linux/SandboxFilter.cpp
@@ -1694,10 +1694,10 @@
return Allow();
case __NR_sched_get_priority_min:
case __NR_sched_get_priority_max:
+ case __NR_sched_setscheduler:
return Allow();
case __NR_sched_getparam:
- case __NR_sched_getscheduler:
- case __NR_sched_setscheduler: {
+ case __NR_sched_getscheduler: {
Arg<pid_t> pid(0);
return If(pid == 0, Allow()).Else(Trap(SchedTrap, nullptr));
}

View File

@ -0,0 +1,71 @@
/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */
/*-
* Copyright (c) 1991 The Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)stab.h 5.2 (Berkeley) 4/4/91
*/
#ifndef _STAB_H_
#define _STAB_H_
/*
* The following are symbols used by various debuggers and by the Pascal
* compiler. Each of them must have one (or more) of the bits defined by
* the N_STAB mask set.
*/
#define N_GSYM 0x20 /* global symbol */
#define N_FNAME 0x22 /* F77 function name */
#define N_FUN 0x24 /* procedure name */
#define N_STSYM 0x26 /* data segment variable */
#define N_LCSYM 0x28 /* bss segment variable */
#define N_MAIN 0x2a /* main function name */
#define N_PC 0x30 /* global Pascal symbol */
#define N_RSYM 0x40 /* register variable */
#define N_SLINE 0x44 /* text segment line number */
#define N_DSLINE 0x46 /* data segment line number */
#define N_BSLINE 0x48 /* bss segment line number */
#define N_SSYM 0x60 /* structure/union element */
#define N_SO 0x64 /* main source file name */
#define N_LSYM 0x80 /* stack variable */
#define N_BINCL 0x82 /* include file beginning */
#define N_SOL 0x84 /* included source file name */
#define N_PSYM 0xa0 /* parameter variable */
#define N_EINCL 0xa2 /* include file end */
#define N_ENTRY 0xa4 /* alternate entry point */
#define N_LBRAC 0xc0 /* left bracket */
#define N_EXCL 0xc2 /* deleted include file */
#define N_RBRAC 0xe0 /* right bracket */
#define N_BCOMM 0xe2 /* begin common */
#define N_ECOMM 0xe4 /* end common */
#define N_ECOML 0xe8 /* end common (local name) */
#define N_LENG 0xfe /* length of preceding entry */
#endif /* !_STAB_H_ */

View File

@ -0,0 +1,12 @@
// Use LANG environment variable to choose locale
pref("intl.locale.requested", "");
// Use system-provided dictionaries
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
// Disable default browser checking.
pref("browser.shell.checkDefaultBrowser", false);
// Don't disable our bundled extensions in the application directory
pref("extensions.autoDisableScopes", 11);
pref("extensions.shownSelectionUI", true);