This document contains an assortment of information for those who want to develop ungoogled-chromium.
Information targeted towards developers and other users live in the Wiki.
Contents:
Development is focused on master
, and any changes in there should not break anything unless platforms break during a Chromium version rebase.
Larger feature changes or hotfixes must be done in a separate branch. Once they are ready, then a Pull Request can be made onto master
(for contributors with write access, merging directly via a git client is fine). After the branch is merged, it should be removed.
chrome://flags
optionsSee docs/how_to_add_your_feature_flag.md
in the Chromium source tree for the steps needed. Note that updating tools/metrics/histograms/enums.xml
is not required.
For new flags, first add a constant to third_party/ungoogled/ungoogled_switches.cc
(by modifying patch resources/patches/ungoogled-chromium/add-third-party-ungoogled.patch
). Then, use this constant in the steps outlined above.
Tested on Debian 10 (buster). Exact instructions should work on any other Linux or macOS system with the proper dependencies.
To gain a deeper understanding of this updating process, have a read through docs/design.md.
quilt
httplib2
and six
are also required if you wish to utilize a source clone instead of the source tarball.mkdir -p build/download_cache
./utils/downloads.py retrieve -i downloads.ini -c build/download_cache
./utils/downloads.py unpack -i downloads.ini -c build/download_cache build/src
./utils/clone.py -o build/src
The utility devutils/update_lists.py
automates this process. By default, it will update the files in the local repo. Pass in -h
or --help
for available options.
./devutils/update_lists.py -t build/src
The resulting source tree in build/src
will not have binaries pruned or domains substituted.
IMPORTANT: Make sure domain substitution has not been applied before updating patches.
source devutils/set_quilt_vars.sh
(or source devutils/set_quilt_vars.fish
if you are using the fish shell)
patches/
cd build/src
quilt
to refresh all patches: quilt push -a --refresh
quilt
to fix the broken patch:
quilt push -f
quilt edit ...
or quilt add ...
) or removing (quilt remove ...
) files as necessary
quilt refresh
quilt pop -a
cd ../..
devutils/validate_config.py
. If any warnings are printed, address them; otherwise, continue to Step 8.devutils/validate_patches.py -l build/src
. If errors occur, go back to Step 3.This should leave unstaged changes in the git repository to be reviewed, added, and committed.
If domain substitution is not applied, then the steps from the previous section will work for revising patches.
If domain substitution is applied, then the steps for the initial update will not apply since that would create patches which depend on domain substitution. Here is a method of dealing with this:
./utils/domain_substitution.py revert -c CACHE_PATH_HERE build/src
./utils/domain_substitution.py apply -r domain_regex.list -f domain_substitution.list -c CACHE_PATH_HERE build/src
ungoogled-software
organization.