Compare commits
116 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50465aa304 | ||
|
|
8f8120a4cf | ||
|
|
365d39cc01 | ||
|
|
78be0f398f | ||
|
|
178c4062b8 | ||
|
|
61617ebcaf | ||
|
|
e5e62517e9 | ||
|
|
155367a779 | ||
|
|
8b0b13b8be | ||
|
|
69e0b71cdf | ||
|
|
b9c9521cda | ||
|
|
d48ad7c2b4 | ||
|
|
21f8b6a752 | ||
|
|
5b0b89c8a5 | ||
|
|
8e7098bc0d | ||
|
|
354766fc0d | ||
|
|
d78c8c0c19 | ||
|
|
bf4e1d35f9 | ||
|
|
eac4c04053 | ||
|
|
01cc0ab5ad | ||
|
|
d4f54ef3bc | ||
|
|
16a1ab1eea | ||
|
|
7330076db4 | ||
|
|
5ed83bba12 | ||
|
|
fbd3e848a4 | ||
|
|
bb33c0f1a3 | ||
|
|
bf34ed54fe | ||
|
|
acbe3b45ea | ||
|
|
56946c0aa5 | ||
|
|
48f2710cb4 | ||
|
|
a73b878430 | ||
|
|
c18c0d8958 | ||
|
|
33182b609c | ||
|
|
5b88970517 | ||
|
|
76feb8fb78 | ||
|
|
fc16f6ba32 | ||
|
|
bdcbaeeeb8 | ||
|
|
43da076f7d | ||
|
|
1e29d4fbcf | ||
|
|
fe7ac699c8 | ||
|
|
957798916a | ||
|
|
33d481e09b | ||
|
|
a23f3c6390 | ||
|
|
436df47576 | ||
|
|
d56b020e95 | ||
|
|
434858650e | ||
|
|
17e1d6daf7 | ||
|
|
26d33367db | ||
|
|
ad9c9ecad4 | ||
|
|
f34e124596 | ||
|
|
bb4d2b8c3b | ||
|
|
abb2956b6d | ||
|
|
f6ff95a833 | ||
|
|
238b9d0c9f | ||
|
|
56b66d16f3 | ||
|
|
f78a1c2a36 | ||
|
|
5af20be933 | ||
|
|
5474baabed | ||
|
|
156fce08a1 | ||
|
|
25f3891908 | ||
|
|
743cb8ccf3 | ||
|
|
29bdf33a69 | ||
|
|
5308f573df | ||
|
|
d47b222401 | ||
|
|
de25ab61ed | ||
|
|
55617c3433 | ||
|
|
5d49ace775 | ||
|
|
ab559ab3f7 | ||
|
|
bb4152027b | ||
|
|
4db19b3317 | ||
|
|
b8677c649c | ||
|
|
a2061e3ef1 | ||
|
|
95feca84f5 | ||
|
|
5af02721e8 | ||
|
|
9e90fb3a9b | ||
|
|
062a454cf3 | ||
|
|
53ed43ecfe | ||
|
|
48ff5108bd | ||
|
|
7a39d56351 | ||
|
|
41ba7a5b6d | ||
|
|
456f23853d | ||
|
|
c3375c312e | ||
|
|
9320f90606 | ||
|
|
7b40f2a460 | ||
|
|
e123b80f7d | ||
|
|
fae3610290 | ||
|
|
4a3ece5b45 | ||
|
|
05b7ca3128 | ||
|
|
2b9bab23df | ||
|
|
f43e70c98c | ||
|
|
714bacdabe | ||
|
|
56827b45af | ||
|
|
d1a6eadd12 | ||
|
|
a4141e25ef | ||
|
|
462c963c29 | ||
|
|
14bf1d12dd | ||
|
|
4555d764c3 | ||
|
|
4f3ea8ae1b | ||
|
|
5d88f397b1 | ||
|
|
6cc0c98846 | ||
|
|
ba2a977285 | ||
|
|
11640262a6 | ||
|
|
0b0964887c | ||
|
|
b623874e96 | ||
|
|
dc73a4142a | ||
|
|
1b2e116139 | ||
|
|
e81be4dfbb | ||
|
|
e4852c5050 | ||
|
|
c539dbbfd2 | ||
|
|
11d4b95742 | ||
|
|
60cbb0acf5 | ||
|
|
8daeabffff | ||
|
|
3ab8dc47b0 | ||
|
|
ee7493428d | ||
|
|
b8c8f7ee12 | ||
|
|
3bbef3f822 |
51 changed files with 1136 additions and 2470 deletions
112
.gitlab-ci.yml
112
.gitlab-ci.yml
|
|
@ -1,22 +1,13 @@
|
||||||
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:
|
||||||
|
|
@ -29,117 +20,26 @@ variables:
|
||||||
.tarball_build_config: &tarball_build_config
|
.tarball_build_config: &tarball_build_config
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
- ./binary_tarball/build_tarball.sh "${CI_PROJECT_DIR}/LibreWolf-${pkgver}-${pkgrel}.${CARCH}.tar.bz2"
|
- ./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:16.04
|
image: ubuntu:18.04
|
||||||
tags: [x86_64b]
|
tags: [x86_64b]
|
||||||
<<: *carch_x86_64
|
<<: *carch_x86_64
|
||||||
<<: *tarball_build_config
|
<<: *tarball_build_config
|
||||||
only:
|
only:
|
||||||
variables:
|
variables:
|
||||||
- $TARBALL && $X86_64
|
- $X86_64
|
||||||
|
|
||||||
tarball_aarch64:
|
tarball_aarch64:
|
||||||
image: arm64v8/ubuntu:16.04
|
image: arm64v8/ubuntu:18.04
|
||||||
tags: [aarch64b]
|
tags: [aarch64b]
|
||||||
<<: *carch_aarch64
|
<<: *carch_aarch64
|
||||||
<<: *tarball_build_config
|
<<: *tarball_build_config
|
||||||
only:
|
only:
|
||||||
variables:
|
variables:
|
||||||
- $TARBALL && $AARCH64
|
- $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
3
.gitmodules
vendored
|
|
@ -1,3 +0,0 @@
|
||||||
[submodule "flatpak/content/shared-submodules"]
|
|
||||||
path = flatpak/content/shared-modules
|
|
||||||
url = https://github.com/flathub/shared-modules.git
|
|
||||||
65
CHANGELOG.md
65
CHANGELOG.md
|
|
@ -7,6 +7,71 @@ 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
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- New upstream release 85.0
|
||||||
|
- Global menubar patch removed from default releases. Separate releases will be made available.
|
||||||
|
- `dom.event.contextmenu.enabled` is now an unlocked preference
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Non-Arch releases should now also have some additional startup requests removed
|
||||||
|
|
||||||
|
## [84.0.2-2] - 2021-01-20
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- AppImage and Flatpak releases were not using the most recent settings.
|
||||||
|
|
||||||
|
## [84.0.2-1] - 2021-01-08
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- New upstream release 84.0.1
|
||||||
|
- Flatpak runtime version updated (thanks @TheEvilSkeleton)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Use patch for global menubar added to AppImage and Flatpak build script as well
|
||||||
|
|
||||||
## [84.0.1-1] - 2021-01-07
|
## [84.0.1-1] - 2021-01-07
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
|
||||||
369
KEY
Normal file
369
KEY
Normal file
|
|
@ -0,0 +1,369 @@
|
||||||
|
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-----
|
||||||
322
PKGBUILD
322
PKGBUILD
|
|
@ -1,322 +0,0 @@
|
||||||
# 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=84.0.1
|
|
||||||
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=25115b211d60876c43f5098ce3e88bcee2a7e521
|
|
||||||
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=('ae5500d270a199f9a10674fbd4ba7a6beac1f260a4c009bbca8ea39967592243'
|
|
||||||
'0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2'
|
|
||||||
'SKIP'
|
|
||||||
'SKIP'
|
|
||||||
'682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5'
|
|
||||||
'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6'
|
|
||||||
'6ca4d5a50a6645ff35da0bd2e9b606172f55123ddaec3ed1f87416c18f9800ff')
|
|
||||||
sha256sums_aarch64=('ae5500d270a199f9a10674fbd4ba7a6beac1f260a4c009bbca8ea39967592243'
|
|
||||||
'0b28ba4cc2538b7756cb38945230af52e8c4659b2006262da6f3352345a8bed2'
|
|
||||||
'SKIP'
|
|
||||||
'SKIP'
|
|
||||||
'682bf4bf5d79db0080aa132235a95b25745c8ef944d2a2e1fed985489d894df5'
|
|
||||||
'f2f7403c9abd33a7470a5861e247b488693cf8d7d55c506e7e579396b7bf11e6'
|
|
||||||
'6ca4d5a50a6645ff35da0bd2e9b606172f55123ddaec3ed1f87416c18f9800ff'
|
|
||||||
'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}
|
|
||||||
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"
|
|
||||||
|
|
||||||
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
|
|
||||||
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}
|
|
||||||
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
|
|
||||||
}
|
|
||||||
32
README.md
32
README.md
|
|
@ -1,32 +1,14 @@
|
||||||
This Repository contains all the required material to build the browser on Linux platforms.
|
|
||||||
|
|
||||||
### Status
|
|
||||||
|
|
||||||
Unfortunately, at the moment we are only barely keeping up with maintenance releases following
|
|
||||||
upstream Firefox releases. AppImage and Flatpak-releases are still to be considered experimental.
|
|
||||||
Debian builds are already being built by a third party contributer (see !12), and will hopefully soon be
|
|
||||||
integrated as well. We are fully aware of the issues and wishes/improvements piling up – rest assured,
|
|
||||||
we will get to them as soon as possible!
|
|
||||||
|
|
||||||
### Important
|
### Important
|
||||||
|
|
||||||
The following instructions are currently outdated. The build scripts are currently meant to be
|
The build scripts are currently meant to be run in a CI environment with Docker containers
|
||||||
run in a CI environment with Docker containers and gitlab-runners. Updated instructions for
|
and gitlab-runners. Updated instructions for local builds or setting up your own
|
||||||
local builds or setting up your own appropriate runners will be provided again in the future.
|
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)
|
||||||
|
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
#!/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 +0,0 @@
|
||||||
librewolf.png
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
#!/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}" "$@"
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
[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
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB |
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
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 .
|
|
||||||
# temporary workaround for rust / packed_simd build issue:
|
|
||||||
pacman --noconfirm -U https://archive.archlinux.org/packages/r/rust/rust-1%3A1.47.0-4-x86_64.pkg.tar.zst
|
|
||||||
# makepkg will not run as root
|
|
||||||
sudo -u nobody -E -H makepkg --noconfirm --nosign --syncdeps --cleanbuild
|
|
||||||
|
|
@ -1,153 +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)/../../)}
|
|
||||||
_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
|
|
||||||
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/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
|
|
||||||
|
|
||||||
# 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)
|
|
||||||
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
|
|
||||||
16
build.sh
16
build.sh
|
|
@ -1,16 +0,0 @@
|
||||||
#!/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;
|
|
||||||
|
|
@ -1,21 +1,26 @@
|
||||||
<?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</id>
|
<id>io.gitlab.librewolf-community</id>
|
||||||
<launchable type="desktop-id">io.gitlab.LibreWolf.desktop</launchable>
|
<launchable type="desktop-id">io.gitlab.librewolf-community.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><strong>LibreWolf</strong></p>
|
<p>LibreWolf</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><strong>LibreWolf is NOT associated with Mozilla or its products.</strong></p>
|
<p>LibreWolf is NOT associated with Mozilla or its products.</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>
|
||||||
|
|
@ -33,10 +38,10 @@
|
||||||
<keyword>internet</keyword>
|
<keyword>internet</keyword>
|
||||||
<keyword>web</keyword>
|
<keyword>web</keyword>
|
||||||
</keywords>
|
</keywords>
|
||||||
<url type="homepage">https://librewolf-community.gitlab.io/</url>
|
<url type="homepage">https://librewolf.net/</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</id>
|
<id>io.gitlab.librewolf-community</id>
|
||||||
</provides>
|
</provides>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
</component>
|
</component>
|
||||||
|
|
@ -5,23 +5,31 @@ 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
|
||||||
@@ -2056,15 +2056,16 @@ def select_linker(linker, c_compiler, de
|
@@ -1699,6 +1699,7 @@
|
||||||
set_config("LINKER_KIND", select_linker.KIND)
|
android_platform,
|
||||||
|
c_compiler,
|
||||||
|
developer_options,
|
||||||
-@depends_if(select_linker, macos_sdk)
|
+ host,
|
||||||
-def linker_ldflags(linker, macos_sdk):
|
)
|
||||||
+@depends_if(select_linker, macos_sdk, host)
|
|
||||||
+def linker_ldflags(linker, macos_sdk, host):
|
|
||||||
flags = list((linker and linker.LINKER_FLAG) or [])
|
|
||||||
if macos_sdk:
|
|
||||||
if linker and linker.KIND == "ld64":
|
|
||||||
flags.append("-Wl,-syslibroot,%s" % macos_sdk)
|
|
||||||
else:
|
else:
|
||||||
flags.append("-Wl,--sysroot=%s" % macos_sdk)
|
deps = depends_if(
|
||||||
-
|
@@ -1709,6 +1710,7 @@
|
||||||
+ elif host.cpu == "arm":
|
dependable(None),
|
||||||
|
host_c_compiler,
|
||||||
|
developer_options,
|
||||||
|
+ host,
|
||||||
|
)
|
||||||
|
|
||||||
|
@deps
|
||||||
|
@@ -1721,8 +1723,11 @@
|
||||||
|
android_platform,
|
||||||
|
c_compiler,
|
||||||
|
developer_options,
|
||||||
|
+ host,
|
||||||
|
):
|
||||||
|
flags = list((linker and linker.LINKER_FLAG) or [])
|
||||||
|
+ if host.cpu == "arm":
|
||||||
+ flags.append("-Wl,--no-keep-memory")
|
+ flags.append("-Wl,--no-keep-memory")
|
||||||
return flags
|
# rpath-link is irrelevant to wasm, see for more info https://github.com/emscripten-core/emscripten/issues/11076.
|
||||||
|
if sysroot.path and multiarch_dir and target.os != "WASI":
|
||||||
|
for d in ("lib", "usr/lib"):
|
||||||
|
|
|
||||||
|
|
@ -1,54 +0,0 @@
|
||||||
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",
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
--- 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",
|
|
||||||
17
deb_patches/fix-ftbfs-newer-cbindgen.patch
Normal file
17
deb_patches/fix-ftbfs-newer-cbindgen.patch
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
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
|
||||||
|
|
||||||
19
deb_patches/fix-wayland-build.patch
Normal file
19
deb_patches/fix-wayland-build.patch
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
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 =
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
# 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))
|
|
||||||
|
|
||||||
|
|
@ -1,432 +0,0 @@
|
||||||
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)
|
|
||||||
objs_by_type[key].append((get_metric_id(metric), full_path))
|
|
||||||
|
|
||||||
# Now for the modules for each category.
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
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 = {}
|
|
||||||
|
|
@ -1,148 +0,0 @@
|
||||||
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)
|
|
||||||
21
deb_patches/reduce-rust-debuginfo.patch
Normal file
21
deb_patches/reduce-rust-debuginfo.patch
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
Description: reduce the rust debuginfo level
|
||||||
|
because compiling with debuginfo=2 causes the OOM killer to interrupt the build
|
||||||
|
on launchpad builders. Initially this was only on 32 bit architectures, but
|
||||||
|
with firefox 63 it started happening frequently on arm64 and ppc64el too,
|
||||||
|
with newer versions it started happening very frequently on s390x too, and with
|
||||||
|
firefox 84 (built with rustc 1.47) it started happening on amd64 too.
|
||||||
|
This patch would initially decrease debug_info for selected architectures, but
|
||||||
|
with recent versions of rustc pretty much all supported architectures are
|
||||||
|
affected, so it is now unconditional.
|
||||||
|
|
||||||
|
--- a/build/moz.configure/rust.configure
|
||||||
|
+++ b/build/moz.configure/rust.configure
|
||||||
|
@@ -2167,7 +2167,7 @@ def rust_compile_flags(opt_level, debug_
|
||||||
|
debug_assertions = False
|
||||||
|
|
||||||
|
if debug_symbols:
|
||||||
|
- debug_info = "2"
|
||||||
|
+ debug_info = "1"
|
||||||
|
|
||||||
|
opts = []
|
||||||
|
|
||||||
|
|
@ -1,144 +0,0 @@
|
||||||
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)
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
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);
|
|
||||||
13
deb_patches/use-system-icupkg.patch
Normal file
13
deb_patches/use-system-icupkg.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff -r 08cd64cdbc3b config/external/icu/data/convert_icudata.py
|
||||||
|
--- a/config/external/icu/data/convert_icudata.py Fri Jul 17 11:18:09 2020 +0000
|
||||||
|
+++ b/config/external/icu/data/convert_icudata.py Sat Jul 18 14:40:33 2020 +0200
|
||||||
|
@@ -11,7 +11,7 @@
|
||||||
|
subprocess.run(
|
||||||
|
[
|
||||||
|
- os.path.join(buildconfig.topobjdir, "dist", "host", "bin", "icupkg"),
|
||||||
|
+ "icupkg",
|
||||||
|
"-tb",
|
||||||
|
data_file,
|
||||||
|
output.name,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
# 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 != "") {
|
|
||||||
24
deprecated_patches/context-menu.patch
Normal file
24
deprecated_patches/context-menu.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
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,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 18d73db..7911576 100644
|
index 73d15df..99cc41b 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
|
||||||
@@ -1172,13 +1172,13 @@ class UrlbarInput {
|
@@ -1692,13 +1692,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 18d73db..7911576 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 0b1f693..7de64a1 100644
|
index e9fde8b..6c4c444 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
|
||||||
@@ -6,7 +6,7 @@
|
@@ -5,7 +5,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 * @identityBoxPaddingInline@)
|
%define urlbarSearchButtonWidth calc(16px + 2 * var(--urlbar-icon-padding))
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
@@ -197,13 +197,13 @@
|
@@ -273,9 +273,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[breakout][breakout-extend] {
|
#urlbar[breakout][breakout-extend] {
|
||||||
|
|
@ -48,14 +48,18 @@ index 0b1f693..7de64a1 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 {
|
||||||
@@ -211,9 +211,9 @@
|
@@ -297,9 +297,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@);
|
||||||
|
|
@ -66,8 +70,8 @@ index 0b1f693..7de64a1 100644
|
||||||
+ padding-inline: 0;
|
+ padding-inline: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar.searchButton[breakout][breakout-extend] > #urlbar-input-container > #urlbar-search-button {
|
@supports -moz-bool-pref("browser.proton.urlbar.enabled") {
|
||||||
@@ -231,7 +231,7 @@
|
@@ -325,7 +325,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#urlbar[breakout][breakout-extend] > #urlbar-background {
|
#urlbar[breakout][breakout-extend] > #urlbar-background {
|
||||||
|
|
@ -77,49 +81,49 @@ index 0b1f693..7de64a1 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 6b8cac0..54648c6 100644
|
index c6ce546..da00fac 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
|
||||||
@@ -48,8 +48,8 @@
|
@@ -74,8 +74,8 @@
|
||||||
display: block;
|
display: block;
|
||||||
text-shadow: none;
|
text-shadow: none;
|
||||||
overflow: clip;
|
overflow: clip;
|
||||||
- margin-inline: @urlbarViewMarginInline@;
|
- margin-inline: calc(5px + var(--urlbar-container-padding));
|
||||||
- width: calc(100% - 2 * @urlbarViewMarginInline@);
|
- width: calc(100% - 2 * (5px + var(--urlbar-container-padding)));
|
||||||
+ 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 @@
|
}
|
||||||
.urlbarView-row {
|
@@ -115,7 +115,7 @@
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
.urlbarView-row-inner {
|
:root[uidensity=compact] .urlbarView-row {
|
||||||
@@ -179,6 +179,7 @@
|
@@ -280,6 +280,7 @@
|
||||||
background-repeat: no-repeat;
|
object-fit: contain;
|
||||||
background-size: contain;
|
flex-shrink: 0;
|
||||||
-moz-context-properties: fill, fill-opacity;
|
-moz-context-properties: fill, fill-opacity;
|
||||||
+ margin-inline-start: 20px;
|
+ margin-inline-start: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-resolution: 2dppx) {
|
@supports not -moz-bool-pref("browser.proton.urlbar.enabled") {
|
||||||
@@ -204,10 +205,10 @@
|
@@ -324,10 +325,10 @@
|
||||||
|
|
||||||
.urlbarView-type-icon {
|
.urlbarView-type-icon {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
- min-width: 12px;
|
- width: 12px;
|
||||||
- height: 12px;
|
- height: 12px;
|
||||||
- margin-bottom: -4px;
|
- margin-bottom: -4px;
|
||||||
- margin-inline-start: 8px;
|
- margin-inline-start: 8px;
|
||||||
+ min-width: 16px;
|
+ 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;
|
|
||||||
16
deprecated_patches/mozilla-vpn-ad.patch
Normal file
16
deprecated_patches/mozilla-vpn-ad.patch
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
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,13 +1,18 @@
|
||||||
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 0eb3c53..fb94b5c 100644
|
index 269dcb2..ed7c31d 100644
|
||||||
--- a/browser/extensions/moz.build
|
--- a/browser/extensions/moz.build
|
||||||
+++ b/browser/extensions/moz.build
|
+++ b/browser/extensions/moz.build
|
||||||
@@ -4,4 +4,4 @@
|
@@ -5,10 +5,7 @@
|
||||||
# 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 += ["doh-rollout", "formautofill", "screenshots", "webcompat", "report-site-issue"]
|
DIRS += [
|
||||||
+DIRS += ["formautofill", "screenshots"]
|
- "doh-rollout",
|
||||||
|
"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,20 +1,22 @@
|
||||||
--- 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
|
||||||
@@ -5,7 +5,11 @@
|
@@ -7,7 +7,12 @@
|
||||||
|
# On macOS, we don't track whether activation of the native menubar happened
|
||||||
<menubar id="main-menubar"
|
# with the keyboard.
|
||||||
onpopupshowing="if (event.target.parentNode.parentNode == this &&
|
#ifndef XP_MACOSX
|
||||||
|
- 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
|
||||||
!('@mozilla.org/widget/nativemenuservice;1' in Cc))
|
+ true)
|
||||||
+#endif
|
+#endif
|
||||||
this.setAttribute('openedwithkey',
|
this.setAttribute('openedwithkey',
|
||||||
event.target.parentNode.openedWithKey);">
|
event.target.parentNode.openedWithKey);"
|
||||||
<menu id="file-menu" data-l10n-id="menu-file">
|
#endif
|
||||||
--- a/browser/base/content/browser.js
|
--- a/browser/base/content/browser.js
|
||||||
+++ b/browser/base/content/browser.js
|
+++ b/browser/base/content/browser.js
|
||||||
@@ -6427,11 +6427,18 @@ function onViewToolbarsPopupShowing(aEve
|
@@ -6291,11 +6291,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");
|
||||||
|
|
@ -98,7 +100,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
|
||||||
@@ -320,6 +320,9 @@ pref("dom.mouseevent.click.hack.use_lega
|
@@ -301,6 +301,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);
|
||||||
|
|
@ -110,7 +112,7 @@
|
||||||
|
|
||||||
--- a/toolkit/content/xul.css
|
--- a/toolkit/content/xul.css
|
||||||
+++ b/toolkit/content/xul.css
|
+++ b/toolkit/content/xul.css
|
||||||
@@ -216,6 +216,13 @@ toolbar[type="menubar"] {
|
@@ -230,6 +230,13 @@ toolbar[type="menubar"] {
|
||||||
}
|
}
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
|
@ -126,7 +128,24 @@
|
||||||
}
|
}
|
||||||
--- a/widget/gtk/moz.build
|
--- a/widget/gtk/moz.build
|
||||||
+++ b/widget/gtk/moz.build
|
+++ b/widget/gtk/moz.build
|
||||||
@@ -60,6 +60,15 @@ UNIFIED_SOURCES += [
|
@@ -33,11 +33,16 @@ EXPORTS += [
|
||||||
|
|
||||||
|
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",
|
||||||
|
|
@ -142,7 +161,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
|
||||||
]
|
]
|
||||||
@@ -140,6 +149,7 @@ LOCAL_INCLUDES += [
|
@@ -139,6 +153,7 @@ LOCAL_INCLUDES += [
|
||||||
"/layout/base",
|
"/layout/base",
|
||||||
"/layout/forms",
|
"/layout/forms",
|
||||||
"/layout/generic",
|
"/layout/generic",
|
||||||
|
|
@ -3204,7 +3223,7 @@
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ const nsStyleList *list = aComputedStyle->StyleList();
|
+ const nsStyleList *list = aComputedStyle->StyleList();
|
||||||
+ imageRequest = list->GetListStyleImage();
|
+ imageRequest = list->mListStyleImage.GetImageRequest();
|
||||||
+ if (imageRequest) {
|
+ if (imageRequest) {
|
||||||
+ imageRequest->GetURI(getter_AddRefs(uri));
|
+ imageRequest->GetURI(getter_AddRefs(uri));
|
||||||
+ auto& rect = list->mImageRegion.AsRect();
|
+ auto& rect = list->mImageRegion.AsRect();
|
||||||
|
|
@ -4275,7 +4294,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.Put(aContent, aObserver);
|
+ mContentToObserverTable.InsertOrUpdate(aContent, aObserver);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+void
|
+void
|
||||||
|
|
@ -4335,7 +4354,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 "nsDataHashtable.h"
|
+#include "nsTHashMap.h"
|
||||||
+#include "nsStubMutationObserver.h"
|
+#include "nsStubMutationObserver.h"
|
||||||
+#include "nsTArray.h"
|
+#include "nsTArray.h"
|
||||||
+
|
+
|
||||||
|
|
@ -4442,7 +4461,7 @@
|
||||||
+ nsIContent *mLastSource;
|
+ nsIContent *mLastSource;
|
||||||
+ nsNativeMenuChangeObserver *mLastTarget;
|
+ nsNativeMenuChangeObserver *mLastTarget;
|
||||||
+ nsTArray<mozilla::UniquePtr<MutationRecord> > mPendingMutations;
|
+ nsTArray<mozilla::UniquePtr<MutationRecord> > mPendingMutations;
|
||||||
+ nsDataHashtable<nsPtrHashKey<nsIContent>, nsNativeMenuChangeObserver *> mContentToObserverTable;
|
+ nsTHashMap<nsPtrHashKey<nsIContent>, nsNativeMenuChangeObserver *> mContentToObserverTable;
|
||||||
+
|
+
|
||||||
+ static uint32_t sUpdateBlockersCount;
|
+ static uint32_t sUpdateBlockersCount;
|
||||||
+};
|
+};
|
||||||
|
|
@ -4476,7 +4495,7 @@
|
||||||
+#endif /* __nsNativeMenuDocListener_h__ */
|
+#endif /* __nsNativeMenuDocListener_h__ */
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/widget/gtk/nsNativeMenuService.cpp
|
+++ b/widget/gtk/nsNativeMenuService.cpp
|
||||||
@@ -0,0 +1,503 @@
|
@@ -0,0 +1,478 @@
|
||||||
+/* -*- 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:
|
||||||
+ */
|
+ */
|
||||||
|
|
@ -4484,6 +4503,7 @@
|
||||||
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
+ * 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/. */
|
||||||
+
|
+
|
||||||
|
+#include "mozilla/dom/Element.h"
|
||||||
+#include "mozilla/Assertions.h"
|
+#include "mozilla/Assertions.h"
|
||||||
+#include "mozilla/Preferences.h"
|
+#include "mozilla/Preferences.h"
|
||||||
+#include "mozilla/UniquePtr.h"
|
+#include "mozilla/UniquePtr.h"
|
||||||
|
|
@ -4513,32 +4533,6 @@
|
||||||
+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
|
||||||
|
|
@ -4745,7 +4739,7 @@
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ GCancellable *cancellable = g_cancellable_new();
|
+ GCancellable *cancellable = g_cancellable_new();
|
||||||
+ mMenuBarRegistrationCancellables.Put(aMenuBar, cancellable);
|
+ mMenuBarRegistrationCancellables.InsertOrUpdate(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)
|
||||||
|
|
@ -4982,7 +4976,7 @@
|
||||||
+}
|
+}
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/widget/gtk/nsNativeMenuService.h
|
+++ b/widget/gtk/nsNativeMenuService.h
|
||||||
@@ -0,0 +1,84 @@
|
@@ -0,0 +1,85 @@
|
||||||
+/* -*- 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:
|
||||||
+ */
|
+ */
|
||||||
|
|
@ -4995,7 +4989,7 @@
|
||||||
+
|
+
|
||||||
+#include "mozilla/Attributes.h"
|
+#include "mozilla/Attributes.h"
|
||||||
+#include "nsCOMPtr.h"
|
+#include "nsCOMPtr.h"
|
||||||
+#include "nsDataHashtable.h"
|
+#include "nsTHashMap.h"
|
||||||
+#include "nsINativeMenuService.h"
|
+#include "nsINativeMenuService.h"
|
||||||
+#include "nsTArray.h"
|
+#include "nsTArray.h"
|
||||||
+
|
+
|
||||||
|
|
@ -5006,8 +5000,9 @@
|
||||||
+class nsMenuBar;
|
+class nsMenuBar;
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
+ * The main native menu service singleton. nsWebShellWindow calls in to this when
|
+ * The main native menu service singleton.
|
||||||
+ * a new top level window is created.
|
+ * NativeMenuSupport::CreateNativeMenuBar calls in to this when a new top level
|
||||||
|
+ * 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
|
||||||
|
|
@ -5060,7 +5055,7 @@
|
||||||
+ GDBusProxy *mDbusProxy;
|
+ GDBusProxy *mDbusProxy;
|
||||||
+ bool mOnline;
|
+ bool mOnline;
|
||||||
+ nsTArray<nsMenuBar *> mMenuBars;
|
+ nsTArray<nsMenuBar *> mMenuBars;
|
||||||
+ nsDataHashtable<nsPtrHashKey<nsMenuBar>, GCancellable*> mMenuBarRegistrationCancellables;
|
+ nsTHashMap<nsPtrHashKey<nsMenuBar>, GCancellable*> mMenuBarRegistrationCancellables;
|
||||||
+
|
+
|
||||||
+ static bool sShutdown;
|
+ static bool sShutdown;
|
||||||
+ static nsNativeMenuService *sService;
|
+ static nsNativeMenuService *sService;
|
||||||
|
|
@ -5069,7 +5064,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
|
||||||
@@ -6096,6 +6096,10 @@ void nsWindow::HideWindowChrome(bool aSh
|
@@ -6409,6 +6409,10 @@ void nsWindow::HideWindowChrome(bool aSh
|
||||||
SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle);
|
SetWindowDecoration(aShouldHide ? eBorderStyle_none : mBorderStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5091,7 +5086,7 @@
|
||||||
#undef LOG
|
#undef LOG
|
||||||
#ifdef MOZ_LOGGING
|
#ifdef MOZ_LOGGING
|
||||||
|
|
||||||
@@ -177,6 +179,8 @@ class nsWindow final : public nsBaseWidg
|
@@ -182,6 +184,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;
|
||||||
|
|
||||||
|
|
@ -5100,8 +5095,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).
|
||||||
@@ -701,6 +705,8 @@ class nsWindow final : public nsBaseWidg
|
@@ -722,6 +726,8 @@ class nsWindow final : public nsBaseWidg
|
||||||
static CSDSupportLevel sCSDSupportLevel;
|
static GtkWindowDecoration sGtkWindowDecoration;
|
||||||
|
|
||||||
static bool sTransparentMainWindow;
|
static bool sTransparentMainWindow;
|
||||||
+
|
+
|
||||||
|
|
@ -5109,21 +5104,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
#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 @@
|
||||||
|
|
@ -5146,15 +5126,15 @@
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Static atom definitions, used to generate nsGkAtomList.h.
|
# Static atom definitions, used to generate nsGkAtomList.h.
|
||||||
@@ -2560,7 +2561,7 @@ STATIC_ATOMS = [
|
@@ -2507,7 +2508,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 = [
|
||||||
|
|
@ -5162,7 +5142,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',
|
||||||
|
|
@ -5174,12 +5154,147 @@
|
||||||
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
|
||||||
@@ -71,7 +71,7 @@
|
@@ -79,7 +79,7 @@
|
||||||
# include "mozilla/XULStore.h"
|
|
||||||
#endif
|
#include "mozilla/dom/DocumentL10n.h"
|
||||||
|
|
||||||
-#ifdef XP_MACOSX
|
-#ifdef XP_MACOSX
|
||||||
+#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
|
+#if defined(XP_MACOSX) || defined(MOZ_WIDGET_GTK)
|
||||||
# include "nsINativeMenuService.h"
|
# include "mozilla/widget/NativeMenuSupport.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 \
|
||||||
|
{ \
|
||||||
7
docs/README.md
Normal file
7
docs/README.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|

|
||||||
|
|
||||||
|
# LibreWolf
|
||||||
|
|
||||||
|
## Documentation has moved
|
||||||
|
|
||||||
|
You can find the current documentation for LibreWolf at [librewolf-community.gitlab.io/docs/](https://librewolf-community.gitlab.io/docs/).
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
#!/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.36 org.gnome.Sdk/${CARCH}/3.36 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;
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
[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
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
{
|
|
||||||
"app-id": "io.gitlab.LibreWolf",
|
|
||||||
"runtime": "org.gnome.Platform",
|
|
||||||
"runtime-version": "3.36",
|
|
||||||
"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 +0,0 @@
|
||||||
Subproject commit 8ce6437c269ef28c49984c11246d27be433c21d5
|
|
||||||
|
|
@ -1,340 +0,0 @@
|
||||||
[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
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
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."
|
|
||||||
}
|
|
||||||
|
|
@ -8,7 +8,8 @@ _DEPENDENCIES="wget git xvfb \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
gettext-base \
|
gettext-base \
|
||||||
curl python3 libjack-dev \
|
curl python3 libjack-dev \
|
||||||
python3-psutil python-psutil python3-dev python-dev \
|
python3-dev python-dev \
|
||||||
|
gnupg \
|
||||||
autotools-dev \
|
autotools-dev \
|
||||||
autoconf2.13 \
|
autoconf2.13 \
|
||||||
zip \
|
zip \
|
||||||
|
|
@ -16,7 +17,6 @@ _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,22 +26,24 @@ _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 \
|
||||||
cargo \
|
libffi-dev \
|
||||||
rustc \
|
|
||||||
nodejs-mozilla \
|
nodejs-mozilla \
|
||||||
nasm-mozilla \
|
nasm-mozilla \
|
||||||
gcc-mozilla"
|
locales"
|
||||||
|
|
||||||
|
# cargo \
|
||||||
|
# rustc \
|
||||||
|
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
|
@ -53,10 +55,24 @@ 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-11 libclang-11-dev
|
apt-get -y install clang-13 libclang-13-dev
|
||||||
else
|
else
|
||||||
apt-get -y install clang-8 libclang-8-dev
|
# seems like we can use 13 here as well, finally?
|
||||||
|
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
|
||||||
|
# …to test if a fix in 1.57 magically fixes aarch64 hanging
|
||||||
|
curl https://sh.rustup.rs -o rustup.sh
|
||||||
|
bash rustup.sh -y
|
||||||
|
source /root/.cargo/env
|
||||||
|
|
@ -10,10 +10,19 @@ 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
|
||||||
251
scripts/3_Configure_Source_Code.sh
Executable file
251
scripts/3_Configure_Source_Code.sh
Executable file
|
|
@ -0,0 +1,251 @@
|
||||||
|
#!/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
|
||||||
|
|
@ -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,6 +16,15 @@ 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
|
||||||
|
|
||||||
# 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
|
||||||
# might make it easier to maintain changes in build scripts on both sides
|
# might make it easier to maintain changes in build scripts on both sides
|
||||||
|
|
||||||
|
|
@ -33,7 +42,7 @@ fi
|
||||||
|
|
||||||
export MOZ_NOSPAM=1
|
export MOZ_NOSPAM=1
|
||||||
export MOZBUILD_STATE_PATH="${_MOZBUILD}"
|
export MOZBUILD_STATE_PATH="${_MOZBUILD}"
|
||||||
export MACH_USE_SYSTEM_PYTHON=1
|
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
|
||||||
|
|
||||||
if [[ $CARCH == 'aarch64' ]]; then
|
if [[ $CARCH == 'aarch64' ]]; then
|
||||||
export MOZ_DEBUG_FLAGS=" "
|
export MOZ_DEBUG_FLAGS=" "
|
||||||
|
|
@ -60,11 +69,8 @@ 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.15.0 cbindgen
|
cargo install --version 0.24.3 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_COMMIT=2f76ae07f7016034273f1887b7f1bedab997909c
|
_SETTINGS_TAG=${SETTINGS_TAG:-'7.4'}
|
||||||
_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_COMMIT
|
git checkout $_SETTINGS_TAG
|
||||||
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";
|
||||||
|
|
@ -42,7 +42,7 @@ distini="$_EXTRACTED_TARBALL_FOLDER/distribution/distribution.ini"
|
||||||
|
|
||||||
install -Dvm644 /dev/stdin "$distini" <<END
|
install -Dvm644 /dev/stdin "$distini" <<END
|
||||||
[Global]
|
[Global]
|
||||||
id=io.gitlab.LibreWolf
|
id=io.gitlab.librewolf-community
|
||||||
version=1.0
|
version=1.0
|
||||||
about=LibreWolf
|
about=LibreWolf
|
||||||
|
|
||||||
|
|
@ -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.appdata.xml.in > ${_EXTRACTED_TARBALL_FOLDER}/io.gitlab.LibreWolf.appdata.xml
|
envsubst < ${_SCRIPT_FOLDER}/../content/io.gitlab.librewolf-community.appdata.xml.in > ${_EXTRACTED_TARBALL_FOLDER}/io.gitlab.librewolf-community.appdata.xml
|
||||||
|
|
||||||
# Repacks the binary tarball
|
# Repacks the binary tarball
|
||||||
printf "\nRecompressing binary tarball\n";
|
printf "\nRecompressing binary tarball\n";
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
# 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
|
|
||||||
Loading…
Add table
Reference in a new issue