b044585b88
Via `sed` instead of a patch, in the hope that it might be less of a maintenance burden compared to patch witch changes in the file to patch with subsequent upstream releases. Should only be merged once it's ensured there are no unforseen side effects when built with the Plugin Certificates removed.
143 lines
4.6 KiB
Bash
Executable file
143 lines
4.6 KiB
Bash
Executable file
#!/bin/bash
|
|
printf "\n\n------------------------------ FINAL PREBUILD CONFIGURATION ---------------------------------\n";
|
|
|
|
# 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
|
|
|
|
# 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
|
|
|
|
# let's see if this works: make things backwards-compatible as much as possible
|
|
# TODO: check if this would also work when building on something newer to have it run on
|
|
# 16.04/xenial later on as well?
|
|
ac_add_options --enable-stdcxx-compat
|
|
|
|
# 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 --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 >>${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,--reduce-memory-overheads"
|
|
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-9'
|
|
export CXX='clang++-9'
|
|
export AR=llvm-ar-9
|
|
export NM=llvm-nm-9
|
|
export RANLIB=llvm-ranlib-9
|
|
|
|
# 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/drop-check-glibc-symbols.patch"
|
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/build-with-libstdc++-7.patch"
|
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/drop-libstdcxx-check.patch"
|
|
patch -p1 -i "${CI_PROJECT_DIR}/deb_patches/add-missing-include-functional.patch"
|
|
|
|
# Remove some pre-installed addons that might be questionable
|
|
patch -p1 -i ${CI_PROJECT_DIR}/remove_addons.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
|