212 lines
No EOL
6.1 KiB
Markdown
212 lines
No EOL
6.1 KiB
Markdown
<p align="center">
|
|
<img src="https://weforge.xyz/Spitfire/Branding/raw/branch/main/active/browser/icon.svg" alt="Logo" width="64" height="64">
|
|
</p>
|
|
|
|
<p align="center" style="font-size: 32px;">
|
|
<strong>Spitfire Builder</strong>
|
|
</p>
|
|
|
|
<p align="center">
|
|
This is a "simple" script for building the Spitfire Browser based on Mozilla Firefox source code.
|
|
</p>
|
|
|
|
## 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.
|
|
|
|
### **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=<path>`**:
|
|
Specifies the directory or file to upload. This is required for both compression and uploading.
|
|
|
|
### **Customization Flags**
|
|
|
|
- **`-t=<target>`**:
|
|
Sets the target format for the build output. The format follows `component-arch-release-platform`.
|
|
- **`-v=<version>`**:
|
|
Defines the version of the package. For nightly builds, the current date is used by default.
|
|
- **`--component=<name>`**:
|
|
Sets the name of the component being built (default: 'browser').
|
|
- **`--arch=<architecture>`**:
|
|
Specifies the architecture for the build (default: system architecture, e.g., `amd64`).
|
|
- **`--release=<type>`**:
|
|
Specifies the release type (`stable`, `nightly`, etc.). Default is `nightly`.
|
|
- **`--platform=<platform>`**:
|
|
Sets the platform for the build (default: system platform, e.g., `linux`).
|
|
|
|
## Example usage:
|
|
|
|
- **All steps**:
|
|
```sh
|
|
go run . -a
|
|
```
|
|
|
|
- **Build only**:
|
|
```sh
|
|
go run . -b
|
|
```
|
|
|
|
- **Upload**:
|
|
```sh
|
|
go run . --upload -c --upload-path=./mozilla-central/obj-x86_64-pc-linux-gnu/dist/bin
|
|
```
|
|
|
|
- **Build and upload**:
|
|
```sh
|
|
go run . --upload -c --upload-path=./mozilla-central/obj-x86_64-pc-linux-gnu/dist/bin -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
|
|
|
|
```
|
|
spitfire-browser/
|
|
├── browser/
|
|
│ ├── amd64/
|
|
│ │ ├── stable/
|
|
│ │ │ ├── latest/deb.tar.gz
|
|
│ │ │ ├── x.x.x/deb.tar.gz
|
|
│ │ ├── nightly/
|
|
│ │ ├── latest/deb.tar.gz
|
|
│ │ ├── yyyy-mm-dd/deb.tar.gz
|
|
│ ├── arm/
|
|
│ │ ├── stable/
|
|
│ │ │ ├── latest/
|
|
│ │ │ ├── x.x.x/
|
|
│ │ ├── nightly/
|
|
│ │ ├── latest/
|
|
│ │ ├── yyyy-mm-dd/
|
|
├── cli-package-manager/
|
|
│ ├── stable/
|
|
│ │ ├── latest/
|
|
│ │ ├── x.x.x/
|
|
│ ├── nightly/
|
|
│ ├── latest/
|
|
│ ├── yyyy-mm-dd/
|
|
├── gui-installer/
|
|
│ ├── stable/
|
|
│ │ ├── latest/
|
|
│ │ ├── x.x.x/
|
|
│ ├── nightly/
|
|
│ ├── latest/
|
|
│ ├── yyyy-mm-dd/
|
|
├── gui-package-manager/
|
|
│ ├── stable/
|
|
│ │ ├── latest/
|
|
│ │ ├── x.x.x/
|
|
│ ├── nightly/
|
|
│ ├── latest/
|
|
│ ├── yyyy-mm-dd/
|
|
├── addons/
|
|
│ ├── themes/
|
|
│ │ ├── stable/
|
|
│ │ │ ├── latest/
|
|
│ │ │ ├── x.x.x/
|
|
│ │ ├── nightly/
|
|
│ │ ├── latest/
|
|
│ │ ├── yyyy-mm-dd/
|
|
│ ├── custom-configs/
|
|
│ │ ├── stable/
|
|
│ │ │ ├── latest/
|
|
│ │ │ ├── x.x.x/
|
|
│ │ ├── nightly/
|
|
│ │ ├── latest/
|
|
│ │ ├── yyyy-mm-dd/
|
|
│ ├── search-engines/
|
|
│ ├── stable/
|
|
│ │ ├── latest/
|
|
│ │ ├── x.x.x/
|
|
│ ├── nightly/
|
|
│ ├── latest/
|
|
│ ├── yyyy-mm-dd/
|
|
├── APPINDEX
|
|
``` |