Compare commits
No commits in common. "master" and "v85.0-1_paks" have entirely different histories.
master
...
v85.0-1_pa
52 changed files with 2810 additions and 1063 deletions
112
.gitlab-ci.yml
112
.gitlab-ci.yml
|
|
@ -1,13 +1,22 @@
|
||||||
stages:
|
stages:
|
||||||
- build
|
- build
|
||||||
|
- paks
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
GIT_SUBMODULE_STRATEGY: recursive
|
GIT_SUBMODULE_STRATEGY: recursive
|
||||||
# variables:
|
# variables:
|
||||||
|
# TARBALL: $TARBALL
|
||||||
|
# ARCH: $ARCH
|
||||||
|
# FLATPAK: $FLATPAK
|
||||||
|
# APPIMAGE: $FLATPAK
|
||||||
# pkgver: $PKGVER
|
# pkgver: $PKGVER
|
||||||
# pkgrel: $PKGREL
|
# pkgrel: $PKGREL
|
||||||
# AARCH64: $AARCH64
|
# AARCH64: $AARCH64
|
||||||
# X86_64: $X86_64
|
# X86_64: $X86_64
|
||||||
|
# download tarball if none available as artifact,
|
||||||
|
# ie. not built in the same pipeline run
|
||||||
|
# TARBALL_URL: $TARBALL_URL
|
||||||
|
# $RELEASE, to trigger deploy, maybe?
|
||||||
|
|
||||||
.carch_aarch64: &carch_aarch64
|
.carch_aarch64: &carch_aarch64
|
||||||
variables:
|
variables:
|
||||||
|
|
@ -20,26 +29,117 @@ variables:
|
||||||
.tarball_build_config: &tarball_build_config
|
.tarball_build_config: &tarball_build_config
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
- ./build_tarball.sh "${CI_PROJECT_DIR}/LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2"
|
- ./binary_tarball/build_tarball.sh "${CI_PROJECT_DIR}/LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2"
|
||||||
artifacts:
|
artifacts:
|
||||||
name: "Librewolf-Tarball-${pkgver}-${pkgrel}-${CARCH}"
|
name: "Librewolf-Tarball-${pkgver}-${pkgrel}-${CARCH}"
|
||||||
paths:
|
paths:
|
||||||
- "LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2"
|
- "LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2"
|
||||||
|
|
||||||
|
.arch_build_config: &arch_build_config
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
- ./arch/01_build.sh
|
||||||
|
artifacts:
|
||||||
|
name: "Librewolf-Arch-${pkgver}-${pkgrel}-${CARCH}"
|
||||||
|
paths:
|
||||||
|
- "librewolf-${pkgver}-${pkgrel}-${CARCH}.pkg.tar*"
|
||||||
|
|
||||||
|
.flatpak_config: &flatpak_config
|
||||||
|
stage: paks
|
||||||
|
artifacts:
|
||||||
|
name: "Librewolf-${pkgver}-${pkgrel}-Flatpak-${CARCH}"
|
||||||
|
paths:
|
||||||
|
- "LibreWolf-${pkgver}-${pkgrel}.${CARCH}.flatpak"
|
||||||
|
- "${CI_PROJECT_DIR}/librewolf-${pkgver}-${pkgrel}.${CARCH}.flatpak-repo"
|
||||||
|
script:
|
||||||
|
- ./flatpak/build_flatpak.sh "${CI_PROJECT_DIR}/LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2" "${CI_PROJECT_DIR}/librewolf-${pkgver}-${pkgrel}.${CARCH}.flatpak-repo" "LibreWolf-${pkgver}-${pkgrel}.${CARCH}.flatpak"
|
||||||
|
|
||||||
|
.appimage_config: &appimage_config
|
||||||
|
stage: paks
|
||||||
|
artifacts:
|
||||||
|
name: "Librewolf-${pkgver}-${pkgrel}-AppImage-${CARCH}"
|
||||||
|
paths:
|
||||||
|
- "LibreWolf-${pkgver}-${pkgrel}.${CARCH}.AppImage"
|
||||||
|
script:
|
||||||
|
- ./appimage/build_appimage.sh "${CI_PROJECT_DIR}/LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2" "${CI_PROJECT_DIR}/LibreWolf-${pkgver}-${pkgrel}.${CARCH}.AppImage"
|
||||||
|
|
||||||
|
arch_x86_64:
|
||||||
|
image: archlinux/base
|
||||||
|
tags: [x86_64b]
|
||||||
|
<<: *carch_x86_64
|
||||||
|
<<: *arch_build_config
|
||||||
|
only:
|
||||||
|
variables:
|
||||||
|
- $ARCH && $X86_64
|
||||||
|
|
||||||
|
arch_aarch64:
|
||||||
|
image: registry.gitlab.com/ohfp/manjaro-arm-docker
|
||||||
|
tags: [aarch64b]
|
||||||
|
<<: *carch_aarch64
|
||||||
|
<<: *arch_build_config
|
||||||
|
only:
|
||||||
|
variables:
|
||||||
|
- $ARCH && $AARCH64
|
||||||
|
|
||||||
tarball_x86_64:
|
tarball_x86_64:
|
||||||
image: ubuntu:18.04
|
image: ubuntu:16.04
|
||||||
tags: [x86_64b]
|
tags: [x86_64b]
|
||||||
<<: *carch_x86_64
|
<<: *carch_x86_64
|
||||||
<<: *tarball_build_config
|
<<: *tarball_build_config
|
||||||
only:
|
only:
|
||||||
variables:
|
variables:
|
||||||
- $X86_64
|
- $TARBALL && $X86_64
|
||||||
|
|
||||||
tarball_aarch64:
|
tarball_aarch64:
|
||||||
image: arm64v8/ubuntu:18.04
|
image: arm64v8/ubuntu:16.04
|
||||||
tags: [aarch64b]
|
tags: [aarch64b]
|
||||||
<<: *carch_aarch64
|
<<: *carch_aarch64
|
||||||
<<: *tarball_build_config
|
<<: *tarball_build_config
|
||||||
only:
|
only:
|
||||||
variables:
|
variables:
|
||||||
- $AARCH64
|
- $TARBALL && $AARCH64
|
||||||
|
|
||||||
|
flatpak_x86_64:
|
||||||
|
image: ubuntu:16.04
|
||||||
|
tags: [flat_runner]
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .flatpak-builder
|
||||||
|
key: flatpak_x86_64
|
||||||
|
<<: *carch_x86_64
|
||||||
|
<<: *flatpak_config
|
||||||
|
only:
|
||||||
|
variables:
|
||||||
|
- $FLATPAK && $X86_64
|
||||||
|
|
||||||
|
flatpak_aarch64:
|
||||||
|
image: arm64v8/ubuntu:16.04
|
||||||
|
tags: [flat_runner_aarch64]
|
||||||
|
cache:
|
||||||
|
paths:
|
||||||
|
- .flatpak-builder
|
||||||
|
key: flatpak_aarch64
|
||||||
|
<<: *carch_aarch64
|
||||||
|
<<: *flatpak_config
|
||||||
|
only:
|
||||||
|
variables:
|
||||||
|
- $FLATPAK && $AARCH64
|
||||||
|
|
||||||
|
appimage_x86_64:
|
||||||
|
image: ubuntu:16.04
|
||||||
|
tags: [x86_64b]
|
||||||
|
<<: *carch_x86_64
|
||||||
|
<<: *appimage_config
|
||||||
|
only:
|
||||||
|
variables:
|
||||||
|
- $APPIMAGE && $X86_64
|
||||||
|
|
||||||
|
appimage_aarch64:
|
||||||
|
image: arm64v8/ubuntu:16.04
|
||||||
|
tags:
|
||||||
|
- arm64
|
||||||
|
<<: *carch_aarch64
|
||||||
|
<<: *appimage_config
|
||||||
|
only:
|
||||||
|
variables:
|
||||||
|
- $APPIMAGE && $AARCH64
|
||||||
|
|
|
||||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "flatpak/content/shared-submodules"]
|
||||||
|
path = flatpak/content/shared-modules
|
||||||
|
url = https://github.com/flathub/shared-modules.git
|
||||||
36
CHANGELOG.md
36
CHANGELOG.md
|
|
@ -7,42 +7,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
This project follows the official Firefox releases, but also uses
|
This project follows the official Firefox releases, but also uses
|
||||||
[Arch Linux Package Versioning](https://wiki.archlinux.org/index.php/Arch_package_guidelines#Package_versioning) to mark individual releases in between versions.
|
[Arch Linux Package Versioning](https://wiki.archlinux.org/index.php/Arch_package_guidelines#Package_versioning) to mark individual releases in between versions.
|
||||||
|
|
||||||
## [88.0-1] - TBD
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- New upstream release 88.0-1
|
|
||||||
- Several yet-to-be documented changes from previous updates that are not yet added to the changelog (tbd)
|
|
||||||
- Switched to building on Ubuntu Bionic (18.04) from Xenial (16.04) as the latter is now EOL/EOS
|
|
||||||
- Releases can from now on be found in the specific subprojects (debian, windows, flatpak, appimage, arch, macos) for consistency; this project will only hold the tarball used for the flatpak and appimage releases
|
|
||||||
|
|
||||||
|
|
||||||
## [85.0.2-2] – 2021-02-15
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- New upstream release 85.0.2
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Fixed about box
|
|
||||||
- Removed pocket menu entry
|
|
||||||
|
|
||||||
## [85.0.2-1] – Unreleased / Skipped
|
|
||||||
|
|
||||||
## [85.0.1-1] – 2021-02-05
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- New upstream release 85.0.2
|
|
||||||
|
|
||||||
## [85.0.1-1] – 2021-02-05
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- New upstream release 85.0.1
|
|
||||||
- New upstream release of included uBlock Origin (1.33.2)
|
|
||||||
|
|
||||||
## [85.0-1] – 2021-01-31
|
## [85.0-1] – 2021-01-31
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
|
||||||
369
KEY
369
KEY
|
|
@ -1,369 +0,0 @@
|
||||||
This file contains the PGP keys of various developers that work on
|
|
||||||
Mozilla and its subprojects (such as Firefox and Thunderbird).
|
|
||||||
|
|
||||||
Please realize that this file itself or the public key servers may be
|
|
||||||
compromised. You are encouraged to validate the authenticity of these keys in
|
|
||||||
an out-of-band manner.
|
|
||||||
|
|
||||||
Mozilla users: pgp < KEY
|
|
||||||
|
|
||||||
pub rsa4096 2015-07-17 [SC]
|
|
||||||
14F26682D0916CDD81E37B6D61B7B526D98F0353
|
|
||||||
uid [ full ] Mozilla Software Releases <release@mozilla.com>
|
|
||||||
sub rsa4096 2015-07-17 [S] [expired: 2017-07-16]
|
|
||||||
sub rsa4096 2017-06-22 [S] [expired: 2019-06-22]
|
|
||||||
sub rsa4096 2019-05-30 [S] [expires: 2021-05-29]
|
|
||||||
sub rsa4096 2021-05-17 [S] [expires: 2023-05-17]
|
|
||||||
|
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
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
|
|
||||||
=81zK
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
||||||
325
PKGBUILD
Normal file
325
PKGBUILD
Normal file
|
|
@ -0,0 +1,325 @@
|
||||||
|
# Maintainer: ohfp
|
||||||
|
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
|
||||||
|
# Contributor: Ionut Biru <ibiru@archlinux.org>
|
||||||
|
# Contributor: Jakub Schmidtke <sjakub@gmail.com>
|
||||||
|
|
||||||
|
pkgname=librewolf
|
||||||
|
_pkgname=LibreWolf
|
||||||
|
# how to get ci vars instead?
|
||||||
|
pkgver=85.0
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Community-maintained fork of Firefox, focused on privacy, security and freedom."
|
||||||
|
arch=(x86_64 aarch64)
|
||||||
|
license=(MPL GPL LGPL)
|
||||||
|
url="https://librewolf-community.gitlab.io/"
|
||||||
|
depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse)
|
||||||
|
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb
|
||||||
|
rust
|
||||||
|
autoconf2.13 clang llvm jack gtk2 nodejs cbindgen nasm
|
||||||
|
python-setuptools python-psutil python-zstandard git binutils lld)
|
||||||
|
optdepends=('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')
|
||||||
|
options=(!emptydirs !makeflags !strip)
|
||||||
|
_arch_svn=https://git.archlinux.org/svntogit/packages.git/plain/trunk
|
||||||
|
_settings_commit=640b375dc02c5b089f678ed16b0232d1c0cc0721
|
||||||
|
source_x86_64=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
|
||||||
|
$pkgname.desktop
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/browser/common.git"
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/settings.git"
|
||||||
|
"megabar.patch"
|
||||||
|
"remove_addons.patch"
|
||||||
|
"unity-menubar.patch")
|
||||||
|
source_aarch64=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
|
||||||
|
$pkgname.desktop
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/browser/common.git"
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/settings.git"
|
||||||
|
"megabar.patch"
|
||||||
|
"remove_addons.patch"
|
||||||
|
"unity-menubar.patch"
|
||||||
|
arm.patch
|
||||||
|
https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/firefox/build-arm-libopus.patch)
|
||||||
|
|
||||||
|
sha256sums_x86_64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50'
|
||||||
|
'0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2'
|
||||||
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
|
'682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5'
|
||||||
|
'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6'
|
||||||
|
'ee302586f5291f809759f5eae3e5bad60b13007d9a9d37ac7f397597eb1d8665')
|
||||||
|
sha256sums_aarch64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50'
|
||||||
|
'0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2'
|
||||||
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
|
'682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5'
|
||||||
|
'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6'
|
||||||
|
'ee302586f5291f809759f5eae3e5bad60b13007d9a9d37ac7f397597eb1d8665'
|
||||||
|
'6ca87d2ac7dc48e6f595ca49ac8151936afced30d268a831c6a064b52037f6b7'
|
||||||
|
'2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
mkdir mozbuild
|
||||||
|
cd firefox-$pkgver
|
||||||
|
|
||||||
|
cat >../mozconfig <<END
|
||||||
|
ac_add_options --enable-application=browser
|
||||||
|
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
|
||||||
|
|
||||||
|
# This supposedly speeds up compilation (We test through dogfooding anyway)
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
ac_add_options --disable-debug
|
||||||
|
|
||||||
|
ac_add_options --prefix=/usr
|
||||||
|
ac_add_options --enable-release
|
||||||
|
ac_add_options --enable-hardening
|
||||||
|
ac_add_options --enable-rust-simd
|
||||||
|
export CC='clang'
|
||||||
|
export CXX='clang++'
|
||||||
|
export AR=llvm-ar
|
||||||
|
export NM=llvm-nm
|
||||||
|
export RANLIB=llvm-ranlib
|
||||||
|
|
||||||
|
# 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/${pkgname}
|
||||||
|
ac_add_options --with-distribution-id=io.gitlab.${pkgname}-community
|
||||||
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||||
|
ac_add_options --allow-addon-sideload
|
||||||
|
export MOZ_REQUIRE_SIGNING=0
|
||||||
|
|
||||||
|
# Features
|
||||||
|
ac_add_options --enable-alsa
|
||||||
|
ac_add_options --enable-jack
|
||||||
|
ac_add_options --disable-crashreporter
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
# 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="-j4"
|
||||||
|
# ac_add_options --enable-linker=gold
|
||||||
|
END
|
||||||
|
|
||||||
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
|
cat >>../mozconfig <<END
|
||||||
|
# taken from manjaro build:
|
||||||
|
ac_add_options --enable-optimize="-g0 -O2"
|
||||||
|
# from ALARM
|
||||||
|
# ac_add_options --disable-webrtc
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
export MOZ_DEBUG_FLAGS=" "
|
||||||
|
export CFLAGS+=" -g0"
|
||||||
|
export CXXFLAGS+=" -g0"
|
||||||
|
export RUSTFLAGS="-Cdebuginfo=0"
|
||||||
|
|
||||||
|
# we should have more than enough RAM on the CI spot instances.
|
||||||
|
# export LDFLAGS+=" -Wl,--no-keep-memory"
|
||||||
|
patch -p1 -i ../arm.patch
|
||||||
|
patch -p1 -i ../build-arm-libopus.patch
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat >>../mozconfig <<END
|
||||||
|
# probably not needed, enabled by default?
|
||||||
|
ac_add_options --enable-optimize
|
||||||
|
END
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove some pre-installed addons that might be questionable
|
||||||
|
patch -p1 -i ../remove_addons.patch
|
||||||
|
|
||||||
|
# Disable (some) megabar functionality
|
||||||
|
# Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations
|
||||||
|
patch -p1 -i ../megabar.patch
|
||||||
|
|
||||||
|
# Debian patch to enable global menubar
|
||||||
|
# disabled until it's updated upstream
|
||||||
|
# also disabled for the default build, as it seems to cause issues in some configurations
|
||||||
|
# patch -p1 -i ../unity-menubar.patch
|
||||||
|
|
||||||
|
# Disabling Pocket
|
||||||
|
sed -i "s/'pocket'/#'pocket'/g" browser/components/moz.build
|
||||||
|
# this one only to remove an annoying error message:
|
||||||
|
sed -i 's#SaveToPocket.init();#// SaveToPocket.init();#g' browser/components/BrowserGlue.jsm
|
||||||
|
|
||||||
|
# Remove Internal Plugin Certificates
|
||||||
|
_cert_sed='s#if (aCert.organizationalUnit == "Mozilla [[:alpha:]]\+") {\n'
|
||||||
|
_cert_sed+='[[:blank:]]\+return AddonManager\.SIGNEDSTATE_[[:upper:]]\+;\n'
|
||||||
|
_cert_sed+='[[:blank:]]\+}#'
|
||||||
|
_cert_sed+='// NOTE: removed#g'
|
||||||
|
sed -z "$_cert_sed" -i toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
||||||
|
|
||||||
|
# allow SearchEngines option in non-ESR builds
|
||||||
|
sed -i 's#"enterprise_only": true,#"enterprise_only": false,#g' browser/components/enterprisepolicies/schemas/policies-schema.json
|
||||||
|
|
||||||
|
_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
|
||||||
|
|
||||||
|
# stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
||||||
|
sed "$_settings_services_sed" -i browser/components/newtab/data/content/activity-stream.bundle.js
|
||||||
|
sed "$_settings_services_sed" -i modules/libpref/init/all.js
|
||||||
|
sed "$_settings_services_sed" -i services/settings/Utils.jsm
|
||||||
|
sed "$_settings_services_sed" -i toolkit/components/search/SearchUtils.jsm
|
||||||
|
|
||||||
|
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 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
|
||||||
|
|
||||||
|
if [[ ! -s merged.profdata ]]; then
|
||||||
|
echo "No profile data produced."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -s jarlog ]]; then
|
||||||
|
echo "No jar log produced."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
./mach build
|
||||||
|
|
||||||
|
echo "Building symbol archive..."
|
||||||
|
./mach buildsymbols
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd firefox-$pkgver
|
||||||
|
DESTDIR="$pkgdir" ./mach install
|
||||||
|
|
||||||
|
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=io.gitlab.${pkgname}-community
|
||||||
|
version=1.0
|
||||||
|
about=LibreWolf
|
||||||
|
|
||||||
|
[Preferences]
|
||||||
|
app.distributor="LibreWolf Community"
|
||||||
|
app.distributor.channel=$pkgname
|
||||||
|
app.partner.librewolf=$pkgname
|
||||||
|
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/librewolf/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/librewolf "\$@"
|
||||||
|
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/librewolf-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
|
||||||
|
}
|
||||||
324
PKGBUILD_global_menubar
Normal file
324
PKGBUILD_global_menubar
Normal file
|
|
@ -0,0 +1,324 @@
|
||||||
|
# Maintainer: ohfp
|
||||||
|
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
|
||||||
|
# Contributor: Ionut Biru <ibiru@archlinux.org>
|
||||||
|
# Contributor: Jakub Schmidtke <sjakub@gmail.com>
|
||||||
|
|
||||||
|
pkgname=librewolf
|
||||||
|
_pkgname=LibreWolf
|
||||||
|
# how to get ci vars instead?
|
||||||
|
pkgver=85.0
|
||||||
|
pkgrel=1
|
||||||
|
pkgdesc="Community-maintained fork of Firefox, focused on privacy, security and freedom."
|
||||||
|
arch=(x86_64 aarch64)
|
||||||
|
license=(MPL GPL LGPL)
|
||||||
|
url="https://librewolf-community.gitlab.io/"
|
||||||
|
depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse)
|
||||||
|
makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb
|
||||||
|
rust
|
||||||
|
autoconf2.13 clang llvm jack gtk2 nodejs cbindgen nasm
|
||||||
|
python-setuptools python-psutil python-zstandard git binutils lld)
|
||||||
|
optdepends=('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')
|
||||||
|
options=(!emptydirs !makeflags !strip)
|
||||||
|
_arch_svn=https://git.archlinux.org/svntogit/packages.git/plain/trunk
|
||||||
|
_settings_commit=640b375dc02c5b089f678ed16b0232d1c0cc0721
|
||||||
|
source_x86_64=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
|
||||||
|
$pkgname.desktop
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/browser/common.git"
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/settings.git"
|
||||||
|
"megabar.patch"
|
||||||
|
"remove_addons.patch"
|
||||||
|
"unity-menubar.patch")
|
||||||
|
source_aarch64=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
|
||||||
|
$pkgname.desktop
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/browser/common.git"
|
||||||
|
"git+https://gitlab.com/${pkgname}-community/settings.git"
|
||||||
|
"megabar.patch"
|
||||||
|
"remove_addons.patch"
|
||||||
|
"unity-menubar.patch"
|
||||||
|
arm.patch
|
||||||
|
https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/firefox/build-arm-libopus.patch)
|
||||||
|
|
||||||
|
sha256sums_x86_64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50'
|
||||||
|
'0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2'
|
||||||
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
|
'682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5'
|
||||||
|
'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6'
|
||||||
|
'ee302586f5291f809759f5eae3e5bad60b13007d9a9d37ac7f397597eb1d8665')
|
||||||
|
sha256sums_aarch64=('5f03712642f5e77de4581d2ba3ee3e87cfa44c3d2fdd8fe0fb56ea05a57f7b50'
|
||||||
|
'0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2'
|
||||||
|
'SKIP'
|
||||||
|
'SKIP'
|
||||||
|
'682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5'
|
||||||
|
'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6'
|
||||||
|
'ee302586f5291f809759f5eae3e5bad60b13007d9a9d37ac7f397597eb1d8665'
|
||||||
|
'6ca87d2ac7dc48e6f595ca49ac8151936afced30d268a831c6a064b52037f6b7'
|
||||||
|
'2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
mkdir mozbuild
|
||||||
|
cd firefox-$pkgver
|
||||||
|
|
||||||
|
cat >../mozconfig <<END
|
||||||
|
ac_add_options --enable-application=browser
|
||||||
|
mk_add_options MOZ_OBJDIR=${PWD@Q}/obj
|
||||||
|
|
||||||
|
# This supposedly speeds up compilation (We test through dogfooding anyway)
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
ac_add_options --disable-debug
|
||||||
|
|
||||||
|
ac_add_options --prefix=/usr
|
||||||
|
ac_add_options --enable-release
|
||||||
|
ac_add_options --enable-hardening
|
||||||
|
ac_add_options --enable-rust-simd
|
||||||
|
export CC='clang'
|
||||||
|
export CXX='clang++'
|
||||||
|
export AR=llvm-ar
|
||||||
|
export NM=llvm-nm
|
||||||
|
export RANLIB=llvm-ranlib
|
||||||
|
|
||||||
|
# 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/${pkgname}
|
||||||
|
ac_add_options --with-distribution-id=io.gitlab.${pkgname}-community
|
||||||
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||||
|
ac_add_options --allow-addon-sideload
|
||||||
|
export MOZ_REQUIRE_SIGNING=0
|
||||||
|
|
||||||
|
# Features
|
||||||
|
ac_add_options --enable-alsa
|
||||||
|
ac_add_options --enable-jack
|
||||||
|
ac_add_options --disable-crashreporter
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
# 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="-j4"
|
||||||
|
# ac_add_options --enable-linker=gold
|
||||||
|
END
|
||||||
|
|
||||||
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
|
cat >>../mozconfig <<END
|
||||||
|
# taken from manjaro build:
|
||||||
|
ac_add_options --enable-optimize="-g0 -O2"
|
||||||
|
# from ALARM
|
||||||
|
# ac_add_options --disable-webrtc
|
||||||
|
|
||||||
|
END
|
||||||
|
|
||||||
|
export MOZ_DEBUG_FLAGS=" "
|
||||||
|
export CFLAGS+=" -g0"
|
||||||
|
export CXXFLAGS+=" -g0"
|
||||||
|
export RUSTFLAGS="-Cdebuginfo=0"
|
||||||
|
|
||||||
|
# we should have more than enough RAM on the CI spot instances.
|
||||||
|
# export LDFLAGS+=" -Wl,--no-keep-memory"
|
||||||
|
patch -p1 -i ../arm.patch
|
||||||
|
patch -p1 -i ../build-arm-libopus.patch
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
cat >>../mozconfig <<END
|
||||||
|
# probably not needed, enabled by default?
|
||||||
|
ac_add_options --enable-optimize
|
||||||
|
END
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove some pre-installed addons that might be questionable
|
||||||
|
patch -p1 -i ../remove_addons.patch
|
||||||
|
|
||||||
|
# Disable (some) megabar functionality
|
||||||
|
# Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations
|
||||||
|
patch -p1 -i ../megabar.patch
|
||||||
|
|
||||||
|
# Debian patch to enable global menubar
|
||||||
|
# disabled until it's updated upstream
|
||||||
|
# patch -p1 -i ../unity-menubar.patch
|
||||||
|
|
||||||
|
# Disabling Pocket
|
||||||
|
sed -i "s/'pocket'/#'pocket'/g" browser/components/moz.build
|
||||||
|
# this one only to remove an annoying error message:
|
||||||
|
sed -i 's#SaveToPocket.init();#// SaveToPocket.init();#g' browser/components/BrowserGlue.jsm
|
||||||
|
|
||||||
|
# Remove Internal Plugin Certificates
|
||||||
|
_cert_sed='s#if (aCert.organizationalUnit == "Mozilla [[:alpha:]]\+") {\n'
|
||||||
|
_cert_sed+='[[:blank:]]\+return AddonManager\.SIGNEDSTATE_[[:upper:]]\+;\n'
|
||||||
|
_cert_sed+='[[:blank:]]\+}#'
|
||||||
|
_cert_sed+='// NOTE: removed#g'
|
||||||
|
sed -z "$_cert_sed" -i toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
||||||
|
|
||||||
|
# allow SearchEngines option in non-ESR builds
|
||||||
|
sed -i 's#"enterprise_only": true,#"enterprise_only": false,#g' browser/components/enterprisepolicies/schemas/policies-schema.json
|
||||||
|
|
||||||
|
_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
|
||||||
|
|
||||||
|
# stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
||||||
|
sed "$_settings_services_sed" -i browser/components/newtab/data/content/activity-stream.bundle.js
|
||||||
|
sed "$_settings_services_sed" -i modules/libpref/init/all.js
|
||||||
|
sed "$_settings_services_sed" -i services/settings/Utils.jsm
|
||||||
|
sed "$_settings_services_sed" -i toolkit/components/search/SearchUtils.jsm
|
||||||
|
|
||||||
|
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 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
|
||||||
|
|
||||||
|
if [[ ! -s merged.profdata ]]; then
|
||||||
|
echo "No profile data produced."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -s jarlog ]]; then
|
||||||
|
echo "No jar log produced."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
./mach build
|
||||||
|
|
||||||
|
echo "Building symbol archive..."
|
||||||
|
./mach buildsymbols
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
cd firefox-$pkgver
|
||||||
|
DESTDIR="$pkgdir" ./mach install
|
||||||
|
|
||||||
|
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=io.gitlab.${pkgname}-community
|
||||||
|
version=1.0
|
||||||
|
about=LibreWolf
|
||||||
|
|
||||||
|
[Preferences]
|
||||||
|
app.distributor="LibreWolf Community"
|
||||||
|
app.distributor.channel=$pkgname
|
||||||
|
app.partner.librewolf=$pkgname
|
||||||
|
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/librewolf/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/librewolf "\$@"
|
||||||
|
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/librewolf-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
|
||||||
|
}
|
||||||
24
README.md
24
README.md
|
|
@ -1,14 +1,24 @@
|
||||||
|
This Repository contains all the required material to build the browser on Linux platforms.
|
||||||
|
|
||||||
### Important
|
### Important
|
||||||
|
|
||||||
The build scripts are currently meant to be run in a CI environment with Docker containers
|
The following instructions are currently outdated. The build scripts are currently meant to be
|
||||||
and gitlab-runners. Updated instructions for local builds or setting up your own
|
run in a CI environment with Docker containers and gitlab-runners. Updated instructions for
|
||||||
appropriate runners will be provided again in the future.
|
local builds or setting up your own appropriate runners will be provided again in the future.
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
* Ubuntu or Linux Mint (Bionic or later)
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
* As this script installs files during the build, it is recommended to run this script in a VM or installation dedicated to building.
|
||||||
|
* You will occassionally need to enter your sudo password. Running this script as root has not been tested
|
||||||
|
* This script has been tested with Linux Mint 19.1
|
||||||
|
* The flatpak build is not ready yet.
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
* Run build.sh inside this folder. (*NOTE*: This is currently only semi-functional. A rework of this script is in the making.)
|
||||||
|
* Packages will be saved in the repository root folder.
|
||||||
|
|
||||||
## Other builds
|
## Other builds
|
||||||
* [Gentoo](https://gitlab.com/librewolf-community/browser/gentoo)
|
* [Gentoo](https://gitlab.com/librewolf-community/browser/gentoo)
|
||||||
* [macOS](https://gitlab.com/librewolf-community/browser/macos)
|
* [macOS](https://gitlab.com/librewolf-community/browser/macos)
|
||||||
* [Debian](https://gitlab.com/librewolf-community/browser/debian)
|
|
||||||
* [Windows](https://gitlab.com/librewolf-community/browser/windows)
|
|
||||||
* [Flatpak](https://gitlab.com/librewolf-community/browser/flatpak)
|
|
||||||
* [AppImage](https://gitlab.com/librewolf-community/browser/appimage)
|
|
||||||
|
|
|
||||||
70
appimage/build_appimage.sh
Executable file
70
appimage/build_appimage.sh
Executable file
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/bin/bash
|
||||||
|
printf "\n\n------------------------------------ APPIMAGE BUILD -----------------------------------------\n";
|
||||||
|
|
||||||
|
# Aborts the script upon any faliure
|
||||||
|
set -e;
|
||||||
|
|
||||||
|
# Sets up script variables
|
||||||
|
BINARY_TARBALL=$1
|
||||||
|
APPIMAGE_FILE=$2
|
||||||
|
_SCRIPT_FOLDER=$(realpath $(dirname $0));
|
||||||
|
_BINARY_TARBALL_EXTRACTED_FOLDER=$_SCRIPT_FOLDER/librewolf;
|
||||||
|
_BUILD_APPIMAGE_FILE=$_SCRIPT_FOLDER/LibreWolf.AppImage;
|
||||||
|
_APPIMAGETOOL_DOWNLOAD_URL=https://github.com/AppImage/AppImageKit/releases/latest/download/appimagetool-${CARCH}.AppImage;
|
||||||
|
_APPIMAGETOOL_EXTRACTED_FOLDER=$_SCRIPT_FOLDER/squashfs-root;
|
||||||
|
_APPIMAGETOOL_FILE=$_SCRIPT_FOLDER/appimagetool;
|
||||||
|
_APPIMAGE_CONTENT_FOLDER=$_SCRIPT_FOLDER/content
|
||||||
|
|
||||||
|
# Installs needed dependencies
|
||||||
|
apt-get update && apt-get -y install file wget bzip2 libdbus-glib-1-2
|
||||||
|
|
||||||
|
if [[ ! -z "${TARBALL_URL}" ]];then
|
||||||
|
wget "${TARBALL_URL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "${BINARY_TARBALL}" ]];then
|
||||||
|
echo "Tarball not provided via pipeline or download."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
|
apt install -y zlib1g-dev
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extracts the binary tarball
|
||||||
|
printf "\nExtracting librewolf binary tarball\n";
|
||||||
|
mkdir $_BINARY_TARBALL_EXTRACTED_FOLDER;
|
||||||
|
tar -xvf $BINARY_TARBALL -C $_BINARY_TARBALL_EXTRACTED_FOLDER;
|
||||||
|
|
||||||
|
# Copy appimage resources to main tarball
|
||||||
|
printf "Copying AppImage resources to binary tarball folder\n";
|
||||||
|
cp -vrT $_APPIMAGE_CONTENT_FOLDER $_BINARY_TARBALL_EXTRACTED_FOLDER;
|
||||||
|
|
||||||
|
# Downloads appimage tool
|
||||||
|
printf "\nDownloading AppImage Tool\n";
|
||||||
|
apt -qq update && apt -qqy install wget;
|
||||||
|
wget $_APPIMAGETOOL_DOWNLOAD_URL -O $_APPIMAGETOOL_FILE;
|
||||||
|
chmod +x $_APPIMAGETOOL_FILE;
|
||||||
|
|
||||||
|
# add appstream metadata
|
||||||
|
install -Dvm644 "$_BINARY_TARBALL_EXTRACTED_FOLDER/io.gitlab.LibreWolf.appdata.xml" "$_BINARY_TARBALL_EXTRACTED_FOLDER/usr/share/metainfo/io.gitlab.LibreWolf.appdata.xml"
|
||||||
|
rm -f "$_BINARY_TARBALL_EXTRACTED_FOLDER/io.gitlab.LibreWolf.appdata.xml"
|
||||||
|
|
||||||
|
# add libdbus-glib-1.so.2, just in case
|
||||||
|
install -Dvm644 "/usr/lib/${CARCH}-linux-gnu/libdbus-glib-1.so.2" "$_BINARY_TARBALL_EXTRACTED_FOLDER/usr/lib/libdbus-glib-1.so."2
|
||||||
|
|
||||||
|
# Generate AppImage
|
||||||
|
printf "\nGenerating AppImage\n";
|
||||||
|
ARCH=${CARCH} $_APPIMAGETOOL_FILE --appimage-extract-and-run\
|
||||||
|
$_BINARY_TARBALL_EXTRACTED_FOLDER $_BUILD_APPIMAGE_FILE;
|
||||||
|
chmod +x $_BUILD_APPIMAGE_FILE;
|
||||||
|
|
||||||
|
# Move AppImage to specified location
|
||||||
|
printf "\nMoving AppImage to specified location\n";
|
||||||
|
mv $_BUILD_APPIMAGE_FILE $APPIMAGE_FILE;
|
||||||
|
|
||||||
|
# Cleanup files
|
||||||
|
printf "\nCleaning up AppImage files\n";
|
||||||
|
rm -rf $_BINARY_TARBALL_EXTRACTED_FOLDER;
|
||||||
|
rm -f $_APPIMAGETOOL_FILE;
|
||||||
|
rm -rf $_APPIMAGETOOL_EXTRACTED_FOLDER;
|
||||||
1
appimage/content/.DirIcon
Symbolic link
1
appimage/content/.DirIcon
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
librewolf.png
|
||||||
14
appimage/content/AppRun
Executable file
14
appimage/content/AppRun
Executable file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/sh
|
||||||
|
SELF=$(readlink -f "$0")
|
||||||
|
HERE=${SELF%/*}
|
||||||
|
export PATH="${HERE}:${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
|
||||||
|
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||||
|
export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"
|
||||||
|
export MOZ_LEGACY_PROFILES=1 # Prevent per installation profiles
|
||||||
|
DEFAULT_XDG_DATA_DIRS='./share/:/usr/share/gnome:/usr/local/share/:/usr/share/'
|
||||||
|
export XDG_DATA_DIRS="${HERE}/usr/share/:${XDG_DATA_DIRS:-$DEFAULT_XDG_DATA_DIRS}"
|
||||||
|
export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"
|
||||||
|
export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"
|
||||||
|
export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
|
||||||
|
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)
|
||||||
|
exec "${EXEC}" "$@"
|
||||||
25
appimage/content/io.gitlab.LibreWolf.desktop
Normal file
25
appimage/content/io.gitlab.LibreWolf.desktop
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=LibreWolf
|
||||||
|
Exec=librewolf %u
|
||||||
|
Icon=librewolf
|
||||||
|
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;
|
||||||
|
StartupWMClass=LibreWolf
|
||||||
|
Categories=Network;WebBrowser;
|
||||||
|
StartupNotify=true
|
||||||
|
Terminal=false
|
||||||
|
X-MultipleArgs=false
|
||||||
|
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||||
|
Actions=new-window;new-private-window;profilemanager;
|
||||||
|
|
||||||
|
[Desktop Action new-window]
|
||||||
|
Name=Open a New Window
|
||||||
|
Exec=librewolf %u
|
||||||
|
|
||||||
|
[Desktop Action new-private-window]
|
||||||
|
Name=Open a New Private Window
|
||||||
|
Exec=librewolf --private-window %u
|
||||||
|
|
||||||
|
[Desktop Action profilemanager]
|
||||||
|
Name=Open the Profile Manager
|
||||||
|
Exec=librewolf --ProfileManager %u
|
||||||
BIN
appimage/content/librewolf.png
Normal file
BIN
appimage/content/librewolf.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
17
arch/01_build.sh
Executable file
17
arch/01_build.sh
Executable file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PKGBUILD_NAME=${PKGBUILD_NAME:-'PKGBUILD'}
|
||||||
|
pacman --noconfirm -Syu --needed base-devel
|
||||||
|
# this is a very ugly fix for recent makepkg-5.1-chmod-shenanigans, which mess up the build process in docker
|
||||||
|
sed -E -i 's/^chmod a-s \"\$BUILDDIR\"$/# chmod a-s \"\$BUILDDIR\"/' `which makepkg`
|
||||||
|
echo 'nobody ALL=(ALL) NOPASSWD: /usr/bin/pacman' >> /etc/sudoers
|
||||||
|
mkdir -p /home/nobody && chown -R nobody /home/nobody
|
||||||
|
usermod -d /home/nobody nobody
|
||||||
|
# we need to un-expire the account, otherwise PAM will complain
|
||||||
|
usermod -e '' nobody
|
||||||
|
chown -R nobody .
|
||||||
|
if [[ ! -z "${GLOBAL_MENUBAR}" ]];then
|
||||||
|
PKGBUILD_NAME='PKGBUILD_global_menubar'
|
||||||
|
fi
|
||||||
|
# makepkg will not run as root
|
||||||
|
sudo -u nobody -E -H makepkg --noconfirm --nosign --syncdeps --cleanbuild -p "${PKGBUILD_NAME}"
|
||||||
|
|
@ -1,26 +1,21 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<component type="desktop-application">
|
<component type="desktop-application">
|
||||||
<id>io.gitlab.librewolf-community</id>
|
<id>io.gitlab.LibreWolf</id>
|
||||||
<launchable type="desktop-id">io.gitlab.librewolf-community.desktop</launchable>
|
<launchable type="desktop-id">io.gitlab.LibreWolf.desktop</launchable>
|
||||||
<name>LibreWolf</name>
|
<name>LibreWolf</name>
|
||||||
<developer_name>LibreWolf Community</developer_name>
|
|
||||||
<summary>LibreWolf Web Browser</summary>
|
<summary>LibreWolf Web Browser</summary>
|
||||||
<metadata_license>CC0-1.0</metadata_license>
|
<metadata_license>CC0-1.0</metadata_license>
|
||||||
<project_license>MPL-2.0</project_license>
|
<project_license>MPL-2.0</project_license>
|
||||||
<screenshots>
|
|
||||||
<screenshot type="default">
|
|
||||||
<image type="source" width="1121" height="902">https://librewolf.net/screenshot.png</image>
|
|
||||||
</screenshot>
|
|
||||||
</screenshots>
|
|
||||||
<description>
|
<description>
|
||||||
<p>LibreWolf</p>
|
<p><strong>LibreWolf</strong></p>
|
||||||
<p>This project is an independent fork of Firefox, with the primary goals of privacy security and user freedom. It is the community run successor to LibreFox.</p>
|
<p>This project is an independent fork of Firefox, with the primary goals of privacy security and user freedom. It is the community run successor to LibreFox.</p>
|
||||||
<p>LibreWolf uses more than 500 privacy/security/performance settings, patches, LibreWolf-Addons (optional) and is designed to minimize data collection and telemetry as much as possible (updater, crashreporter and Firefox’s integrated addons that don’t respect privacy are removed).</p>
|
<p>LibreWolf uses more than 500 privacy/security/performance settings, patches, LibreWolf-Addons (optional) and is designed to minimize data collection and telemetry as much as possible (updater, crashreporter and Firefox’s integrated addons that don’t respect privacy are removed).</p>
|
||||||
<p>LibreWolf is NOT associated with Mozilla or its products.</p>
|
<p><strong>LibreWolf is NOT associated with Mozilla or its products.</strong></p>
|
||||||
<p>Features:</p>
|
<p>Features:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Latest Version of Firefox: LibreWolf is compiled directly from the latest build of Firefox Stable. You will have the the latest features, and security updates.</li>
|
<li>Latest Version of Firefox: LibreWolf is compiled directly from the latest build of Firefox Stable. You will have the the latest features, and security updates.</li>
|
||||||
<li>Completely Independent Build: LibreWolf uses a completely independent build from Firefox and has its own settings, profile folder and installation path. As a result, it can be installed alongside Firefox or any other browser.</li>
|
<li>Completely Independent Build: LibreWolf uses a completely independent build from Firefox and has its own settings, profile folder and installation path. As a result, it can be installed alongside Firefox or any other browser.</li>
|
||||||
|
<li>IJWY (I Just Want You To Shut Up): embedded server links and other calling home functions are removed. In other words, zero unauthorized or background connections by default.</li>
|
||||||
<li>Settings protection: important settings are enforced/locked within librewolf.cfg and policies.json, those settings cannot be changed by addons/updates/LibreWolf itself or unwanted/accidental manipulation; To change those settings you can easily do it by editing librewolf.cfg and policies.json.</li>
|
<li>Settings protection: important settings are enforced/locked within librewolf.cfg and policies.json, those settings cannot be changed by addons/updates/LibreWolf itself or unwanted/accidental manipulation; To change those settings you can easily do it by editing librewolf.cfg and policies.json.</li>
|
||||||
<li>LibreWolf-addons: set of optional LibreWolf extensions</li>
|
<li>LibreWolf-addons: set of optional LibreWolf extensions</li>
|
||||||
<li>Statistics disabled: telemetry and similar functions are disabled</li>
|
<li>Statistics disabled: telemetry and similar functions are disabled</li>
|
||||||
|
|
@ -38,10 +33,10 @@
|
||||||
<keyword>internet</keyword>
|
<keyword>internet</keyword>
|
||||||
<keyword>web</keyword>
|
<keyword>web</keyword>
|
||||||
</keywords>
|
</keywords>
|
||||||
<url type="homepage">https://librewolf.net/</url>
|
<url type="homepage">https://librewolf-community.gitlab.io/</url>
|
||||||
<url type="bugtracker">https://gitlab.com/groups/librewolf-community/-/issues/</url>
|
<url type="bugtracker">https://gitlab.com/groups/librewolf-community/-/issues/</url>
|
||||||
<provides>
|
<provides>
|
||||||
<id>io.gitlab.librewolf-community</id>
|
<id>io.gitlab.LibreWolf</id>
|
||||||
</provides>
|
</provides>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
</component>
|
</component>
|
||||||
|
|
@ -8,8 +8,7 @@ _DEPENDENCIES="wget git xvfb \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
gettext-base \
|
gettext-base \
|
||||||
curl python3 libjack-dev \
|
curl python3 libjack-dev \
|
||||||
python3-dev python-dev \
|
python3-psutil python-psutil python3-dev python-dev \
|
||||||
gnupg \
|
|
||||||
autotools-dev \
|
autotools-dev \
|
||||||
autoconf2.13 \
|
autoconf2.13 \
|
||||||
zip \
|
zip \
|
||||||
|
|
@ -17,6 +16,7 @@ _DEPENDENCIES="wget git xvfb \
|
||||||
libx11-xcb-dev \
|
libx11-xcb-dev \
|
||||||
libxt-dev \
|
libxt-dev \
|
||||||
libxext-dev \
|
libxext-dev \
|
||||||
|
libgtk2.0-dev \
|
||||||
libgtk-3-dev \
|
libgtk-3-dev \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libpango1.0-dev \
|
libpango1.0-dev \
|
||||||
|
|
@ -26,21 +26,20 @@ _DEPENDENCIES="wget git xvfb \
|
||||||
libasound2-dev \
|
libasound2-dev \
|
||||||
libcurl4-openssl-dev \
|
libcurl4-openssl-dev \
|
||||||
libdbus-glib-1-dev \
|
libdbus-glib-1-dev \
|
||||||
|
hardening-wrapper \
|
||||||
lsb-release \
|
lsb-release \
|
||||||
libiw-dev \
|
libiw-dev \
|
||||||
mesa-common-dev \
|
mesa-common-dev \
|
||||||
libnotify-dev \
|
libnotify-dev \
|
||||||
libxrender-dev \
|
libxrender-dev \
|
||||||
libpulse-dev \
|
libpulse-dev \
|
||||||
libssl-dev \
|
|
||||||
yasm \
|
yasm \
|
||||||
unzip \
|
unzip \
|
||||||
dbus-x11 \
|
dbus-x11 \
|
||||||
python \
|
python \
|
||||||
libffi-dev \
|
|
||||||
nodejs-mozilla \
|
nodejs-mozilla \
|
||||||
nasm-mozilla \
|
nasm-mozilla \
|
||||||
locales"
|
gcc-mozilla"
|
||||||
|
|
||||||
# cargo \
|
# cargo \
|
||||||
# rustc \
|
# rustc \
|
||||||
|
|
@ -55,24 +54,15 @@ apt-get -y -qq install $_DEPENDENCIES;
|
||||||
if [[ $CARCH == 'x86_64' ]];then
|
if [[ $CARCH == 'x86_64' ]];then
|
||||||
# Installs (non-ancient) clang
|
# Installs (non-ancient) clang
|
||||||
apt install -y software-properties-common apt-transport-https ca-certificates
|
apt install -y software-properties-common apt-transport-https ca-certificates
|
||||||
|
apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-11 main"
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add
|
||||||
apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-13 main"
|
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get -y install clang-13 libclang-13-dev
|
apt-get -y install clang-11 libclang-11-dev
|
||||||
else
|
else
|
||||||
# seems like we can use 13 here as well, finally?
|
apt-get -y install clang-8 libclang-8-dev
|
||||||
apt install -y software-properties-common apt-transport-https ca-certificates
|
|
||||||
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add
|
|
||||||
apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-13 main"
|
|
||||||
apt-get update
|
|
||||||
apt-get -y install clang-13 libclang-13-dev
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# avoid python parsing files as ascii instead of utf8 and complaining
|
|
||||||
locale-gen en_US.UTF-8
|
|
||||||
|
|
||||||
# we need a more recent rust
|
# we need a more recent rust
|
||||||
# …to test if a fix in 1.57 magically fixes aarch64 hanging
|
|
||||||
curl https://sh.rustup.rs -o rustup.sh
|
curl https://sh.rustup.rs -o rustup.sh
|
||||||
bash rustup.sh -y
|
bash rustup.sh -y
|
||||||
source /root/.cargo/env
|
source /root/.cargo/env
|
||||||
|
|
@ -10,19 +10,10 @@ fi
|
||||||
# Setup Script Variables
|
# Setup Script Variables
|
||||||
SOURCE_FOLDER=$1;
|
SOURCE_FOLDER=$1;
|
||||||
_SOURCE_CODE_URL="https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz";
|
_SOURCE_CODE_URL="https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz";
|
||||||
_SIG_URL="$_SOURCE_CODE_URL.asc";
|
|
||||||
_SOURCE_TAR="firefox-${pkgver}.tar.xz"
|
_SOURCE_TAR="firefox-${pkgver}.tar.xz"
|
||||||
_SOURCE_SIG="$_SOURCE_TAR.asc"
|
|
||||||
_GPG_HOMEDIR=$(mktemp -d)
|
|
||||||
|
|
||||||
# Downloading and Extracting Firefox Source Code
|
# Downloading and Extracting Firefox Source Code
|
||||||
printf "\nDownloading Firefox Source Code\n";
|
printf "\nDownloading Firefox Source Code\n";
|
||||||
wget -O $_SOURCE_TAR $_SOURCE_CODE_URL
|
wget -O $_SOURCE_TAR $_SOURCE_CODE_URL
|
||||||
wget -O $_SOURCE_SIG $_SIG_URL
|
|
||||||
|
|
||||||
# Verify signature
|
|
||||||
gpg --homedir "$_GPG_HOMEDIR" --import KEY
|
|
||||||
gpgv --keyring "$_GPG_HOMEDIR"/pubring.kbx "$_SOURCE_SIG" "$_SOURCE_TAR"
|
|
||||||
|
|
||||||
mkdir -p $SOURCE_FOLDER
|
mkdir -p $SOURCE_FOLDER
|
||||||
tar -x --strip-components=1 -C $SOURCE_FOLDER -f $_SOURCE_TAR
|
tar -x --strip-components=1 -C $SOURCE_FOLDER -f $_SOURCE_TAR
|
||||||
162
binary_tarball/scripts/3_Configure_Source_Code.sh
Executable file
162
binary_tarball/scripts/3_Configure_Source_Code.sh
Executable file
|
|
@ -0,0 +1,162 @@
|
||||||
|
#!/bin/bash
|
||||||
|
printf "\n\n------------------------------ FINAL PREBUILD CONFIGURATION ---------------------------------\n";
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Setup Script Variables
|
||||||
|
srcdir=$1;
|
||||||
|
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../../)}
|
||||||
|
_COMMON_REPO='https://gitlab.com/librewolf-community/browser/common.git';
|
||||||
|
_MOZBUILD=$srcdir/../mozbuild
|
||||||
|
|
||||||
|
mkdir -p ${_MOZBUILD}
|
||||||
|
|
||||||
|
# Copy Source Code Changes to Source Code
|
||||||
|
printf "\nCopying branding and source code changes to firefox source code\n";
|
||||||
|
git clone $_COMMON_REPO common;
|
||||||
|
cp -r common/source_files/* $srcdir/;
|
||||||
|
rm -rf common;
|
||||||
|
|
||||||
|
cd $srcdir
|
||||||
|
|
||||||
|
cat >${CI_PROJECT_DIR}/mozconfig <<END
|
||||||
|
ac_add_options --enable-application=browser
|
||||||
|
mk_add_options MOZ_OBJDIR=${srcdir}/firefox-${pkgver}/obj
|
||||||
|
|
||||||
|
# to build on ubuntu and pick up clang
|
||||||
|
ac_add_options NODEJS=/usr/lib/nodejs-mozilla/bin/node
|
||||||
|
ac_add_options NASM=/usr/lib/nasm-mozilla/bin/nasm
|
||||||
|
|
||||||
|
# This supposedly speeds up compilation (We test through dogfooding anyway)
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
ac_add_options --disable-debug
|
||||||
|
|
||||||
|
ac_add_options --prefix=/usr
|
||||||
|
ac_add_options --enable-release
|
||||||
|
ac_add_options --enable-hardening
|
||||||
|
ac_add_options --enable-rust-simd
|
||||||
|
|
||||||
|
# Branding
|
||||||
|
ac_add_options --enable-update-channel=release
|
||||||
|
ac_add_options --with-app-name=librewolf
|
||||||
|
ac_add_options --with-app-basename=LibreWolf
|
||||||
|
ac_add_options --with-branding=browser/branding/librewolf
|
||||||
|
ac_add_options --with-distribution-id=io.gitlab.librewolf-community
|
||||||
|
ac_add_options --with-unsigned-addon-scopes=app,system
|
||||||
|
ac_add_options --allow-addon-sideload
|
||||||
|
export MOZ_REQUIRE_SIGNING=0
|
||||||
|
|
||||||
|
# System libraries
|
||||||
|
# ac_add_options --with-system-nspr
|
||||||
|
# ac_add_options --with-system-nss
|
||||||
|
|
||||||
|
# Features
|
||||||
|
ac_add_options --enable-alsa
|
||||||
|
ac_add_options --enable-jack
|
||||||
|
ac_add_options --disable-crashreporter
|
||||||
|
ac_add_options --disable-updater
|
||||||
|
ac_add_options --disable-tests
|
||||||
|
|
||||||
|
# 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="-j4"
|
||||||
|
# ac_add_options --enable-linker=gold
|
||||||
|
END
|
||||||
|
|
||||||
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
|
cat >>${CI_PROJECT_DIR}/mozconfig <<END
|
||||||
|
# taken from manjaro build:
|
||||||
|
ac_add_options --enable-optimize="-g0 -O2"
|
||||||
|
|
||||||
|
# from ALARM
|
||||||
|
# should only fail on armv7x
|
||||||
|
# ac_add_options --disable-webrtc
|
||||||
|
|
||||||
|
export CC='clang-8'
|
||||||
|
export CXX='clang++-8'
|
||||||
|
export AR=llvm-ar-8
|
||||||
|
export NM=llvm-nm-8
|
||||||
|
export RANLIB=llvm-ranlib-8
|
||||||
|
END
|
||||||
|
|
||||||
|
export MOZ_DEBUG_FLAGS=" "
|
||||||
|
export CFLAGS+=" -g0"
|
||||||
|
export CXXFLAGS+=" -g0"
|
||||||
|
export RUSTFLAGS="-Cdebuginfo=0"
|
||||||
|
|
||||||
|
export LDFLAGS+=" -Wl,--no-keep-memory -Wl"
|
||||||
|
patch -p1 -i ${CI_PROJECT_DIR}/arm.patch
|
||||||
|
wget https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/firefox/build-arm-libopus.patch -O ${CI_PROJECT_DIR}/build-arm-libopus.patch
|
||||||
|
patch -p1 -i ${CI_PROJECT_DIR}/build-arm-libopus.patch
|
||||||
|
|
||||||
|
else
|
||||||
|
cat >>${CI_PROJECT_DIR}/mozconfig <<END
|
||||||
|
# ubuntu seems to recommend this
|
||||||
|
ac_add_options --disable-elf-hack
|
||||||
|
|
||||||
|
export CC='clang-11'
|
||||||
|
export CXX='clang++-11'
|
||||||
|
export AR=llvm-ar-11
|
||||||
|
export NM=llvm-nm-11
|
||||||
|
export RANLIB=llvm-ranlib-11
|
||||||
|
|
||||||
|
# probably not needed, enabled by default?
|
||||||
|
ac_add_options --enable-optimize
|
||||||
|
END
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# hopefully the magic sauce that makes things build on 16.04 and later on work "everywhere":
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/lower-python3-requirement.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/armhf-reduce-linker-memory-use.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/build-with-libstdc++-7.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/fix-armhf-webrtc-build.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/webrtc-fix-compiler-flags-for-armhf.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/reduce-rust-debuginfo.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/relax-cargo-dep.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/use-system-icupkg.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/python3-remove-variable-annotations.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/python3-remove-fstrings.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/python3-remove-pep487.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/silence-gtk-style-assertions.patch"
|
||||||
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/sandbox-update-arm-syscall-numbers.patch"
|
||||||
|
|
||||||
|
# Remove some pre-installed addons that might be questionable
|
||||||
|
patch -p1 -i ${CI_PROJECT_DIR}/remove_addons.patch
|
||||||
|
|
||||||
|
# Disable (some) megabar functionality
|
||||||
|
# Adapted from https://github.com/WesleyBranton/userChrome.css-Customizations
|
||||||
|
patch -p1 -i ${CI_PROJECT_DIR}/megabar.patch
|
||||||
|
|
||||||
|
# Debian patch to enable global menubar
|
||||||
|
if [[ ! -z "${GLOBAL_MENUBAR}" ]];then
|
||||||
|
patch -p1 -i ${CI_PROJECT_DIR}/unity-menubar.patch
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Disabling Pocket
|
||||||
|
printf "\nDisabling Pocket\n";
|
||||||
|
sed -i "s/'pocket'/#'pocket'/g" browser/components/moz.build
|
||||||
|
# this one only to remove an annoying error message:
|
||||||
|
sed -i 's#SaveToPocket.init();#// SaveToPocket.init();#g' browser/components/BrowserGlue.jsm
|
||||||
|
|
||||||
|
# Remove Internal Plugin Certificates
|
||||||
|
_cert_sed='s#if (aCert.organizationalUnit == "Mozilla [[:alpha:]]\+") {\n'
|
||||||
|
_cert_sed+='[[:blank:]]\+return AddonManager\.SIGNEDSTATE_[[:upper:]]\+;\n'
|
||||||
|
_cert_sed+='[[:blank:]]\+}#'
|
||||||
|
_cert_sed+='// NOTE: removed#g'
|
||||||
|
sed -z "$_cert_sed" -i toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
||||||
|
|
||||||
|
# allow SearchEngines option in non-ESR builds
|
||||||
|
sed -i 's#"enterprise_only": true,#"enterprise_only": false,#g' browser/components/enterprisepolicies/schemas/policies-schema.json
|
||||||
|
|
||||||
|
# stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
||||||
|
_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
|
||||||
|
sed "$_settings_services_sed" -i browser/components/newtab/data/content/activity-stream.bundle.js
|
||||||
|
sed "$_settings_services_sed" -i modules/libpref/init/all.js
|
||||||
|
sed "$_settings_services_sed" -i services/settings/Utils.jsm
|
||||||
|
sed "$_settings_services_sed" -i toolkit/components/search/SearchUtils.jsm
|
||||||
|
|
@ -6,7 +6,7 @@ set -e
|
||||||
# Setup Script Variables
|
# Setup Script Variables
|
||||||
srcdir=$1;
|
srcdir=$1;
|
||||||
OUTPUT_TARBALL=$2;
|
OUTPUT_TARBALL=$2;
|
||||||
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../)}
|
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../../)}
|
||||||
_SOURCE_CODE_BINARY_TARBALL_LOCATION="${srcdir}/firefox-${pkgver}/obj/dist/librewolf*.tar.bz2";
|
_SOURCE_CODE_BINARY_TARBALL_LOCATION="${srcdir}/firefox-${pkgver}/obj/dist/librewolf*.tar.bz2";
|
||||||
_MOZBUILD=$srcdir/../mozbuild
|
_MOZBUILD=$srcdir/../mozbuild
|
||||||
export DEB_BUILD_HARDENING=1
|
export DEB_BUILD_HARDENING=1
|
||||||
|
|
@ -16,13 +16,6 @@ export DEB_BUILD_HARDENING_FORMAT=1
|
||||||
export DEB_BUILD_HARDENING_PIE=1
|
export DEB_BUILD_HARDENING_PIE=1
|
||||||
# export PATH=/usr/lib/nasm-mozilla/bin:$PATH
|
# export PATH=/usr/lib/nasm-mozilla/bin:$PATH
|
||||||
|
|
||||||
# avoid python parsing files as ascii instead of utf8 and complaining
|
|
||||||
export LANG='en_US.UTF-8'
|
|
||||||
export LANGUAGE='en_US:en'
|
|
||||||
export LC_ALL='en_US.UTF-8'
|
|
||||||
|
|
||||||
|
|
||||||
# add cargo binary to path
|
|
||||||
source /root/.cargo/env
|
source /root/.cargo/env
|
||||||
|
|
||||||
# we do change / unset some of them later, but setting them as set by Arch
|
# we do change / unset some of them later, but setting them as set by Arch
|
||||||
|
|
@ -42,7 +35,7 @@ fi
|
||||||
|
|
||||||
export MOZ_NOSPAM=1
|
export MOZ_NOSPAM=1
|
||||||
export MOZBUILD_STATE_PATH="${_MOZBUILD}"
|
export MOZBUILD_STATE_PATH="${_MOZBUILD}"
|
||||||
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
|
export MACH_USE_SYSTEM_PYTHON=1
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
export MOZ_DEBUG_FLAGS=" "
|
export MOZ_DEBUG_FLAGS=" "
|
||||||
|
|
@ -69,8 +62,11 @@ cd $srcdir;
|
||||||
|
|
||||||
rm -f mozconfig
|
rm -f mozconfig
|
||||||
|
|
||||||
|
# add cargo binary to path
|
||||||
|
# source /root/.cargo/env
|
||||||
|
|
||||||
# install cbindgen
|
# install cbindgen
|
||||||
cargo install --version 0.24.3 cbindgen
|
cargo install --version 0.16.0 cbindgen
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
|
|
||||||
|
|
@ -8,10 +8,10 @@ set -e;
|
||||||
BINARY_TARBALL=$1;
|
BINARY_TARBALL=$1;
|
||||||
TOGGLE_SETTINGS_SCRIPT=$2;
|
TOGGLE_SETTINGS_SCRIPT=$2;
|
||||||
LAUNCHER_SCRIPT=$3;
|
LAUNCHER_SCRIPT=$3;
|
||||||
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../)}
|
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../../)}
|
||||||
_SCRIPT_FOLDER=$(realpath $(dirname $0));
|
_SCRIPT_FOLDER=$(realpath $(dirname $0));
|
||||||
_EXTRACTED_TARBALL_FOLDER=$_SCRIPT_FOLDER/librewolf;
|
_EXTRACTED_TARBALL_FOLDER=$_SCRIPT_FOLDER/librewolf;
|
||||||
_SETTINGS_TAG=${SETTINGS_TAG:-'7.4'}
|
_SETTINGS_COMMIT=640b375dc02c5b089f678ed16b0232d1c0cc0721
|
||||||
_SETTINGS_REPO='https://gitlab.com/librewolf-community/settings.git';
|
_SETTINGS_REPO='https://gitlab.com/librewolf-community/settings.git';
|
||||||
|
|
||||||
# Extracts the binary tarball
|
# Extracts the binary tarball
|
||||||
|
|
@ -24,7 +24,7 @@ printf "\nCopying librewolf settings to extracted binary tarball\n";
|
||||||
|
|
||||||
git clone $_SETTINGS_REPO $_EXTRACTED_TARBALL_FOLDER/settings;
|
git clone $_SETTINGS_REPO $_EXTRACTED_TARBALL_FOLDER/settings;
|
||||||
cd $_EXTRACTED_TARBALL_FOLDER/settings
|
cd $_EXTRACTED_TARBALL_FOLDER/settings
|
||||||
git checkout $_SETTINGS_TAG
|
git checkout $_SETTINGS_COMMIT
|
||||||
cd -
|
cd -
|
||||||
# no need to keep that in there:
|
# no need to keep that in there:
|
||||||
rm -rf "${_EXTRACTED_TARBALL_FOLDER}/settings/.git";
|
rm -rf "${_EXTRACTED_TARBALL_FOLDER}/settings/.git";
|
||||||
|
|
@ -54,7 +54,7 @@ END
|
||||||
|
|
||||||
# Create Appstream metadate file
|
# Create Appstream metadate file
|
||||||
export DATE=$(date +%Y-%m-%d)
|
export DATE=$(date +%Y-%m-%d)
|
||||||
envsubst < ${_SCRIPT_FOLDER}/../content/io.gitlab.librewolf-community.appdata.xml.in > ${_EXTRACTED_TARBALL_FOLDER}/io.gitlab.librewolf-community.appdata.xml
|
envsubst < ${_SCRIPT_FOLDER}/../content/io.gitlab.LibreWolf.appdata.xml.in > ${_EXTRACTED_TARBALL_FOLDER}/io.gitlab.LibreWolf.appdata.xml
|
||||||
|
|
||||||
# Repacks the binary tarball
|
# Repacks the binary tarball
|
||||||
printf "\nRecompressing binary tarball\n";
|
printf "\nRecompressing binary tarball\n";
|
||||||
16
build.sh
Executable file
16
build.sh
Executable file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
printf "\n------------------------------------- SCRIPT SETUP ------------------------------------------\n";
|
||||||
|
|
||||||
|
# Aborts the script upon any faliure
|
||||||
|
set -e;
|
||||||
|
|
||||||
|
# Sets up script variables
|
||||||
|
SCRIPT_FOLDER=$(realpath $(dirname $0));
|
||||||
|
BINARY_TARBALL=$SCRIPT_FOLDER/LibreWolf.tar.bz2;
|
||||||
|
APPIMAGE_FILE=$SCRIPT_FOLDER/LibreWolf.AppImage;
|
||||||
|
FLATPAK_REPO=$SCRIPT_FOLDER/librewolf-flatpak-repo;
|
||||||
|
FLATPAK_BUNDLE=$SCRIPT_FOLDER/LibreWolf.flatpak;
|
||||||
|
|
||||||
|
$SCRIPT_FOLDER/binary_tarball/build_tarball.sh $BINARY_TARBALL;
|
||||||
|
$SCRIPT_FOLDER/appimage/build_appimage.sh $BINARY_TARBALL $APPIMAGE_FILE;
|
||||||
|
$SCRIPT_FOLDER/flatpak/build_flatpak.sh $BINARY_TARBALL $FLATPAK_REPO $FLATPAK_BUNDLE;
|
||||||
|
|
@ -5,31 +5,23 @@ Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
||||||
|
|
||||||
--- a/build/moz.configure/toolchain.configure
|
--- a/build/moz.configure/toolchain.configure
|
||||||
+++ b/build/moz.configure/toolchain.configure
|
+++ b/build/moz.configure/toolchain.configure
|
||||||
@@ -1699,6 +1699,7 @@
|
@@ -2056,15 +2056,16 @@ def select_linker(linker, c_compiler, de
|
||||||
android_platform,
|
set_config("LINKER_KIND", select_linker.KIND)
|
||||||
c_compiler,
|
|
||||||
developer_options,
|
|
||||||
+ host,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
deps = depends_if(
|
|
||||||
@@ -1709,6 +1710,7 @@
|
|
||||||
dependable(None),
|
|
||||||
host_c_compiler,
|
|
||||||
developer_options,
|
|
||||||
+ host,
|
|
||||||
)
|
|
||||||
|
|
||||||
@deps
|
|
||||||
@@ -1721,8 +1723,11 @@
|
-@depends_if(select_linker, macos_sdk)
|
||||||
android_platform,
|
-def linker_ldflags(linker, macos_sdk):
|
||||||
c_compiler,
|
+@depends_if(select_linker, macos_sdk, host)
|
||||||
developer_options,
|
+def linker_ldflags(linker, macos_sdk, host):
|
||||||
+ host,
|
|
||||||
):
|
|
||||||
flags = list((linker and linker.LINKER_FLAG) or [])
|
flags = list((linker and linker.LINKER_FLAG) or [])
|
||||||
+ if host.cpu == "arm":
|
if macos_sdk:
|
||||||
|
if linker and linker.KIND == "ld64":
|
||||||
|
flags.append("-Wl,-syslibroot,%s" % macos_sdk)
|
||||||
|
else:
|
||||||
|
flags.append("-Wl,--sysroot=%s" % macos_sdk)
|
||||||
|
-
|
||||||
|
+ elif host.cpu == "arm":
|
||||||
+ flags.append("-Wl,--no-keep-memory")
|
+ flags.append("-Wl,--no-keep-memory")
|
||||||
# rpath-link is irrelevant to wasm, see for more info https://github.com/emscripten-core/emscripten/issues/11076.
|
return flags
|
||||||
if sysroot.path and multiarch_dir and target.os != "WASI":
|
|
||||||
for d in ("lib", "usr/lib"):
|
|
||||||
|
|
|
||||||
54
deb_patches/build-with-libstdc++-7.patch
Normal file
54
deb_patches/build-with-libstdc++-7.patch
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
Description: point clang to the toolchain provided by the gcc-mozilla package (version 7 required for C++ 17), and statically link against libstdc++
|
||||||
|
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
||||||
|
Bug-Ubuntu: https://launchpad.net/bugs/1856861
|
||||||
|
|
||||||
|
--- a/build/moz.configure/toolchain.configure
|
||||||
|
+++ b/build/moz.configure/toolchain.configure
|
||||||
|
@@ -1252,6 +1252,7 @@ try_compile(includes=['cstddef'],
|
||||||
|
"#endif",
|
||||||
|
]
|
||||||
|
),
|
||||||
|
+ flags=["--gcc-toolchain=/usr/lib/gcc-mozilla"],
|
||||||
|
check_msg="for new enough STL headers from libstdc++",
|
||||||
|
when=needs_libstdcxx_newness_check,
|
||||||
|
onerror=die_on_old_libstdcxx,
|
||||||
|
@@ -1433,6 +1434,10 @@ set_config('_DEPEND_CFLAGS', depend_cfla
|
||||||
|
set_config("_HOST_DEPEND_CFLAGS", depend_cflags(host_c_compiler))
|
||||||
|
|
||||||
|
|
||||||
|
+add_old_configure_assignment("CFLAGS", ["--gcc-toolchain=/usr/lib/gcc-mozilla"])
|
||||||
|
+add_old_configure_assignment("CXXFLAGS", ["--gcc-toolchain=/usr/lib/gcc-mozilla"])
|
||||||
|
+
|
||||||
|
+
|
||||||
|
@depends(c_compiler)
|
||||||
|
def preprocess_option(compiler):
|
||||||
|
# The uses of PREPROCESS_OPTION depend on the spacing for -o/-Fi.
|
||||||
|
@@ -2137,6 +2142,7 @@ def linker_ldflags(linker, macos_sdk, ho
|
||||||
|
flags.append("-Wl,--sysroot=%s" % macos_sdk)
|
||||||
|
elif host.cpu == "arm":
|
||||||
|
flags.append("-Wl,--no-keep-memory")
|
||||||
|
+ flags.append("-static-libstdc++")
|
||||||
|
return flags
|
||||||
|
|
||||||
|
|
||||||
|
--- a/servo/components/style/build_gecko.rs
|
||||||
|
+++ b/servo/components/style/build_gecko.rs
|
||||||
|
@@ -149,6 +149,8 @@ impl BuilderExt for Builder {
|
||||||
|
builder = builder.with_rustfmt(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ builder = builder.clang_arg("--gcc-toolchain=/usr/lib/gcc-mozilla");
|
||||||
|
+
|
||||||
|
for dir in SEARCH_PATHS.iter() {
|
||||||
|
builder = builder.clang_arg("-I").clang_arg(dir.to_str().unwrap());
|
||||||
|
}
|
||||||
|
--- a/layout/style/test/moz.build
|
||||||
|
+++ b/layout/style/test/moz.build
|
||||||
|
@@ -18,6 +18,7 @@ DIRS += ['gtest']
|
||||||
|
"host_ListCSSProperties",
|
||||||
|
]
|
||||||
|
)
|
||||||
|
+HOST_CXXFLAGS += ["--gcc-toolchain=/usr/lib/gcc-mozilla"]
|
||||||
|
|
||||||
|
MOCHITEST_MANIFESTS += [
|
||||||
|
"mochitest.ini",
|
||||||
65
deb_patches/fix-armhf-webrtc-build.patch
Normal file
65
deb_patches/fix-armhf-webrtc-build.patch
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
--- a/third_party/libwebrtc/webrtc/system_wrappers/cpu_features_linux_gn/moz.build
|
||||||
|
+++ b/third_party/libwebrtc/webrtc/system_wrappers/cpu_features_linux_gn/moz.build
|
||||||
|
@@ -31,10 +31,6 @@ LOCAL_INCLUDES += [
|
||||||
|
"/third_party/libwebrtc/webrtc/"
|
||||||
|
]
|
||||||
|
|
||||||
|
-UNIFIED_SOURCES += [
|
||||||
|
- "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
|
||||||
|
-]
|
||||||
|
-
|
||||||
|
if not CONFIG["MOZ_DEBUG"]:
|
||||||
|
|
||||||
|
DEFINES["DYNAMIC_ANNOTATIONS_ENABLED"] = "0"
|
||||||
|
@@ -53,20 +49,36 @@ if CONFIG["CPU_ARCH"] == "aarch64":
|
||||||
|
DEFINES["WEBRTC_ARCH_ARM64"] = True
|
||||||
|
DEFINES["WEBRTC_HAS_NEON"] = True
|
||||||
|
|
||||||
|
-if CONFIG["CPU_ARCH"] == "arm":
|
||||||
|
-
|
||||||
|
- CFLAGS += [
|
||||||
|
- "-mfpu=neon"
|
||||||
|
+ UNIFIED_SOURCES += [
|
||||||
|
+ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
|
||||||
|
]
|
||||||
|
|
||||||
|
+if CONFIG["CPU_ARCH"] == "arm":
|
||||||
|
+
|
||||||
|
DEFINES["WEBRTC_ARCH_ARM"] = True
|
||||||
|
DEFINES["WEBRTC_ARCH_ARM_V7"] = True
|
||||||
|
DEFINES["WEBRTC_HAS_NEON"] = True
|
||||||
|
|
||||||
|
+if CONFIG["CPU_ARCH"] == "ppc64":
|
||||||
|
+
|
||||||
|
+ UNIFIED_SOURCES += [
|
||||||
|
+ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
|
||||||
|
+ ]
|
||||||
|
+
|
||||||
|
if CONFIG["CPU_ARCH"] == "x86":
|
||||||
|
|
||||||
|
CFLAGS += [
|
||||||
|
"-msse2"
|
||||||
|
]
|
||||||
|
|
||||||
|
+ UNIFIED_SOURCES += [
|
||||||
|
+ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
|
||||||
|
+ ]
|
||||||
|
+
|
||||||
|
+if CONFIG["CPU_ARCH"] == "x86_64":
|
||||||
|
+
|
||||||
|
+ UNIFIED_SOURCES += [
|
||||||
|
+ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
|
||||||
|
+ ]
|
||||||
|
+
|
||||||
|
Library("cpu_features_linux_gn")
|
||||||
|
--- a/third_party/libwebrtc/webrtc/system_wrappers/BUILD.gn
|
||||||
|
+++ b/third_party/libwebrtc/webrtc/system_wrappers/BUILD.gn
|
||||||
|
@@ -187,7 +187,7 @@ if (is_android && !build_with_mozilla) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-if (is_linux) {
|
||||||
|
+if (is_linux && target_cpu != "arm") {
|
||||||
|
rtc_static_library("cpu_features_linux") {
|
||||||
|
sources = [
|
||||||
|
"source/cpu_features_linux.c",
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
Description: Remove an extra constant definition that is now being generated by newer versions of cbindgen (0.24),
|
|
||||||
and causing build failures because it is defined in several places.
|
|
||||||
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
|
||||||
Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1773259
|
|
||||||
Forwarded: not-needed
|
|
||||||
|
|
||||||
--- a/gfx/webrender_bindings/webrender_ffi.h
|
|
||||||
+++ b/gfx/webrender_bindings/webrender_ffi.h
|
|
||||||
@@ -73,8 +73,6 @@ struct WrPipelineInfo;
|
|
||||||
struct WrPipelineIdAndEpoch;
|
|
||||||
using WrPipelineIdEpochs = nsTArray<WrPipelineIdAndEpoch>;
|
|
||||||
|
|
||||||
-const uint64_t ROOT_CLIP_CHAIN = ~0;
|
|
||||||
-
|
|
||||||
} // namespace wr
|
|
||||||
} // namespace mozilla
|
|
||||||
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
Description: Fix FTBFS on bionic. Compiler errors:
|
|
||||||
In file included from Unified_cpp_widget_gtk1.cpp:2:
|
|
||||||
/<<BUILDDIR>>/firefox-92.0~b2+build1/widget/gtk/WaylandBuffer.cpp:261:39: error: unknown type name 'GLContext'; did you mean 'EGLContext'?
|
|
||||||
const LayoutDeviceIntSize& aSize, GLContext* aGL) {
|
|
||||||
^~~~~~~~~
|
|
||||||
|
|
||||||
Author: Rico Tzschichholz <ricotz@ubuntu.com>
|
|
||||||
|
|
||||||
--- a/widget/gtk/WaylandBuffer.cpp
|
|
||||||
+++ b/widget/gtk/WaylandBuffer.cpp
|
|
||||||
@@ -258,7 +258,7 @@
|
|
||||||
|
|
||||||
/* static */
|
|
||||||
RefPtr<WaylandBufferDMABUF> WaylandBufferDMABUF::Create(
|
|
||||||
- const LayoutDeviceIntSize& aSize, GLContext* aGL) {
|
|
||||||
+ const LayoutDeviceIntSize& aSize, gl::GLContext* aGL) {
|
|
||||||
RefPtr<WaylandBufferDMABUF> buffer = new WaylandBufferDMABUF(aSize);
|
|
||||||
|
|
||||||
const auto flags =
|
|
||||||
71
deb_patches/lower-python3-requirement.patch
Normal file
71
deb_patches/lower-python3-requirement.patch
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
# Revert 6700a8dfaeb1e303955acc05dabd245b9ae3c97e
|
||||||
|
|
||||||
|
Bug 1622963 - Require python 3.6 for the build system. r=firefox-build-system-reviewers,rstewart
|
||||||
|
|
||||||
|
Differential Revision: https://phabricator.services.mozilla.com/D77754
|
||||||
|
|
||||||
|
diff -r 81f3a9d8e5f4 build/moz.configure/init.configure
|
||||||
|
--- a/build/moz.configure/init.configure Tue Nov 17 21:27:44 2020 +0000
|
||||||
|
+++ b/build/moz.configure/init.configure Wed Nov 18 08:22:17 2020 +0100
|
||||||
|
@@ -216,7 +216,7 @@
|
||||||
|
# Python 3
|
||||||
|
# ========
|
||||||
|
|
||||||
|
-option(env="PYTHON3", nargs=1, help="Python 3 interpreter (3.6 or later)")
|
||||||
|
+option(env="PYTHON3", nargs=1, help="Python 3 interpreter (3.5 or later)")
|
||||||
|
|
||||||
|
option(
|
||||||
|
env="VIRTUALENV_NAME",
|
||||||
|
@@ -327,7 +327,7 @@
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Fall back to the search routine.
|
||||||
|
- python, version = find_python3_executable(min_version="3.6.0")
|
||||||
|
+ python, version = find_python3_executable(min_version="3.5.0")
|
||||||
|
|
||||||
|
# The API returns a bytes whereas everything in configure is unicode.
|
||||||
|
if python:
|
||||||
|
@@ -335,15 +335,15 @@
|
||||||
|
|
||||||
|
if not python:
|
||||||
|
raise FatalCheckError(
|
||||||
|
- "Python 3.6 or newer is required to build. "
|
||||||
|
+ "Python 3.5 or newer is required to build. "
|
||||||
|
"Ensure a `python3.x` executable is in your "
|
||||||
|
"PATH or define PYTHON3 to point to a Python "
|
||||||
|
- "3.6 executable."
|
||||||
|
+ "3.5 executable."
|
||||||
|
)
|
||||||
|
|
||||||
|
- if version < (3, 6, 0):
|
||||||
|
+ if version < (3, 5, 0):
|
||||||
|
raise FatalCheckError(
|
||||||
|
- "Python 3.6 or newer is required to build; "
|
||||||
|
+ "Python 3.5 or newer is required to build; "
|
||||||
|
"%s is Python %d.%d" % (python, version[0], version[1])
|
||||||
|
)
|
||||||
|
|
||||||
|
diff -r 81f3a9d8e5f4 python/mozbuild/mozbuild/pythonutil.py
|
||||||
|
--- a/python/mozbuild/mozbuild/pythonutil.py Tue Nov 17 21:27:44 2020 +0000
|
||||||
|
+++ b/python/mozbuild/mozbuild/pythonutil.py Wed Nov 18 08:22:17 2020 +0100
|
||||||
|
@@ -44,7 +44,7 @@
|
||||||
|
def _find_python_executable(major):
|
||||||
|
if major not in (2, 3):
|
||||||
|
raise ValueError("Expected a Python major version of 2 or 3")
|
||||||
|
- min_versions = {2: "2.7.0", 3: "3.6.0"}
|
||||||
|
+ min_versions = {2: "2.7.0", 3: "3.5.0"}
|
||||||
|
|
||||||
|
def ret(min_version=min_versions[major]):
|
||||||
|
from mozfile import which
|
||||||
|
diff -r 81f3a9d8e5f4 python/mozbuild/mozbuild/virtualenv.py
|
||||||
|
--- a/python/mozbuild/mozbuild/virtualenv.py Tue Nov 17 21:27:44 2020 +0000
|
||||||
|
+++ b/python/mozbuild/mozbuild/virtualenv.py Wed Nov 18 08:22:17 2020 +0100
|
||||||
|
@@ -691,7 +691,7 @@
|
||||||
|
major, minor, micro = sys.version_info[:3]
|
||||||
|
minimum_python_versions = {
|
||||||
|
2: LooseVersion("2.7.3"),
|
||||||
|
- 3: LooseVersion("3.6.0"),
|
||||||
|
+ 3: LooseVersion("3.5.0"),
|
||||||
|
}
|
||||||
|
our = LooseVersion("%d.%d.%d" % (major, minor, micro))
|
||||||
|
|
||||||
432
deb_patches/python3-remove-fstrings.patch
Normal file
432
deb_patches/python3-remove-fstrings.patch
Normal file
|
|
@ -0,0 +1,432 @@
|
||||||
|
Description: remove f-strings that require Python 3.6 (https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-pep498)
|
||||||
|
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
||||||
|
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/lint.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/lint.py
|
||||||
|
@@ -42,10 +42,10 @@ def _english_list(items: List[str]) -> s
|
||||||
|
if len(items) == 0:
|
||||||
|
return ""
|
||||||
|
elif len(items) == 1:
|
||||||
|
- return f"'{items[0]}'"
|
||||||
|
+ return "'{}'".format(items[0])
|
||||||
|
else:
|
||||||
|
return "{}, or '{}'".format(
|
||||||
|
- ", ".join([f"'{x}'" for x in items[:-1]]), items[-1]
|
||||||
|
+ ", ".join(["'{}'".format(x) for x in items[:-1]]), items[-1]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -88,10 +88,11 @@ def check_common_prefix(
|
||||||
|
if i > 0:
|
||||||
|
common_prefix = "_".join(first[:i])
|
||||||
|
yield (
|
||||||
|
- f"Within category '{category_name}', all metrics begin with "
|
||||||
|
- f"prefix '{common_prefix}'."
|
||||||
|
+ "Within category '{}', all metrics begin with "
|
||||||
|
+ "prefix '{}'."
|
||||||
|
"Remove the prefixes on the metric names and (possibly) "
|
||||||
|
"rename the category."
|
||||||
|
+ .format(category_name, common_prefix)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -131,17 +132,19 @@ def check_unit_in_name(
|
||||||
|
or unit_in_name == time_unit.name
|
||||||
|
):
|
||||||
|
yield (
|
||||||
|
- f"Suffix '{unit_in_name}' is redundant with time_unit "
|
||||||
|
- f"'{time_unit.name}'. Only include time_unit."
|
||||||
|
+ "Suffix '{}' is redundant with time_unit "
|
||||||
|
+ "'{}'. Only include time_unit."
|
||||||
|
+ .format(unit_in_name, time_unit.name)
|
||||||
|
)
|
||||||
|
elif (
|
||||||
|
unit_in_name in TIME_UNIT_ABBREV.keys()
|
||||||
|
or unit_in_name in TIME_UNIT_ABBREV.values()
|
||||||
|
):
|
||||||
|
yield (
|
||||||
|
- f"Suffix '{unit_in_name}' doesn't match time_unit "
|
||||||
|
- f"'{time_unit.name}'. "
|
||||||
|
+ "Suffix '{}' doesn't match time_unit "
|
||||||
|
+ "'{}'. "
|
||||||
|
"Confirm the unit is correct and only include time_unit."
|
||||||
|
+ .format(unit_in_name, time_unit.name)
|
||||||
|
)
|
||||||
|
|
||||||
|
elif memory_unit is not None:
|
||||||
|
@@ -150,26 +153,29 @@ def check_unit_in_name(
|
||||||
|
or unit_in_name == memory_unit.name
|
||||||
|
):
|
||||||
|
yield (
|
||||||
|
- f"Suffix '{unit_in_name}' is redundant with memory_unit "
|
||||||
|
- f"'{memory_unit.name}'. "
|
||||||
|
+ "Suffix '{}' is redundant with memory_unit "
|
||||||
|
+ "'{}'. "
|
||||||
|
"Only include memory_unit."
|
||||||
|
+ .format(unit_in_name, memory_unit.name)
|
||||||
|
)
|
||||||
|
elif (
|
||||||
|
unit_in_name in MEMORY_UNIT_ABBREV.keys()
|
||||||
|
or unit_in_name in MEMORY_UNIT_ABBREV.values()
|
||||||
|
):
|
||||||
|
yield (
|
||||||
|
- f"Suffix '{unit_in_name}' doesn't match memory_unit "
|
||||||
|
- f"{memory_unit.name}'. "
|
||||||
|
+ "Suffix '{}' doesn't match memory_unit "
|
||||||
|
+ "{}'. "
|
||||||
|
"Confirm the unit is correct and only include memory_unit."
|
||||||
|
+ .format(unit_in_name, memory_unit.name)
|
||||||
|
)
|
||||||
|
|
||||||
|
elif unit is not None:
|
||||||
|
if unit_in_name == unit:
|
||||||
|
yield (
|
||||||
|
- f"Suffix '{unit_in_name}' is redundant with unit param "
|
||||||
|
- f"'{unit}'. "
|
||||||
|
+ "Suffix '{}' is redundant with unit param "
|
||||||
|
+ "'{}'. "
|
||||||
|
"Only include unit."
|
||||||
|
+ .format(unit_in_name, unit)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -183,8 +189,9 @@ def check_category_generic(
|
||||||
|
|
||||||
|
if category_name in GENERIC_CATEGORIES:
|
||||||
|
yield (
|
||||||
|
- f"Category '{category_name}' is too generic. "
|
||||||
|
- f"Don't use {_english_list(GENERIC_CATEGORIES)} for category names"
|
||||||
|
+ "Category '{}' is too generic. "
|
||||||
|
+ "Don't use {} for category names"
|
||||||
|
+ .format(category_name, _english_list(GENERIC_CATEGORIES))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -195,9 +202,10 @@ def check_bug_number(
|
||||||
|
|
||||||
|
if len(number_bugs):
|
||||||
|
yield (
|
||||||
|
- f"For bugs {', '.join(number_bugs)}: "
|
||||||
|
+ "For bugs {}: "
|
||||||
|
"Bug numbers are deprecated and should be changed to full URLs. "
|
||||||
|
"For example, use 'http://bugzilla.mozilla.org/12345' instead of '12345'."
|
||||||
|
+ .format(', '.join(number_bugs))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -220,7 +228,7 @@ def check_misspelled_pings(
|
||||||
|
for builtin in pings.RESERVED_PING_NAMES:
|
||||||
|
distance = _hamming_distance(ping, builtin)
|
||||||
|
if distance == 1:
|
||||||
|
- yield f"Ping '{ping}' seems misspelled. Did you mean '{builtin}'?"
|
||||||
|
+ yield "Ping '{}' seems misspelled. Did you mean '{}'?".format(ping, builtin)
|
||||||
|
|
||||||
|
|
||||||
|
def check_user_lifetime_expiration(
|
||||||
|
@@ -281,8 +289,9 @@ class GlinterNit:
|
||||||
|
|
||||||
|
def format(self):
|
||||||
|
return (
|
||||||
|
- f"{self.check_type.name.upper()}: {self.check_name}: "
|
||||||
|
- f"{self.name}: {self.msg}"
|
||||||
|
+ "{}: {}: "
|
||||||
|
+ "{}: {}"
|
||||||
|
+ .format(self.check_type.name.upper(), self.check_name, self.name, self.msg)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -374,7 +383,7 @@ def lint_yaml_files(input_filepaths: Ite
|
||||||
|
if len(nits):
|
||||||
|
print("Sorry, Glean found some glinter nits:", file=file)
|
||||||
|
for (path, p) in nits:
|
||||||
|
- print(f"{path} ({p.line}:{p.column}) - {p.message}")
|
||||||
|
+ print("{} ({}:{}) - {}".format(path, p.line, p.column, p.message))
|
||||||
|
print("", file=file)
|
||||||
|
print("Please fix the above nits to continue.", file=file)
|
||||||
|
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/markdown.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/markdown.py
|
||||||
|
@@ -73,7 +73,7 @@ def metrics_docs(obj_name: str) -> str:
|
||||||
|
if obj_name.startswith("labeled_"):
|
||||||
|
fixedup_name += "s"
|
||||||
|
|
||||||
|
- return f"https://mozilla.github.io/glean/book/user/metrics/{fixedup_name}.html"
|
||||||
|
+ return "https://mozilla.github.io/glean/book/user/metrics/{}.html".format(fixedup_name)
|
||||||
|
|
||||||
|
|
||||||
|
def ping_docs(ping_name: str) -> str:
|
||||||
|
@@ -84,7 +84,7 @@ def ping_docs(ping_name: str) -> str:
|
||||||
|
if ping_name not in pings.RESERVED_PING_NAMES:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
- return f"https://mozilla.github.io/glean/book/user/pings/{ping_name}.html"
|
||||||
|
+ return "https://mozilla.github.io/glean/book/user/pings/{}.html".format(ping_name)
|
||||||
|
|
||||||
|
|
||||||
|
def if_empty(
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/parser.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/parser.py
|
||||||
|
@@ -46,7 +46,8 @@ def _update_validator(validator):
|
||||||
|
if len(missing_properties):
|
||||||
|
missing_properties = sorted(list(missing_properties))
|
||||||
|
yield ValidationError(
|
||||||
|
- f"Missing required properties: {', '.join(missing_properties)}"
|
||||||
|
+ "Missing required properties: {}"
|
||||||
|
+ .format(', '.join(missing_properties))
|
||||||
|
)
|
||||||
|
|
||||||
|
validator.VALIDATORS["required"] = required
|
||||||
|
@@ -65,7 +66,7 @@ def _load_file(
|
||||||
|
return {}, None
|
||||||
|
|
||||||
|
if content is None:
|
||||||
|
- yield util.format_error(filepath, "", f"'{filepath}' file can not be empty.")
|
||||||
|
+ yield util.format_error(filepath, "", "'{}' file can not be empty.".format(filepath))
|
||||||
|
return {}, None
|
||||||
|
|
||||||
|
if not isinstance(content, dict):
|
||||||
|
@@ -76,7 +77,7 @@ def _load_file(
|
||||||
|
|
||||||
|
schema_key = content.get("$schema")
|
||||||
|
if not isinstance(schema_key, str):
|
||||||
|
- raise TypeError(f"Invalid schema key {schema_key}")
|
||||||
|
+ raise TypeError("Invalid schema key {}".format(schema_key))
|
||||||
|
|
||||||
|
filetype = FILE_TYPES.get(schema_key)
|
||||||
|
|
||||||
|
@@ -117,7 +118,7 @@ def _get_schema(
|
||||||
|
util.format_error(
|
||||||
|
filepath,
|
||||||
|
"",
|
||||||
|
- f"$schema key must be one of {', '.join(schemas.keys())}",
|
||||||
|
+ "$schema key must be one of {}".format(', '.join(schemas.keys())),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return schemas[schema_id]
|
||||||
|
@@ -189,7 +190,7 @@ def _instantiate_metrics(
|
||||||
|
if not config.get("allow_reserved") and category_key.split(".")[0] == "glean":
|
||||||
|
yield util.format_error(
|
||||||
|
filepath,
|
||||||
|
- f"For category '{category_key}'",
|
||||||
|
+ "For category '{}'".format(category_key),
|
||||||
|
"Categories beginning with 'glean' are reserved for "
|
||||||
|
"Glean internal use.",
|
||||||
|
)
|
||||||
|
@@ -197,7 +198,7 @@ def _instantiate_metrics(
|
||||||
|
all_objects.setdefault(category_key, OrderedDict())
|
||||||
|
|
||||||
|
if not isinstance(category_val, dict):
|
||||||
|
- raise TypeError(f"Invalid content for {category_key}")
|
||||||
|
+ raise TypeError("Invalid content for {}".format(category_key))
|
||||||
|
|
||||||
|
for metric_key, metric_val in category_val.items():
|
||||||
|
try:
|
||||||
|
@@ -207,7 +208,7 @@ def _instantiate_metrics(
|
||||||
|
except Exception as e:
|
||||||
|
yield util.format_error(
|
||||||
|
filepath,
|
||||||
|
- f"On instance {category_key}.{metric_key}",
|
||||||
|
+ "On instance {}.{}".format(category_key, metric_key),
|
||||||
|
str(e),
|
||||||
|
)
|
||||||
|
metric_obj = None
|
||||||
|
@@ -218,7 +219,7 @@ def _instantiate_metrics(
|
||||||
|
):
|
||||||
|
yield util.format_error(
|
||||||
|
filepath,
|
||||||
|
- f"On instance {category_key}.{metric_key}",
|
||||||
|
+ "On instance {}.{}".format(category_key, metric_key),
|
||||||
|
'Only internal metrics may specify "all-pings" '
|
||||||
|
'in "send_in_pings"',
|
||||||
|
)
|
||||||
|
@@ -234,8 +235,9 @@ def _instantiate_metrics(
|
||||||
|
filepath,
|
||||||
|
"",
|
||||||
|
(
|
||||||
|
- f"Duplicate metric name '{category_key}.{metric_key}' "
|
||||||
|
- f"already defined in '{already_seen}'"
|
||||||
|
+ "Duplicate metric name '{}.{}' "
|
||||||
|
+ "already defined in '{}'"
|
||||||
|
+ .format(category_key, metric_key, already_seen)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
@@ -261,17 +263,17 @@ def _instantiate_pings(
|
||||||
|
if ping_key in RESERVED_PING_NAMES:
|
||||||
|
yield util.format_error(
|
||||||
|
filepath,
|
||||||
|
- f"For ping '{ping_key}'",
|
||||||
|
- f"Ping uses a reserved name ({RESERVED_PING_NAMES})",
|
||||||
|
+ "For ping '{}'".format(ping_key),
|
||||||
|
+ "Ping uses a reserved name ({})".format(RESERVED_PING_NAMES),
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
if not isinstance(ping_val, dict):
|
||||||
|
- raise TypeError(f"Invalid content for ping {ping_key}")
|
||||||
|
+ raise TypeError("Invalid content for ping {}".format(ping_key))
|
||||||
|
ping_val["name"] = ping_key
|
||||||
|
try:
|
||||||
|
ping_obj = Ping(**ping_val)
|
||||||
|
except Exception as e:
|
||||||
|
- yield util.format_error(filepath, f"On instance '{ping_key}'", str(e))
|
||||||
|
+ yield util.format_error(filepath, "On instance '{}'".format(ping_key), str(e))
|
||||||
|
continue
|
||||||
|
|
||||||
|
already_seen = sources.get(ping_key)
|
||||||
|
@@ -280,8 +282,9 @@ def _instantiate_pings(
|
||||||
|
yield util.format_error(
|
||||||
|
filepath,
|
||||||
|
"",
|
||||||
|
- f"Duplicate ping name '{ping_key}' "
|
||||||
|
- f"already defined in '{already_seen}'",
|
||||||
|
+ "Duplicate ping name '{}' "
|
||||||
|
+ "already defined in '{}'"
|
||||||
|
+ .format(ping_key, already_seen),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
all_objects.setdefault("pings", {})[ping_key] = ping_obj
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/util.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/util.py
|
||||||
|
@@ -132,7 +132,7 @@ def load_yaml_or_json(path: Path, ordere
|
||||||
|
else:
|
||||||
|
return yaml.load(fd, Loader=_NoDatesSafeLoader)
|
||||||
|
else:
|
||||||
|
- raise ValueError(f"Unknown file extension {path.suffix}")
|
||||||
|
+ raise ValueError("Unknown file extension {}".format(path.suffix))
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_list(value: Any) -> Sequence[Any]:
|
||||||
|
@@ -331,9 +331,9 @@ def format_error(filepath: Union[str, Pa
|
||||||
|
else:
|
||||||
|
filepath = "<string>"
|
||||||
|
if header:
|
||||||
|
- return f"{filepath}: {header}\n{_utils.indent(content)}"
|
||||||
|
+ return "{}: {}\n{}".format(filepath, header, _utils.indent(content))
|
||||||
|
else:
|
||||||
|
- return f"{filepath}:\n{_utils.indent(content)}"
|
||||||
|
+ return "{}:\n{}".format(filepath, _utils.indent(content))
|
||||||
|
|
||||||
|
|
||||||
|
def parse_expires(expires: str) -> datetime.date:
|
||||||
|
@@ -351,8 +351,8 @@ def parse_expires(expires: str) -> datet
|
||||||
|
return datetime.date.fromisoformat(expires)
|
||||||
|
except ValueError:
|
||||||
|
raise ValueError(
|
||||||
|
- f"Invalid expiration date '{expires}'. "
|
||||||
|
- "Must be of the form yyyy-mm-dd in UTC."
|
||||||
|
+ "Invalid expiration date '{}'. "
|
||||||
|
+ "Must be of the form yyyy-mm-dd in UTC.".format(expires)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -382,7 +382,7 @@ def validate_expires(expires: str) -> No
|
||||||
|
max_date = datetime.datetime.now() + datetime.timedelta(days=730)
|
||||||
|
if date > max_date.date():
|
||||||
|
raise ValueError(
|
||||||
|
- f"'{expires}' is more than 730 days (~2 years) in the future.",
|
||||||
|
+ "'{}' is more than 730 days (~2 years) in the future.".format(expires),
|
||||||
|
"Please make sure this is intentional.",
|
||||||
|
"You can supress this warning by adding EXPIRATION_DATE_TOO_FAR to no_lint",
|
||||||
|
"See: https://mozilla.github.io/glean_parser/metrics-yaml.html#no_lint",
|
||||||
|
--- a/third_party/python/glean_parser/tools/extract_data_categories.py
|
||||||
|
+++ b/third_party/python/glean_parser/tools/extract_data_categories.py
|
||||||
|
@@ -62,7 +62,7 @@ def fetch_url(url: str) -> str:
|
||||||
|
if content is not None:
|
||||||
|
return content
|
||||||
|
|
||||||
|
- print(f"Fetching {url}")
|
||||||
|
+ print("Fetching {}".format(url))
|
||||||
|
content = urlopen(url).read()
|
||||||
|
cache[url] = content
|
||||||
|
time.sleep(0.5)
|
||||||
|
@@ -97,7 +97,7 @@ def categories_as_strings(categories: Se
|
||||||
|
"""
|
||||||
|
if len(categories):
|
||||||
|
return [
|
||||||
|
- CATEGORY_MAP.get(x, f"!!!UNKNOWN CATEGORY {x}")
|
||||||
|
+ CATEGORY_MAP.get(x, "!!!UNKNOWN CATEGORY {}".format(x))
|
||||||
|
for x in sorted(list(categories))
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
@@ -119,24 +119,24 @@ def update_lines(
|
||||||
|
|
||||||
|
for line in lines_iter:
|
||||||
|
output.append(line)
|
||||||
|
- if line.startswith(f"{category_name}:"):
|
||||||
|
+ if line.startswith("{}:".format(category_name)):
|
||||||
|
break
|
||||||
|
|
||||||
|
for line in lines_iter:
|
||||||
|
output.append(line)
|
||||||
|
- if line.startswith(f" {metric_name}:"):
|
||||||
|
+ if line.startswith(" {}:".format(metric_name)):
|
||||||
|
break
|
||||||
|
|
||||||
|
for line in lines_iter:
|
||||||
|
output.append(line)
|
||||||
|
- if line.startswith(f" data_reviews:"):
|
||||||
|
+ if line.startswith(" data_reviews:"):
|
||||||
|
break
|
||||||
|
|
||||||
|
for line in lines_iter:
|
||||||
|
if not line.strip().startswith("- "):
|
||||||
|
output.append(" data_sensitivity:\n")
|
||||||
|
for data_sensitivity in data_sensitivity_values:
|
||||||
|
- output.append(f" - {data_sensitivity}\n")
|
||||||
|
+ output.append(" - {}\n".format(data_sensitivity))
|
||||||
|
output.append(line)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/metrics.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/metrics.py
|
||||||
|
@@ -138,7 +138,7 @@ class Metric:
|
||||||
|
|
||||||
|
metric_type = metric_info["type"]
|
||||||
|
if not isinstance(metric_type, str):
|
||||||
|
- raise TypeError(f"Unknown metric type {metric_type}")
|
||||||
|
+ raise TypeError("Unknown metric type {}".format(metric_type))
|
||||||
|
return cls.metric_types[metric_type](
|
||||||
|
category=category,
|
||||||
|
name=name,
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/translate.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/translate.py
|
||||||
|
@@ -112,7 +112,7 @@ def translate_metrics(
|
||||||
|
for filepath in output_dir.glob(clear_pattern):
|
||||||
|
filepath.unlink()
|
||||||
|
if len(list(output_dir.iterdir())):
|
||||||
|
- print(f"Extra contents found in '{output_dir}'.")
|
||||||
|
+ print("Extra contents found in '{}'.".format(output_dir))
|
||||||
|
|
||||||
|
# We can't use shutil.copytree alone if the directory already exists.
|
||||||
|
# However, if it doesn't exist, make sure to create one otherwise
|
||||||
|
@@ -146,7 +146,7 @@ def translate(
|
||||||
|
format_desc = OUTPUTTERS.get(output_format, None)
|
||||||
|
|
||||||
|
if format_desc is None:
|
||||||
|
- raise ValueError(f"Unknown output format '{output_format}'")
|
||||||
|
+ raise ValueError("Unknown output format '{}'".format(output_format))
|
||||||
|
|
||||||
|
return translate_metrics(
|
||||||
|
input_filepaths,
|
||||||
|
--- a/toolkit/components/glean/build_scripts/glean_parser_ext/js.py Tue Nov 17 21:27:44 2020 +0000
|
||||||
|
+++ b/toolkit/components/glean/build_scripts/glean_parser_ext/js.py Wed Nov 18 10:51:04 2020 +0100
|
||||||
|
@@ -57,7 +57,7 @@
|
||||||
|
"""
|
||||||
|
The metric's unique identifier, including the category and name
|
||||||
|
"""
|
||||||
|
- return f"{category}.{metric_name}"
|
||||||
|
+ return "{}.{}".format(category, metric_name)
|
||||||
|
|
||||||
|
|
||||||
|
def type_name(type):
|
||||||
|
--- a/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py Tue Nov 17 21:27:44 2020 +0000
|
||||||
|
+++ b/toolkit/components/glean/build_scripts/glean_parser_ext/rust.py Wed Nov 18 10:51:04 2020 +0100
|
||||||
|
@@ -175,7 +175,7 @@
|
||||||
|
|
||||||
|
metric_name = util.snake_case(metric.name)
|
||||||
|
category_name = util.snake_case(category_name)
|
||||||
|
- full_path = f"{category_name}::{metric_name}"
|
||||||
|
+ full_path = "{}::{}".format(category_name, metric_name)
|
||||||
|
|
||||||
|
if metric.type == "event":
|
||||||
|
events_by_id[get_metric_id(metric)] = full_path
|
||||||
23
deb_patches/python3-remove-pep487.patch
Normal file
23
deb_patches/python3-remove-pep487.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
Description: revert a change that requires Python 3.6 (https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-pep487)
|
||||||
|
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
||||||
|
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/metrics.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/metrics.py
|
||||||
|
@@ -15,6 +15,8 @@ from typing import Any, Dict, List, Opti
|
||||||
|
from . import pings
|
||||||
|
from . import util
|
||||||
|
|
||||||
|
+import pep487
|
||||||
|
+
|
||||||
|
|
||||||
|
# Important: if the values are ever changing here, make sure
|
||||||
|
# to also fix mozilla/glean. Otherwise language bindings may
|
||||||
|
@@ -32,7 +34,7 @@ class DataSensitivity(enum.Enum):
|
||||||
|
highly_sensitive = 4
|
||||||
|
|
||||||
|
|
||||||
|
-class Metric:
|
||||||
|
+class Metric(pep487.PEP487Object):
|
||||||
|
typename = "ERROR"
|
||||||
|
glean_internal_metric_cat = "glean.internal.metrics"
|
||||||
|
metric_types = {}
|
||||||
148
deb_patches/python3-remove-variable-annotations.patch
Normal file
148
deb_patches/python3-remove-variable-annotations.patch
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
Description: remove variable annotations that require Python 3.6 (https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-pep526)
|
||||||
|
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
||||||
|
|
||||||
|
--- a/xpcom/ds/tools/incremental_dafsa.py
|
||||||
|
+++ b/xpcom/ds/tools/incremental_dafsa.py
|
||||||
|
@@ -14,12 +14,6 @@ from typing import List, Dict, Optional,
|
||||||
|
|
||||||
|
|
||||||
|
class Node:
|
||||||
|
- children: Dict[str, "Node"]
|
||||||
|
- parents: Dict[str, List["Node"]]
|
||||||
|
- character: str
|
||||||
|
- is_root_node: bool
|
||||||
|
- is_end_node: bool
|
||||||
|
-
|
||||||
|
def __init__(self, character, is_root_node=False, is_end_node=False):
|
||||||
|
self.children = {}
|
||||||
|
self.parents = {}
|
||||||
|
@@ -156,9 +150,6 @@ class Node:
|
||||||
|
|
||||||
|
|
||||||
|
class SuffixCursor:
|
||||||
|
- index: int # Current position of the cursor within the DAFSA.
|
||||||
|
- node: Node
|
||||||
|
-
|
||||||
|
def __init__(self, index, node):
|
||||||
|
self.index = index
|
||||||
|
self.node = node
|
||||||
|
@@ -227,15 +218,6 @@ class DafsaAppendStateMachine:
|
||||||
|
The next suffix node we'll attempt to find is at index "9".
|
||||||
|
"""
|
||||||
|
|
||||||
|
- root_node: Node
|
||||||
|
- prefix_index: int
|
||||||
|
- suffix_cursor: SuffixCursor
|
||||||
|
- stack: List[Node]
|
||||||
|
- word: str
|
||||||
|
- suffix_overlaps_prefix: bool
|
||||||
|
- first_fork_index: Optional[int]
|
||||||
|
- _state: Callable
|
||||||
|
-
|
||||||
|
def __init__(self, word, root_node, end_node):
|
||||||
|
self.root_node = root_node
|
||||||
|
self.prefix_index = 0
|
||||||
|
@@ -471,9 +453,6 @@ def _duplicate_fork_nodes(stack, fork_in
|
||||||
|
|
||||||
|
|
||||||
|
class Dafsa:
|
||||||
|
- root_node: Node
|
||||||
|
- end_node: Node
|
||||||
|
-
|
||||||
|
def __init__(self):
|
||||||
|
self.root_node = Node(None, is_root_node=True)
|
||||||
|
self.end_node = Node(None, is_end_node=True)
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/lint.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/lint.py
|
||||||
|
@@ -237,9 +237,7 @@ def check_user_lifetime_expiration(
|
||||||
|
|
||||||
|
# The checks that operate on an entire category of metrics:
|
||||||
|
# {NAME: (function, is_error)}
|
||||||
|
-CATEGORY_CHECKS: Dict[
|
||||||
|
- str, Tuple[Callable[[str, Iterable[metrics.Metric]], LintGenerator], CheckType]
|
||||||
|
-] = {
|
||||||
|
+CATEGORY_CHECKS = {
|
||||||
|
"COMMON_PREFIX": (check_common_prefix, CheckType.error),
|
||||||
|
"CATEGORY_GENERIC": (check_category_generic, CheckType.error),
|
||||||
|
}
|
||||||
|
@@ -247,9 +245,7 @@ CATEGORY_CHECKS: Dict[
|
||||||
|
|
||||||
|
# The checks that operate on individual metrics:
|
||||||
|
# {NAME: (function, is_error)}
|
||||||
|
-INDIVIDUAL_CHECKS: Dict[
|
||||||
|
- str, Tuple[Callable[[metrics.Metric, dict], LintGenerator], CheckType]
|
||||||
|
-] = {
|
||||||
|
+INDIVIDUAL_CHECKS = {
|
||||||
|
"UNIT_IN_NAME": (check_unit_in_name, CheckType.error),
|
||||||
|
"BUG_NUMBER": (check_bug_number, CheckType.error),
|
||||||
|
"BASELINE_PING": (check_valid_in_baseline, CheckType.error),
|
||||||
|
@@ -282,7 +278,7 @@ def lint_metrics(
|
||||||
|
if parser_config is None:
|
||||||
|
parser_config = {}
|
||||||
|
|
||||||
|
- nits: List[GlinterNit] = []
|
||||||
|
+ nits = []
|
||||||
|
for (category_name, category) in sorted(list(objs.items())):
|
||||||
|
if category_name == "pings":
|
||||||
|
continue
|
||||||
|
@@ -363,7 +359,7 @@ def lint_yaml_files(input_filepaths: Ite
|
||||||
|
|
||||||
|
# Generic type since the actual type comes from yamllint, which we don't
|
||||||
|
# control.
|
||||||
|
- nits: List = []
|
||||||
|
+ nits = []
|
||||||
|
for path in input_filepaths:
|
||||||
|
if not path.is_file() and parser_config.get("allow_missing_files", False):
|
||||||
|
continue
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/metrics.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/metrics.py
|
||||||
|
@@ -33,10 +33,10 @@ class DataSensitivity(enum.Enum):
|
||||||
|
|
||||||
|
|
||||||
|
class Metric:
|
||||||
|
- typename: str = "ERROR"
|
||||||
|
- glean_internal_metric_cat: str = "glean.internal.metrics"
|
||||||
|
- metric_types: Dict[str, Any] = {}
|
||||||
|
- default_store_names: List[str] = ["metrics"]
|
||||||
|
+ typename = "ERROR"
|
||||||
|
+ glean_internal_metric_cat = "glean.internal.metrics"
|
||||||
|
+ metric_types = {}
|
||||||
|
+ default_store_names = ["metrics"]
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/pings.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/pings.py
|
||||||
|
@@ -49,7 +49,7 @@ class Ping:
|
||||||
|
# _validated indicates whether this metric has already been jsonschema
|
||||||
|
# validated (but not any of the Python-level validation).
|
||||||
|
if not _validated:
|
||||||
|
- data: Dict[str, util.JSONType] = {
|
||||||
|
+ data = {
|
||||||
|
"$schema": parser.PINGS_ID,
|
||||||
|
self.name: self.serialize(),
|
||||||
|
}
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/util.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/util.py
|
||||||
|
@@ -269,7 +269,7 @@ def fetch_remote_url(url: str, cache: bo
|
||||||
|
if key in dc:
|
||||||
|
return dc[key]
|
||||||
|
|
||||||
|
- contents: str = urllib.request.urlopen(url).read()
|
||||||
|
+ contents = urllib.request.urlopen(url).read()
|
||||||
|
|
||||||
|
if cache:
|
||||||
|
with diskcache.Cache(cache_dir) as dc:
|
||||||
|
--- a/third_party/python/glean_parser/glean_parser/parser.py
|
||||||
|
+++ b/third_party/python/glean_parser/glean_parser/parser.py
|
||||||
|
@@ -339,8 +339,8 @@ def parse_objects(
|
||||||
|
if config is None:
|
||||||
|
config = {}
|
||||||
|
|
||||||
|
- all_objects: ObjectTree = OrderedDict()
|
||||||
|
- sources: Dict[Any, Path] = {}
|
||||||
|
+ all_objects = OrderedDict()
|
||||||
|
+ sources = {}
|
||||||
|
filepaths = util.ensure_list(filepaths)
|
||||||
|
for filepath in filepaths:
|
||||||
|
content, filetype = yield from _load_file(filepath, config)
|
||||||
|
|
@ -8,8 +8,8 @@ Description: reduce the rust debuginfo level
|
||||||
with recent versions of rustc pretty much all supported architectures are
|
with recent versions of rustc pretty much all supported architectures are
|
||||||
affected, so it is now unconditional.
|
affected, so it is now unconditional.
|
||||||
|
|
||||||
--- a/build/moz.configure/rust.configure
|
--- a/build/moz.configure/toolchain.configure
|
||||||
+++ b/build/moz.configure/rust.configure
|
+++ b/build/moz.configure/toolchain.configure
|
||||||
@@ -2167,7 +2167,7 @@ def rust_compile_flags(opt_level, debug_
|
@@ -2167,7 +2167,7 @@ def rust_compile_flags(opt_level, debug_
|
||||||
debug_assertions = False
|
debug_assertions = False
|
||||||
|
|
||||||
|
|
|
||||||
11
deb_patches/relax-cargo-dep.patch
Normal file
11
deb_patches/relax-cargo-dep.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/build/moz.configure/rust.configure
|
||||||
|
+++ b/build/moz.configure/rust.configure
|
||||||
|
@@ -168,7 +168,7 @@
|
||||||
|
rustc_min_version = Version("1.47.0")
|
||||||
|
else:
|
||||||
|
rustc_min_version = Version(MINIMUM_RUST_VERSION)
|
||||||
|
- cargo_min_version = rustc_min_version
|
||||||
|
+ cargo_min_version = Version("1.46.0")
|
||||||
|
|
||||||
|
version = rustc_info.version
|
||||||
|
is_nightly = "nightly" in version.version
|
||||||
144
deb_patches/sandbox-update-arm-syscall-numbers.patch
Normal file
144
deb_patches/sandbox-update-arm-syscall-numbers.patch
Normal file
|
|
@ -0,0 +1,144 @@
|
||||||
|
From 05971bd227dc6c359657d1501711e6865e9430f9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matthew Denton <mpdenton@chromium.org>
|
||||||
|
Date: Tue, 28 Jul 2020 00:29:01 +0000
|
||||||
|
Subject: [PATCH] Linux sandbox: update arm syscall numbers
|
||||||
|
|
||||||
|
Change-Id: Ia2c39a86fb3516040a74de963115e73b7b1a1e0c
|
||||||
|
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2318316
|
||||||
|
Reviewed-by: Robert Sesek <rsesek@chromium.org>
|
||||||
|
Commit-Queue: Matthew Denton <mpdenton@chromium.org>
|
||||||
|
Cr-Commit-Position: refs/heads/master@{#792090}
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h b/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h
|
||||||
|
index 59d0eab8..a242c18c 100644
|
||||||
|
--- a/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h
|
||||||
|
+++ b/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h
|
||||||
|
@@ -1063,4 +1063,60 @@
|
||||||
|
#define __NR_memfd_create 279
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if !defined(__NR_bpf)
|
||||||
|
+#define __NR_bpf 280
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_execveat)
|
||||||
|
+#define __NR_execveat 281
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_userfaultfd)
|
||||||
|
+#define __NR_userfaultfd 282
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_membarrier)
|
||||||
|
+#define __NR_membarrier 283
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_mlock2)
|
||||||
|
+#define __NR_mlock2 284
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_copy_file_range)
|
||||||
|
+#define __NR_copy_file_range 285
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_preadv2)
|
||||||
|
+#define __NR_preadv2 286
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pwritev2)
|
||||||
|
+#define __NR_pwritev2 287
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pkey_mprotect)
|
||||||
|
+#define __NR_pkey_mprotect 288
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pkey_alloc)
|
||||||
|
+#define __NR_pkey_alloc 289
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pkey_free)
|
||||||
|
+#define __NR_pkey_free 290
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_statx)
|
||||||
|
+#define __NR_statx 291
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_io_pgetevents)
|
||||||
|
+#define __NR_io_pgetevents 292
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_rseq)
|
||||||
|
+#define __NR_rseq 293
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#endif // SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
|
||||||
|
diff --git a/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h b/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
|
||||||
|
index 1addd53..85e2110b 100644
|
||||||
|
--- a/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
|
||||||
|
+++ b/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
|
||||||
|
@@ -1385,6 +1385,62 @@
|
||||||
|
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if !defined(__NR_bpf)
|
||||||
|
+#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_execveat)
|
||||||
|
+#define __NR_execveat (__NR_SYSCALL_BASE+387)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_userfaultfd)
|
||||||
|
+#define __NR_userfaultfd (__NR_SYSCALL_BASE+388)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_membarrier)
|
||||||
|
+#define __NR_membarrier (__NR_SYSCALL_BASE+389)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_mlock2)
|
||||||
|
+#define __NR_mlock2 (__NR_SYSCALL_BASE+390)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_copy_file_range)
|
||||||
|
+#define __NR_copy_file_range (__NR_SYSCALL_BASE+391)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_preadv2)
|
||||||
|
+#define __NR_preadv2 (__NR_SYSCALL_BASE+392)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pwritev2)
|
||||||
|
+#define __NR_pwritev2 (__NR_SYSCALL_BASE+393)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pkey_mprotect)
|
||||||
|
+#define __NR_pkey_mprotect (__NR_SYSCALL_BASE+394)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pkey_alloc)
|
||||||
|
+#define __NR_pkey_alloc (__NR_SYSCALL_BASE+395)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_pkey_free)
|
||||||
|
+#define __NR_pkey_free (__NR_SYSCALL_BASE+396)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_statx)
|
||||||
|
+#define __NR_statx (__NR_SYSCALL_BASE+397)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_rseq)
|
||||||
|
+#define __NR_rseq (__NR_SYSCALL_BASE+398)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if !defined(__NR_io_pgetevents)
|
||||||
|
+#define __NR_io_pgetevents (__NR_SYSCALL_BASE+399)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
// ARM private syscalls.
|
||||||
|
#if !defined(__ARM_NR_BASE)
|
||||||
|
#define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
|
||||||
42
deb_patches/silence-gtk-style-assertions.patch
Normal file
42
deb_patches/silence-gtk-style-assertions.patch
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
Description: silence GTK style-related assertions caused by the lack of a "selection" CSS node on GtkTextView in the version of gtk3 in xenial.
|
||||||
|
These assertions were caused by the fix for https://bugzilla.mozilla.org/1654323.
|
||||||
|
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
|
||||||
|
|
||||||
|
--- a/widget/gtk/nsLookAndFeel.cpp
|
||||||
|
+++ b/widget/gtk/nsLookAndFeel.cpp
|
||||||
|
@@ -1216,7 +1216,7 @@ void nsLookAndFeel::EnsureInit() {
|
||||||
|
&color);
|
||||||
|
mTextSelectedText = GDK_RGBA_TO_NS_RGBA(color);
|
||||||
|
};
|
||||||
|
- GrabSelectionColors(selectionStyle);
|
||||||
|
+ GrabSelectionColors(selectionStyle ? selectionStyle : style);
|
||||||
|
if (mTextSelectedBackground == mTextSelectedText) {
|
||||||
|
// Some old distros/themes don't properly use the .selection style, so
|
||||||
|
// fall back to the regular text view style.
|
||||||
|
@@ -1413,6 +1413,7 @@ bool nsLookAndFeel::WidgetUsesImage(Widg
|
||||||
|
GTK_STATE_FLAG_BACKDROP, GTK_STATE_FLAG_INSENSITIVE};
|
||||||
|
|
||||||
|
GtkStyleContext* style = GetStyleContext(aNodeType);
|
||||||
|
+ if (!style) return false;
|
||||||
|
|
||||||
|
GValue value = G_VALUE_INIT;
|
||||||
|
for (GtkStateFlags state : sFlagsToCheck) {
|
||||||
|
--- a/widget/gtk/WidgetStyleCache.cpp
|
||||||
|
+++ b/widget/gtk/WidgetStyleCache.cpp
|
||||||
|
@@ -933,7 +933,7 @@ static GtkStyleContext* GetWidgetRootSty
|
||||||
|
default:
|
||||||
|
GtkWidget* widget = GetWidget(aNodeType);
|
||||||
|
MOZ_ASSERT(widget);
|
||||||
|
- return gtk_widget_get_style_context(widget);
|
||||||
|
+ return (widget ? gtk_widget_get_style_context(widget) : nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
MOZ_ASSERT(style);
|
||||||
|
@@ -1356,6 +1356,7 @@ GtkStyleContext* GetStyleContext(WidgetN
|
||||||
|
style = GetCssNodeStyleInternal(aNodeType);
|
||||||
|
StyleContextSetScale(style, aScale);
|
||||||
|
}
|
||||||
|
+ if (!style) return nullptr;
|
||||||
|
bool stateChanged = false;
|
||||||
|
bool stateHasDirection = gtk_get_minor_version() >= 8;
|
||||||
|
GtkStateFlags oldState = gtk_style_context_get_state(style);
|
||||||
35
deb_patches/webrtc-fix-compiler-flags-for-armhf.patch
Normal file
35
deb_patches/webrtc-fix-compiler-flags-for-armhf.patch
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
# Description: Don't pass -mfloat-abi=softfp on armhf
|
||||||
|
# Author: Chris Coulson <chris.coulson@canonical.com>
|
||||||
|
# Forwarded: no
|
||||||
|
|
||||||
|
--- a/build/gyp.mozbuild
|
||||||
|
+++ b/build/gyp.mozbuild
|
||||||
|
@@ -107,9 +107,15 @@ if CONFIG['ARM_ARCH']:
|
||||||
|
gyp_vars['arm_neon'] = 1
|
||||||
|
gyp_vars['build_with_neon'] = 1
|
||||||
|
else:
|
||||||
|
- # CPU detection for ARM works on Android only. armv7 always uses CPU
|
||||||
|
- # detection, so we have to set armv7=0 for non-Android target
|
||||||
|
- gyp_vars['armv7'] = 0
|
||||||
|
+ gyp_vars['armv7'] = 1
|
||||||
|
+ # We enable NEON for Ubuntu armhf. Note that these don't really
|
||||||
|
+ # have any effect here as NEON is hardcoded on in
|
||||||
|
+ # media/webrtc/trunk/webrtc/build/common.gypi. Disabling these
|
||||||
|
+ # without fixing that file will result in a link failure, as
|
||||||
|
+ # targets hidden behind the build_with_neon flag don't get
|
||||||
|
+ # built but WEBRTC_HAS_NEON is still defined
|
||||||
|
+ gyp_vars['arm_neon'] = 1
|
||||||
|
+ gyp_vars['build_with_neon'] = 1
|
||||||
|
# For libyuv
|
||||||
|
gyp_vars['arm_version'] = int(CONFIG['ARM_ARCH'])
|
||||||
|
|
||||||
|
--- a/third_party/libwebrtc/webrtc/build/config/compiler/BUILD.gn
|
||||||
|
+++ b/third_party/libwebrtc/webrtc/build/config/compiler/BUILD.gn
|
||||||
|
@@ -590,7 +590,6 @@ config("compiler_cpu_abi") {
|
||||||
|
if (!is_nacl) {
|
||||||
|
cflags += [
|
||||||
|
"-march=$arm_arch",
|
||||||
|
- "-mfloat-abi=$arm_float_abi",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (arm_tune != "") {
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
diff --git a/browser/base/content/browser-context.inc b/browser/base/content/browser-context.inc
|
|
||||||
index a7fce1a806..3a9d07582d 100644
|
|
||||||
--- a/browser/base/content/browser-context.inc
|
|
||||||
+++ b/browser/base/content/browser-context.inc
|
|
||||||
@@ -78,9 +78,6 @@
|
|
||||||
<menuitem id="context-savelink"
|
|
||||||
data-l10n-id="main-context-menu-save-link"
|
|
||||||
oncommand="gContextMenu.saveLink();"/>
|
|
||||||
- <menuitem id="context-savelinktopocket"
|
|
||||||
- data-l10n-id="main-context-menu-save-link-to-pocket"
|
|
||||||
- oncommand= "Pocket.savePage(gContextMenu.browser, gContextMenu.linkURL);"/>
|
|
||||||
<menuitem id="context-copyemail"
|
|
||||||
data-l10n-id="main-context-menu-copy-email"
|
|
||||||
oncommand="gContextMenu.copyEmail();"/>
|
|
||||||
@@ -215,9 +212,6 @@
|
|
||||||
<menuitem id="context-savepage"
|
|
||||||
data-l10n-id="main-context-menu-page-save"
|
|
||||||
oncommand="gContextMenu.savePageAs();"/>
|
|
||||||
- <menuitem id="context-pocket"
|
|
||||||
- data-l10n-id="main-context-menu-save-to-pocket"
|
|
||||||
- oncommand="Pocket.savePage(gContextMenu.browser, gContextMenu.browser.currentURI.spec, gContextMenu.browser.contentTitle);"/>
|
|
||||||
<menuseparator id="context-sep-sendpagetodevice" class="sync-ui-item"
|
|
||||||
hidden="true"/>
|
|
||||||
<menu id="context-sendpagetodevice"
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
|
|
||||||
index 4d22812723..2542791b9b 100644
|
|
||||||
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
|
|
||||||
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
|
|
||||||
@@ -54,11 +54,7 @@
|
|
||||||
<div class="info">
|
|
||||||
<h1 data-l10n-id="about-private-browsing-info-title"></h1>
|
|
||||||
<p data-l10n-id="about-private-browsing-info-description"></p>
|
|
||||||
- <a id="private-browsing-myths" data-l10n-id="about-private-browsing-info-myths"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-
|
|
||||||
- <p id="private-browsing-vpn-text" class="vpn-promo" data-l10n-id="about-private-browsing-need-more-privacy"></p>
|
|
||||||
- <a id="private-browsing-vpn-link" class="vpn-promo" data-l10n-id="about-private-browsing-turn-on-vpn"></a>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||

|
|
||||||
|
|
||||||
# LibreWolf
|
|
||||||
|
|
||||||
## Documentation has moved
|
|
||||||
|
|
||||||
You can find the current documentation for LibreWolf at [librewolf-community.gitlab.io/docs/](https://librewolf-community.gitlab.io/docs/).
|
|
||||||
78
flatpak/build_flatpak.sh
Executable file
78
flatpak/build_flatpak.sh
Executable file
|
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/bash
|
||||||
|
printf "\n\n---------------------------------------- FLATPAK BUILD --------------------------------------------\n";
|
||||||
|
|
||||||
|
# Aborts the script upon any faliure
|
||||||
|
set -e;
|
||||||
|
|
||||||
|
# Setup Script Variables
|
||||||
|
BINARY_TARBALL=$1;
|
||||||
|
FLATPAK_REPO=$2;
|
||||||
|
FLATPAK_BUNDLE=$3;
|
||||||
|
_SCRIPT_FOLDER=$(realpath $(dirname $0));
|
||||||
|
_FLATHUB_REPO="flathub https://flathub.org/repo/flathub.flatpakrepo";
|
||||||
|
_FLATHUB_PACKAGES_TO_INSTALL="org.gnome.Platform/${CARCH}/3.38 org.gnome.Sdk/${CARCH}/3.38 org.freedesktop.Platform//19.08 org.freedesktop.Sdk//19.08";
|
||||||
|
_EXTRACTED_BINARY_TARBALL_FOLDER=$_SCRIPT_FOLDER/librewolf
|
||||||
|
_FLATPAK_JSON_FILE=$_SCRIPT_FOLDER/content/io.gitlab.LibreWolf.json;
|
||||||
|
_FLATPAK_BUILD_SOURCE_FOLDER=$_SCRIPT_FOLDER/source;
|
||||||
|
_FLATPAK_BUILD_FOLDER=build-dir;
|
||||||
|
|
||||||
|
|
||||||
|
if [[ ! -z "${TARBALL_URL}" ]];then
|
||||||
|
apt update && apt install -y wget
|
||||||
|
wget "${TARBALL_URL}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "${BINARY_TARBALL}" ]];then
|
||||||
|
echo "Tarball not provided via pipeline or download."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
printf "\nInstalling flatpak build dependencies\n";
|
||||||
|
|
||||||
|
# we're using a pre-prepared flatpak-image witch aarch64
|
||||||
|
apt update && apt install -y software-properties-common
|
||||||
|
add-apt-repository -y ppa:alexlarsson/flatpak
|
||||||
|
apt update && apt install -y flatpak-builder bzip2
|
||||||
|
flatpak remote-add --if-not-exists $_FLATHUB_REPO;
|
||||||
|
flatpak install -y flathub $_FLATHUB_PACKAGES_TO_INSTALL;
|
||||||
|
|
||||||
|
# Extracts the binary tarball
|
||||||
|
printf "\nExtracting librewolf binary tarball\n";
|
||||||
|
mkdir -p $_EXTRACTED_BINARY_TARBALL_FOLDER;
|
||||||
|
tar -xvf $BINARY_TARBALL -C $_EXTRACTED_BINARY_TARBALL_FOLDER;
|
||||||
|
|
||||||
|
# Prepare for flatpak build
|
||||||
|
printf "\nPreparing files for flatpak build\n";
|
||||||
|
mkdir -p $_FLATPAK_BUILD_SOURCE_FOLDER;
|
||||||
|
mv $_EXTRACTED_BINARY_TARBALL_FOLDER $_FLATPAK_BUILD_SOURCE_FOLDER;
|
||||||
|
|
||||||
|
# Build Repo
|
||||||
|
printf "\nBuilding flatpak repository\n";
|
||||||
|
cp "$_FLATPAK_JSON_FILE" ./;
|
||||||
|
|
||||||
|
# add appstream metadata
|
||||||
|
# TODO: firefox uses files/share/appdata/ in their flatpak, but https://docs.flatpak.org/en/latest/conventions.html says otherwise. which is "more" correct? => using both for now, just in case...
|
||||||
|
install -Dvm644 "$_FLATPAK_BUILD_SOURCE_FOLDER/librewolf/io.gitlab.LibreWolf.appdata.xml" "$_SCRIPT_FOLDER/source/share/metainfo/io.gitlab.LibreWolf.appdata.xml"
|
||||||
|
install -Dvm644 "$_FLATPAK_BUILD_SOURCE_FOLDER/librewolf/io.gitlab.LibreWolf.appdata.xml" "$_SCRIPT_FOLDER/source/share/appdata/LibreWolf.appdata.xml"
|
||||||
|
|
||||||
|
install -Dvm644 "$_SCRIPT_FOLDER/content/io.gitlab.LibreWolf.desktop" "$_SCRIPT_FOLDER/source/share/applications/LibreWolf.desktop"
|
||||||
|
|
||||||
|
install -Dvm644 "$_FLATPAK_BUILD_SOURCE_FOLDER/librewolf/browser/chrome/icons/default/default128.png" "$_SCRIPT_FOLDER/source/share/icons/hicolor/128x128/apps/io.gitlab.LibreWolf.png"
|
||||||
|
|
||||||
|
flatpak-builder --disable-rofiles-fuse --repo="$FLATPAK_REPO" "$_FLATPAK_BUILD_FOLDER" io.gitlab.LibreWolf.json;
|
||||||
|
|
||||||
|
# Build bundle
|
||||||
|
printf "\nBuilding flatpak bundle\n";
|
||||||
|
flatpak build-bundle $FLATPAK_REPO $FLATPAK_BUNDLE io.gitlab.LibreWolf master;
|
||||||
|
|
||||||
|
# Clean up flatpak files
|
||||||
|
printf "\nCleaning up flatpak related files\n";
|
||||||
|
rm -rf $_FLATPAK_BUILD_FOLDER;
|
||||||
|
rm -rf $_FLATPAK_BUILD_SOURCE_FOLDER;
|
||||||
|
# keep it cached
|
||||||
|
# rm -rf ./.flatpak-builder;
|
||||||
|
|
||||||
|
# Delete the extracted binary tarball folder
|
||||||
|
printf "\nDeleting extracted binary tarball folder\n";
|
||||||
|
rm -rf $_EXTRACTED_BINARY_TARBALL_FOLDER;
|
||||||
25
flatpak/content/io.gitlab.LibreWolf.desktop
Normal file
25
flatpak/content/io.gitlab.LibreWolf.desktop
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=LibreWolf
|
||||||
|
Exec=librewolf %u
|
||||||
|
Icon=io.gitlab.LibreWolf
|
||||||
|
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;
|
||||||
|
StartupWMClass=LibreWolf
|
||||||
|
Categories=Network;WebBrowser;
|
||||||
|
StartupNotify=true
|
||||||
|
Terminal=false
|
||||||
|
X-MultipleArgs=false
|
||||||
|
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||||
|
Actions=new-window;new-private-window;profilemanager;
|
||||||
|
|
||||||
|
[Desktop Action new-window]
|
||||||
|
Name=Open a New Window
|
||||||
|
Exec=librewolf %u
|
||||||
|
|
||||||
|
[Desktop Action new-private-window]
|
||||||
|
Name=Open a New Private Window
|
||||||
|
Exec=librewolf --private-window %u
|
||||||
|
|
||||||
|
[Desktop Action profilemanager]
|
||||||
|
Name=Open the Profile Manager
|
||||||
|
Exec=librewolf --ProfileManager %u
|
||||||
53
flatpak/content/io.gitlab.LibreWolf.json
Normal file
53
flatpak/content/io.gitlab.LibreWolf.json
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
"app-id": "io.gitlab.LibreWolf",
|
||||||
|
"runtime": "org.gnome.Platform",
|
||||||
|
"runtime-version": "3.38",
|
||||||
|
"sdk": "org.gnome.Sdk",
|
||||||
|
"command": "librewolf",
|
||||||
|
"rename-desktop-file": "LibreWolf.desktop",
|
||||||
|
"rename-appdata-file": "LibreWolf.appdata.xml",
|
||||||
|
"rename-icon": "io.gitlab.LibreWolf",
|
||||||
|
"modules": [
|
||||||
|
"flatpak/content/shared-modules/dbus-glib/dbus-glib-0.110.json",
|
||||||
|
{
|
||||||
|
"name": "librewolf",
|
||||||
|
"buildsystem": "simple",
|
||||||
|
"build-commands": [
|
||||||
|
"mkdir -p /app/share && mv librewolf -t /app/share",
|
||||||
|
"mv share/appdata /app/share",
|
||||||
|
"mv share/applications /app/share",
|
||||||
|
"mv share/icons /app/share",
|
||||||
|
"mv share/metainfo /app/share",
|
||||||
|
"mkdir -p /app/bin && ln -s /app/share/librewolf/librewolf /app/bin/"
|
||||||
|
],
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"type": "dir",
|
||||||
|
"path": "flatpak/source"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"finish-args": [
|
||||||
|
"--share=ipc",
|
||||||
|
"--socket=wayland",
|
||||||
|
"--socket=fallback-x11",
|
||||||
|
"--socket=pcsc",
|
||||||
|
"--socket=pulseaudio",
|
||||||
|
"--persist=.librewolf",
|
||||||
|
"--persist=.mozilla",
|
||||||
|
"--filesystem=xdg-download:rw",
|
||||||
|
"--device=dri",
|
||||||
|
"--filesystem=~/.config/dconf:ro",
|
||||||
|
"--env=DCONF_USER_CONFIG_DIR=.config/dconf",
|
||||||
|
"--talk-name=org.freedesktop.FileManager1",
|
||||||
|
"--system-talk-name=org.freedesktop.NetworkManager",
|
||||||
|
"--talk-name=org.a11y.Bus",
|
||||||
|
"--talk-name=org.gnome.SessionManager",
|
||||||
|
"--talk-name=org.freedesktop.ScreenSaver",
|
||||||
|
"--talk-name=org.gtk.vfs.*",
|
||||||
|
"--socket=session-bus",
|
||||||
|
"--env=MOZ_ENABLE_WAYLAND=1",
|
||||||
|
"--share=network"
|
||||||
|
]
|
||||||
|
}
|
||||||
1
flatpak/content/shared-modules
Submodule
1
flatpak/content/shared-modules
Submodule
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 8ce6437c269ef28c49984c11246d27be433c21d5
|
||||||
340
librewolf.desktop
Normal file
340
librewolf.desktop
Normal file
|
|
@ -0,0 +1,340 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=LibreWolf
|
||||||
|
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 duyệt 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]=Để duyệt 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;Διαδίκτυο;Περιηγητής;LibreWolf;Φιρεφοχ;Ιντερνετ
|
||||||
|
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 duyệt;Trang web
|
||||||
|
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;LibreWolf;ff;互联网;网站;
|
||||||
|
Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
|
||||||
|
Exec=/usr/lib/librewolf/librewolf %u
|
||||||
|
Icon=librewolf
|
||||||
|
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=LibreWolf
|
||||||
|
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]=Cửa sổ mới
|
||||||
|
Name[wo]=Palanteer bu bees
|
||||||
|
Name[xh]=Ifestile entsha
|
||||||
|
Name[zh_CN]=新建窗口
|
||||||
|
Name[zh_TW]=開新視窗
|
||||||
|
Exec=/usr/lib/librewolf/librewolf --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]=Cửa sổ riêng tư mới
|
||||||
|
Name[wo]=Panlanteeru biir bu bees
|
||||||
|
Name[xh]=Ifestile yangasese entsha
|
||||||
|
Name[zh_CN]=新建隐私浏览窗口
|
||||||
|
Name[zh_TW]=新增隱私視窗
|
||||||
|
Exec=/usr/lib/librewolf/librewolf --private-window %u
|
||||||
13
librewolf.install
Normal file
13
librewolf.install
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
post_install() {
|
||||||
|
echo ">> If you want to reduce potential privacy leaks even further, you should consider"
|
||||||
|
echo ">> clearing a few settings required for updating/searching extensions:"
|
||||||
|
echo ">> extensions.getAddons.get.url"
|
||||||
|
echo ">> extensions.getAddons.langpacks.url"
|
||||||
|
echo ">> extensions.getAddons.link.url"
|
||||||
|
echo ">> extensions.getAddons.search.browseURL"
|
||||||
|
echo ">> extensions.update.url"
|
||||||
|
echo ">> extensions.update.background.url"
|
||||||
|
echo ">> If you do wish to install extensions the 'regular way',"
|
||||||
|
echo ">> a few more tweaks might be needed."
|
||||||
|
echo ">> I've kept the relevant settings unlocked for that specific reason."
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
|
diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
|
||||||
index 73d15df..99cc41b 100644
|
index 18d73db..7911576 100644
|
||||||
--- a/browser/components/urlbar/UrlbarInput.jsm
|
--- a/browser/components/urlbar/UrlbarInput.jsm
|
||||||
+++ b/browser/components/urlbar/UrlbarInput.jsm
|
+++ b/browser/components/urlbar/UrlbarInput.jsm
|
||||||
@@ -1692,13 +1692,13 @@ class UrlbarInput {
|
@@ -1172,13 +1172,13 @@ class UrlbarInput {
|
||||||
|
|
||||||
// Enable the animation only after the first extend call to ensure it
|
// Enable the animation only after the first extend call to ensure it
|
||||||
// doesn't run when opening a new window.
|
// doesn't run when opening a new window.
|
||||||
|
|
@ -24,19 +24,19 @@ index 73d15df..99cc41b 100644
|
||||||
|
|
||||||
endLayoutExtend() {
|
endLayoutExtend() {
|
||||||
diff --git a/browser/themes/shared/urlbar-searchbar.inc.css b/browser/themes/shared/urlbar-searchbar.inc.css
|
diff --git a/browser/themes/shared/urlbar-searchbar.inc.css b/browser/themes/shared/urlbar-searchbar.inc.css
|
||||||
index e9fde8b..6c4c444 100644
|
index 0b1f693..7de64a1 100644
|
||||||
--- a/browser/themes/shared/urlbar-searchbar.inc.css
|
--- a/browser/themes/shared/urlbar-searchbar.inc.css
|
||||||
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
|
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
|
||||||
@@ -5,7 +5,7 @@
|
@@ -6,7 +6,7 @@
|
||||||
%endif
|
|
||||||
|
|
||||||
|
%define fieldBorderColor hsla(240,5%,5%,.25)
|
||||||
%define fieldHoverBorderColor hsla(240,5%,5%,.35)
|
%define fieldHoverBorderColor hsla(240,5%,5%,.35)
|
||||||
-%define urlbarMarginInline 5px
|
-%define urlbarMarginInline 5px
|
||||||
+%define urlbarMarginInline 0px
|
+%define urlbarMarginInline 0px
|
||||||
%define urlbarSearchButtonWidth calc(16px + 2 * var(--urlbar-icon-padding))
|
%define urlbarSearchButtonWidth calc(16px + 2 * @identityBoxPaddingInline@)
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
@@ -273,9 +273,9 @@
|
@@ -197,13 +197,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[breakout][breakout-extend] {
|
#urlbar[breakout][breakout-extend] {
|
||||||
|
|
@ -48,18 +48,14 @@ index e9fde8b..6c4c444 100644
|
||||||
+ width: 100%;
|
+ width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports -moz-bool-pref("browser.proton.urlbar.enabled") {
|
|
||||||
@@ -288,7 +288,7 @@
|
|
||||||
|
|
||||||
@supports not -moz-bool-pref("browser.proton.urlbar.enabled") {
|
|
||||||
#urlbar[breakout][breakout-extend] > #urlbar-background {
|
#urlbar[breakout][breakout-extend] > #urlbar-background {
|
||||||
- box-shadow: 0 3px 8px 0 rgba(0,0,0,.15)
|
- box-shadow: 0 3px 8px 0 rgba(0,0,0,.15)
|
||||||
+ box-shadow: 0 1px 4px rgba(0,0,0,.05);
|
+ box-shadow: 0 1px 4px rgba(0,0,0,.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[breakout][breakout-extend][open] > #urlbar-background {
|
#urlbar[breakout][breakout-extend][open] > #urlbar-background {
|
||||||
@@ -297,9 +297,9 @@
|
@@ -211,9 +211,9 @@
|
||||||
} /*** END !proton ***/
|
}
|
||||||
|
|
||||||
#urlbar[breakout][breakout-extend] > #urlbar-input-container {
|
#urlbar[breakout][breakout-extend] > #urlbar-input-container {
|
||||||
- height: calc(var(--urlbar-toolbar-height) + 2 * @urlbarBreakoutExtend@);
|
- height: calc(var(--urlbar-toolbar-height) + 2 * @urlbarBreakoutExtend@);
|
||||||
|
|
@ -70,8 +66,8 @@ index e9fde8b..6c4c444 100644
|
||||||
+ padding-inline: 0;
|
+ padding-inline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports -moz-bool-pref("browser.proton.urlbar.enabled") {
|
#urlbar.searchButton[breakout][breakout-extend] > #urlbar-input-container > #urlbar-search-button {
|
||||||
@@ -325,7 +325,7 @@
|
@@ -231,7 +231,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[breakout][breakout-extend] > #urlbar-background {
|
#urlbar[breakout][breakout-extend] > #urlbar-background {
|
||||||
|
|
@ -81,49 +77,49 @@ index e9fde8b..6c4c444 100644
|
||||||
animation-timing-function: var(--animation-easing-function);
|
animation-timing-function: var(--animation-easing-function);
|
||||||
}
|
}
|
||||||
diff --git a/browser/themes/shared/urlbarView.inc.css b/browser/themes/shared/urlbarView.inc.css
|
diff --git a/browser/themes/shared/urlbarView.inc.css b/browser/themes/shared/urlbarView.inc.css
|
||||||
index c6ce546..da00fac 100644
|
index 6b8cac0..54648c6 100644
|
||||||
--- a/browser/themes/shared/urlbarView.inc.css
|
--- a/browser/themes/shared/urlbarView.inc.css
|
||||||
+++ b/browser/themes/shared/urlbarView.inc.css
|
+++ b/browser/themes/shared/urlbarView.inc.css
|
||||||
@@ -74,8 +74,8 @@
|
@@ -48,8 +48,8 @@
|
||||||
display: block;
|
display: block;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
overflow: clip;
|
overflow: clip;
|
||||||
- margin-inline: calc(5px + var(--urlbar-container-padding));
|
- margin-inline: @urlbarViewMarginInline@;
|
||||||
- width: calc(100% - 2 * (5px + var(--urlbar-container-padding)));
|
- width: calc(100% - 2 * @urlbarViewMarginInline@);
|
||||||
+ margin-inline: 0;
|
+ margin-inline: 0;
|
||||||
+ width: 100%;
|
+ width: 100%;
|
||||||
|
|
||||||
/* Match urlbar-background's border. */
|
/* Match urlbar-background's border. */
|
||||||
border-inline: 1px solid transparent;
|
border-inline: 1px solid transparent;
|
||||||
}
|
@@ -72,7 +72,7 @@
|
||||||
@@ -115,7 +115,7 @@
|
.urlbarView-row {
|
||||||
flex-wrap: nowrap;
|
|
||||||
fill: currentColor;
|
fill: currentColor;
|
||||||
fill-opacity: .6;
|
fill-opacity: .6;
|
||||||
- padding-block: 3px;
|
- padding-block: 3px;
|
||||||
+ padding-block: 0;
|
+ padding-block: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
:root[uidensity=compact] .urlbarView-row {
|
.urlbarView-row-inner {
|
||||||
@@ -280,6 +280,7 @@
|
@@ -179,6 +179,7 @@
|
||||||
object-fit: contain;
|
background-repeat: no-repeat;
|
||||||
flex-shrink: 0;
|
background-size: contain;
|
||||||
-moz-context-properties: fill, fill-opacity;
|
-moz-context-properties: fill, fill-opacity;
|
||||||
+ margin-inline-start: 20px;
|
+ margin-inline-start: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@supports not -moz-bool-pref("browser.proton.urlbar.enabled") {
|
@media (min-resolution: 2dppx) {
|
||||||
@@ -324,10 +325,10 @@
|
@@ -204,10 +205,10 @@
|
||||||
|
|
||||||
.urlbarView-type-icon {
|
.urlbarView-type-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
- width: 12px;
|
- min-width: 12px;
|
||||||
- height: 12px;
|
- height: 12px;
|
||||||
- margin-bottom: -4px;
|
- margin-bottom: -4px;
|
||||||
- margin-inline-start: 8px;
|
- margin-inline-start: 8px;
|
||||||
+ width: 16px;
|
+ min-width: 16px;
|
||||||
+ height: 16px;
|
+ height: 16px;
|
||||||
+ margin-bottom: 0;
|
+ margin-bottom: 0;
|
||||||
+ margin-inline-start: 0;
|
+ margin-inline-start: 0;
|
||||||
align-self: end;
|
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
|
-moz-context-properties: fill, stroke;
|
||||||
|
|
@ -1,18 +1,13 @@
|
||||||
diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
|
diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
|
||||||
index 269dcb2..ed7c31d 100644
|
index 0eb3c53..fb94b5c 100644
|
||||||
--- a/browser/extensions/moz.build
|
--- a/browser/extensions/moz.build
|
||||||
+++ b/browser/extensions/moz.build
|
+++ b/browser/extensions/moz.build
|
||||||
@@ -5,10 +5,7 @@
|
@@ -4,4 +4,4 @@
|
||||||
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
DIRS += [
|
-DIRS += ["doh-rollout", "formautofill", "screenshots", "webcompat", "report-site-issue"]
|
||||||
- "doh-rollout",
|
+DIRS += ["formautofill", "screenshots"]
|
||||||
"formautofill",
|
|
||||||
"screenshots",
|
|
||||||
- "webcompat",
|
|
||||||
- "report-site-issue",
|
|
||||||
"pictureinpicture",
|
|
||||||
]
|
|
||||||
diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
|
diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
|
||||||
index 496379c..dd6f359 100644
|
index 496379c..dd6f359 100644
|
||||||
--- a/browser/locales/Makefile.in
|
--- a/browser/locales/Makefile.in
|
||||||
|
|
@ -1,251 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
printf "\n\n------------------------------ FINAL PREBUILD CONFIGURATION ---------------------------------\n";
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Setup Script Variables
|
|
||||||
srcdir=$1;
|
|
||||||
CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../)}
|
|
||||||
_SOURCE_REPO='https://gitlab.com/librewolf-community/browser/source.git';
|
|
||||||
_PKGVER_TAG="v${pkgver}-${pkgrel}"
|
|
||||||
_SOURCE_TAG=${SOURCE_TAG:-${_PKGVER_TAG}}
|
|
||||||
_SOURCE_REPO_DIR="${CI_PROJECT_DIR}"/source
|
|
||||||
_PATCHES_DIR="${_SOURCE_REPO_DIR}"/patches
|
|
||||||
_MOZBUILD=$srcdir/../mozbuild
|
|
||||||
|
|
||||||
mkdir -p ${_MOZBUILD}
|
|
||||||
|
|
||||||
# Copy Source Code Changes to Source Code
|
|
||||||
printf "\nCopying branding and source code changes to firefox source code\n";
|
|
||||||
git clone $_SOURCE_REPO ${_SOURCE_REPO_DIR}
|
|
||||||
cd ${_SOURCE_REPO_DIR}
|
|
||||||
git checkout ${_SOURCE_TAG}
|
|
||||||
cd ..
|
|
||||||
cp -r ${_SOURCE_REPO_DIR}/themes/browser $srcdir/;
|
|
||||||
|
|
||||||
cd $srcdir
|
|
||||||
|
|
||||||
cat >${CI_PROJECT_DIR}/mozconfig <<END
|
|
||||||
ac_add_options --enable-application=browser
|
|
||||||
mk_add_options MOZ_OBJDIR=${srcdir}/firefox-${pkgver}/obj
|
|
||||||
|
|
||||||
# to build on ubuntu and pick up clang
|
|
||||||
ac_add_options NODEJS=/usr/lib/nodejs-mozilla/bin/node
|
|
||||||
|
|
||||||
# This supposedly speeds up compilation (We test through dogfooding anyway)
|
|
||||||
ac_add_options --disable-tests
|
|
||||||
ac_add_options --disable-debug
|
|
||||||
|
|
||||||
ac_add_options --prefix=/usr
|
|
||||||
ac_add_options --enable-release
|
|
||||||
ac_add_options --enable-hardening
|
|
||||||
ac_add_options --enable-rust-simd
|
|
||||||
|
|
||||||
# attempt to address flatpak dbus issues
|
|
||||||
ac_add_options --enable-dbus
|
|
||||||
|
|
||||||
# Branding
|
|
||||||
ac_add_options --enable-update-channel=release
|
|
||||||
ac_add_options --with-app-name=librewolf
|
|
||||||
# ac_add_options --with-app-basename=LibreWolf
|
|
||||||
|
|
||||||
# switch to env vars like in librewolf source repo
|
|
||||||
# this is in browser/branding/librewolf/configure.sh as well
|
|
||||||
# so it _should_ already be applied, buuuuut just in case?
|
|
||||||
|
|
||||||
export MOZ_APP_NAME=librewolf
|
|
||||||
export MOZ_APP_BASENAME=LibreWolf
|
|
||||||
export MOZ_APP_PROFILE=librewolf
|
|
||||||
export MOZ_APP_VENDOR=LibreWolf
|
|
||||||
export MOZ_APP_DISPLAYNAME=LibreWolf
|
|
||||||
|
|
||||||
ac_add_options --with-branding=browser/branding/librewolf
|
|
||||||
# ac_add_options --with-distribution-id=io.gitlab.librewolf-community
|
|
||||||
ac_add_options --with-unsigned-addon-scopes=app,system
|
|
||||||
ac_add_options --allow-addon-sideload
|
|
||||||
export MOZ_REQUIRE_SIGNING=
|
|
||||||
|
|
||||||
# System libraries
|
|
||||||
# ac_add_options --with-system-nspr
|
|
||||||
# ac_add_options --with-system-nss
|
|
||||||
|
|
||||||
# Features
|
|
||||||
ac_add_options --enable-alsa
|
|
||||||
ac_add_options --enable-jack
|
|
||||||
ac_add_options --disable-crashreporter
|
|
||||||
ac_add_options --disable-updater
|
|
||||||
ac_add_options --disable-tests
|
|
||||||
|
|
||||||
# obsoleted?
|
|
||||||
# TODO: use source/assets/moczonfig in the future
|
|
||||||
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="-j4"
|
|
||||||
# ac_add_options --enable-linker=gold
|
|
||||||
|
|
||||||
# required for 95.0 for now, it seems
|
|
||||||
ac_add_options --without-wasm-sandboxed-libraries
|
|
||||||
|
|
||||||
# experimental JXL support
|
|
||||||
ac_add_options --enable-jxl
|
|
||||||
END
|
|
||||||
|
|
||||||
# allow setting limited resource usage via ENV / CI:
|
|
||||||
|
|
||||||
if [[ ! -z ${CORES_TO_USE} ]]; then
|
|
||||||
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j${CORES_TO_USE}\"" >> ${CI_PROJECT_DIR}/mozconfig
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
|
||||||
cat >>${CI_PROJECT_DIR}/mozconfig <<END
|
|
||||||
# taken from manjaro build:
|
|
||||||
ac_add_options --enable-optimize="-g0 -O2"
|
|
||||||
|
|
||||||
export CC='clang-13'
|
|
||||||
export CXX='clang++-13'
|
|
||||||
export AR=llvm-ar-13
|
|
||||||
export NM=llvm-nm-13
|
|
||||||
export RANLIB=llvm-ranlib-13
|
|
||||||
END
|
|
||||||
|
|
||||||
export MOZ_DEBUG_FLAGS=" "
|
|
||||||
export CFLAGS+=" -g0"
|
|
||||||
export CXXFLAGS+=" -g0"
|
|
||||||
export RUSTFLAGS="-Cdebuginfo=0"
|
|
||||||
|
|
||||||
export LDFLAGS+=" -Wl,--no-keep-memory -Wl"
|
|
||||||
|
|
||||||
else
|
|
||||||
cat >>${CI_PROJECT_DIR}/mozconfig <<END
|
|
||||||
# ubuntu seems to recommend this
|
|
||||||
ac_add_options --disable-elf-hack
|
|
||||||
|
|
||||||
export CC='clang-13'
|
|
||||||
export CXX='clang++-13'
|
|
||||||
export AR=llvm-ar-13
|
|
||||||
export NM=llvm-nm-13
|
|
||||||
export RANLIB=llvm-ranlib-13
|
|
||||||
|
|
||||||
# probably not needed, enabled by default?
|
|
||||||
ac_add_options --enable-optimize
|
|
||||||
|
|
||||||
# unavailable option when (on ubuntu at least(?)) building on aarch64
|
|
||||||
ac_add_options NASM=/usr/lib/nasm-mozilla/bin/nasm
|
|
||||||
END
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# hopefully the magic sauce that makes things build on 18.04 and later on work "everywhere":
|
|
||||||
patch -Np1 -i "${CI_PROJECT_DIR}/deb_patches/armhf-reduce-linker-memory-use.patch"
|
|
||||||
patch -Np1 -i "${CI_PROJECT_DIR}/deb_patches/reduce-rust-debuginfo.patch"
|
|
||||||
patch -Np1 -i "${CI_PROJECT_DIR}/deb_patches/use-system-icupkg.patch"
|
|
||||||
|
|
||||||
# might make the build just a tiny bit cleaner, not really required though
|
|
||||||
patch -Np1 -i "${CI_PROJECT_DIR}/deb_patches/fix-wayland-build.patch"
|
|
||||||
|
|
||||||
# allow enabling JPEG XL in non-nightly browser
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/allow-JXL-in-non-nightly-browser.patch
|
|
||||||
|
|
||||||
# Remove some pre-installed addons that might be questionable
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/remove_addons.patch
|
|
||||||
|
|
||||||
|
|
||||||
# KDE menu and unity menubar. patch order matters.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/unity_kde/mozilla-kde.patch
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/unity_kde/firefox-kde.patch
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/unity_kde/unity-menubar.patch
|
|
||||||
|
|
||||||
# Disabling Pocket
|
|
||||||
printf "\nDisabling Pocket\n";
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/sed-patches/disable-pocket.patch"
|
|
||||||
|
|
||||||
# More patches
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/context-menu.patch"
|
|
||||||
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/urlbarprovider-interventions.patch"
|
|
||||||
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/unified-extensions-dont-show-recommendations.patch"
|
|
||||||
|
|
||||||
# allow SearchEngines option in non-ESR builds
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/sed-patches/allow-searchengines-non-esr.patch"
|
|
||||||
|
|
||||||
# fix broken(?)/unintended handling of autoconf file loading in flatpak/snap environments
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/flatpak_autoconf.patch"
|
|
||||||
|
|
||||||
# remove search extensions (experimental)
|
|
||||||
# patch -Np1 -i "${_PATCHES_DIR}/search-config.patch"
|
|
||||||
cp "${_SOURCE_REPO_DIR}/assets/search-config.json" services/settings/dumps/main/search-config.json
|
|
||||||
|
|
||||||
# stop some undesired requests (https://gitlab.com/librewolf-community/browser/common/-/issues/10)
|
|
||||||
patch -Np1 -i "${_PATCHES_DIR}/sed-patches/stop-undesired-requests.patch"
|
|
||||||
|
|
||||||
# change some hardcoded directory strings that could lead to unnecessarily
|
|
||||||
# created directories
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/mozilla_dirs.patch
|
|
||||||
|
|
||||||
# somewhat experimental patch to fix bus/dbus/remoting names to io.gitlab.librewolf
|
|
||||||
# should not break things, buuuuuuuuuut we'll see.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/dbus_name.patch
|
|
||||||
|
|
||||||
# allow uBlockOrigin to run in private mode by default, without user intervention.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/allow-ubo-private-mode.patch
|
|
||||||
|
|
||||||
# add custom uBO assets (on first launch only)
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/custom-ubo-assets-bootstrap-location.patch
|
|
||||||
|
|
||||||
#
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/faster-package-multi-locale.patch
|
|
||||||
|
|
||||||
# ui patches
|
|
||||||
|
|
||||||
# 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}/ui-patches/pref-naming.patch
|
|
||||||
|
|
||||||
#
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/handlers.patch
|
|
||||||
|
|
||||||
#
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/hide-default-browser.patch
|
|
||||||
|
|
||||||
# Add LibreWolf logo to Debugging Page
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/lw-logo-devtools.patch
|
|
||||||
|
|
||||||
#
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/privacy-preferences.patch
|
|
||||||
|
|
||||||
# remove firefox references in the urlbar, when suggesting opened tabs.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/remove-branding-urlbar.patch
|
|
||||||
|
|
||||||
# remove cfr UI elements, as they are disabled and locked already.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/remove-cfrprefs.patch
|
|
||||||
|
|
||||||
# do not display your browser is being managed by your organization in the settings.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/remove-organization-policy-banner.patch
|
|
||||||
|
|
||||||
# hide "snippets" section from the home page settings, as it was already locked.
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/remove-snippets-from-home.patch
|
|
||||||
|
|
||||||
# add patch to hide website appearance settings
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/website-appearance-ui-rfp.patch
|
|
||||||
|
|
||||||
# pref pane
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/librewolf-pref-pane.patch
|
|
||||||
|
|
||||||
# firefox view
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/ui-patches/firefox-view.patch
|
|
||||||
|
|
||||||
# new prefs (view, ubo)
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/librewolf-prefs.patch
|
|
||||||
|
|
||||||
# fix telemetry removal, see https://gitlab.com/librewolf-community/browser/linux/-/merge_requests/17, for example
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/disable-data-reporting-at-compile-time.patch
|
|
||||||
|
|
||||||
# allows hiding the password manager (from the lw pref pane) / via a pref
|
|
||||||
patch -Np1 -i ${_PATCHES_DIR}/hide-passwordmgr.patch
|
|
||||||
|
|
||||||
rm -rf source
|
|
||||||
43
trigger_pipeline.md
Normal file
43
trigger_pipeline.md
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Pipeline
|
||||||
|
|
||||||
|
## Triggering
|
||||||
|
|
||||||
|
The pipeline can currently only triggered manually. The version and variants to be build need
|
||||||
|
to be specified via variables:
|
||||||
|
|
||||||
|
* **pkgver** is the upstream Firefox release version
|
||||||
|
* **pkgrel** is the "Arch-style" package version[^1]
|
||||||
|
* **TARBALL** should a tarball be built (on Ubuntu 16.04 Xenial at the time of writing)
|
||||||
|
* **ARCH** should an Arch package be built
|
||||||
|
* **FLATPAK** should a Flatpak be built from a Tarball
|
||||||
|
* **APPIMAGE** should an AppImage be built from a Tarball
|
||||||
|
* **AARCH64** build for `aarch64`
|
||||||
|
* **X86_64** build for `x86_64`
|
||||||
|
* **TARBALL_URL** provide a tarball download URL for Flatpak or AppImage builds if the tarball is not built in the same pipeline run
|
||||||
|
|
||||||
|
Builds can be combined, so a full run for `x86_64` and `aarch64` including Arch releases, tarball build and Appimage and FlatPak releases is possible.
|
||||||
|
|
||||||
|
Variables are either unset, or have to be set (to `true`).
|
||||||
|
|
||||||
|
### Browser
|
||||||
|
|
||||||
|
Pipelines can be manually triggered from https://gitlab.com/librewolf-community/browser/linux/pipelines/new
|
||||||
|
|
||||||
|
### Commandline
|
||||||
|
|
||||||
|
Triggering from the commandline is possible via curl, but a valid Gitlab token needs to be provided.
|
||||||
|
|
||||||
|
The following is an example that only builds the tarball and the Flatpak and AppImage for `x86_64`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
|
||||||
|
--header "Content-Type: application/json" \
|
||||||
|
--data '{ "ref": "master", "variables": [ {"key": "TARBALL", "value": "true"}, {"key": "FLATPAK", "value": "true"}, {"key": "APPIMAGE", "value": "true"}, {"key": "pkgver", "value": "74.0"}, {"key": "pkgrel", "value": "3"}, {"key": "X86_64", "value": "true"} ] }' \
|
||||||
|
"https://gitlab.com/api/v4/projects/12829184/pipeline"
|
||||||
|
```
|
||||||
|
|
||||||
|
[^1]: *The release number. This is usually a positive integer number that allows to differentiate
|
||||||
|
between consecutive builds of the same version of a package. As fixes and additional features are
|
||||||
|
added to the PKGBUILD that influence the resulting package, the pkgrel should be incremented by 1.
|
||||||
|
When a new version of the software is released, this value must be reset to 1.*
|
||||||
|
https://wiki.archlinux.org/index.php/PKGBUILD#pkgrel
|
||||||
|
|
@ -1,22 +1,20 @@
|
||||||
--- a/browser/base/content/browser-menubar.inc
|
--- a/browser/base/content/browser-menubar.inc
|
||||||
+++ b/browser/base/content/browser-menubar.inc
|
+++ b/browser/base/content/browser-menubar.inc
|
||||||
@@ -7,7 +7,12 @@
|
@@ -5,7 +5,11 @@
|
||||||
# On macOS, we don't track whether activation of the native menubar happened
|
|
||||||
# with the keyboard.
|
<menubar id="main-menubar"
|
||||||
#ifndef XP_MACOSX
|
onpopupshowing="if (event.target.parentNode.parentNode == this &&
|
||||||
- onpopupshowing="if (event.target.parentNode.parentNode == this)
|
|
||||||
+ onpopupshowing="if (event.target.parentNode.parentNode == this &&
|
|
||||||
+#ifdef MOZ_WIDGET_GTK
|
+#ifdef MOZ_WIDGET_GTK
|
||||||
+ document.documentElement.getAttribute('shellshowingmenubar') != 'true')
|
+ document.documentElement.getAttribute('shellshowingmenubar') != 'true')
|
||||||
+#else
|
+#else
|
||||||
+ true)
|
!('@mozilla.org/widget/nativemenuservice;1' in Cc))
|
||||||
+#endif
|
+#endif
|
||||||
this.setAttribute('openedwithkey',
|
this.setAttribute('openedwithkey',
|
||||||
event.target.parentNode.openedWithKey);"
|
event.target.parentNode.openedWithKey);">
|
||||||
#endif
|
<menu id="file-menu" data-l10n-id="menu-file">
|
||||||
--- a/browser/base/content/browser.js
|
--- a/browser/base/content/browser.js
|
||||||
+++ b/browser/base/content/browser.js
|
+++ b/browser/base/content/browser.js
|
||||||
@@ -6291,11 +6291,18 @@ function onViewToolbarsPopupShowing(aEve
|
@@ -6274,11 +6274,18 @@ function onViewToolbarsPopupShowing(aEve
|
||||||
MozXULElement.insertFTLIfNeeded("browser/toolbarContextMenu.ftl");
|
MozXULElement.insertFTLIfNeeded("browser/toolbarContextMenu.ftl");
|
||||||
let firstMenuItem = aInsertPoint || popup.firstElementChild;
|
let firstMenuItem = aInsertPoint || popup.firstElementChild;
|
||||||
let toolbarNodes = gNavToolbox.querySelectorAll("toolbar");
|
let toolbarNodes = gNavToolbox.querySelectorAll("toolbar");
|
||||||
|
|
@ -100,7 +98,7 @@
|
||||||
"components.conf",
|
"components.conf",
|
||||||
--- a/modules/libpref/init/all.js
|
--- a/modules/libpref/init/all.js
|
||||||
+++ b/modules/libpref/init/all.js
|
+++ b/modules/libpref/init/all.js
|
||||||
@@ -301,6 +301,9 @@ pref("dom.mouseevent.click.hack.use_lega
|
@@ -312,6 +312,9 @@ pref("dom.mouseevent.click.hack.use_lega
|
||||||
// Fastback caching - if this pref is negative, then we calculate the number
|
// Fastback caching - if this pref is negative, then we calculate the number
|
||||||
// of content viewers to cache based on the amount of available memory.
|
// of content viewers to cache based on the amount of available memory.
|
||||||
pref("browser.sessionhistory.max_total_viewers", -1);
|
pref("browser.sessionhistory.max_total_viewers", -1);
|
||||||
|
|
@ -112,7 +110,7 @@
|
||||||
|
|
||||||
--- a/toolkit/content/xul.css
|
--- a/toolkit/content/xul.css
|
||||||
+++ b/toolkit/content/xul.css
|
+++ b/toolkit/content/xul.css
|
||||||
@@ -230,6 +230,13 @@ toolbar[type="menubar"] {
|
@@ -216,6 +216,13 @@ toolbar[type="menubar"] {
|
||||||
}
|
}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
@ -128,24 +126,7 @@
|
||||||
}
|
}
|
||||||
--- a/widget/gtk/moz.build
|
--- a/widget/gtk/moz.build
|
||||||
+++ b/widget/gtk/moz.build
|
+++ b/widget/gtk/moz.build
|
||||||
@@ -33,11 +33,16 @@ EXPORTS += [
|
@@ -59,6 +59,15 @@ UNIFIED_SOURCES += [
|
||||||
|
|
||||||
EXPORTS.mozilla += ["WidgetUtilsGtk.h"]
|
|
||||||
|
|
||||||
+EXPORTS.mozilla.widget += [
|
|
||||||
+ "NativeMenuSupport.h",
|
|
||||||
+]
|
|
||||||
+
|
|
||||||
UNIFIED_SOURCES += [
|
|
||||||
"IMContextWrapper.cpp",
|
|
||||||
"MozContainer.cpp",
|
|
||||||
"MPRISServiceHandler.cpp",
|
|
||||||
"NativeKeyBindings.cpp",
|
|
||||||
+ "NativeMenuSupport.cpp",
|
|
||||||
"nsAppShell.cpp",
|
|
||||||
"nsBidiKeyboard.cpp",
|
|
||||||
"nsColorPicker.cpp",
|
|
||||||
@@ -59,6 +64,15 @@ UNIFIED_SOURCES += [
|
|
||||||
|
|
||||||
SOURCES += [
|
SOURCES += [
|
||||||
"MediaKeysEventSourceFactory.cpp",
|
"MediaKeysEventSourceFactory.cpp",
|
||||||
|
|
@ -161,7 +142,7 @@
|
||||||
"nsWindow.cpp", # conflicts with X11 headers
|
"nsWindow.cpp", # conflicts with X11 headers
|
||||||
"WaylandVsyncSource.cpp", # conflicts with X11 headers
|
"WaylandVsyncSource.cpp", # conflicts with X11 headers
|
||||||
]
|
]
|
||||||
@@ -139,6 +153,7 @@ LOCAL_INCLUDES += [
|
@@ -139,6 +148,7 @@ LOCAL_INCLUDES += [
|
||||||
"/layout/base",
|
"/layout/base",
|
||||||
"/layout/forms",
|
"/layout/forms",
|
||||||
"/layout/generic",
|
"/layout/generic",
|
||||||
|
|
@ -3223,7 +3204,7 @@
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ const nsStyleList *list = aComputedStyle->StyleList();
|
+ const nsStyleList *list = aComputedStyle->StyleList();
|
||||||
+ imageRequest = list->mListStyleImage.GetImageRequest();
|
+ imageRequest = list->GetListStyleImage();
|
||||||
+ if (imageRequest) {
|
+ if (imageRequest) {
|
||||||
+ imageRequest->GetURI(getter_AddRefs(uri));
|
+ imageRequest->GetURI(getter_AddRefs(uri));
|
||||||
+ auto& rect = list->mImageRegion.AsRect();
|
+ auto& rect = list->mImageRegion.AsRect();
|
||||||
|
|
@ -4294,7 +4275,7 @@
|
||||||
+ MOZ_ASSERT(!mContentToObserverTable.Get(aContent, &old) || old == aObserver,
|
+ MOZ_ASSERT(!mContentToObserverTable.Get(aContent, &old) || old == aObserver,
|
||||||
+ "Multiple observers for the same content node are not supported");
|
+ "Multiple observers for the same content node are not supported");
|
||||||
+
|
+
|
||||||
+ mContentToObserverTable.InsertOrUpdate(aContent, aObserver);
|
+ mContentToObserverTable.Put(aContent, aObserver);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
|
|
@ -4354,7 +4335,7 @@
|
||||||
+#include "mozilla/Attributes.h"
|
+#include "mozilla/Attributes.h"
|
||||||
+#include "mozilla/RefPtr.h"
|
+#include "mozilla/RefPtr.h"
|
||||||
+#include "mozilla/UniquePtr.h"
|
+#include "mozilla/UniquePtr.h"
|
||||||
+#include "nsTHashMap.h"
|
+#include "nsDataHashtable.h"
|
||||||
+#include "nsStubMutationObserver.h"
|
+#include "nsStubMutationObserver.h"
|
||||||
+#include "nsTArray.h"
|
+#include "nsTArray.h"
|
||||||
+
|
+
|
||||||
|
|
@ -4461,7 +4442,7 @@
|
||||||
+ nsIContent *mLastSource;
|
+ nsIContent *mLastSource;
|
||||||
+ nsNativeMenuChangeObserver *mLastTarget;
|
+ nsNativeMenuChangeObserver *mLastTarget;
|
||||||
+ nsTArray<mozilla::UniquePtr<MutationRecord> > mPendingMutations;
|
+ nsTArray<mozilla::UniquePtr<MutationRecord> > mPendingMutations;
|
||||||
+ nsTHashMap<nsPtrHashKey<nsIContent>, nsNativeMenuChangeObserver *> mContentToObserverTable;
|
+ nsDataHashtable<nsPtrHashKey<nsIContent>, nsNativeMenuChangeObserver *> mContentToObserverTable;
|
||||||
+
|
+
|
||||||
+ static uint32_t sUpdateBlockersCount;
|
+ static uint32_t sUpdateBlockersCount;
|
||||||
+};
|
+};
|
||||||
|
|
@ -4495,7 +4476,7 @@
|
||||||
+#endif /* __nsNativeMenuDocListener_h__ */
|
+#endif /* __nsNativeMenuDocListener_h__ */
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/widget/gtk/nsNativeMenuService.cpp
|
+++ b/widget/gtk/nsNativeMenuService.cpp
|
||||||
@@ -0,0 +1,478 @@
|
@@ -0,0 +1,504 @@
|
||||||
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
+/* vim:expandtab:shiftwidth=4:tabstop=4:
|
+/* vim:expandtab:shiftwidth=4:tabstop=4:
|
||||||
+ */
|
+ */
|
||||||
|
|
@ -4533,6 +4514,32 @@
|
||||||
+extern PangoLayout* gPangoLayout;
|
+extern PangoLayout* gPangoLayout;
|
||||||
+extern nsNativeMenuDocListenerTArray* gPendingListeners;
|
+extern nsNativeMenuDocListenerTArray* gPendingListeners;
|
||||||
+
|
+
|
||||||
|
+#if not GLIB_CHECK_VERSION(2,26,0)
|
||||||
|
+enum GBusType {
|
||||||
|
+ G_BUS_TYPE_STARTER = -1,
|
||||||
|
+ G_BUS_TYPE_NONE = 0,
|
||||||
|
+ G_BUS_TYPE_SYSTEM = 1,
|
||||||
|
+ G_BUS_TYPE_SESSION = 2
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum GDBusProxyFlags {
|
||||||
|
+ G_DBUS_PROXY_FLAGS_NONE = 0,
|
||||||
|
+ G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = 1 << 0,
|
||||||
|
+ G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = 1 << 1,
|
||||||
|
+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = 1 << 2,
|
||||||
|
+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = 1 << 3
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+enum GDBusCallFlags {
|
||||||
|
+ G_DBUS_CALL_FLAGS_NONE = 0,
|
||||||
|
+ G_DBUS_CALL_FLAGS_NO_AUTO_START = 1 << 0
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+typedef _GDBusInterfaceInfo GDBusInterfaceInfo;
|
||||||
|
+typedef _GDBusProxy GDBusProxy;
|
||||||
|
+typedef _GVariant GVariant;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
+#undef g_dbus_proxy_new_for_bus
|
+#undef g_dbus_proxy_new_for_bus
|
||||||
+#undef g_dbus_proxy_new_for_bus_finish
|
+#undef g_dbus_proxy_new_for_bus_finish
|
||||||
+#undef g_dbus_proxy_call
|
+#undef g_dbus_proxy_call
|
||||||
|
|
@ -4739,7 +4746,7 @@
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ GCancellable *cancellable = g_cancellable_new();
|
+ GCancellable *cancellable = g_cancellable_new();
|
||||||
+ mMenuBarRegistrationCancellables.InsertOrUpdate(aMenuBar, cancellable);
|
+ mMenuBarRegistrationCancellables.Put(aMenuBar, cancellable);
|
||||||
+
|
+
|
||||||
+ // We keep a weak ref because we can't assume that GDBus cancellation
|
+ // We keep a weak ref because we can't assume that GDBus cancellation
|
||||||
+ // is reliable (see https://launchpad.net/bugs/953562)
|
+ // is reliable (see https://launchpad.net/bugs/953562)
|
||||||
|
|
@ -4976,7 +4983,7 @@
|
||||||
+}
|
+}
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/widget/gtk/nsNativeMenuService.h
|
+++ b/widget/gtk/nsNativeMenuService.h
|
||||||
@@ -0,0 +1,85 @@
|
@@ -0,0 +1,84 @@
|
||||||
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
+/* vim:expandtab:shiftwidth=4:tabstop=4:
|
+/* vim:expandtab:shiftwidth=4:tabstop=4:
|
||||||
+ */
|
+ */
|
||||||
|
|
@ -4989,7 +4996,7 @@
|
||||||
+
|
+
|
||||||
+#include "mozilla/Attributes.h"
|
+#include "mozilla/Attributes.h"
|
||||||
+#include "nsCOMPtr.h"
|
+#include "nsCOMPtr.h"
|
||||||
+#include "nsTHashMap.h"
|
+#include "nsDataHashtable.h"
|
||||||
+#include "nsINativeMenuService.h"
|
+#include "nsINativeMenuService.h"
|
||||||
+#include "nsTArray.h"
|
+#include "nsTArray.h"
|
||||||
+
|
+
|
||||||
|
|
@ -5000,9 +5007,8 @@
|
||||||
+class nsMenuBar;
|
+class nsMenuBar;
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
+ * The main native menu service singleton.
|
+ * The main native menu service singleton. nsWebShellWindow calls in to this when
|
||||||
+ * NativeMenuSupport::CreateNativeMenuBar calls in to this when a new top level
|
+ * a new top level window is created.
|
||||||
+ * window is created.
|
|
||||||
+ *
|
+ *
|
||||||
+ * Menubars are owned by their nsWindow. This service holds a weak reference to
|
+ * Menubars are owned by their nsWindow. This service holds a weak reference to
|
||||||
+ * each menubar for the purpose of re-registering them with the shell if it
|
+ * each menubar for the purpose of re-registering them with the shell if it
|
||||||
|
|
@ -5055,7 +5061,7 @@
|
||||||
+ GDBusProxy *mDbusProxy;
|
+ GDBusProxy *mDbusProxy;
|
||||||
+ bool mOnline;
|
+ bool mOnline;
|
||||||
+ nsTArray<nsMenuBar *> mMenuBars;
|
+ nsTArray<nsMenuBar *> mMenuBars;
|
||||||
+ nsTHashMap<nsPtrHashKey<nsMenuBar>, GCancellable*> mMenuBarRegistrationCancellables;
|
+ nsDataHashtable<nsPtrHashKey<nsMenuBar>, GCancellable*> mMenuBarRegistrationCancellables;
|
||||||
+
|
+
|
||||||
+ static bool sShutdown;
|
+ static bool sShutdown;
|
||||||
+ static nsNativeMenuService *sService;
|
+ static nsNativeMenuService *sService;
|
||||||
|
|
@ -5064,7 +5070,7 @@
|
||||||
+#endif /* __nsNativeMenuService_h__ */
|
+#endif /* __nsNativeMenuService_h__ */
|
||||||
--- a/widget/gtk/nsWindow.cpp
|
--- a/widget/gtk/nsWindow.cpp
|
||||||
+++ b/widget/gtk/nsWindow.cpp
|
+++ b/widget/gtk/nsWindow.cpp
|
||||||
@@ -6409,6 +6409,10 @@ void nsWindow::HideWindowChrome(bool aSh
|
@@ -6148,6 +6148,10 @@ void nsWindow::HideWindowChrome(bool aSh
|
||||||
SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle);
|
SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5086,7 +5092,7 @@
|
||||||
#undef LOG
|
#undef LOG
|
||||||
#ifdef MOZ_LOGGING
|
#ifdef MOZ_LOGGING
|
||||||
|
|
||||||
@@ -182,6 +184,8 @@ class nsWindow final : public nsBaseWidg
|
@@ -177,6 +179,8 @@ class nsWindow final : public nsBaseWidg
|
||||||
nsIScreen* aTargetScreen = nullptr) override;
|
nsIScreen* aTargetScreen = nullptr) override;
|
||||||
virtual void HideWindowChrome(bool aShouldHide) override;
|
virtual void HideWindowChrome(bool aShouldHide) override;
|
||||||
|
|
||||||
|
|
@ -5095,8 +5101,8 @@
|
||||||
/**
|
/**
|
||||||
* GetLastUserInputTime returns a timestamp for the most recent user input
|
* GetLastUserInputTime returns a timestamp for the most recent user input
|
||||||
* event. This is intended for pointer grab requests (including drags).
|
* event. This is intended for pointer grab requests (including drags).
|
||||||
@@ -722,6 +726,8 @@ class nsWindow final : public nsBaseWidg
|
@@ -703,6 +707,8 @@ class nsWindow final : public nsBaseWidg
|
||||||
static GtkWindowDecoration sGtkWindowDecoration;
|
static CSDSupportLevel sCSDSupportLevel;
|
||||||
|
|
||||||
static bool sTransparentMainWindow;
|
static bool sTransparentMainWindow;
|
||||||
+
|
+
|
||||||
|
|
@ -5104,6 +5110,21 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __nsWindow_h__ */
|
#endif /* __nsWindow_h__ */
|
||||||
|
--- a/widget/moz.build
|
||||||
|
+++ b/widget/moz.build
|
||||||
|
@@ -68,9 +68,9 @@ elif toolkit == "cocoa":
|
||||||
|
"nsITouchBarInput.idl",
|
||||||
|
"nsITouchBarUpdater.idl",
|
||||||
|
]
|
||||||
|
- EXPORTS += [
|
||||||
|
- "nsINativeMenuService.h",
|
||||||
|
- ]
|
||||||
|
+
|
||||||
|
+if toolkit in ("cocoa", "gtk"):
|
||||||
|
+ EXPORTS += ["nsINativeMenuService.h"]
|
||||||
|
|
||||||
|
TEST_DIRS += ["tests", "tests/gtest"]
|
||||||
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/xpcom/ds/NativeMenuAtoms.py
|
+++ b/xpcom/ds/NativeMenuAtoms.py
|
||||||
@@ -0,0 +1,9 @@
|
@@ -0,0 +1,9 @@
|
||||||
|
|
@ -5126,15 +5147,15 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Static atom definitions, used to generate nsGkAtomList.h.
|
# Static atom definitions, used to generate nsGkAtomList.h.
|
||||||
@@ -2507,7 +2508,7 @@ STATIC_ATOMS = [
|
@@ -2562,7 +2563,7 @@ STATIC_ATOMS = [
|
||||||
InheritingAnonBoxAtom("AnonBox_mozSVGForeignContent", ":-moz-svg-foreign-content"),
|
InheritingAnonBoxAtom("AnonBox_mozSVGForeignContent", ":-moz-svg-foreign-content"),
|
||||||
InheritingAnonBoxAtom("AnonBox_mozSVGText", ":-moz-svg-text"),
|
InheritingAnonBoxAtom("AnonBox_mozSVGText", ":-moz-svg-text"),
|
||||||
# END ATOMS
|
# END ATOMS
|
||||||
-] + HTML_PARSER_ATOMS
|
-] + HTML_PARSER_ATOMS
|
||||||
+] + HTML_PARSER_ATOMS + NATIVE_MENU_ATOMS
|
+] + HTML_PARSER_ATOMS + NATIVE_MENU_ATOMS
|
||||||
# fmt: on
|
|
||||||
|
|
||||||
|
|
||||||
|
def verify():
|
||||||
--- a/widget/gtk/components.conf
|
--- a/widget/gtk/components.conf
|
||||||
+++ b/widget/gtk/components.conf
|
+++ b/widget/gtk/components.conf
|
||||||
@@ -82,6 +82,14 @@ Classes = [
|
@@ -82,6 +82,14 @@ Classes = [
|
||||||
|
|
@ -5142,7 +5163,7 @@
|
||||||
'processes': ProcessSelector.MAIN_PROCESS_ONLY,
|
'processes': ProcessSelector.MAIN_PROCESS_ONLY,
|
||||||
},
|
},
|
||||||
+ {
|
+ {
|
||||||
+ 'cid': '{0b3fe5aa-bc72-4303-85ae-76365df1251d}',
|
+ 'cid': '{0B3FE5AA-BC72-4303-85AE-76365DF1251D}',
|
||||||
+ 'contract_ids': ['@mozilla.org/widget/nativemenuservice;1'],
|
+ 'contract_ids': ['@mozilla.org/widget/nativemenuservice;1'],
|
||||||
+ 'singleton': True,
|
+ 'singleton': True,
|
||||||
+ 'type': 'nsNativeMenuService',
|
+ 'type': 'nsNativeMenuService',
|
||||||
|
|
@ -5154,147 +5175,12 @@
|
||||||
if defined('MOZ_X11'):
|
if defined('MOZ_X11'):
|
||||||
--- a/xpfe/appshell/AppWindow.cpp
|
--- a/xpfe/appshell/AppWindow.cpp
|
||||||
+++ b/xpfe/appshell/AppWindow.cpp
|
+++ b/xpfe/appshell/AppWindow.cpp
|
||||||
@@ -79,7 +79,7 @@
|
@@ -76,7 +76,7 @@
|
||||||
|
# include "mozilla/XULStore.h"
|
||||||
#include "mozilla/dom/DocumentL10n.h"
|
#endif
|
||||||
|
|
||||||
-#ifdef XP_MACOSX
|
-#ifdef XP_MACOSX
|
||||||
+#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
|
+#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
|
||||||
# include "mozilla/widget/NativeMenuSupport.h"
|
# include "nsINativeMenuService.h"
|
||||||
# define USE_NATIVE_MENUS
|
# define USE_NATIVE_MENUS
|
||||||
#endif
|
#endif
|
||||||
--- /dev/null
|
|
||||||
+++ b/widget/gtk/NativeMenuSupport.cpp
|
|
||||||
@@ -0,0 +1,25 @@
|
|
||||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
+
|
|
||||||
+#include "mozilla/widget/NativeMenuSupport.h"
|
|
||||||
+
|
|
||||||
+#include "MainThreadUtils.h"
|
|
||||||
+#include "nsINativeMenuService.h"
|
|
||||||
+
|
|
||||||
+namespace mozilla::widget {
|
|
||||||
+
|
|
||||||
+void NativeMenuSupport::CreateNativeMenuBar(nsIWidget* aParent, dom::Element* aMenuBarElement) {
|
|
||||||
+ MOZ_RELEASE_ASSERT(NS_IsMainThread(), "Attempting to create native menu bar on wrong thread!");
|
|
||||||
+
|
|
||||||
+ nsCOMPtr<nsINativeMenuService> nms =
|
|
||||||
+ do_GetService("@mozilla.org/widget/nativemenuservice;1");
|
|
||||||
+ if (!nms) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ nms->CreateNativeMenuBar(aParent, aMenuBarElement);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+} // namespace mozilla::widget
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/widget/gtk/NativeMenuSupport.h
|
|
||||||
@@ -0,0 +1,31 @@
|
|
||||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
+
|
|
||||||
+#ifndef mozilla_widget_NativeMenuSupport_h
|
|
||||||
+#define mozilla_widget_NativeMenuSupport_h
|
|
||||||
+
|
|
||||||
+class nsIWidget;
|
|
||||||
+
|
|
||||||
+namespace mozilla {
|
|
||||||
+
|
|
||||||
+namespace dom {
|
|
||||||
+class Element;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+namespace widget {
|
|
||||||
+
|
|
||||||
+class NativeMenuSupport final {
|
|
||||||
+public:
|
|
||||||
+ // Given a top-level window widget and a menu bar DOM node, sets up native
|
|
||||||
+ // menus. Once created, native menus are controlled via the DOM, including
|
|
||||||
+ // destruction.
|
|
||||||
+ static void CreateNativeMenuBar(nsIWidget* aParent,
|
|
||||||
+ dom::Element* aMenuBarElement);
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+} // namespace widget
|
|
||||||
+} // namespace mozilla
|
|
||||||
+
|
|
||||||
+#endif // mozilla_widget_NativeMenuSupport_h
|
|
||||||
--- a/widget/moz.build
|
|
||||||
+++ b/widget/moz.build
|
|
||||||
@@ -145,6 +145,11 @@ EXPORTS += [
|
|
||||||
"PuppetWidget.h",
|
|
||||||
]
|
|
||||||
|
|
||||||
+if toolkit == "gtk":
|
|
||||||
+ EXPORTS += [
|
|
||||||
+ "nsINativeMenuService.h",
|
|
||||||
+ ]
|
|
||||||
+
|
|
||||||
EXPORTS.mozilla += [
|
|
||||||
"BasicEvents.h",
|
|
||||||
"CommandList.h",
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/widget/nsINativeMenuService.h
|
|
||||||
@@ -0,0 +1,39 @@
|
|
||||||
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
||||||
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
||||||
+
|
|
||||||
+#ifndef nsINativeMenuService_h_
|
|
||||||
+#define nsINativeMenuService_h_
|
|
||||||
+
|
|
||||||
+#include "nsISupports.h"
|
|
||||||
+
|
|
||||||
+class nsIWidget;
|
|
||||||
+class nsIContent;
|
|
||||||
+namespace mozilla {
|
|
||||||
+namespace dom {
|
|
||||||
+class Element;
|
|
||||||
+}
|
|
||||||
+} // namespace mozilla
|
|
||||||
+
|
|
||||||
+// {90DF88F9-F084-4EF3-829A-49496E636DED}
|
|
||||||
+#define NS_INATIVEMENUSERVICE_IID \
|
|
||||||
+ { \
|
|
||||||
+ 0x90DF88F9, 0xF084, 0x4EF3, { \
|
|
||||||
+ 0x82, 0x9A, 0x49, 0x49, 0x6E, 0x63, 0x6D, 0xED \
|
|
||||||
+ } \
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+class nsINativeMenuService : public nsISupports {
|
|
||||||
+ public:
|
|
||||||
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_INATIVEMENUSERVICE_IID)
|
|
||||||
+ // Given a top-level window widget and a menu bar DOM node, sets up native
|
|
||||||
+ // menus. Once created, native menus are controlled via the DOM, including
|
|
||||||
+ // destruction.
|
|
||||||
+ NS_IMETHOD CreateNativeMenuBar(nsIWidget* aParent,
|
|
||||||
+ mozilla::dom::Element* aMenuBarNode) = 0;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+NS_DEFINE_STATIC_IID_ACCESSOR(nsINativeMenuService, NS_INATIVEMENUSERVICE_IID)
|
|
||||||
+
|
|
||||||
+#endif // nsINativeMenuService_h_
|
|
||||||
--- a/widget/nsWidgetsCID.h
|
|
||||||
+++ b/widget/nsWidgetsCID.h
|
|
||||||
@@ -66,6 +66,14 @@
|
|
||||||
// Menus
|
|
||||||
//-----------------------------------------------------------
|
|
||||||
|
|
||||||
+// {0B3FE5AA-BC72-4303-85AE-76365DF1251D}
|
|
||||||
+#define NS_NATIVEMENUSERVICE_CID \
|
|
||||||
+ { \
|
|
||||||
+ 0x0B3FE5AA, 0xBC72, 0x4303, { \
|
|
||||||
+ 0x85, 0xAE, 0x76, 0x36, 0x5D, 0xF1, 0x25, 0x1D \
|
|
||||||
+ } \
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
// {F6CD4F21-53AF-11d2-8DC4-00609703C14E}
|
|
||||||
#define NS_POPUPMENU_CID \
|
|
||||||
{ \
|
|
||||||
Loading…
Add table
Reference in a new issue