Compare commits

..

No commits in common. "master" and "v88.0-test-release" have entirely different histories.

32 changed files with 2347 additions and 17 deletions

11
.gitignore vendored Normal file
View file

@ -0,0 +1,11 @@
/firefox-*
/librewolf-*
/librewolf
/mozilla-unified
/tor-browser
/bootstrap.py
/mozconfig
/dist
/tmp.nsi
/tmp-permissive.nsi
/tmp-strict.nsi

9
.gitmodules vendored Normal file
View file

@ -0,0 +1,9 @@
[submodule "settings"]
path = settings
url = https://gitlab.com/librewolf-community/settings.git
[submodule "common"]
path = common
url = https://gitlab.com/librewolf-community/browser/common.git
[submodule "linux"]
path = linux
url = git@gitlab.com:librewolf-community/browser/linux.git

View file

@ -1,30 +1,57 @@
# LibreWolf Issue Tracker & Update Tools 🚀 # What LibreWolf is not
Welcome to the **LibreWolf for Windows** repository! This repository is now dedicated to the **Issue Tracker**. Submit your issues and get the latest updates on LibreWolf for Windows. * LibreWolf does **not** provide _[Anonymity](https://en.wikipedia.org/wiki/Anonymous_web_browsing)_, for that, use:
> [Tor Browser](https://www.torproject.org/).
To download the latest release, visit the [official LibreWolf release page](https://gitlab.com/librewolf-community/browser/bsys6/-/releases). For installation options, check out the [FAQ](https://librewolf.net/docs/faq/). _What is it then?_ It's a **_hardened_** _version_ of Firefox. (See bottom of file.)
## Update Tools 🛠️ # LibreWolf for windows
Stay secure and up-to-date with these LibreWolf update tools: * **[download latest release](https://gitlab.com/librewolf-community/browser/windows/-/releases)**.
* [issue tracker](https://gitlab.com/librewolf-community/browser/windows/-/issues).
1. **LibreWolf WinUpdater**: Kudos to @ltguillaume for this [automatic updater](https://codeberg.org/ltguillaume/librewolf-winupdater) that can be set up to update LibreWolf automatically or run manually. # Chocolatey package manager
2. **LibreWolf Update Checker Extension**: Created by Defkev, this [extension](https://addons.mozilla.org/en-US/firefox/addon/librewolf-updater/) will notify you when an update is available and guide you to the download link. This work is not completely finished yet, but ready to be used anyway.
For now, to install, download [librewolf.87.0.4.nupkg](https://gitlab.com/librewolf-community/browser/windows/uploads/c0d228fc15c1a8f96f4f1db0e0fe2d42/librewolf.87.0.4.nupkg), and run this in the folder with the nupkg:
> Please note: The *updater* can _install_ updates automatically, while the *extension* can only _check_ for updates. `choco install librewolf -s "'.;chocolatey'"`
## LibreWolf for Windows 🖥️ Code is here https://github.com/maltejur/librewolf-choco
- LibreWolf supports multiple UI languages, available in settings. # other download locations
- The latest **-portable.zip** release is self-contained and can be run on removable storage.
## Issue Tracker 🎫 * [[arch releases](https://gitlab.com/librewolf-community/browser/arch/-/releases)] - [librewolf-bin AUR(en)](https://aur.archlinux.org/packages/librewolf-bin/), [librewolf AUR(en)](https://aur.archlinux.org/packages/librewolf/)
* [[linux releases](https://gitlab.com/librewolf-community/browser/linux/-/releases)] - Flatpak, AppImage, Arch and other Linux builds of the LibreWolf browser.
- For issues with Settings or Advanced Settings (`about:config`), submit them to the [settings repository](https://gitlab.com/librewolf-community/settings/-/issues). # settings repository
- For other issues, such as crashes/theme/graphics/speed problems, submit them to [issues for windows repository](https://gitlab.com/librewolf-community/browser/windows/-/issues).
## Building from Source 🏗️ * [[settings repository](https://gitlab.com/librewolf-community/settings)] - all _librewolf.cfg_ stuff.. _([issues](https://gitlab.com/librewolf-community/settings/-/issues))_
- Our `bsys` build system supports cross-compiling from Linux to Windows. Building the Windows version from within Windows is not tested yet. # librewolf repositories
- The build system can be found here: [bsys6](https://gitlab.com/librewolf-community/browser/bsys6).
* [[common](https://gitlab.com/librewolf-community/browser/common)] -> _([issues](https://gitlab.com/librewolf-community/browser/common/-/issues))_
* [[linux](https://gitlab.com/librewolf-community/browser/linux)] -> _([issues](https://gitlab.com/librewolf-community/browser/linux/-/issues))_
* [[website](https://gitlab.com/librewolf-community/librewolf-community.gitlab.io)] - _([issues](https://gitlab.com/librewolf-community/librewolf-community.gitlab.io/-/issues))_
# distro repositories
* [[arch](https://gitlab.com/librewolf-community/browser/arch)] -> _([issues](https://gitlab.com/librewolf-community/browser/arch/-/issues))_
* [[debian](https://gitlab.com/librewolf-community/browser/debian)] -> _([issues](https://gitlab.com/librewolf-community/browser/debian/-/issues))_
* [[flatpack](https://gitlab.com/librewolf-community/browser/flatpak)] -> _([issues](https://gitlab.com/librewolf-community/browser/flatpak/-/issues))_
* [[gentoo](https://gitlab.com/librewolf-community/browser/gentoo)] -> _([issues](https://gitlab.com/librewolf-community/browser/gentoo/-/issues))_
* [[macos](https://gitlab.com/librewolf-community/browser/macos)] -> _([issues](https://gitlab.com/librewolf-community/browser/macos/-/issues))_
* [[windows](https://gitlab.com/librewolf-community/browser/windows)] -> _([issues](https://gitlab.com/librewolf-community/browser/windows/-/issues))_
# community links
* If at all possible, pleasse go to the relevant 'issues' link and start discussing thing there.
* [[reddit](https://www.reddit.com/r/LibreWolf/)] - [r/LibreWolf](https://www.reddit.com/r/LibreWolf/) 😺
* [readthedocs.io](https://librewolf.readthedocs.io/en/latest/).
* [[gitter](https://gitter.im/librewolf-community/librewolf)], and the same room on [matrix](https://app.element.io/#/room/#librewolf-community_librewolf:gitter.im) (element.io).
# hardening firefox
* **tools**: [[deviceinfo.me](https://www.deviceinfo.me/)], [[coveryourtracks](https://coveryourtracks.eff.org/learn)], [[privacytools.io](https://privacytools.io/)],
* eff.org: [surveillance self-defense](https://ssd.eff.org/en).
* Interesting wikipedia articles: [Browser fingerprinting](https://en.wikipedia.org/wiki/Device_fingerprint), [Browser security](https://en.wikipedia.org/wiki/Browser_security), [Browser exploit](https://en.wikipedia.org/wiki/Browser_exploit), [Anonymous web browsing](https://en.wikipedia.org/wiki/Anonymous_web_browsing), [Internet privacy](https://en.wikipedia.org/wiki/Internet_privacy).

223
artifacts_all.sh Normal file
View file

@ -0,0 +1,223 @@
function artifacts_win_details(){
exe=.exe
objdir=obj-x86_64-pc-mingw32/dist/firefox
ospkg=win64
# sanity checks
if [ ! -d $objdir ]; then
echo "artifacts_win.sh: directory $objdir not found. did you run './build.sh build'?"
exit 1;
fi
rm -rf ../firefox ../librewolf
cp -r $objdir ..
pushd ..
mv firefox librewolf
# apply the LibreWolf settings
cp -rv settings/* librewolf
# rename the executable manually
pushd librewolf ; mv -v firefox$exe librewolf$exe ; popd
# clean garbage files
cd librewolf ; rm -rf maintenanceservice* pingsender* firefox.*.xml precomplete removed-files uninstall ; cd ..
# copy the windows icon
cp -v common/source_files/browser/branding/librewolf/firefox.ico librewolf/librewolf.ico
# create the final zip/exe artifacts
if [ ! -z $permissive ]; then
# patch to permissive config
pushd librewolf
echo "Applying permissive patches..."
cp -v ../settings/librewolf.cfg . && cp -v ../settings/distribution/policies.json distribution
patch -p1 -i ../patches/permissive/librewolf-config.patch
patch -p1 -i ../patches/permissive/librewolf-policies.patch
popd
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg-permissive.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg-permissive.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
rm -f librewolf-$pkgver.en-US.win64-permissive-setup.exe tmp.nsi tmp-permissive.nsi
sed "s/pkg_version/$pkgver/g" < artifacts_win.nsi > tmp.nsi
sed "s/win64-setup/win64-permissive-setup/g" < tmp.nsi > tmp-permissive.nsi
makensis-3.01.exe -V1 tmp-permissive.nsi
if [ $? -ne 0 ]; then exit 1; fi
elif [ ! -z $strict ]; then
# patch to strict config
pushd librewolf
echo "Applying strict config..."
cp -v ../settings/librewolf.cfg . && cp -v ../settings/distribution/policies.json distribution
patch -p1 -i ../patches/strict/librewolf-config.patch
patch -p1 -i ../patches/strict/librewolf-policies.patch
popd
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg-strict.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg-strict.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
rm -f librewolf-$pkgver.en-US.win64-strict-setup.exe tmp.nsi tmp-strict.nsi
sed "s/pkg_version/$pkgver/g" < artifacts_win.nsi > tmp.nsi
sed "s/win64-setup/win64-strict-setup/g" < tmp.nsi > tmp-strict.nsi
makensis-3.01.exe -V1 tmp-strict.nsi
if [ $? -ne 0 ]; then exit 1; fi
else
rm -f librewolf-$pkgver.en-US.$ospkg.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
rm -f librewolf-$pkgver.en-US.win64-setup.exe tmp.nsi
sed "s/pkg_version/$pkgver/g" < artifacts_win.nsi > tmp.nsi
makensis-3.01.exe -V1 tmp.nsi
if [ $? -ne 0 ]; then exit 1; fi
fi
popd
}
function artifacts_deb_details(){
exe=
objdir=obj-x86_64-pc-linux-gnu/dist/firefox
ospkg=deb
# sanity checks
if [ ! -d $objdir ]; then
echo "artifacts_win.sh: directory $objdir not found. did you run './build.sh build'?"
exit 1;
fi
rm -rf ../firefox ../librewolf
cp -r $objdir ..
pushd ..
mv firefox librewolf
# apply the LibreWolf settings
cp -rv settings/* librewolf
# rename the executable manually
pushd librewolf ; mv -v firefox$exe librewolf$exe ; popd
# clean garbage files
cd librewolf ; rm -rf maintenanceservice* pingsender* firefox.*.xml precomplete removed-files ; cd ..
# linux: copy app icon stuff
cp files/register-librewolf files/start-librewolf files/start-librewolf.desktop.in librewolf
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
# (create a .deb here)
# patch to permissive config
if [ ! -z $permissive ]; then
pushd librewolf
echo "Applying permissive patches..."
cp -v ../settings/librewolf.cfg . && cp -v ../settings/distribution/policies.json distribution
patch -p1 -i ../patches/permissive/librewolf-config.patch
patch -p1 -i ../patches/permissive/librewolf-policies.patch
popd
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg-permissive.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg-permissive.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
# (create a .deb here)
fi
popd
}
function artifacts_rpm_details(){
exe=
objdir=obj-x86_64-pc-linux-gnu/dist/firefox
ospkg=rpm
# sanity checks
if [ ! -d $objdir ]; then
echo "artifacts_win.sh: directory $objdir not found. did you run './build.sh build'?"
exit 1;
fi
rm -rf ../firefox ../librewolf
cp -r $objdir ..
pushd ..
mv firefox librewolf
# apply the LibreWolf settings
cp -rv settings/* librewolf
# rename the executable manually
pushd librewolf ; mv -v firefox$exe librewolf$exe ; popd
# clean garbage files
cd librewolf ; rm -rf maintenanceservice* pingsender* firefox.*.xml precomplete removed-files ; cd ..
# linux: copy app icon stuff
cp files/register-librewolf files/start-librewolf files/start-librewolf.desktop.in librewolf
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
# (create a .deb here)
# patch to permissive config
if [ ! -z $permissive ]; then
pushd librewolf
echo "Applying permissive patches..."
cp -v ../settings/librewolf.cfg . && cp -v ../settings/distribution/policies.json distribution
patch -p1 -i ../patches/permissive/librewolf-config.patch
patch -p1 -i ../patches/permissive/librewolf-policies.patch
popd
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg-permissive.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg-permissive.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
# (create a .deb here)
fi
popd
}

122
artifacts_win.nsi Normal file
View file

@ -0,0 +1,122 @@
#
# Change these values to fit your application...
#
!define APPNAME "LibreWolf" # Full app name, like: "Gtk+ 2.0 Hello World"
!define PROGNAME "librewolf" # executable name, like: gtk2hello
!define PROG_VERSION "pkg_version" # the program version, like: 0.3.0
!define ICON_NAME "librewolf.ico" # filename of icon to use for this app
!define COMPANYNAME "LibreWolf" # Your name, or company (or just the program name)
!define ESTIMATED_SIZE 190000 # Estimated size (in KB) of installed program for use in "add or remove programs" / 190 MB
#
# The actual installer/uninstaller, you should not need to change much here below
#
Name "${PROGNAME}"
OutFile "${PROGNAME}-${PROG_VERSION}.en-US.win64-setup.exe"
InstallDir $PROGRAMFILES64\${APPNAME}
RequestExecutionLevel admin
Page directory
Page instfiles
function .onInit
setShellVarContext all
functionEnd
Section "${PROGNAME}"
# Copy files
SetOutPath $INSTDIR
File /r librewolf\*.*
# Start Menu
createDirectory "$SMPROGRAMS\${COMPANYNAME}"
createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\${PROGNAME}.exe" "" "$INSTDIR\${ICON_NAME}"
createShortCut "$SMPROGRAMS\${COMPANYNAME}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" ""
# Uninstaller
writeUninstaller "$INSTDIR\uninstall.exe"
# Registry information for add/remove programs
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\${ICON_NAME}$\""
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "${COMPANYNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "${PROG_VERSION}"
# There is no option for modifying or repairing the install
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1
# Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "EstimatedSize" ${ESTIMATED_SIZE}
#
# Registry information to let Windows pick us up in the list of available browsers
#
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf" "" "LibreWolf"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities" "ApplicationDescription" "LibreWolf"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities" "ApplicationIcon" "$INSTDIR\librewolf.exe,0"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities" "ApplicationName" "LibreWolf"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities\FileAssociations" ".htm" "LibreWolfHTM"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities\FileAssociations" ".html" "LibreWolfHTM"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities\Startmenu" "StartMenuInternet" "LibreWolf"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities\URLAssociations" "http" "LibreWolfHTM"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\Capabilities\URLAssociations" "https" "LibreWolfHTM"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\DefaultIcon" "" "$INSTDIR\librewolf.exe,0"
WriteRegStr HKLM "Software\Clients\StartMenuInternet\LibreWolf\shell\open\command" "" "$INSTDIR\librewolf.exe"
WriteRegStr HKLM "Software\RegisteredApplications" "LibreWolf" "Software\Clients\StartMenuInternet\LibreWolf\Capabilities"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM" "" "LibreWolf Handler"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM" "AppUserModelId" "LibreWolf"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\Application" "AppUserModelId" "LibreWolf"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\Application" "ApplicationIcon" "$INSTDIR\librewolf.exe,0"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\Application" "ApplicationName" "LibreWolf"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\Application" "ApplicationDescription" "Howling to Freedom"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\Application" "ApplicationCompany" "LibreWolf"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\DefaultIcon" "" "$INSTDIR\librewolf.exe,0"
WriteRegStr HKLM "Software\Classes\LibreWolfHTM\shell\open\command" "" "$INSTDIR\librewolf.exe %1"
SectionEnd
# Before uninstall, ask for confirmation
function un.onInit
SetShellVarContext all
#Verify the uninstaller - last chance to back out
MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next
Abort
next:
functionEnd
# Uninstaller
section "uninstall"
# Remove Start Menu launcher
delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk"
delete "$SMPROGRAMS\${COMPANYNAME}\Uninstall.lnk"
# Try to remove the Start Menu folder - this will only happen if it is empty
rmDir "$SMPROGRAMS\${COMPANYNAME}"
# Remove files
rmDir /r $INSTDIR
# Remove uninstaller information from the registry
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}"
#
# Windows default browser integration
#
DeleteRegKey HKLM "Software\Clients\StartMenuInternet\LibreWolf"
DeleteRegKey HKLM "Software\RegisteredApplications"
DeleteRegKey HKLM "Software\Classes\LibreWolfHTM"
sectionEnd

76
build.readme.md Normal file
View file

@ -0,0 +1,76 @@
Use: ./build.sh clean | all | [other stuff...]
fetch - fetch the tarball.
extract - extract the tarball.
do_patches - create a mozconfig, and patch the source.
build - the actual build.
artifacts_win - apply .cfg, build the zip file and NSIS setup.exe installer.
artifacts_perm - package as above, but use the permissive config/policies.
# Linux related functions:
deps_deb - install dependencies with apt.
deps_rpm - install dependencies with dnf.
deps_pkg - install dependencies with pkg. (freebsd)
deps_mac - install dependencies with brew. (macOS)
artifacts_deb - apply .cfg, create a dist zip file (for debian10).
artifacts_deb_perm - include permissive build.
artifacts_rpm - apply .cfg, create a dist zip file (for fedora33).
artifacts_rpm_perm - include permissive build.
# Generic utility functionality:
all - build all, produce all artifacts including -permissive.
clean - remove generated cruft.
mach_env - create mach build environment.
rustup - perform a rustup for this user.
git_subs - update git submodules.
config_diff - diff between my .cfg and dist .cfg file. (win10)
policies_diff - diff between my policies and the dist policies. (win10)
git_init - create .git folder in firefox-87.0 for creating patches.
mach_run_config - copy librewolf config/policies to enable 'mach run'.
# Cross-compile from linux:
linux_patches - the 'do_patches' for linux->win crosscompile.
linux_artifacts - standard artifact zip file. perhaps a -setup.exe.
setup_deb_root - setup compile environment (root stuff)
setup_deb_user - setup compile environmnet (build user)
setup_rpm_root - setup compile environment (root stuff)
setup_rpm_user - setup compile environmnet (build user)
# Nightly:
init_mozilla_unified - use bootstrap.py to grab the latest mozilla-unified.
set_mozilla_unified - use mozilla-unified instead of firefox-87.0 source.
reset_mozilla_unified - clean mozilla-unified and pull latest git changes.
Documentation is in the build-howto.md. In a docker situation, we'd like
to run something like:
./build.sh fetch extract linux_patches build linux_artifacts
# Installation from linux zip file:
Copy the zip file in your $HOME folder, then:
unzip librewolf-*.zip
cd librewolf
./register-librewolf
That should give an app icon. You can have it elsewhere and it will work.
# Examples:
For windows, use:
./build.sh fetch extract do_patches build artifacts_win
./build.sh all
For debian, use:
sudo ./build.sh deps_deb
./build.sh rustup mach_env
./build.sh fetch extract do_patches build artifacts_deb

663
build.sh Executable file
View file

@ -0,0 +1,663 @@
#!/bin/bash
# build.sh - build librewolf on windows
# derived from https://gitlab.com/librewolf-community/browser/linux/-/blob/master/PKGBUILD
#
# This script is set up like a Makefile, it's a list of functions that perform a
# certain sub-task, that function can be called as a commandline argument to the script.
#
set -e
. ./version.sh
srcdir=firefox-$pkgver
#
# Basic functionality
#
fetch() {
echo "fetch: begin."
# fetch the firefox source.
rm -f firefox-$pkgver.source.tar.xz
echo "Downloading firefox-$pkgver.source.tar.xz ..."
wget -q https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
if [ $? -ne 0 ]; then exit 1; fi
if [ ! -f firefox-$pkgver.source.tar.xz ]; then exit 1; fi
echo "fetch: done."
}
extract() {
echo "extract: begin."
echo "Deleting previous firefox-$pkgver ..."
rm -rf firefox-$pkgver
echo "Extracting firefox-$pkgver.source.tar.xz ..."
tar xf firefox-$pkgver.source.tar.xz
if [ $? -ne 0 ]; then exit 1; fi
if [ ! -d firefox-$pkgver ]; then exit 1; fi
echo "extract: done."
}
. ./mozconfigs.sh
do_patches() {
echo "do_patches: begin. (srcdir=$srcdir)"
if [ "$srcdir" == "tor-browser" ]; then
echo "do_patches: warning: not running do_patches on tor-browser. done."
return
fi
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
echo 'Creating mozconfig...'
if [ "$mozconfig_mode" == "xcompile" ]; then
create_mozconfig_xcompile
cp -v ../mozconfig .
elif [ "$strict" == "strict" ]; then
create_mozconfig_strict
cp -v ../mozconfig .
else
create_mozconfig_default
cp -v ../mozconfig .
fi
echo 'Copy librewolf branding files...'
cp -vr ../common/source_files/* ./
# new branding stuff
cp -v ../files/configure.sh browser/branding/librewolf
echo 'Applying patches...'
patch -p1 -i ../linux/mozilla-vpn-ad.patch
if [ "$srcdir" == "mozilla-unified" ]; then
echo "../patches/nightly/context-menu2.patch"
patch -p1 -i ../patches/nightly/context-menu2.patch
echo "../patches/nightly/report-site-issue.patch"
patch -p1 -i ../patches/nightly/report-site-issue.patch
echo "../patches/nightly/megabar3.patch"
patch -p1 -i ../patches/nightly/megabar3.patch
else
echo "../linux/context-menu.patch"
patch -p1 -i ../linux/context-menu.patch
echo "../linux/remove_addons.patch"
patch -p1 -i ../linux/remove_addons.patch
echo "../linux/megabar.patch"
patch -p1 -i ../linux/megabar.patch
fi
echo 'GNU sed patches...'
echo "../patches/sed-patches/allow-searchengines-non-esr.patch"
patch -p1 -i ../patches/sed-patches/allow-searchengines-non-esr.patch
echo "../patches/sed-patches/disable-pocket.patch"
patch -p1 -i ../patches/sed-patches/disable-pocket.patch
echo "../patches/sed-patches/remove-internal-plugin-certs.patch"
patch -p1 -i ../patches/sed-patches/remove-internal-plugin-certs.patch
echo "../patches/sed-patches/stop-undesired-requests.patch"
patch -p1 -i ../patches/sed-patches/stop-undesired-requests.patch
echo 'Local patches...'
# local win10 patches
echo "../patches/browser-confvars.patch"
patch -p1 -i ../patches/browser-confvars.patch # not sure about this one yet!
if [ "$strict" == "strict" ]; then
echo 'strict patches...'
fi
cd ..
echo "do_patches: done."
}
build() {
echo "build: begin."
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
./mach build
if [ $? -ne 0 ]; then exit 1; fi
cd ..
echo "build: done."
}
. ./artifacts_all.sh
artifacts_win() {
echo "artifacts_win: begin."
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
./mach package
if [ $? -ne 0 ]; then exit 1; fi
echo ""
echo "artifacts_win: Creating final artifacts."
echo ""
artifacts_win_details
cd ..
echo "artifacts_win: done."
}
artifacts_deb()
{
echo "artifacts_deb: begin."
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
./mach package
if [ $? -ne 0 ]; then exit 1; fi
echo ""
echo "artifacts_deb: Creating final artifacts."
echo ""
artifacts_deb_details
cd ..
echo "artifacts_deb: done."
}
artifacts_rpm()
{
echo "artifacts_rpm: begin."
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
./mach package
if [ $? -ne 0 ]; then exit 1; fi
echo ""
echo "artifacts_rpm: Creating final artifacts."
echo ""
artifacts_rpm_details
cd ..
echo "artifacts_rpm: done."
}
# Dependencies for linux/freebsd.
deps_deb() {
echo "deps_deb: begin."
deps1="python python-dev python3 python3-dev python3-distutils clang pkg-config libpulse-dev gcc"
deps2="curl wget nodejs libpango1.0-dev nasm yasm zip m4 libgtk-3-dev libgtk2.0-dev libdbus-glib-1-dev"
deps3="libxt-dev python3-pip mercurial automake autoconf libtool m4"
apt install -y $deps1
apt install -y $deps2
apt install -y $deps3
echo "deps_deb: done."
}
deps_rpm() {
echo "deps_rpm: begin."
deps="python3 python3-distutils-extra clang pkg-config gcc curl wget nodejs nasm yasm zip m4 python3-zstandard python-zstandard python-devel python3-devel gtk3-devel llvm gtk2-devel dbus-glib-devel libXt-devel pulseaudio-libs-devel"
dnf -y install $deps
echo "deps_rpm: done."
}
deps_pkg() {
echo "deps_pkg: begin."
deps="wget gmake m4 python3 py37-sqlite3 pkgconf llvm node nasm zip unzip yasm"
pkg install $deps
echo "deps_pkg: done."
}
# these utilities should work everywhere
clean() {
echo "clean: begin."
echo "Deleting firefox-${pkgver} ..."
rm -rf firefox-$pkgver
echo "Deleting other cruft ..."
rm -rf librewolf
rm -f firefox-$pkgver.source.tar.xz
rm -f mozconfig
rm -f bootstrap.py
# windows
rm -f librewolf-$pkgver.en-US.win64.zip
rm -f librewolf-$pkgver.en-US.win64-setup.exe
rm -f librewolf-$pkgver.en-US.win64-permissive.zip
rm -f librewolf-$pkgver.en-US.win64-permissive-setup.exe
rm -f librewolf-$pkgver.en-US.win64-strict.zip
rm -f librewolf-$pkgver.en-US.win64-strict-setup.exe
rm -f tmp.nsi tmp-permissive.nsi tmp-strict.nsi
# linux
rm -f librewolf-$pkgver.en-US.deb.zip
rm -f librewolf-$pkgver.en-US.deb-permissive.zip
rm -f librewolf-$pkgver.en-US.deb-strict.zip
rm -f librewolf-$pkgver.en-US.rpm.zip
rm -f librewolf-$pkgver.en-US.rpm-permissive.zip
rm -f librewolf-$pkgver.en-US.rpm-strict.zip
echo "clean: done."
}
rustup() {
# rust needs special love: https://www.atechtown.com/install-rust-language-on-debian-10/
echo "rustup: begin."
curl https://sh.rustup.rs -sSf | sh
. "$HOME/.cargo/env"
cargo install cbindgen
echo "rustup: done."
}
mach_env() {
echo "mach_env: begin."
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
./mach create-mach-environment
if [ $? -ne 0 ]; then exit 1; fi
cd ..
echo "mach_env: done."
}
git_subs() {
echo "git_subs: begin."
git submodule update --recursive
git submodule foreach git pull origin master
git submodule foreach git merge origin master
echo "git_subs: done."
}
git_init() {
echo "git_init: begin."
if [ ! -d $srcdir ]; then exit 1; fi
cd $srcdir
echo "Removing old .git folder..."
rm -rf .git
echo "Creating new .git folder..."
git init
git config core.safecrlf false
git config commit.gpgsign false
git add -f * .[a-z]*
git commit -am 'Initial commit'
cd ..
echo "git_init: done."
}
# Permissive/strict configuration options (win10 only at the moment)
# this stuff should probably go away..
perm_config_diff() {
pushd settings > /dev/null
cp "/c/Program Files/LibreWolf/librewolf.cfg" librewolf.cfg
if [ $? -ne 0 ]; then exit 1; fi
git diff librewolf.cfg > ../patches/permissive/librewolf-config.patch
git diff librewolf.cfg
git checkout librewolf.cfg > /dev/null 2>&1
popd > /dev/null
}
perm_policies_diff() {
pushd settings/distribution > /dev/null
cp "/c/Program Files/LibreWolf/distribution/policies.json" policies.json
if [ $? -ne 0 ]; then exit 1; fi
git diff policies.json > ../../patches/permissive/librewolf-policies.patch
git diff policies.json
git checkout policies.json > /dev/null 2>&1
popd > /dev/null
}
#
# Nightly builds, alternative builds.
#
init_mozilla_unified() {
rm -f bootstrap.py
wget -q https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py
python3 bootstrap.py
}
set_mozilla_unified() {
srcdir=mozilla-unified
}
reset_mozilla_unified() {
echo "reset_mozilla_unified: begin."
if [ ! -d mozilla-unified ]; then
echo "Error: mozilla-unified folder not found. use init_mozilla_unified() to create one"
exit 1;
fi
cd mozilla-unified
echo "Resetting mozilla-unified..."
hg up -C
hg purge
echo "Mercurial pull..."
hg pull -u
cd ..
echo "reset_mozilla_unified: done."
}
# tor-browser.. (experimental)
init_tor_browser() {
git clone --no-checkout https://git.torproject.org/tor-browser.git
cd tor-browser
git checkout tor-browser-78.8.0esr-10.0-1
git submodule update --recursive
patch -p1 -i ../patches/tb-mozconfig-win10.patch
cd ..
}
set_tor_browser() {
srcdir=tor-browser
}
reset_tor_browser() {
echo "reset_tor_browser: begin."
if [ ! -d tor-browser ]; then
echo "Error: tor-browser folder not found. use init_tor_browser() to create one"
exit 1;
fi
cd tor-browser
echo "Resetting tor-browser..."
git reset --hard
cd ..
echo "reset_tor_browser: done."
}
# cross-compile actions...
#
# linux_patches - the 'do_patches' for linux->win crosscompile.
# linux_artifacts - standard artifact zip file. perhaps a -setup.exe.
# setup_deb_root - setup compile environment (root stuff)
# setup_deb_user - setup compile environmnet (build user)
# setup_rpm_root - setup compile environment (root stuff)
# setup_rpm_user - setup compile environmnet (build user)
. ./linux_xcompile.sh
#
# process commandline arguments and do something
#
done_something=0
if [[ "$*" == *linux_patches* ]]; then
linux_patches
done_something=1
fi
if [[ "$*" == *linux_artifacts* ]]; then
linux_artifacts
done_something=1
fi
if [[ "$*" == *setup_deb_root* ]]; then
setup_deb_root
done_something=1
fi
if [[ "$*" == *setup_deb_user* ]]; then
setup_deb_user
done_something=1
fi
if [[ "$*" == *setup_rpm_root* ]]; then
setup_rpm_root
done_something=1
fi
if [[ "$*" == *setup_rpm_user* ]]; then
setup_rpm_user
done_something=1
fi
# various administrative actions...
if [[ "$*" == *init_mozilla_unified* ]]; then
init_mozilla_unified
done_something=1
fi
if [[ "$*" == *set_mozilla_unified* ]]; then
set_mozilla_unified
done_something=1
fi
if [[ "$*" == *reset_mozilla_unified* ]]; then
reset_mozilla_unified
done_something=1
fi
if [[ "$*" == *init_tor_browser* ]]; then
init_tor_browser
done_something=1
fi
if [[ "$*" == *set_tor_browser* ]]; then
set_tor_browser
done_something=1
fi
if [[ "$*" == *reset_tor_browser* ]]; then
reset_tor_browser
done_something=1
fi
# permissive & strict modes.
if [[ "$*" == *set_perm* ]]; then
permissive=permissive
fi
if [[ "$*" == *set_permissive* ]]; then
permissive=permissive
fi
if [[ "$*" == *set_strict* ]]; then
strict=strict
fi
if [[ "$*" == *clean* ]]; then
clean
done_something=1
fi
if [[ "$*" == *all* ]]; then
fetch
extract
do_patches
build
artifacts_win
done_something=1
fi
if [[ "$*" == *git_subs* ]]; then
git_subs
done_something=1
fi
if [[ "$*" == *rustup* ]]; then
rustup
done_something=1
fi
if [[ "$*" == *mach_env* ]]; then
mach_env
done_something=1
fi
# dependencies on various platforms...
if [[ "$*" == *deps_deb* ]]; then
deps_deb
done_something=1
fi
if [[ "$*" == *deps_rpm* ]]; then
deps_rpm
done_something=1
fi
if [[ "$*" == *deps_pkg* ]]; then
deps_pkg
done_something=1
fi
# main building actions...
if [[ "$*" == *fetch* ]]; then
fetch
done_something=1
fi
if [[ "$*" == *extract* ]]; then
extract
done_something=1
fi
if [[ "$*" == *do_patches* ]]; then
do_patches
done_something=1
fi
if [[ "$*" == *git_init* ]]; then
git_init
done_something=1
fi
if [[ "$*" == *build* ]]; then
build
done_something=1
fi
# creating the artifacts...
if [[ "$*" == *artifacts_win* ]]; then
artifacts_win
done_something=1
fi
if [[ "$*" == *artifacts_deb* ]]; then
artifacts_deb
done_something=1
fi
if [[ "$*" == *artifacts_rpm* ]]; then
artifacts_rpm
done_something=1
fi
# librewolf.cfg and policies.json differences
if [[ "$*" == *perm_config_diff* ]]; then
perm_config_diff
done_something=1
fi
if [[ "$*" == *perm_policies_diff* ]]; then
perm_policies_diff
done_something=1
fi
# by default, give help..
if (( done_something == 0 )); then
cat << EOF
Use: ./build.sh clean | all | [other stuff...]
fetch - fetch the tarball.
extract - extract the tarball.
do_patches - create a mozconfig, and patch the source.
build - the actual build.
artifacts_win - apply .cfg, build the zip file and NSIS setup.exe installer.
# Basic functionality:
all - build all (fetch extract do_patches build artifacts_win)
clean - remove generated cruft.
# Linux related functions:
deps_deb - install dependencies with apt.
deps_rpm - install dependencies with dnf.
deps_pkg - install dependencies with pkg. (experimental)
artifacts_deb - apply .cfg, create a dist zip file (for debian10).
artifacts_rpm - apply .cfg, create a dist zip file (for fedora33).
# Generic utility functionality:
mach_env - create mach build environment.
rustup - perform a rustup for this user.
git_subs - update git submodules.
git_init - create .git folder in firefox-87.0 for creating patches.
# Strict/permissive config:
set_perm - produce permissive artifacts.
set_strict - produce strict mode build/artifacts
perm_config_diff - diff between -release and -permissive config
perm_policies_diff - diff between -release and -permissive policies.json
The *_diff commands are dangerous (change repo files), win10 specific, and
just for internal use. You can use './build set_perm all' to build permissve
and './build set_strict all' for -strict. This functionality exists because
we're constantly balancing settings between usability and security.
# Cross-compile from linux: (in development)
linux_patches - the 'do_patches' for linux->win crosscompile.
linux_artifacts - standard artifact zip file. perhaps a -setup.exe.
setup_deb_root - setup compile environment (root stuff)
setup_deb_user - setup compile environmnet (build user)
setup_rpm_root - setup compile environment (root stuff)
setup_rpm_user - setup compile environmnet (build user)
# Nightly etc.:
init_mozilla_unified - use bootstrap.py to grab the latest mozilla-unified.
set_mozilla_unified - use mozilla-unified instead of firefox-87.0 source.
reset_mozilla_unified - clean mozilla-unified and pull latest git changes.
You can use init_tor_browser, set_tor_browser as above, but it attempts a Tor
Browser build instead (esr releases). (experimental) or use set_strict to get
a more restricted version (experimental).
# Installation from linux zip file:
Copy the zip file in your $HOME folder, then:
unzip librewolf-*.zip
cd librewolf
./register-librewolf
That should give an app icon. You can unzip it elsewhere and it will work.
# Examples:
For windows, use:
./build.sh fetch extract do_patches build artifacts_win
./build.sh all
For debian, use:
sudo ./build.sh deps_deb
./build.sh rustup mach_env
./build.sh fetch extract do_patches build artifacts_deb
EOF
exit 1
fi

1
common Submodule

@ -0,0 +1 @@
Subproject commit 9120ca6c6709673b0188a081ec6383c4db75d169

16
files/configure.sh Normal file
View file

@ -0,0 +1,16 @@
# 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/.
MOZ_APP_NAME=librewolf
MOZ_APP_BASENAME=LibreWolf
MOZ_APP_PROFILE=LibreWolf
MOZ_APP_VENDOR="LibreWolf Community"
MOZ_APP_DISPLAYNAME=LibreWolf
MOZ_APP_REMOTINGNAME=librewolf
MOZ_DEV_EDITION=1
MOZ_TELEMETRY_REPORTING=
MOZ_SERVICES_HEALTHREPORT=
MOZ_NORMANDY=
MOZ_REQUIRE_SIGNING=
MOZ_DEFAULT_BROWSER_AGENT=0

7
files/register-librewolf Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env bash
sed "s,MYDIR,$(pwd),g" < start-librewolf.desktop.in > start-librewolf.desktop
mkdir -p "$HOME/.local/share/applications/"
cp -v ./start-librewolf.desktop "$HOME/.local/share/applications/"
update-desktop-database "$HOME/.local/share/applications/"

22
files/start-librewolf Executable file
View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Do not (try to) connect to the session manager
unset SESSION_MANAGER
# If XAUTHORITY is unset, set it to its default value of $HOME/.Xauthority
# before we change HOME below. (See xauth(1) and #1945.) XDM and KDM rely
# on applications using this default value.
if [ -z "$XAUTHORITY" ]; then
XAUTHORITY=~/.Xauthority
export XAUTHORITY
fi
# Try to be agnostic to where we're being started from, chdir to where
# the script is.
mydir="`dirname "$0"`"
test -d "$mydir" && cd "$mydir"
#./librewolf --class "LibreWolf" -profile TorBrowser/Data/Browser/profile.default "${@}" > "$logfile" 2>&1 </dev/null &
./librewolf --detach --class "LibreWolf" > /dev/null 2>&1 </dev/null &
exit $?

View file

@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
Name=LibreWolf
GenericName=Web Browser
Comment=LibreWolf Browser
Categories=Network;WebBrowser;Security;
Exec=MYDIR/./start-librewolf
X-TorBrowser-ExecShell=MYDIR/./start-librewolf
Icon=MYDIR/./browser/chrome/icons/default/default64.png
StartupWMClass=LibreWolf

1
linux Submodule

@ -0,0 +1 @@
Subproject commit 95feca84f5c83a27418cf4822a83537606a21a53

144
linux_xcompile.sh Normal file
View file

@ -0,0 +1,144 @@
# Crosscompile on linux (debian,fedora)
#
# Creating the crosscompile environment on linux
#
setup_deb_root() {
echo "setup_deb_root: begin."
# (implementation...)
echo "setup_deb_root: done."
}
setup_deb_user() {
echo "setup_deb_user: begin."
# (implementation...)
echo "setup_deb_user: done."
}
setup_rpm_root() {
echo "setup_rpm_root: begin."
# (implementation...)
echo "setup_rpm_root: done."
}
setup_rpm_user() {
echo "setup_rpm_user: begin."
# (implementation...)
echo "setup_rpm_user: done."
}
#
# linux_patches() and linux_artifacts()
#
linux_patches() {
mozconfig_mode=xcompile
do_patches
}
linux_artifacts_details() {
exe=.exe
objdir=obj-x86_64-pc-mingw32/dist/firefox
ospkg=win64
# sanity checks
if [ ! -d $objdir ]; then
echo "artifacts_win.sh: directory $objdir not found. did you run './build.sh build'?"
exit 1;
fi
rm -rf ../firefox ../librewolf
cp -r $objdir ..
pushd ..
mv firefox librewolf
# apply the LibreWolf settings
cp -rv settings/* librewolf
# rename the executable manually
pushd librewolf ; mv -v firefox$exe librewolf$exe ; popd
# clean garbage files
cd librewolf ; rm -rf maintenanceservice* pingsender* firefox.*.xml precomplete removed-files ; cd ..
# windows: copy the windows icon
cp -v common/source_files/browser/branding/librewolf/firefox.ico librewolf/librewolf.ico
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
rm -f librewolf-$pkgver.en-US.win64-setup.exe tmp.nsi
sed "s/pkg_version/$pkgver/g" < artifacts_win.nsi > tmp.nsi
makensis-3.01.exe -V1 tmp.nsi
if [ $? -ne 0 ]; then exit 1; fi
# patch to permissive config
if [ ! -z $permissive ]; then
pushd librewolf
echo "Applying permissive patches..."
patch -p1 -i ../patches/permissive/librewolf-config.patch
if [ $? -ne 0 ]; then exit 1; fi
patch -p1 -i ../patches/permissive/librewolf-policies.patch
if [ $? -ne 0 ]; then exit 1; fi
popd
# create the final zip artifact
rm -f librewolf-$pkgver.en-US.$ospkg-permissive.zip
zip -qr9 librewolf-$pkgver.en-US.$ospkg-permissive.zip librewolf
if [ $? -ne 0 ]; then exit 1; fi
# now to try to make the installer
rm -f librewolf-$pkgver.en-US.win64-permissive-setup.exe tmp-permissive.nsi
sed "s/win64-setup/win64-permissive-setup/g" < tmp.nsi > tmp-permissive.nsi
makensis-3.01.exe -V1 tmp-permissive.nsi
if [ $? -ne 0 ]; then exit 1; fi
fi
popd
}
linux_artifacts() {
echo "linux_artifacts: begin."
if [ ! -d firefox-$pkgver ]; then exit 1; fi
cd firefox-$pkgver
./mach package
if [ $? -ne 0 ]; then exit 1; fi
echo ""
echo "artifacts_win: Creating final artifacts."
echo ""
linux_artifacts_details
cd ..
echo "linux_artifacts: done."
}

122
mozconfigs.sh Normal file
View file

@ -0,0 +1,122 @@
create_mozconfig_default() {
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
ac_add_options --enable-optimize
# Branding
ac_add_options --enable-update-channel=release
# theming bugs: ac_add_options --with-app-name=librewolf
# theming bugs: ac_add_options --with-app-basename=LibreWolf
ac_add_options --with-branding=browser/branding/librewolf
ac_add_options --with-distribution-id=io.gitlab.librewolf-community
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload
export MOZ_REQUIRE_SIGNING=0
# 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
# first attempt to fix the win32 vcredist issue results in build errors..
#WIN32_REDIST_DIR=$VCINSTALLDIR\redist\x86\Microsoft.VC141.CRT
END
}
create_mozconfig_xcompile() {
cat >../mozconfig <<END
# Crosscompile to windows..
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
ac_add_options --enable-optimize
# Branding
ac_add_options --enable-update-channel=release
# theming bugs: ac_add_options --with-app-name=librewolf
# theming bugs: ac_add_options --with-app-basename=LibreWolf
ac_add_options --with-branding=browser/branding/librewolf
ac_add_options --with-distribution-id=io.gitlab.librewolf-community
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload
export MOZ_REQUIRE_SIGNING=0
# 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
# first attempt to fix the win32 vcredist issue results in build errors..
#WIN32_REDIST_DIR=$VCINSTALLDIR\redist\x86\Microsoft.VC141.CRT
END
}
create_mozconfig_strict() {
cat >../mozconfig <<END
# Balls to the wall edition..
ac_add_options --disable-webrtc
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
ac_add_options --enable-optimize
# Branding
ac_add_options --enable-update-channel=release
# theming bugs: ac_add_options --with-app-name=librewolf
# theming bugs: ac_add_options --with-app-basename=LibreWolf
ac_add_options --with-branding=browser/branding/librewolf
ac_add_options --with-distribution-id=io.gitlab.librewolf-community
ac_add_options --with-unsigned-addon-scopes=app,system
ac_add_options --allow-addon-sideload
export MOZ_REQUIRE_SIGNING=0
# 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
# first attempt to fix the win32 vcredist issue results in build errors..
#WIN32_REDIST_DIR=$VCINSTALLDIR\redist\x86\Microsoft.VC141.CRT
END
}

View file

@ -0,0 +1,28 @@
diff --git a/browser/confvars.sh b/browser/confvars.sh
index 92871c9516..1e151180dd 100644
--- a/browser/confvars.sh
+++ b/browser/confvars.sh
@@ -3,8 +3,10 @@
# 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/.
-MOZ_APP_VENDOR=Mozilla
-MOZ_UPDATER=1
+MOZ_APP_BASENAME=LibreWolf
+MOZ_APP_VENDOR="LibreWolf Community"
+
+MOZ_UPDATER=0
if test "$OS_ARCH" = "WINNT"; then
if ! test "$HAVE_64BIT_BUILD"; then
@@ -34,8 +36,8 @@ BROWSER_CHROME_URL=chrome://browser/content/browser.xhtml
# For mozilla-beta, mozilla-release, or mozilla-central repositories, use
# "unofficial" branding.
# For the mozilla-aurora repository, use "aurora".
-MOZ_BRANDING_DIRECTORY=browser/branding/unofficial
-MOZ_OFFICIAL_BRANDING_DIRECTORY=browser/branding/official
+MOZ_BRANDING_DIRECTORY=browser/branding/librewolf
+MOZ_OFFICIAL_BRANDING_DIRECTORY=browser/branding/librewolf
MOZ_APP_ID={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
MOZ_PROFILE_MIGRATOR=1

View file

@ -0,0 +1,43 @@
diff --git a/browser/base/content/browser-context.inc b/browser/base/content/browser-context.inc
--- a/browser/base/content/browser-context.inc
+++ b/browser/base/content/browser-context.inc
@@ -102,19 +102,16 @@
oncommand="gContextMenu.openLinkInPrivateWindow();"/>
<menuseparator id="context-sep-open"/>
<menuitem id="context-bookmarklink"
data-l10n-id="main-context-menu-bookmark-link"
oncommand="gContextMenu.bookmarkLink();"/>
<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();"/>
<menuitem id="context-copylink"
data-l10n-id="main-context-menu-copy-link-simple"
oncommand="gContextMenu.copyLink();"/>
<menu id="context-sendlinktodevice"
class="sync-ui-item"
@@ -254,19 +251,16 @@
#ifdef XP_MACOSX
<menuitem id="context-bookmarkpage"
data-l10n-id="main-context-menu-bookmark-add-mac"
oncommand="gContextMenu.bookmarkThisPage();"/>
#endif
<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);"/>
<menu id="context-sendpagetodevice"
class="sync-ui-item"
data-l10n-id="main-context-menu-send-to-device"
hidden="true">
<menupopup id="context-sendpagetodevice-popup"
onpopupshowing="(() => { gSync.populateSendTabToDevicesMenu(event.target, gBrowser.currentURI.spec, gBrowser.contentTitle); })()"/>
</menu>
<menu id="fill-login" hidden="true">

View file

@ -0,0 +1,245 @@
diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -1699,23 +1699,23 @@ class UrlbarInput {
this.removeAttribute("breakout-extend-disabled");
}
this._toolbar.setAttribute("urlbar-exceeds-toolbar-bounds", "true");
this.setAttribute("breakout-extend", "true");
// Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window.
- if (!this.hasAttribute("breakout-extend-animate")) {
- this.window.promiseDocumentFlushed(() => {
- this.window.requestAnimationFrame(() => {
- this.setAttribute("breakout-extend-animate", "true");
- });
- });
- }
+// if (!this.hasAttribute("breakout-extend-animate")) {
+// this.window.promiseDocumentFlushed(() => {
+// this.window.requestAnimationFrame(() => {
+// this.setAttribute("breakout-extend-animate", "true");
+// });
+// });
+// }
}
endLayoutExtend() {
// If reduce motion is enabled, we want to collapse the Urlbar here so the
// user sees only sees two states: not expanded, and expanded with the view
// open.
if (!this.hasAttribute("breakout-extend") || this.view.isOpen) {
return;
diff --git a/browser/themes/shared/urlbar-searchbar.inc.css b/browser/themes/shared/urlbar-searchbar.inc.css
--- a/browser/themes/shared/urlbar-searchbar.inc.css
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
@@ -1,16 +1,16 @@
%if 0
/* 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/. */
%endif
%define fieldHoverBorderColor hsla(240,5%,5%,.35)
-%define urlbarMarginInline 5px
+%define urlbarMarginInline 0px
%define urlbarSearchButtonWidth calc(16px + 2 * var(--urlbar-icon-padding))
:root {
--toolbar-field-border-color: hsla(240,5%,5%,.25);
}
@media not (-moz-proton) {
:root {
@@ -268,50 +268,50 @@
#urlbar[breakout][breakout-extend-disabled][open] {
/* The z-index needs to be big enough to trump other positioned UI pieces
that we want to overlay. 3 is used in the tab bar. */
z-index: 3;
height: auto;
}
#urlbar[breakout][breakout-extend] {
- top: -@urlbarBreakoutExtend@;
- left: calc(-@urlbarMarginInline@ - @urlbarBreakoutExtend@);
- width: calc(100% + 2 * @urlbarMarginInline@ + 2 * @urlbarBreakoutExtend@);
+ top: 0;
+ left: 0;
+ width: 100%;
}
@media (-moz-proton) {
#urlbar[breakout][breakout-extend] {
top: 0;
- left: -@urlbarMarginInline@;
- width: calc(100% + 2 * @urlbarMarginInline@);
+ left: 0;
+ width: 100%;
}
} /*** END proton ***/
@media not (-moz-proton) {
#urlbar[breakout][breakout-extend] > #urlbar-background {
- box-shadow: 0 3px 8px 0 rgba(0,0,0,.15)
+ box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
#urlbar[breakout][breakout-extend][open] > #urlbar-background {
- box-shadow: 0 5px 18px rgba(0,0,0,.2);
+ box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
} /*** END !proton ***/
#urlbar[breakout][breakout-extend] > #urlbar-input-container {
- height: calc(var(--urlbar-toolbar-height) + 2 * @urlbarBreakoutExtend@);
- padding-block: calc(@urlbarBreakoutExtend@ + (var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2);
- padding-inline: calc(@urlbarMarginInline@ + @urlbarBreakoutExtend@);
+ height: var(--urlbar-toolbar-height);
+ padding-block: 0;
+ padding-inline: 0;
}
@media (-moz-proton) {
#urlbar[breakout][breakout-extend] > #urlbar-input-container {
height: var(--urlbar-toolbar-height);
- padding-block: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2 + var(--urlbar-container-padding));
- padding-inline: calc(@urlbarMarginInline@ + var(--urlbar-container-padding));
+ padding-block: 0;
+ padding-inline: 0;
}
} /*** END proton ***/
#urlbar.searchButton[breakout][breakout-extend] > #urlbar-input-container > #urlbar-search-button {
fill: currentColor;
fill-opacity: .6;
}
@@ -320,17 +320,17 @@
transform: scaleX(.99) scaleY(.95);
}
100% {
transform: scale(1.0);
}
}
#urlbar[breakout][breakout-extend] > #urlbar-background {
- animation-name: urlbar-grow;
+ animation-name: none;
animation-duration: 0s;
animation-timing-function: var(--animation-easing-function);
}
@media (prefers-reduced-motion: no-preference) {
#urlbar[breakout][breakout-extend][breakout-extend-animate] > #urlbar-background {
animation-duration: 150ms;
}
diff --git a/browser/themes/shared/urlbarView.inc.css b/browser/themes/shared/urlbarView.inc.css
--- a/browser/themes/shared/urlbarView.inc.css
+++ b/browser/themes/shared/urlbarView.inc.css
@@ -82,26 +82,26 @@
.urlbarView {
/* Don't handle window drag events in case we are overlapping a toolbar */
-moz-window-dragging: no-drag;
display: block;
text-shadow: none;
overflow: clip;
- margin-inline: calc(5px + var(--urlbar-container-padding));
- width: calc(100% - 2 * (5px + var(--urlbar-container-padding)));
+ margin-inline: 0;
+ width: 100%
/* Match urlbar-background's border. */
border-inline: 1px solid transparent;
}
@media not (-moz-proton) {
.urlbarView {
- margin-inline: calc(4px + var(--identity-box-margin-inline));
- width: calc(100% - 2 * (4px + var(--identity-box-margin-inline)));
+ margin-inline: 0;
+ width: 100%;
}
/* If the view is open, offset the toolbar overlap so the view's top border
aligns with the toolbar. */
#urlbar[open] > .urlbarView {
margin-block-start: -@urlbarBreakoutExtend@;
}
} /*** END !proton ***/
@@ -123,27 +123,27 @@
padding-block: 0;
}
.urlbarView-row {
display: flex;
flex-wrap: nowrap;
fill: currentColor;
fill-opacity: .6;
- padding-block: 3px;
+ padding-block: 0px;
}
:root[uidensity=compact] .urlbarView-row {
padding-block: 2px;
}
@media (-moz-proton) {
:root:not([uidensity=compact]) .urlbarView-row:not([type=tip], [type=dynamic]) {
- min-height: 32px;
- padding-block: 4px;
+ min-height: 0px; /* todo: check this */
+ padding-block: 0px;
}
} /*** END proton ***/
.urlbarView-row-inner {
display: flex;
flex-wrap: nowrap;
flex-grow: 1;
flex-shrink: 1;
@@ -288,16 +288,17 @@
width: @urlbarViewFaviconWidth@;
height: @urlbarViewFaviconWidth@;
margin-inline-end: calc(@urlbarViewIconMarginEnd@);
background-repeat: no-repeat;
background-size: contain;
object-fit: contain;
flex-shrink: 0;
-moz-context-properties: fill, fill-opacity;
+ margin-inline-start: 20px;
}
@media not (-moz-proton) {
.urlbarView-favicon {
/* 2px is from identity-block.inc.css */
margin-inline-end: calc(var(--urlbar-icon-padding) / 2 + var(--identity-box-margin-inline) + 2px);
}
} /*** END !proton ***/
@@ -321,20 +322,20 @@
color: var(--urlbar-popup-url-color);
-moz-context-properties: fill;
}
/* Type icon */
.urlbarView-type-icon {
position: absolute;
- width: 12px;
- height: 12px;
- margin-bottom: -4px;
- margin-inline-start: 8px;
+ width: 16px;
+ height: 16px;;
+ margin-bottom: 0;
+ margin-inline-start: 0;
align-self: end;
background-repeat: no-repeat;
background-size: contain;
-moz-context-properties: fill, stroke;
}
/* Favicon badges have this priority: pinned > bookmark. */

View file

@ -0,0 +1,148 @@
diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
index f076d5d7f2..92f0adf003 100644
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -1704,13 +1704,13 @@ class UrlbarInput {
// Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window.
- if (!this.hasAttribute("breakout-extend-animate")) {
- this.window.promiseDocumentFlushed(() => {
- this.window.requestAnimationFrame(() => {
- this.setAttribute("breakout-extend-animate", "true");
- });
- });
- }
+// if (!this.hasAttribute("breakout-extend-animate")) {
+// this.window.promiseDocumentFlushed(() => {
+// this.window.requestAnimationFrame(() => {
+// this.setAttribute("breakout-extend-animate", "true");
+// });
+// });
+// }
}
endLayoutExtend() {
diff --git a/browser/themes/shared/urlbar-searchbar.inc.css b/browser/themes/shared/urlbar-searchbar.inc.css
index 3abd701732..87713b9cbd 100644
--- a/browser/themes/shared/urlbar-searchbar.inc.css
+++ b/browser/themes/shared/urlbar-searchbar.inc.css
@@ -5,7 +5,7 @@
%endif
%define fieldHoverBorderColor hsla(240,5%,5%,.35)
-%define urlbarMarginInline 5px
+%define urlbarMarginInline 0px
%define urlbarSearchButtonWidth calc(16px + 2 * var(--urlbar-icon-padding))
:root {
@@ -273,40 +273,40 @@
}
#urlbar[breakout][breakout-extend] {
- top: -@urlbarBreakoutExtend@;
- left: calc(-@urlbarMarginInline@ - @urlbarBreakoutExtend@);
- width: calc(100% + 2 * @urlbarMarginInline@ + 2 * @urlbarBreakoutExtend@);
+ top: 0;
+ left: 0;
+ width: 100%;
}
@media (-moz-proton) {
#urlbar[breakout][breakout-extend] {
top: 0;
- left: -@urlbarMarginInline@;
- width: calc(100% + 2 * @urlbarMarginInline@);
+ left: 0;
+ width: 100%;
}
} /*** END proton ***/
@media not (-moz-proton) {
#urlbar[breakout][breakout-extend] > #urlbar-background {
- box-shadow: 0 3px 8px 0 rgba(0,0,0,.15)
+ box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
#urlbar[breakout][breakout-extend][open] > #urlbar-background {
- box-shadow: 0 5px 18px rgba(0,0,0,.2);
+ box-shadow: 0 1px 4px rgba(0,0,0,.05);
}
} /*** END !proton ***/
#urlbar[breakout][breakout-extend] > #urlbar-input-container {
- height: calc(var(--urlbar-toolbar-height) + 2 * @urlbarBreakoutExtend@);
- padding-block: calc(@urlbarBreakoutExtend@ + (var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2);
- padding-inline: calc(@urlbarMarginInline@ + @urlbarBreakoutExtend@);
+ height: var(--urlbar-toolbar-height);
+ padding-block: 0;
+ padding-inline: 0;
}
@media (-moz-proton) {
#urlbar[breakout][breakout-extend] > #urlbar-input-container {
height: var(--urlbar-toolbar-height);
- padding-block: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2 + var(--urlbar-container-padding));
- padding-inline: calc(@urlbarMarginInline@ + var(--urlbar-container-padding));
+ padding-block: 0;
+ padding-inline: 0;
}
} /*** END proton ***/
@@ -325,7 +325,7 @@
}
#urlbar[breakout][breakout-extend] > #urlbar-background {
- animation-name: urlbar-grow;
+ animation-name: none;
animation-duration: 0s;
animation-timing-function: var(--animation-easing-function);
}
diff --git a/browser/themes/shared/urlbarView.inc.css b/browser/themes/shared/urlbarView.inc.css
index e58531723e..dba8668168 100644
--- a/browser/themes/shared/urlbarView.inc.css
+++ b/browser/themes/shared/urlbarView.inc.css
@@ -86,16 +86,16 @@
display: block;
text-shadow: none;
overflow: clip;
- margin-inline: calc(5px + var(--urlbar-container-padding));
- width: calc(100% - 2 * (5px + var(--urlbar-container-padding)));
+ margin-inline: 0;
+ width: 100%
/* Match urlbar-background's border. */
border-inline: 1px solid transparent;
}
@media not (-moz-proton) {
.urlbarView {
- margin-inline: calc(4px + var(--identity-box-margin-inline));
- width: calc(100% - 2 * (4px + var(--identity-box-margin-inline)));
+ margin-inline: 0;
+ width: 100%;
}
/* If the view is open, offset the toolbar overlap so the view's top border
aligns with the toolbar. */
@@ -298,6 +298,7 @@
object-fit: contain;
flex-shrink: 0;
-moz-context-properties: fill, fill-opacity;
+ margin-inline-start: 20px;
}
@media not (-moz-proton) {
@@ -331,10 +332,10 @@
.urlbarView-type-icon {
position: absolute;
- width: 12px;
- height: 12px;
- margin-bottom: -4px;
- margin-inline-start: 8px;
+ width: 16px;
+ height: 16px;;
+ margin-bottom: 0;
+ margin-inline-start: 0;
align-self: end;
background-repeat: no-repeat;
background-size: contain;

View file

@ -0,0 +1,123 @@
diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
--- a/browser/extensions/moz.build
+++ b/browser/extensions/moz.build
@@ -1,14 +1,11 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
DIRS += [
- "doh-rollout",
"formautofill",
"screenshots",
- "webcompat",
- "report-site-issue",
"pictureinpicture",
]
diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
--- a/browser/locales/Makefile.in
+++ b/browser/locales/Makefile.in
@@ -56,17 +56,16 @@ l10n-%:
$(if $(filter en-US,$(AB_CD)),, @$(MAKE) merge-$*)
$(NSINSTALL) -D $(DIST)/install
@$(MAKE) -C ../../toolkit/locales l10n-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
ifneq (,$(wildcard ../extensions/formautofill/locales))
@$(MAKE) -C ../extensions/formautofill/locales AB_CD=$* XPI_NAME=locale-$*
endif
- @$(MAKE) -C ../extensions/report-site-issue/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) l10n AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
@$(MAKE) multilocale.txt-$* AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$*
chrome-%: AB_CD=$*
chrome-%: IS_LANGUAGE_REPACK=1
@@ -77,17 +76,16 @@ chrome-%:
@$(MAKE) -C ../../extensions/spellcheck/locales chrome AB_CD=$*
ifneq (,$(wildcard ../extensions/formautofill/locales))
@$(MAKE) -C ../extensions/formautofill/locales chrome AB_CD=$*
endif
@$(MAKE) -C ../../devtools/client/locales chrome AB_CD=$*
@$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
@$(MAKE) chrome AB_CD=$*
@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
- @$(MAKE) -C ../extensions/report-site-issue/locales chrome AB_CD=$*
package-win32-installer: $(SUBMAKEFILES)
$(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
langpack: langpack-$(AB_CD)
# This is a generic target that will make a langpack, repack ZIP (+tarball)
# builds, and repack an installer if applicable. It is called from the
diff --git a/browser/locales/filter.py b/browser/locales/filter.py
--- a/browser/locales/filter.py
+++ b/browser/locales/filter.py
@@ -15,17 +15,16 @@ def test(mod, path, entity=None):
"toolkit",
"security/manager",
"devtools/client",
"devtools/shared",
"devtools/startup",
"browser",
"browser/extensions/formautofill",
"browser/extensions/fxmonitor",
- "browser/extensions/report-site-issue",
"extensions/spellcheck",
"other-licenses/branding/firefox",
"browser/branding/official",
"services/sync",
):
return "ignore"
if mod not in ("browser", "extensions/spellcheck"):
# we only have exceptions for browser and extensions/spellcheck
diff --git a/browser/locales/l10n.ini b/browser/locales/l10n.ini
--- a/browser/locales/l10n.ini
+++ b/browser/locales/l10n.ini
@@ -9,17 +9,16 @@ all = browser/locales/all-locales
[compare]
dirs = browser
other-licenses/branding/firefox
browser/branding/official
devtools/client
devtools/startup
browser/extensions/formautofill
browser/extensions/fxmonitor
- browser/extensions/report-site-issue
[includes]
# non-central apps might want to use %(topsrcdir)s here, or other vars
# RFE: that needs to be supported by compare-locales, too, though
toolkit = toolkit/locales/l10n.ini
services_sync = services/sync/locales/l10n.ini
[extras]
diff --git a/browser/locales/l10n.toml b/browser/locales/l10n.toml
--- a/browser/locales/l10n.toml
+++ b/browser/locales/l10n.toml
@@ -130,20 +130,16 @@ locales = [
reference = "browser/extensions/formautofill/locales/en-US/**"
l10n = "{l}browser/extensions/formautofill/**"
[[paths]]
reference = "browser/extensions/fxmonitor/locales/en-US/**"
l10n = "{l}browser/extensions/fxmonitor/**"
[[paths]]
- reference = "browser/extensions/report-site-issue/locales/en-US/**"
- l10n = "{l}browser/extensions/report-site-issue/**"
-
-[[paths]]
reference = "services/sync/locales/en-US/**"
l10n = "{l}services/sync/**"
[[includes]]
path = "toolkit/locales/l10n.toml"
[[includes]]

View file

@ -0,0 +1,16 @@
# current differences between -release and -permissive
## librewolf.cfg:
* lockPref("dom.w3c_pointer_events.enabled", true); -> This fixes YouTube picture-in-picture.
* defaultPref("dom.event.contextmenu.enabled", true); -> This fixes lastpass.com context menu.
* defaultPref("extensions.update.url", ""); -> enable in-app manual check for extension updates.
* Attempting new cookie behavior (use Settings > Cookies and Site Data > Manage Exceptions), these are the last three preferences in the cfg file: privacy.clearOnShutdown.cookies, privacy.clearOnShutdown.offlineApps, network.cookie.lifetimePolicy.
## policies.json
* Added the decentraleyes plugin.

View file

@ -0,0 +1,107 @@
diff --git a/librewolf.cfg b/librewolf.cfg
index 03524fd..7aa8d33 100644
--- a/librewolf.cfg
+++ b/librewolf.cfg
@@ -375,6 +375,7 @@ defaultPref("network.proxy.socks_version", 5);
defaultPref("browser.tabs.loadBookmarksInTabs", true);
defaultPref("devtools.debugger.remote-enabled", false);
defaultPref("devtools.chrome.enabled", false);
+defaultPref("general.useragent.site_specific_overrides", false);
defaultPref("extensions.ui.experiment.hidden", false);
//defaultPref("extensions.ui.dictionary.hidden", false);
//defaultPref("extensions.ui.locale.hidden", false);
@@ -388,7 +389,7 @@ defaultPref("extensions.ui.experiment.hidden", false);
lockPref("dom.indexedDB.enabled", true); //default true
//lockPref("dom.indexedDB.logging.details", false); //default true
//lockPref("dom.indexedDB.logging.enabled", false); //default true
-lockPref("dom.w3c_pointer_events.enabled", false);
+lockPref("dom.w3c_pointer_events.enabled", true);
//lockPref("network.http.spdy.enabled", false);
//lockPref("network.http.spdy.enabled.deps", false);
//lockPref("network.http.spdy.enabled.http2", false);
@@ -616,7 +617,7 @@ defaultPref("extensions.webextensions.background-delayed-startup", true); //defa
// >>>>>>>>>>>>>>>>>>>>
// Pref : Disabling performance addon url [FF64+]
-lockPref("devtools.performance.recording.ui-base-url", "http://localhost:4242");
+lockPref("devtools.performance.recording.ui-base-url", "https://localhost:4242");
// Default Value : https://perf-html.io
// Pref : The default set of protocol handlers for irc [FF64+]
@@ -881,12 +882,12 @@ lockPref("extensions.getAddons.compatOverides.url", "");
// https://services.addons.mozilla.org/api/v3/addons/compat-override/?guid=%IDS%&lang=%LOCALE%
// Pref :
-defaultPref("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 :
-defaultPref("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%
@@ -896,12 +897,12 @@ defaultPref("extensions.getAddons.link.url", "");
// https://addons.mozilla.org/%LOCALE%/firefox/
// Pref :
-defaultPref("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%
// Pref :
-lockPref("extensions.getAddons.themes.browseURL", "");
+lockPref("extensions.getAddons.themes.browseURL", "https://addons.mozilla.org/%LOCALE%/firefox/themes/?src=firefox");
// Default Value
// https://addons.mozilla.org/%LOCALE%/firefox/themes/?src=firefox
@@ -931,7 +932,7 @@ lockPref("browser.newtabpage.activity-stream.fxaccounts.endpoint", "");
// https://accounts.firefox.com/
// Pref :
-defaultPref("extensions.update.url", "");
+//defaultPref("extensions.update.url", "");
// Default Value
// https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=
// %REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=
@@ -1476,7 +1477,7 @@ lockPref("javascript.options.shared_memory", false);
// So overall, disabling SW should enhance performance because it blocks SW Scripts.
// [NOTE] Service worker APIs are hidden (in Firefox) and cannot be used when in PB mode.
// [NOTE] Service workers only run over HTTPS. Service Workers have no DOM access.
-defaultPref("dom.serviceWorkers.enabled", false);
+lockPref("dom.serviceWorkers.enabled", false);
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// Section : General Settings 1/3
@@ -1803,7 +1804,7 @@ lockPref("datareporting.healthreport.uploadEnabled", false);
lockPref("datareporting.policy.dataSubmissionEnabled", false);
// Pref : Disable right-click menu manipulation via JavaScript (disabled)
-defaultPref("dom.event.contextmenu.enabled", false);
+defaultPref("dom.event.contextmenu.enabled", true);
// Pref : Disable clipboard event detection (onCut/onCopy/onPaste) via Javascript
// Disabling clipboard events breaks Ctrl+C/X/V copy/cut/paste functionaility in
@@ -1893,7 +1894,7 @@ lockPref("dom.enable_user_timing", false);
// Pref : Disable Web Audio API
// https://bugzilla.mozilla.org/show_bug.cgi?id=1288359
// Avoid fingerprinting
-defaultPref("dom.webaudio.enabled", false);
+lockPref("dom.webaudio.enabled", false);
// Pref : When geolocation is enabled, don't log geolocation requests to the console
lockPref("geo.wifi.logging.enabled", false);
@@ -2772,3 +2773,10 @@ defaultPref("devtools.selfxss.count", 0);
// enable HTTPS only mode by default
defaultPref("dom.security.https_only_mode", true);
defaultPref("dom.security.https_only_mode_ever_enabled", true);
+
+
+// attempting new cookie behavior (use Settings > Cookies and Site Data > Manage Exceptions)
+// (please not that after you added a site, you must close LibreWolf before the cookies/etc are actually saved.)
+defaultPref("privacy.clearOnShutdown.cookies", false);
+defaultPref("privacy.clearOnShutdown.offlineApps", false);
+defaultPref("network.cookie.lifetimePolicy", 2);

View file

@ -0,0 +1,13 @@
diff --git a/browser/components/enterprisepolicies/schemas/policies-schema.json b/browser/components/enterprisepolicies/schemas/policies-schema.json
index d436cf1ca1..ecd6e53b9e 100644
--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
+++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
@@ -1074,7 +1074,7 @@
},
"SearchEngines": {
- "enterprise_only": true,
+ "enterprise_only": false,
"type": "object",
"properties": {

View file

@ -0,0 +1,25 @@
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index 81de0fb201..163b4843e4 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -1375,8 +1375,6 @@ BrowserGlue.prototype = {
Normandy.init();
}
- SaveToPocket.init();
-
AboutHomeStartupCache.init();
Services.obs.notifyObservers(null, "browser-ui-startup-complete");
diff --git a/browser/components/moz.build b/browser/components/moz.build
index d16b27b1ea..a119166fa5 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -42,7 +42,6 @@ DIRS += [
"originattributes",
"ion",
"places",
- "pocket",
"preferences",
"privatebrowsing",
"prompts",

View file

@ -0,0 +1,19 @@
diff --git a/toolkit/mozapps/extensions/internal/XPIInstall.jsm b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
index 784077b740..e035b3ba6d 100644
--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
@@ -822,14 +822,6 @@ function getSignedStatus(aRv, aCert, aAddonID) {
return AddonManager.SIGNEDSTATE_BROKEN;
}
- if (aCert.organizationalUnit == "Mozilla Components") {
- return AddonManager.SIGNEDSTATE_SYSTEM;
- }
-
- if (aCert.organizationalUnit == "Mozilla Extensions") {
- return AddonManager.SIGNEDSTATE_PRIVILEGED;
- }
-
return /preliminary/i.test(aCert.organizationalUnit)
? AddonManager.SIGNEDSTATE_PRELIMINARY
: AddonManager.SIGNEDSTATE_SIGNED;

View file

@ -0,0 +1,55 @@
diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js b/browser/components/newtab/data/content/activity-stream.bundle.js
index 92f0652aec..696a99f7ef 100644
--- a/browser/components/newtab/data/content/activity-stream.bundle.js
+++ b/browser/components/newtab/data/content/activity-stream.bundle.js
@@ -1841,7 +1841,7 @@ class ASRouterAdminInner extends react__WEBPACK_IMPORTED_MODULE_3___default.a.Pu
label = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("span", null, "remote settings (", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement("a", {
className: "providerUrl",
target: "_blank",
- href: "https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/nimbus-desktop-experiments/records",
+ href: "https://f.s.s.m.c.qjz9zk/v1/buckets/main/collections/nimbus-desktop-experiments/records",
rel: "noopener noreferrer"
}, "nimbus-desktop-experiments"), ")");
}
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index c7cde8917c..b398a22064 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -2243,7 +2243,7 @@ pref("security.cert_pinning.hpkp.enabled", false);
// Remote settings preferences
// Note: if you change this, make sure to also review security.onecrl.maximum_staleness_in_seconds
pref("services.settings.poll_interval", 86400); // 24H
-pref("services.settings.server", "https://firefox.settings.services.mozilla.com/v1");
+pref("services.settings.server", "https://f.s.s.m.c.qjz9zk/v1");
pref("services.settings.default_bucket", "main");
// The percentage of clients who will report uptake telemetry as
diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm
index 66df850904..1538a2ff0d 100644
--- a/services/settings/Utils.jsm
+++ b/services/settings/Utils.jsm
@@ -60,7 +60,7 @@ var Utils = {
);
const isXpcshell = env.exists("XPCSHELL_TEST_PROFILE_DIR");
return AppConstants.RELEASE_OR_BETA && !Cu.isInAutomation && !isXpcshell
- ? "https://firefox.settings.services.mozilla.com/v1"
+ ? "https://f.s.s.m.c.qjz9zk/v1"
: gServerURL;
},
diff --git a/toolkit/components/search/SearchUtils.jsm b/toolkit/components/search/SearchUtils.jsm
index 8a3c6acb84..7408b3fd2f 100644
--- a/toolkit/components/search/SearchUtils.jsm
+++ b/toolkit/components/search/SearchUtils.jsm
@@ -159,9 +159,9 @@ var SearchUtils = {
ENGINES_URLS: {
"prod-main":
- "https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/search-config/records",
+ "https://f.s.s.m.c.qjz9zk/v1/buckets/main/collections/search-config/records",
"prod-preview":
- "https://firefox.settings.services.mozilla.com/v1/buckets/main-preview/collections/search-config/records",
+ "https://f.s.s.m.c.qjz9zk/v1/buckets/main-preview/collections/search-config/records",
"stage-main":
"https://settings.stage.mozaws.net/v1/buckets/main/collections/search-config/records",
"stage-preview":

View file

@ -0,0 +1,15 @@
diff --git a/.mozconfig b/.mozconfig
index d71c858844e3..2d295de7df72 100755
--- a/.mozconfig
+++ b/.mozconfig
@@ -16,8 +16,8 @@ export MOZILLA_OFFICIAL=1
ac_add_options --enable-optimize
ac_add_options --enable-official-branding
-# Let's support GTK3 for ESR60
-ac_add_options --enable-default-toolkit=cairo-gtk3
+## Let's support GTK3 for ESR60
+#ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --disable-strip
ac_add_options --disable-install-strip

View file

@ -0,0 +1,13 @@
diff --git a/browser/components/urlbar/UrlbarProviderInterventions.jsm b/browser/components/urlbar/UrlbarProviderInterventions.jsm
index e22886ce92..d46d8191f2 100644
--- a/browser/components/urlbar/UrlbarProviderInterventions.jsm
+++ b/browser/components/urlbar/UrlbarProviderInterventions.jsm
@@ -451,7 +451,7 @@ class ProviderInterventions extends UrlbarProvider {
]),
});
for (let [id, phrases] of Object.entries(DOCUMENTS)) {
- queryScorer.addDocument({ id, phrases });
+// queryScorer.addDocument({ id, phrases });
}
return queryScorer;
});

1
settings Submodule

@ -0,0 +1 @@
Subproject commit 1b9cc88ccf64993951fe28cf426cf883e37e1b4d

24
util/upload-distfiles.sh Normal file
View file

@ -0,0 +1,24 @@
#!/bin/bash
pkgver=88.0
private_token=$1
if [ -z $private_token ]; then
echo "Please specify the Gitlab PRIVATE TOKEN on the commandline."
exit 1
fi
echo ""
echo ""
curl --request POST --header "PRIVATE-TOKEN: ${private_token}" --form "file=@librewolf-${pkgver}.en-US.win64-setup.exe" "https://gitlab.com/api/v4/projects/13852981/uploads"
echo ""
echo ""
curl --request POST --header "PRIVATE-TOKEN: ${private_token}" --form "file=@librewolf-${pkgver}.en-US.win64.zip" "https://gitlab.com/api/v4/projects/13852981/uploads"
echo ""
echo ""
curl --request POST --header "PRIVATE-TOKEN: ${private_token}" --form "file=@librewolf-${pkgver}.en-US.win64-permissive-nightly-setup.exe" "https://gitlab.com/api/v4/projects/13852981/uploads"
echo ""
echo ""

1
version.sh Normal file
View file

@ -0,0 +1 @@
pkgver=88.0