Logo

Spitfire Builder

This is a "simple" script for building the Spitfire Browser based on Mozilla Firefox source code.

## Project Overview Spitfire Builder script is a tool designed to automate the building, patching, packaging, and uploading of the Spitfire Browser, which is based on the Mozilla Firefox source code. It streamlines tasks like: - Cloning and updating the Mozilla source repository. - Applying patches for Spitfire. - Building the browser for different platforms. - Compressing and uploading builts to a remote server. ## Dependencies - Mercurial (hg) - Git - Golang (tested with v1.21) - Python 3.11 and pip3 ## Flags Below is a detailed description of all the flags supported by the Spitfire Builder script: ### **General Flags** - **`-h`**: Displays the help message and exits. Use this to see all available flags and their descriptions. ### **Build Process Flags** - **`-a`**: Perform all steps of the build process, including cleaning, updating the repository, building, and applying patches. (Without uploading) - **`-b`**: Compiles the source code without cleaning or updating. - **`--clean`**: Cleans the build directory by removing temporary or cached files. - **`--full-clean`**: Performs a full clean by removing all build artifacts (clobber). - **`-u`**: Updates the Mozilla source repository to the latest revision using Mercurial (`hg pull`). - **`--pre-patch`**: Applies pre-build patches to the source code. - **`--post-patch`**: Applies post-build patches to the built output. - **`--skip-patch-update`**: Skips updating the patches repository. - **`-r`**: Runs the built project after the build process completes successfully. - **`--skip-deps`**: Skip checking for required system dependencies. - **`ignoreErrors`**: Processes all steps even if errors occur. ### **Compression and Upload Flags** - **`-c`**: Compresses the build output into a `.tar.gz` file. Use with the `--upload-path` flag to specify the directory to compress. - **`--upload`**: Uploads the compressed build file to a remote server (e.g., SourceForge). Requires a configuration file (`sourceforge_config.json`) to define upload parameters. - **`--upload-path=`**: Specifies the directory or file to upload. This is required for both compression and uploading. ### **Customization Flags** - **`-t=`**: Sets the target format for the build output. The format follows `component-arch-release-platform`. - **`-v=`**: Defines the version of the package. For nightly builds, the current date is used by default. - **`--component=`**: Sets the name of the component being built (default: 'browser'). - **`--arch=`**: Specifies the architecture for the build (default: system architecture, e.g., `amd64`). - **`--release=`**: Specifies the release type (`stable`, `nightly`, etc.). Default is `nightly`. - **`--platform=`**: Sets the platform for the build (default: system platform, e.g., `linux`). ## Example usage: - **All build steps**: ```sh go run . -a ``` - **All build setps without fetching new patches**: ```sh go run . -a --skip-patch-update ``` - **Upload**: ```sh go run . --upload -c ``` - **Build and upload**: ```sh go run . --upload -c -a ``` - **Display all flags**: ```sh go run . -h ``` ## Config file for uploading example: *sourceforge_config.json* ```json { "SFKeyPath": "~/.ssh/id_rsa.pub", "SFUser": "internet-addict", "SFHost": "web.sourceforge.net", "SFProject": "spitfire-browser" } ``` ## APPINDEX example: ``` C:a6af7ebb5c1382084704be0b5714ab026c819d63 P:spitfire-browser R:nightly V:2024.12.23 A:amd64 S:838594187 I:3595780372 T:Spitfire U:https://spitfirebrowser.xyz/ L:AGPL-3.0 o:browser m:Internet Addict t:1734949294 D: p:linux q: d:https://downloads.sourceforge.net/project/spitfire-browser/browser/amd64/nightly/2024.12.23/browser-amd64-nightly-linux.tar.gz I:https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/browser/icon.svg S:https://spitfirebrowser.xyz/static/images/screenshots/1.png T:browser,experimental,testing r: Automated Nightly build of Spitfire c:a6af7ebb5c1382084704be0b5714ab026c819d63 ``` ## Repository structure [Link to repositary](https://sourceforge.net/projects/spitfire-browser/) ``` spitfire-browser/ ├── browser/ │ ├── amd64/ │ │ ├── stable/ │ │ │ ├── vx.x.x/deb.tar.gz │ │ ├── nightly/ │ │ ├── yyyy-mm-dd/deb.tar.gz │ ├── arm/ │ │ ├── stable/ │ │ │ ├── vx.x.x/ │ │ ├── nightly/ │ │ ├── yyyy-mm-dd/ ├── luncher/ │ ├── stable/ │ │ ├── vx.x.x/ │ ├── nightly/ │ ├── yyyy-mm-dd/ ├── installer/ │ ├── stable/ │ │ ├── vx.x.x/ │ ├── nightly/ │ ├── yyyy-mm-dd/ ├── addons/ (planned) │ ├── themes/ │ │ ├── stable/ │ │ │ ├── x.x.x/ │ │ ├── nightly/ │ │ ├── yyyy-mm-dd/ │ ├── custom-configs/ │ │ ├── stable/ │ │ │ ├── x.x.x/ │ │ ├── nightly/ │ │ ├── yyyy-mm-dd/ │ ├── search-engines/ │ ├── stable/ │ │ ├── x.x.x/ │ ├── nightly/ │ ├── yyyy-mm-dd/ ├── APPINDEX ```