Build System Patches
Patches in this category focus on altering the build system by removing unnecessary dependencies, fixing build issues, or optimizing the build flow to ensure successful compilation and better reproducibility.
Patches
Section titled “Patches”- Android Components - Allow overriding the build date
- Gecko - IronFox core
- Fenix - IronFox core
- Fenix - Enable legacy packaging
- Gecko - Ensure builds always reflect our (latest) changes
- Gecko - Gradle project resolution
- GeckoView - Target release
- Gecko - Support native manifests
- Gecko - Support enterprise policies
- Gecko - Support AutoConfig
- Gecko - AutoConfig setEnv()
- Gecko - Substitute nimbus-fml
- Gecko - Pref handling
- GeckoView - Pref handling
Android Components - Allow overriding the build date
Section titled “Android Components - Allow overriding the build date”Allows devs to override the build date.
Reason To ensure consistent build dates for all variants of IronFox. | Effect Ensures that the build dates are consistent for all variants of IronFox, in order to prevent unexpected version code issues. |
Gecko - IronFox core
Section titled “Gecko - IronFox core”Provides support for core IronFox functionality.
Reason To provide support for core functionality and IronFox-specific resources. | Effect Ensures that core IronFox changes are always/properly applied as expected. |
Fenix - IronFox core
Section titled “Fenix - IronFox core”Provides support for core IronFox functionality.
Reason To provide support for core functionality and IronFox-specific resources. | Effect Ensures that core IronFox changes are always/properly applied as expected. |
Fenix - Enable legacy packaging
Section titled “Fenix - Enable legacy packaging”Enables legacy Android packaging unconditionally to reduce the size of our APKsets.
Reason To reduce the size of our APKsets from ~2 GB to ~1 GB. | Effect Reduces the size of APKsets to ensure they can be downloaded and properly uploaded to stores like Accrescent. |
Gecko - Ensure builds always reflect our (latest) changes
Section titled “Gecko - Ensure builds always reflect our (latest) changes”Ensures that builds of GeckoView binaries always reflect our (latest) changes.
Reason To ensure that our GeckoView binaries are always packaged as intended. | Effect Ensures that our GeckoView binaries are always packaged as intended. |
Gecko - Gradle project resolution
Section titled “Gecko - Gradle project resolution”Prevents building and configuring unnecessary/unwanted example/sample libraries, and ensures that only necessary projects are configured at build-time.
Reason Allows for faster builds, with less overhead. | Effect Reduces build-time, and reduces the complexity of the overall build process. |
GeckoView - Target release
Section titled “GeckoView - Target release”Ensures that we build and publish the release variant of GeckoView.
Reason To ensure that we build and publish the release variant of GeckoView. | Effect Ensures that we build and publish the release (non-debug) variant of GeckoView. |
Gecko - Support native manifests
Section titled “Gecko - Support native manifests”Adds support for native manifests to GeckoView.
Reason Adds support for native manifests to GeckoView, in order to configure/harden uBlock Origin. | Effect Users are provided with a strengthened/enhanced config for uBlock Origin out of the box. |
Gecko - Support enterprise policies
Section titled “Gecko - Support enterprise policies”Adds support for enterprise policies to GeckoView, so that it can be leveraged for advanced configuration.
Reason Allows for additional control/configuration of the browsing behavior. | Effect Allows users to take advantage of additional customizations, and helps to provide a superior browsing experience. |
Gecko - Support AutoConfig
Section titled “Gecko - Support AutoConfig”Adds support for Firefox’s AutoConfig functionality to GeckoView, so that it can be leveraged for advanced configuration.
Reason Allows for additional control/configuration of the browsing behavior. | Effect Allows users to take advantage of additional customizations, and helps to provide a superior browsing experience. |
Gecko - AutoConfig setEnv()
Section titled “Gecko - AutoConfig setEnv()”Adds support for setting environment variables via Firefox’s AutoConfig functionality.
Reason Allows for advanced configuration of browsing behavior. | Effect Provides more control and allows for more advanced browser configuration. |
Gecko - Substitute nimbus-fml
Section titled “Gecko - Substitute nimbus-fml”Adds support for using a locally built nimbus-fml binary, instead of fetching a prebuilt artifact from Mozilla.
Reason Reduces dependency on Mozilla infrastructure and improves build reproducibility. | Effect Provides more control over build dependencies with fewer connections to Mozilla servers. |
Gecko - Pref handling
Section titled “Gecko - Pref handling”Locks Gecko preferences controlled by GeckoRuntimeSettings to ensure they stay in sync with Fenix’s UI settings.
about:config (as doing so simply results in the pref resetting on the next browser launch).about:config directly).Reason To avoid bugs/unexpected behavior from UI settings not matching with related Gecko preferences, and to prevent from users from attempting to change these preferences directly from about:config (as doing so simply results in the pref resetting on the next browser launch). | Effect Gecko preferences remain in sync with their corresponding UI setting(s), users are provided with a more stable browsing experience, and users can avoid having their preferences unintentionally reset (when set from about:config directly). |
GeckoView - Pref handling
Section titled “GeckoView - Pref handling”Locks Gecko preferences controlled by GeckoRuntimeSettings to ensure they stay in sync with Fenix’s UI settings.
about:config (as doing so simply results in the pref resetting on the next browser launch).about:config directly).Reason To avoid bugs/unexpected behavior from UI settings not matching with related Gecko preferences, and to prevent from users from attempting to change these preferences directly from about:config (as doing so simply results in the pref resetting on the next browser launch). | Effect Gecko preferences remain in sync with their corresponding UI setting(s), users are provided with a more stable browsing experience, and users can avoid having their preferences unintentionally reset (when set from about:config directly). |