windows/build.sh
Bert van der Weerd ec10c4e6f5 Rebase, squash and merge !7.
changes

changes

changes

changes

changes

addes settings submodule

changes

updates

updates

new version of the readme.md

Update README2.md

changes

Update the text formatting

Update README2.md

Update README2.md

changes

Removed install_script.txt because the profile folder requested here is checked to be Ok.

Updated the readme a bit
2021-02-04 21:33:57 +01:00

219 lines
6.2 KiB
Bash

# build.sh - build librewolf on windows
# derived from https://gitlab.com/librewolf-community/browser/linux/-/blob/master/PKGBUILD
pkgname=librewolf
_pkgname=LibreWolf
pkgver=85.0
fetch() {
rm -f firefox-$pkgver.source.tar.xz
wget https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
# the settings and common submodules should be checked out to allow the build
rm -f megabar.patch remove_addons.patch unity-menubar.patch
wget https://gitlab.com/librewolf-community/browser/linux/-/raw/master/megabar.patch
wget https://gitlab.com/librewolf-community/browser/linux/-/raw/master/remove_addons.patch
wget https://gitlab.com/librewolf-community/browser/linux/-/raw/master/unity-menubar.patch
}
prepare() {
rm -rf firefox-$pkgver
tar xf firefox-$pkgver.source.tar.xz
cd 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 --enable-release
ac_add_options --enable-hardening
ac_add_options --enable-rust-simd
# as suggested by Mental Outlaw in https://www.youtube.com/watch?v=L2otiFy4ADI
ac_add_options --disable-webrtc
# Branding
ac_add_options --enable-update-channel=release
ac_add_options --with-app-name=${pkgname}
ac_add_options --with-app-basename=${_pkgname}
ac_add_options --with-branding=browser/branding/${pkgname}
ac_add_options --with-distribution-id=io.gitlab.${pkgname}-community
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload
export MOZ_REQUIRE_SIGNING=0
# Features
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
# 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
END
patch -p1 -i ../remove_addons.patch
patch -p1 -i ../megabar.patch
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'
# on windows: the sed.exe in MozBuild is too old, no -z, using the one from Git instead.
if [ -f '/c/mozilla-build/start-shell.bat' ]; then
mysed='/c/mozilla-source/Git/usr/bin/sed.exe'
if [ ! -f $mysed ]; then
echo 'build.sh: For the build to work, copy "c:\program files\Git" folder into "c:\mozilla-source".'
exit
fi
else
$mysed='sed'
fi
$mysed -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
cp -r ../common/source_files/* ./
# FIXME: this 'mozconfig' file in the 'common' submodule should be removed
# this submodule is purely for the branding.
rm -f mozconfig
# FIXME: on windows: the stubinstaller folder is missing from the librewolf branding folder.
# this might be a bug in FF however as it seems to take missing branding resources from
# the nightly branding. We probably want this stuff merged into the 'common' submodule.
cp -r ../missing_branding_files/stubinstaller browser/branding/librewolf
# just a straight copy for now..
cp ../mozconfig .mozconfig
cd ..
}
build() {
cd firefox-$pkgver
./mach build
cd ..
}
package() {
cd firefox-$pkgver
./mach package
cd ..
}
installer_win() {
cd firefox-$pkgver
# apply the LibreWolf settings
cp -rv ../settings/* obj-x86_64-pc-mingw32/dist/librewolf
# recreate the zip file..
cd obj-x86_64-pc-mingw32/dist
rm -f librewolf-$pkgver.en-US.win64.txt librewolf-$pkgver.en-US.win64.zip
zip -r9 librewolf-$pkgver.en-US.win64.zip librewolf
/c/mozilla-source/Git/usr/bin/sha256sum.exe librewolf-$pkgver.en-US.win64.zip > librewolf-$pkgver.en-US.win64.zip.sha256sum
rm -f ../../../librewolf-$pkgver.en-US.win64.zip*
cp librewolf-$pkgver.en-US.win64.zip* ../../..
cd ../..
cd ..
}
installer_macos() {
cd firefox-$pkgver
# TODO: we want to apply the librewolf settings and make the .dmg file here.
echo 'build.sh: installer_macos() Not implemented yet.'
cd ..
}
# windows: change $PATH to find all the build tools in .mozbuild
# this might do the trick on macos aswell?
if [ -f '/c/mozilla-build/start-shell.bat' ]; then
export TPATH=$HOME/.mozbuild/clang/bin:$HOME/.mozbuild/cbindgen:$HOME/.mozbuild/node:$HOME/.mozbuild/nasm
export PATH=$TPATH:$PATH
fi
# process commandline arguments and do something
done_something=0
if [[ "$*" == *fetch* ]]; then
fetch
done_something=1
fi
if [[ "$*" == *prepare* ]]; then
prepare
done_something=1
fi
if [[ "$*" == *build* ]]; then
build
done_something=1
fi
if [[ "$*" == *package* ]]; then
package
done_something=1
fi
if [[ "$*" == *installer_win* ]]; then
installer_win
done_something=1
fi
if [[ "$*" == *installer_macos* ]]; then
installer_macos
done_something=1
fi
if (( done_something == 0 )); then
echo "Usage: $0 fetch | prepare | build | package | installer_win | installer_mac"
exit
fi