diff options
author | ohfp <1813007-ohfp@users.noreply.gitlab.com> | 2020-03-06 21:45:34 +0000 |
---|---|---|
committer | ohfp <1813007-ohfp@users.noreply.gitlab.com> | 2020-03-06 21:45:34 +0000 |
commit | ebd593571b8962af5c6025ba666ca5a474087bb1 (patch) | |
tree | 5f0c63d360a1e932756f050baed942c4a36ee39f | |
parent | fix appimage build (diff) | |
parent | temporarily disable custom config/patches during build (diff) | |
download | librewolf-linux-ebd593571b8962af5c6025ba666ca5a474087bb1.tar.gz librewolf-linux-ebd593571b8962af5c6025ba666ca5a474087bb1.tar.bz2 librewolf-linux-ebd593571b8962af5c6025ba666ca5a474087bb1.zip |
Merge branch 'arch_based_ci' into 'master'
CI/build script rewrite
See merge request librewolf-community/browser/linux!7
-rw-r--r-- | .gitlab-ci.yml | 129 | ||||
-rw-r--r-- | PKGBUILD | 276 | ||||
-rwxr-xr-x | appimage/build_appimage.sh | 17 | ||||
-rw-r--r-- | arm.patch | 12 | ||||
-rwxr-xr-x | binary_tarball/scripts/1_Install_Dependencies.sh | 2 | ||||
-rwxr-xr-x | binary_tarball/scripts/2_Download_Source_Code.sh | 14 | ||||
-rwxr-xr-x | binary_tarball/scripts/5_Configure_Binary_Tarball.sh | 4 | ||||
-rwxr-xr-x | content/launch_librewolf.sh (renamed from binary_tarball/content/launch_librewolf.sh) | 0 | ||||
-rw-r--r-- | content/toggle-settings.sh (renamed from binary_tarball/content/toggle-settings.sh) | 0 | ||||
-rwxr-xr-x | flatpak/build_flatpak.sh | 15 | ||||
-rw-r--r-- | flatpak/content/io.gitlab.LibreWolf.json | 37 | ||||
-rw-r--r-- | librewolf.cfg.patch | 168 | ||||
-rw-r--r-- | librewolf.desktop | 340 | ||||
-rw-r--r-- | librewolf.install | 13 | ||||
-rwxr-xr-x | scripts/01_arch_build.sh | 12 | ||||
-rwxr-xr-x | scripts/02_configure_tarball.sh | 35 |
16 files changed, 995 insertions, 79 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f230b82..6777c9c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,54 +1,93 @@ -image: ubuntu:18.04 +stages: + - build + - paks + - deploy -variables: - BINARY_TARBALL: "$CI_PROJECT_DIR/LibreWolf.tar.bz2" - APPIMAGE_FILE: "$CI_PROJECT_DIR/LibreWolf.AppImage" - FLATPAK_REPO: "$CI_PROJECT_DIR/librewolf-flatpak-repo" - FLATPAK_BUNDLE: "$CI_PROJECT_DIR/LibreWolf.flatpak" +.carch_aarch64: &carch_aarch64 + variables: + CARCH: 'aarch64' -stages: - - Build - - Package - - Deploy - -Build Tarball: - stage: Build - tags: [librewolf] - script: - - $CI_PROJECT_DIR/binary_tarball/build_tarball.sh $BINARY_TARBALL - artifacts: - name: "Librewolf-$CI_COMMIT_REF_NAME-Linux-Tarball" - paths: - - "$BINARY_TARBALL" - -Build AppImage: - stage: Package - tags: [gitlab-org] - script: - - $CI_PROJECT_DIR/appimage/build_appimage.sh $BINARY_TARBALL $APPIMAGE_FILE - artifacts: - name: "Librewolf-$CI_COMMIT_REF_NAME-Linux-Appimage" - paths: - - "$APPIMAGE_FILE" - -Build Flatpak: - image: black0/flatpak - stage: Package - tags: - - gitlab-org - script: - - $CI_PROJECT_DIR/flatpak/build_flatpak.sh $BINARY_TARBALL $FLATPAK_REPO $FLATPAK_BUNDLE - artifacts: - name: "Librewolf-$CI_COMMIT_REF_NAME-Linux-Flatpak" - paths: - - "$FLATPAK_REPO" - - "$FLATPAK_BUNDLE" +.carch_x86_64: &carch_x86_64 + variables: + CARCH: 'x86_64' + +.main_build_config: &main_build_config + stage: build + script: + - ./scripts/01_arch_build.sh + - ./scripts/02_configure_tarball.sh + artifacts: + name: "Librewolf-${CI_COMMIT_TAG}-${CARCH}" + paths: + - "librewolf*pkg.tar*" + - "LibreWolf.${CARCH}.tar.bz2" + only: + - tags + +.flatpak_config: &flatpak_config + stage: paks + artifacts: + name: "Librewolf-${CI_COMMIT_TAG}-Flatpak-${CARCH}" + paths: + - "LibreWolf.${CARCH}.flatpak" + - "${CI_PROJECT_DIR}/librewolf-flatpak-repo" + only: + - tags + script: + - ./flatpak/build_flatpak.sh "${CI_PROJECT_DIR}/LibreWolf.${CARCH}.tar.bz2" "${CI_PROJECT_DIR}/librewolf-${CARCH}-flatpak-repo" "${CI_PROJECT_DIR}/LibreWolf.${CARCH}.flatpak" + +.appimage_config: &appimage_config + stage: paks + artifacts: + name: "Librewolf-${CI_COMMIT_TAG}-AppImage-${CARCH}" + paths: + - "LibreWolf.${CARCH}.AppImage" + only: + - tags + script: + - ./appimage/build_appimage.sh "${CI_PROJECT_DIR}/LibreWolf.${CARCH}.tar.bz2" "${CI_PROJECT_DIR}/LibreWolf.${CARCH}.AppImage" + +build_x86_64: + image: archlinux/base + tags: [x86_64b] + <<: *carch_x86_64 + <<: *main_build_config + +build_aarch64: + image: registry.gitlab.com/ohfp/manjaro-arm-docker + tags: [aarch64b] + <<: *carch_aarch64 + <<: *main_build_config + +flatpak_x86_64: + image: ubuntu:18.04 + tags: [flat_runner] + <<: *carch_x86_64 + <<: *flatpak_config + +flatpak_aarch64: + image: arm64v8/ubuntu:18.04 + tags: [flat_runner_aarch64] + <<: *carch_aarch64 + <<: *flatpak_config + +appimage_x86_64: + image: ubuntu:18.04 + tags: [x86_64b] + <<: *carch_x86_64 + <<: *appimage_config + +appimage_aarch64: + image: arm64v8/ubuntu:18.04 + tags: [aarch64b] + <<: *carch_aarch64 + <<: *appimage_config Release to Gitlab: - stage: Deploy + stage: deploy image: python3 script: - pip3 install gitlab-release - - gitlab-release LibreWolf.tar.bz2 LibreWolf.AppImage librewolf-flatpak-repo LibreWolf.flatpak + - gitlab-release "LibreWolf.{x86_64,aarch64}.tar.bz2" "librewolf*.pkg.tar.*" "LibreWolf.{x86_64,aarch64}.AppImage" "librewolf-{x86_64,aarch64}-flatpak-repo" "LibreWolf.{x86_64,aarch64}.flatpak" only: - tags diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..1ceeb28 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,276 @@ +# Maintainer: lsf +# 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 +pkgver=73.0.1 +pkgrel=1 +pkgdesc="Community-maintained fork of Librefox: a privacy and security-focused browser" +arch=(x86_64 aarch64) +license=(MPL GPL LGPL) +url="https://LibreWolf.gitlab.io" +depends=(gtk3 libxt startup-notification mime-types dbus-glib ffmpeg nss + ttf-font libpulse) +makedepends=(unzip zip diffutils python2-setuptools yasm mesa imake inetutils + xorg-server-xvfb autoconf2.13 rust clang llvm jack gtk2 + python nodejs python2-psutil cbindgen nasm git binutils) +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) +# install='librewolf.install' +source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz + $pkgname.desktop + $pkgname.cfg.patch + "git+https://gitlab.com/${pkgname}-community/browser/common.git" + "git+https://gitlab.com/${pkgname}-community/settings.git") +sha256sums=('53415180e74da60fc91700ce1ff33bf5b6f51e65353017a98270899a08e0c3d2' + '0471d32366c6f415f7608b438ddeb10e2f998498c389217cdd6cc52e8249996b' + 'e03332f0e865949df5af9c231a364e9e1068fca0439621b98c2d4160d93e674f' + 'SKIP' + 'SKIP') + +if [[ $CARCH == 'aarch64' ]]; then + source+=(arm.patch + https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/firefox/build-arm-libopus.patch) + sha256sums+=('6ca87d2ac7dc48e6f595ca49ac8151936afced30d268a831c6a064b52037f6b7' + '2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9') +fi + +prepare() { + _POCKET_SED_STRING="s/'pocket'/#'pocket'/g" + # this one only to remove an annoying error message: + _POCKET_SED_STRING_2='s#SaveToPocket.init();#// SaveToPocket.init();#g' + _POCKET_FILE=./browser/components/moz.build + _POCKET_FILE_2=./browser/components/BrowserGlue.jsm + + mkdir mozbuild + cd firefox-$pkgver + + # NOTE: + # unlock some prefs I deem worthy of keeping unlocked or slightly less restricted + # (with librewolf installed systemwide, you'd otherwise always have to sudo around in /usr/lib) + # it mainly keeps addon update / install settings / urls unlocked + # as well as form fill settings + # uncomment it if you are OK with a slight potential decrease in privacy, + # or even better: check what I'm doing there. + + # cd ${srcdir}/settings + # patch -Np1 -i ${srcdir}/${pkgname}.cfg.patch + # rm -f librewolf.cfg.orig + # cd ${srcdir}/firefox-$pkgver + + cat >../mozconfig <<END +ac_add_options --enable-application=browser + +# 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 +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 --enable-startup-notification +ac_add_options --disable-crashreporter +ac_add_options --disable-gconf +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-lto +ac_add_options --enable-optimize="-g0 -O2" +export MOZ_DEBUG_FLAGS=" " +export CFLAGS+=" -g0" +export CXXFLAGS+=" -g0" +export RUSTFLAGS="-Cdebuginfo=0" + +# from ALARM +ac_add_options --disable-webrtc + +END + +# ac_add_options --enable-optimize <- ? + + LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" + patch -p1 -i ../arm.patch + patch -p1 -i ../build-arm-libopus.patch + +fi + + rm -f ${srcdir}/common/source_files/mozconfig + cp -r ${srcdir}/common/source_files/* ./ + + # Disabling Pocket + sed -i ${_POCKET_SED_STRING} $_POCKET_FILE + # sed -i ${_POCKET_SED_STRING_2} $_POCKET_FILE_2 +} + + +build() { + cd firefox-$pkgver + + export MOZ_SOURCE_REPO="$_repo" + export MOZ_NOSPAM=1 + export MOZBUILD_STATE_PATH="$srcdir/mozbuild" + + # LTO needs more open files + ulimit -n 4096 + +if [[ $CARCH != 'aarch64' ]]; then + # -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..." + cat >.mozconfig ../mozconfig - <<END +ac_add_options --enable-profile-generate=cross +END + ./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..." + 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 +# seems to break on arm +ac_add_options --enable-linker=gold +END +else + cat >.mozconfig ../mozconfig +fi + + ./mach build + + echo "Building symbol archive..." + ./mach buildsymbols +} + +package() { + cd firefox-$pkgver + DESTDIR="$pkgdir" ./mach install + + # also create regular tarball for non-distro-specific packaging + ./mach package + + local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" + install -Dvm644 /dev/stdin "$vendorjs" <<END +// Use LANG environment variable to choose locale +pref("intl.locale.requested", ""); + +// Use system-provided dictionaries +pref("spellchecker.dictionary_path", "/usr/share/hunspell"); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable extensions in the application directory +pref("extensions.autoDisableScopes", 11); +END + + 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 Arch Linux + +[Preferences] +app.distributor=archlinux +app.distributor.channel=$pkgname +app.partner.archlinux=archlinux +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 +} diff --git a/appimage/build_appimage.sh b/appimage/build_appimage.sh index b74e98c..1317bab 100755 --- a/appimage/build_appimage.sh +++ b/appimage/build_appimage.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash """ @@ -14,8 +14,8 @@ 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-x86_64.AppImage; +_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 @@ -23,6 +23,10 @@ _APPIMAGE_CONTENT_FOLDER=$_SCRIPT_FOLDER/content # Installs needed dependencies apt-get update && apt-get -y install file; +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; @@ -34,14 +38,15 @@ cp -vrT $_APPIMAGE_CONTENT_FOLDER $_BINARY_TARBALL_EXTRACTED_FOLDER; # Downloads appimage tool printf "\nDownloading AppImage Tool\n"; -apt -qq update && apt -qqy install wget; +apt -qq update && apt -qqy install wget; wget $_APPIMAGETOOL_DOWNLOAD_URL -O $_APPIMAGETOOL_FILE; chmod +x $_APPIMAGETOOL_FILE; # Generate AppImage printf "\nGenerating AppImage\n"; -ARCH=x86_64 $_APPIMAGETOOL_FILE --appimage-extract-and-run $_BINARY_TARBALL_EXTRACTED_FOLDER; -chmod +x $_BUILD_APPIMAGE_FILE; +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"; diff --git a/arm.patch b/arm.patch new file mode 100644 index 0000000..0e0d648 --- /dev/null +++ b/arm.patch @@ -0,0 +1,12 @@ +diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp +index f8977a6..34f52fc 100644 +--- a/js/src/wasm/WasmSignalHandlers.cpp ++++ b/js/src/wasm/WasmSignalHandlers.cpp +@@ -243,7 +243,7 @@ using mozilla::DebugOnly; + // If you run into compile problems on a tier-3 platform, you can disable the + // emulation here. + +-#if defined(__linux__) && defined(__arm__) ++#if 0 && defined(__linux__) && defined(__arm__) + # define WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS + #endif diff --git a/binary_tarball/scripts/1_Install_Dependencies.sh b/binary_tarball/scripts/1_Install_Dependencies.sh index 49f0613..58cde9b 100755 --- a/binary_tarball/scripts/1_Install_Dependencies.sh +++ b/binary_tarball/scripts/1_Install_Dependencies.sh @@ -2,7 +2,7 @@ printf "\n\n-------------------------------------- DEPENDENCY INSTALLATION ---------------------------------------------\n"; # Setup Script Variables -_DEPENDENCIES="mercurial wget git"; +_DEPENDENCIES="mercurial wget git flatpak flatpak-builder"; # Installs Dependencies printf "\nInstalling dependencies: $_DEPENDENCIES\n"; diff --git a/binary_tarball/scripts/2_Download_Source_Code.sh b/binary_tarball/scripts/2_Download_Source_Code.sh index ac022a1..27ab37c 100755 --- a/binary_tarball/scripts/2_Download_Source_Code.sh +++ b/binary_tarball/scripts/2_Download_Source_Code.sh @@ -3,9 +3,13 @@ printf "\n\n--------------------------------- SOURCE CODE DOWNLOAD ------------- # Setup Script Variables SOURCE_FOLDER=$1; -_SOURCE_CODE_URL="https://hg.mozilla.org/releases/mozilla-release"; - -# Clone Firefox Source Code -printf "\nCloning Firefox Source Code\n"; -hg clone $_SOURCE_CODE_URL $SOURCE_FOLDER; +# hardcoded vor now, we'll parse the _pkgver later on, probably from tags +pkgver="73.0.1" +_SOURCE_CODE_URL="https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz"; +_SOURCE_TAR="firefox-${pkgver}.tar.xz" +# Downloading and Extracting Firefox Source Code +printf "\nDownloading Firefox Source Code\n"; +wget -O $_SOURCE_TAR $_SOURCE_CODE_URL +mkdir -p $SOURCE_FOLDER +tar -x --strip-components=1 -C $SOURCE_FOLDER -f $_SOURCE_TAR diff --git a/binary_tarball/scripts/5_Configure_Binary_Tarball.sh b/binary_tarball/scripts/5_Configure_Binary_Tarball.sh index 0e6551e..fe4a4a6 100755 --- a/binary_tarball/scripts/5_Configure_Binary_Tarball.sh +++ b/binary_tarball/scripts/5_Configure_Binary_Tarball.sh @@ -11,7 +11,7 @@ _SETTINGS_REPO='https://gitlab.com/librewolf-community/settings.git'; # Extracts the binary tarball printf "\nExtracting librewolf binary tarball\n"; -tar -xf $BINARY_TARBALL; +tar -xf $BINARY_TARBALL -C $_EXTRACTED_TARBALL_FOLDER/..; # Adds the librefox config files to the packaged tarball printf "\nCopying librewolf settings to extracted binary tarball\n"; @@ -22,6 +22,6 @@ cp $LAUNCHER_SCRIPT $_EXTRACTED_TARBALL_FOLDER/launch_librewolf.sh; # Repacks the binary tarball printf "\nRecompressing binary tarball\n"; -tar -jvcf $BINARY_TARBALL $_EXTRACTED_TARBALL_FOLDER; +tar -jvcf $BINARY_TARBALL -C $_EXTRACTED_TARBALL_FOLDER .; diff --git a/binary_tarball/content/launch_librewolf.sh b/content/launch_librewolf.sh index 26c1bd5..26c1bd5 100755 --- a/binary_tarball/content/launch_librewolf.sh +++ b/content/launch_librewolf.sh diff --git a/binary_tarball/content/toggle-settings.sh b/content/toggle-settings.sh index ff46bde..ff46bde 100644 --- a/binary_tarball/content/toggle-settings.sh +++ b/content/toggle-settings.sh diff --git a/flatpak/build_flatpak.sh b/flatpak/build_flatpak.sh index 999c710..36eff24 100755 --- a/flatpak/build_flatpak.sh +++ b/flatpak/build_flatpak.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash printf "\n\n---------------------------------------- FLATPAK BUILD --------------------------------------------\n"; # Aborts the script upon any faliure @@ -10,7 +10,7 @@ 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/x86_64/3.32 org.gnome.Sdk/x86_64/3.32"; +_FLATHUB_PACKAGES_TO_INSTALL="org.gnome.Platform/${CARCH}/3.32 org.gnome.Sdk/${CARCH}/3.32"; _EXTRACTED_BINARY_TARBALL_FOLDER=$_SCRIPT_FOLDER/librewolf _FLATPAK_JSON_FILE=$_SCRIPT_FOLDER/content/io.gitlab.LibreWolf.json; _FLATPAK_BUILD_SOURCE_FOLDER=$_SCRIPT_FOLDER/source; @@ -18,21 +18,28 @@ _FLATPAK_BUILD_FOLDER=build-dir; # 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 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 $_FLATPAK_BUILD_SOURCE_FOLDER && mv $_EXTRACTED_BINARY_TARBALL_FOLDER $_FLATPAK_BUILD_SOURCE_FOLDER/librewolf; +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" ./; -flatpak-builder --repo="$FLATPAK_REPO" "$_FLATPAK_BUILD_FOLDER" io.gitlab.LibreWolf.json; +flatpak-builder --disable-rofiles-fuse --repo="$FLATPAK_REPO" "$_FLATPAK_BUILD_FOLDER" io.gitlab.LibreWolf.json; # Build bundle printf "\nBuilding flatpak bundle\n"; diff --git a/flatpak/content/io.gitlab.LibreWolf.json b/flatpak/content/io.gitlab.LibreWolf.json index 0e2b549..8feb9d6 100644 --- a/flatpak/content/io.gitlab.LibreWolf.json +++ b/flatpak/content/io.gitlab.LibreWolf.json @@ -4,22 +4,27 @@ "runtime-version": "3.32", "sdk": "org.gnome.Sdk", "command": "librewolf", - "modules": [{ - "name": "librewolf", - "buildsystem": "simple", - "build-commands": [ - "mkdir -p /app/share && mv librewolf -t /app/share", - "mkdir -p /app/bin && ln -s /app/share/librewolf/librewolf /app/bin/" - ], - "sources": [{ - "type": "dir", - "path": "source" - }] - }], + "modules": [ + { + "name": "librewolf", + "buildsystem": "simple", + "build-commands": [ + "mkdir -p /app/share && mv librewolf -t /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=x11", /* X11 + XShm access */ - "--socket=wayland", /* Wayland access */ - "--filesystem=home:rw", /* We want full fs access so we can read the files */ - "--share=network" /* Needs to talk to the network: */ + "--share=ipc", + "--socket=x11", + "--socket=wayland", + "--filesystem=home:rw", + "--share=network" ] } diff --git a/librewolf.cfg.patch b/librewolf.cfg.patch new file mode 100644 index 0000000..8dcafe7 --- /dev/null +++ b/librewolf.cfg.patch @@ -0,0 +1,168 @@ +diff --git a/librewolf.cfg b/librewolf.cfg +index d7a6ff6..ee15dca 100644 +--- a/librewolf.cfg ++++ b/librewolf.cfg +@@ -93,11 +93,11 @@ defaultPref("extensions.enabledAddons", "librefox.http.watcher.tor%40intika.be:2 + // User Settings : Cookies settings + // -------------------------------- + +-lockPref("network.cookie.cookieBehavior", 1); +-lockPref("network.cookie.lifetimePolicy", 2); ++defaultPref("network.cookie.cookieBehavior", 1); ++defaultPref("network.cookie.lifetimePolicy", 0); + lockPref("network.cookie.same-site.enabled", true); + lockPref("network.cookie.leave-secure-alone", true); +-lockPref("network.cookie.thirdparty.sessionOnly", true); ++defaultPref("network.cookie.thirdparty.sessionOnly", true); + lockPref("network.cookie.thirdparty.nonsecureSessionOnly", true); + + // ----------------------------------- +@@ -161,6 +161,8 @@ defaultPref("privacy.sanitize.timeSpan", 0); + defaultPref("browser.formfill.enable", false); + defaultPref("privacy.sanitize.sanitizeOnShutdown", true); + defaultPref("places.history.enabled", false); ++// w.r. to issue #54 ++defaultPref("places.history.expiration.max_pages", 2147483647) + defaultPref("privacy.history.custom", true); + //defaultPref("privacy.cpd.openWindows", true); // Clear session data + //defaultPref("privacy.clearOnShutdown.openWindows", true); +@@ -179,10 +181,10 @@ lockPref("browser.sessionstore.interval", 60000); + // User Settings : Autofill settings + // --------------------------------- + +-lockPref("extensions.formautofill.addresses.enabled", false); +-lockPref("extensions.formautofill.available", "off"); +-lockPref("extensions.formautofill.creditCards.enabled", false); +-lockPref("extensions.formautofill.heuristics.enabled", false); ++defaultPref("extensions.formautofill.addresses.enabled", false); ++defaultPref("extensions.formautofill.available", "off"); ++defaultPref("extensions.formautofill.creditCards.enabled", false); ++defaultPref("extensions.formautofill.heuristics.enabled", false); + + lockPref("signon.autofillForms", false); + lockPref("signon.autofillForms.http", false); +@@ -349,8 +351,8 @@ lockPref("dom.w3c_pointer_events.enabled", false); + // Bench Diff : +0/5000 + // >>>>>>>>>>>>>>>>>>>> + +-lockPref("privacy.resistFingerprinting", true); +-lockPref("privacy.resistFingerprinting.block_mozAddonManager", true); ++defaultPref("privacy.resistFingerprinting", true); ++defaultPref("privacy.resistFingerprinting.block_mozAddonManager", true); + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // Section : Locale/Time/UserAgent +@@ -360,12 +362,12 @@ lockPref("privacy.resistFingerprinting.block_mozAddonManager", true); + lockPref("dom.forms.datetime", false); + lockPref("javascript.use_us_english_locale", true); + lockPref("intl.regional_prefs.use_os_locales", false); +-lockPref("intl.locale.requested", "en-US"); +-lockPref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0, 45"); +-lockPref("general.appname.override", "Netscape"); +-lockPref("general.appversion.override", "5.0 (Windows)"); +-lockPref("general.platform.override", "Win32"); +-lockPref("general.oscpu.override", "Windows NT 6.1"); ++defaultPref("intl.locale.requested", "en-US"); ++defaultPref("general.useragent.override", "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0, 45"); ++defaultPref("general.appname.override", "Netscape"); ++defaultPref("general.appversion.override", "5.0 (Windows)"); ++defaultPref("general.platform.override", "Win32"); ++defaultPref("general.oscpu.override", "Windows NT 6.1"); + + // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // Section : Ghacks-user Selection +@@ -469,7 +471,8 @@ lockPref("extensions.webextensions.identity.redirectDomain", ""); + // Pref : CSP Settings For Extensions I/II : Extension Firewall Feature + // Uncomment to disable network for the extensions + // Enable-Firewall-Feature-In-The-Next-Line extensions-firewall >>>>>> +-lockPref("extensions.webextensions.base-content-security-policy", "default-src 'self' moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; script-src 'self' moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' moz-extension: blob: filesystem:;"); ++defaultPref("extensions.webextensions.base-content-security-policy", "script-src 'self' https://* moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' https://* moz-extension: blob: filesystem:;"); ++// lockPref("extensions.webextensions.base-content-security-policy", "default-src 'self' moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; script-src 'self' moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' moz-extension: blob: filesystem:;"); + + // Pref : CSP Settings For Extensions II/II : Extension Firewall Feature + // This value is applied after the first one (just ignore this) +@@ -811,22 +814,22 @@ lockPref("extensions.getAddons.compatOverides.url", ""); + // https://services.addons.mozilla.org/api/v3/addons/compat-override/?guid=%IDS%&lang=%LOCALE% + + // Pref : +-lockPref("extensions.getAddons.get.url", ""); ++defaultPref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE%"); + // Default Value + // https://services.addons.mozilla.org/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE% + + // Pref : +-lockPref("extensions.getAddons.langpacks.url", ""); ++defaultPref("extensions.getAddons.langpacks.url", "https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%"); + // Default Value + // https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language&appversion=%VERSION% + + // Pref : +-lockPref("extensions.getAddons.link.url", ""); ++defaultPref("extensions.getAddons.link.url", "https://addons.mozilla.org/%LOCALE%/firefox/"); + // Default Value + // https://addons.mozilla.org/%LOCALE%/firefox/ + + // Pref : +-lockPref("extensions.getAddons.search.browseURL", ""); ++defaultPref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%"); + // Default Value + // https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION% + +@@ -861,7 +864,7 @@ lockPref("browser.newtabpage.activity-stream.fxaccounts.endpoint", ""); + // https://accounts.firefox.com/ + + // Pref : +-lockPref("extensions.update.url", ""); ++defaultPref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); + // Default Value + // https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion= + // %REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion= +@@ -1457,7 +1460,7 @@ lockPref("app.releaseNotesURL", ""); + + // Pref : + lockPref("app.update.auto", false); +-lockPref("extensions.update.autoUpdateDefault", false); ++defaultPref("extensions.update.autoUpdateDefault", false); + lockPref("app.update.staging.enabled", false); + lockPref("app.update.silent", false); + lockPref("app.update.lastUpdateTime.telemetry_modules_ping", 0); +@@ -1570,10 +1573,10 @@ lockPref("extensions.blocklist.itemURL", ""); + lockPref("extensions.blocklist.url", ""); + + // Pref : +-lockPref("extensions.update.background.url", ""); ++defaultPref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%¤tAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%"); + + // Pref : +-lockPref("extensions.getAddons.showPane", false); ++defaultPref("extensions.getAddons.showPane", false); + + // Pref : + lockPref("extensions.webservice.discoverURL", ""); +@@ -1865,7 +1868,7 @@ lockPref("security.dialog_enable_delay", 700); + + // Pref : Opt-out of add-on metadata updates + // https://blog.mozilla.org/addons/how-to-opt-out-of-add-on-metadata-updates/ +-lockPref("extensions.getAddons.cache.enabled", false); ++defaultPref("extensions.getAddons.cache.enabled", false); + + // Pref : Opt-out of theme (Persona) updates + // https://support.mozilla.org/t5/Firefox/how-do-I-prevent-autoamtic-updates-in-a-50-user-environment/td-p/144287 +@@ -1898,7 +1901,7 @@ lockPref("plugin.sessionPermissionNow.intervalInMinutes", 0); + + // Pref : Update addons automatically + // https://blog.mozilla.org/addons/how-to-turn-off-add-on-updates/ +-lockPref("extensions.update.enabled", false); ++defaultPref("extensions.update.enabled", false); + + // Pref : Enable add-on and certificate blocklists (OneCRL) from Mozilla + // Updated at interval defined in extensions.blocklist.interval (default: 86400) +@@ -2622,4 +2625,7 @@ lockPref("security.tls.unrestricted_rc4_fallback", false); + //lockPref("toolkit.telemetry.unifiedIsOptIn", true); + //lockPref("ui.key.menuAccessKey", 0); + //lockPref("view_source.tab", false); +-lockPref("xpinstall.signatures.required", false); ++defaultPref("xpinstall.signatures.required", true); ++ ++// #11/#68, sounds reasonable ++defaultPref("toolkit.legacyUserProfileCustomizations.stylesheets", true); diff --git a/librewolf.desktop b/librewolf.desktop new file mode 100644 index 0000000..221db66 --- /dev/null +++ b/librewolf.desktop @@ -0,0 +1,340 @@ +[Desktop Entry] +Version=1.0 +Name=LibreWolf +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[de]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per el web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;LibreWolf;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;LibreWolf;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=/usr/lib/librewolf/librewolf %u +Icon=librewolf +Terminal=false +X-MultipleArgs=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall; +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 diff --git a/librewolf.install b/librewolf.install new file mode 100644 index 0000000..9acf7a4 --- /dev/null +++ b/librewolf.install @@ -0,0 +1,13 @@ +post_install() { + echo ">> If you want to reduce potential privacy leaks even further, you should consider" + echo ">> clearing a few settings required for updating/searching extensions:" + echo ">> extensions.getAddons.get.url" + echo ">> extensions.getAddons.langpacks.url" + echo ">> extensions.getAddons.link.url" + echo ">> extensions.getAddons.search.browseURL" + echo ">> extensions.update.url" + echo ">> extensions.update.background.url" + echo ">> If you do wish to install extensions the 'regular way'," + echo ">> a few more tweaks might be needed." + echo ">> I've kept the relevant settings unlocked for that specific reason." +} diff --git a/scripts/01_arch_build.sh b/scripts/01_arch_build.sh new file mode 100755 index 0000000..e8d428b --- /dev/null +++ b/scripts/01_arch_build.sh @@ -0,0 +1,12 @@ +#!/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 . +# makepkg will not run as root +sudo -u nobody -E -H makepkg --noconfirm --nosign --syncdeps --cleanbuild --skippgpcheck diff --git a/scripts/02_configure_tarball.sh b/scripts/02_configure_tarball.sh new file mode 100755 index 0000000..8657375 --- /dev/null +++ b/scripts/02_configure_tarball.sh @@ -0,0 +1,35 @@ +#!/bin/bash +set -e + +printf "\n\n---------------- prepare package for other distros ----------------\n" + +# Setup Script Variables + +# use $CI_PROJECT_DIR unless not in CI, then assign script path +CI_PROJECT_DIR=${CI_PROJECT_DIR:-$(realpath $(dirname $0)/../)} +OUTPUT_TARBALL=$CI_PROJECT_DIR/LibreWolf.${CARCH}.tar.bz2 +SOURCE_CODE_BINARY_TARBALL_LOCATION="$CI_PROJECT_DIR/src/firefox-*/obj*/dist/librewolf*.tar.bz2" +EXTRACTED_TARBALL_FOLDER=$CI_PROJECT_DIR/librewolf_unpacked/librewolf + +# Prevents build from breaking in CI/CD environments +export SHELL=/bin/bash + +# Moves the packaged tarball to the specified location +printf "\nMoving Binary Tarball to output location\n" +mv $SOURCE_CODE_BINARY_TARBALL_LOCATION $OUTPUT_TARBALL + +# Extracts the binary tarball +printf "\nExtracting librewolf binary tarball\n" +mkdir librewolf_unpacked +tar -xf $OUTPUT_TARBALL -C librewolf_unpacked + +# Adds the librefox config files to the packaged tarball +printf "\nCopying librewolf settings to extracted binary tarball\n" + +cp -r $CI_PROJECT_DIR/src/settings $EXTRACTED_TARBALL_FOLDER/settings +cp $CI_PROJECT_DIR/content/toggle-settings.sh $EXTRACTED_TARBALL_FOLDER/settings +cp $CI_PROJECT_DIR/content/launch_librewolf.sh $EXTRACTED_TARBALL_FOLDER/launch_librewolf.sh + +# Repacks the binary tarball +printf "\nRecompressing binary tarball\n" +tar -jvcf $OUTPUT_TARBALL -C $EXTRACTED_TARBALL_FOLDER . |