Windows packaging for ungoogled-chromium.
Download binaries from the Contributor Binaries website.
Or install using winget install --id=eloston.ungoogled-chromium -e
.
Source Code: It is recommended to use a tag via git checkout
(see building instructions below). You may also use master
, but it is for development and may not be stable.
Google only supports Windows 10 x64 or newer. These instructions are tested on Windows 10 Pro x64.
NOTE: The default configuration will build 64-bit binaries for maximum security (TODO: Link some explanation). This can be changed to 32-bit by setting target_cpu
to "x86"
in flags.windows.gn
or passing --x86
as an argument to build.py
.
IMPORTANT: Please setup only what is referenced below. Do NOT setup other Chromium compilation tools like depot_tools
, since we have a custom build process which avoids using Google's pre-built binaries.
Follow the "Visual Studio" section of the official Windows build instructions.
- Make sure to read through the entire section and install/configure all the required components.
- If your Visual Studio is installed in a directory other than the default, you'll need to set a few environment variables to point the toolchains to your installation path. (Copied from instructions for Electron)
vs2019_install = DRIVE:\path\to\Microsoft Visual Studio\2019\Community
(replace2019
andCommunity
with your installed versions)WINDOWSSDKDIR = DRIVE:\path\to\Windows Kits\10
GYP_MSVS_VERSION = 2019
(replace 2019 with your installed version's year)
IMPORTANT: Currently, the MAX_PATH
path length restriction (which is 260 characters by default) must be lifted in for our Python build scripts. This can be lifted in Windows 10 (v1607 or newer) with the official installer for Python 3.6 or newer (you will see a button at the end of installation to do this). See Issue #345 for other methods for older Windows versions.
- Setup the following:
- 7-Zip
- Python 3.8 or above
- Can be installed using WinGet or the Microsoft Store.
- If you don't plan on using the Microsoft Store version of Python:
- Check "Add python.exe to PATH" before install.
- At the end of the Python installer, click the button to lift the
MAX_PATH
length restriction. - Disable the
python3.exe
andpython.exe
aliases inSettings > Apps > Advanced app settings > App execution aliases
. They will typically be referred to as "App Installer". See this question on stackoverflow.com to understand why. - Ensure that your Python directory either has a copy of Python named "python3.exe" or a symlink linking to the Python executable.
- The
httplib2
module. This can be installed usingpip install
.
- Make sure to lift the
MAX_PATH
length restriction, either by clicking the button at the end of the Python installer or by following these instructions. - Git (to fetch all required ungoogled-chromium scripts)
- During setup, make sure "Git from the command line and also from 3rd-party software" is selected. This is usually the recommended option.
Run in Developer Command Prompt for VS
(as administrator):
git clone --recurse-submodules https://github.com/ungoogled-software/ungoogled-chromium-windows.git
cd ungoogled-chromium-windows
# Replace TAG_OR_BRANCH_HERE with a tag or branch name
git checkout --recurse-submodules TAG_OR_BRANCH_HERE
python3 build.py
python3 package.py
A zip archive and an installer will be created under build
.
NOTE: If the build fails, you must take additional steps before re-running the build:
- If the build fails while downloading the Chromium source code (which is during
build.py
), it can be fixed by removingbuild\download_cache
and re-running the build instructions. - If the build fails at any other point during
build.py
, it can be fixed by removing everything underbuild
other thanbuild\download_cache
and re-running the build instructions. This will clear out all the code used by the build, and any files generated by the build.
An efficient way to delete large amounts of files is using Remove-Item PATH -Recurse -Force
. Be careful however, files deleted by that command will be permanently lost.
- Setup MSYS2
- Run the following in a "MSYS2 MSYS" shell:
pacman -S quilt python3 vim tar dos2unix
# By default, there doesn't seem to be a vi command for less, quilt edit, etc.
ln -s /usr/bin/vim /usr/bin/vi
- Start
Developer Command Prompt for VS
andMSYS2 MSYS
shell and navigate to source folderDeveloper Command Prompt for VS
cd c:\path\to\repo\ungoogled-chromium-windows
MSYS2 MSYS
cd /path/to/repo/ungoogled-chromium-windows
- You can use Git Bash to determine the path to this repo
- Or, you can find it yourself via
/<drive letter>/<path with forward slashes>
- Retrieve downloads
Developer Command Prompt for VS
mkdir "build\download_cache"
python3 ungoogled-chromium\utils\downloads.py retrieve -i downloads.ini -c build\download_cache
- Clone sources
Developer Command Prompt for VS
python3 ungoogled-chromium\utils\clone.py -o build\src
- Check for rust version change (see below)
- Update pruning list
Developer Command Prompt for VS
python3 ungoogled-chromium\devutils\update_lists.py -t build\src --domain-regex ungoogled-chromium\domain_regex.list
- Unpack downloads
Developer Command Prompt for VS
python3 ungoogled-chromium\utils\downloads.py unpack -i downloads.ini -c build\download_cache build\src
- Apply ungoogled-chromium patches
Developer Command Prompt for VS
python3 ungoogled-chromium\utils\patches.py apply --patch-bin build\src\third_party\git\usr\bin\patch.exe build\src ungoogled-chromium\patches
- Update windows patches
MSYS2 MSYS
- Setup shell to update patches
source devutils/set_quilt_vars.sh
- Go into the source tree
cd build/src
- Fix line breaks of files to patch
grep -r ../../patches/ -e "^+++" | awk '{print substr($2,3)}' | xargs dos2unix
- Use quilt to refresh patches. See ungoogled-chromium's docs/developing.md section "Updating patches" for more details
- Go back to repo root
cd ../..
- Sanity checking for consistency in series file
./devutils/check_patch_files.sh
- Setup shell to update patches
- Use Git to add changes and commit
NOTE: For all steps, update downloads.ini
accordingly.
- Check the LLVM GitHub for the latest version of LLVM.
- Check the esbuild version in file
build/src/third_party/devtools-frontend/src/DEPS
and find the closest release in the esbuild GitHub to it.- Example:
version:[email protected]
should be0.24.0
- Example:
- Check the ninja GitHub for the latest version of ninja.
- Download the
ninja-win.zip
file. - Get the SHA-512 checksum using
sha512sum
inMSYS2 MSYS
.
- Download the
- Check the Git GitHub for the latest version of Git.
- Get the SHA-256 checksum for
PortableGit-<version>-64-bit.7z.exe
.
- Get the SHA-256 checksum for
- Check for commit hash changes of
src
submodule inthird_party/microsoft_dxheaders
(e.g. using GitHubhttps://github.com/chromium/chromium/tree/<version>/third_party/microsoft_dxheaders
).- Replace
version
with the Chromium version inungoogled-chromium/chromium_version.txt
.
- Replace
- Check the NodeJS website for the latest LTS version of NodeJS.
- Download the "Standalone Binary" version.
- Get the SHA-256 checksum using
sha256sum
inMSYS2 MSYS
.
- Check for version changes of windows rust crate (
third_party/rust/windows_x86_64_msvc/
).- Update
patches/ungoogled-chromium/windows/windows-fix-building-with-rust.patch
accordingly.
- Update
- Check
RUST_REVISION
constant in filetools/rust/update_rust.py
in build root.- Example: Revision could be
ab71ee7a9214c2793108a41efb065aa77aeb7326
- Example: Revision could be
- Get date for nightly rust build from the Rust GitHub page:
https://github.com/rust-lang/rust/commit/<RUST_REVISION>
- Replace
RUST_REVISION
with the obtained value - Adapt
downloads.ini
accordingly
- Example: The above revision corresponds to the nightly build date
2024-04-12
(YYYY-mm-dd
)
- Replace
- Download nightly rust build from:
https://static.rust-lang.org/dist/<build-date>/rust-nightly-x86_64-pc-windows-msvc.tar.gz
- Replace
build-date
with the obtained value - Extract archive
- Execute
rustc\bin\rustc.exe -V
to get rust version string - Adapt
build.py
andpatches\ungoogled-chromium\windows\windows-fix-building-with-rust.patch
accordingly
- Replace
See LICENSE
Xenon