post-compile-patches | ||
pre-compile-patches | ||
copy.go | ||
main.go | ||
marker.go | ||
new.go | ||
pref.go | ||
README.md | ||
run.sh | ||
standard.go |
Spitfire Patcher
This is a custom patcher for applying modifications to Firefox source code. It processes patch files located in the `./patches` directory and applies them to files in a specified root path.
How to Use
-
Place your patch files in the
./patches
directory. Example of patch file:i:/browser/branding/official/configure.sh o:/browser/branding/official/configure.sh -MOZ_APP_DISPLAYNAME=Firefox +MOZ_APP_DISPLAYNAME=Spitfire
-
Run the patcher with the
--path
and--patches
flags:./run.sh --path ./mozilla-central/obj-x86_64-pc-linux-gnu/dist/bin --patches ./mozilla-central/patcher/post-compile-patches
- --path Will be resolved to an absolute path, and patches will be applied relative to this path.
- --patches Specifies a path to a
.patch
file or a folder containing patches to be applied by this script
Parameters Explained
Here are the details of each parameter used in the patching system:
i:
(Input)
-
Specifies the input file to which the patch should be applied.
-
This is the file that will be read and modified based on the patch instructions.
-
Example:
i:/browser/branding/official/configure.sh
- This means the input file is located at
/browser/branding/official/configure.sh
.
- This means the input file is located at
o:
(Output)
-
Specifies the output file where the modified content will be saved.
-
If the input and output paths are the same, the original file will be overwritten.
-
Example:
o:/browser/branding/official/configure.sh
- This means the output file is
/browser/branding/official/configure.sh
.
- This means the output file is
t:
(Type)
- Defines the type of patch being applied. This parameter can be skipped if not applicable.
- Common types:
-
standard
: Standard patching type that follows the+
(add) and-
(remove) syntax.- Used for general file modifications.
- Example:
i: /browser/branding/official/configure.sh o: /browser/branding/official/configure.sh -MOZ_APP_DISPLAYNAME=Firefox +MOZ_APP_DISPLAYNAME=Spitfire
Note: Type will fallback to t:standard when no type is specified.
-
pref
: Indicates that the patch is modifying preference settings (e.g., Firefoxprefs.js
).- When
t:pref
is specified, the script will search for existing preferences in the input file and replace them with the new ones provided in the patch. If a preference is not found, it will be added to the end of the file. - Example:
t:pref i:/browser/branding/nightly/pref/firefox-branding.js o:/browser/branding/nightly/pref/firefox-branding.js +pref("extensions.getAddons.showPane", false); // HIDDEN
- When
-
new
: Used for creating new files or overwriting existing files with specified content.- Creates a new file at the
o:
location. - Example:
t:new o:/browser/branding/official/newfile.txt +This is a new file created by Spitfire Patcher.
- Creates a new file at the
-
copy
:: Copies files or directories from the input path to the output path, overwriting if necessary.- Copies the contents of a file or directory from i: to o:.
- Example:
t:copy i:/patcher/pre-compile-patches/branding o:/browser/branding/official
-
marker
: Modifies a file relative to a specific marker line.- A line starting with # defines the marker.
- Lines starting with + are inserted immediately after the marker.
- Lines starting with - are removed from the file (after the marker).
- Example:
t:marker i:/browser/locales/en-US/firefox-l10n.js o:/browser/locales/en-US/firefox-l10n.js #static const RedirEntry kRedirMap[] = + {"store", "http://localhost:20351/", + nsIAboutModule::ALLOW_SCRIPT | + nsIAboutModule::URI_MUST_LOAD_IN_CHILD | + nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS},
-
Example Patch Files
t:pref
i:/browser/firefox.js
o:/browser/spitfire.js
+pref("browser.privatebrowsing.autostart", true);
t:standard
i:/browser/app/profile/firefox.js
o:/browser/app/profile/firefox.js
-MOZ_APP_DISPLAYNAME=Firefox
+MOZ_APP_DISPLAYNAME=Spitfire
t:new
o:/browser/branding/official/new-file.txt
+Welcome to Spitfire Browser Branding.
Summary of Parameters
Parameter | Purpose | Example |
---|---|---|
i: |
Specifies the input file path. | i:/browser/app/profile/firefox.js |
o: |
Specifies the output file path. | o:/browser/app/profile/firefox.js |
t: |
Defines the type of patch. | t:pref , t:standard , t:new , t:marker |
+ |
Adds a line to the output file. | +MOZ_APP_DISPLAYNAME=Spitfire |
- |
Removes a line from the input file. | -MOZ_APP_DISPLAYNAME=Firefox |
# |
Marks a reference line for insertion (used in marker type). |
# 'settings', |
Workflow
- Define Input and Output: Use
i:
ando:
to specify which files to read and write. - Specify Patch Type: Use
t:
for special handling like preference modifications. - Apply Modifications: Use
+
to add lines and-
to remove lines.