Compare commits

..

36 commits

Author SHA1 Message Date
Bert van der Weerd
64e84015a2
Thu 17 Nov 2022 12:46:00 PM CET 2022-11-17 12:46:00 +01:00
Bert van der Weerd
6bcc7e0fc1
Thu 17 Nov 2022 11:24:04 AM CET 2022-11-17 11:24:04 +01:00
Bert van der Weerd
a5dc42930e
fix 2022-11-10 17:44:38 +01:00
Bert van der Weerd
c3f7db457d
added envsubst package 2022-11-10 15:19:20 +01:00
Bert van der Weerd
a042f9c8ec
more fixes 2022-11-10 14:50:40 +01:00
Bert van der Weerd
d899a046e4
fix 2022-11-10 14:21:02 +01:00
Bert van der Weerd
604bf031aa
docker tag for x86_64 2022-11-10 13:28:44 +01:00
Bert van der Weerd
a6e9dc12b6
trying to docker tag this image 2022-11-10 13:15:39 +01:00
Bert van der Weerd
5413fde24a
Build stage to master branch only 2022-11-10 13:02:42 +01:00
Bert van der Weerd
6b65da0a9d
try adding pipeline for flatpak branch 2022-11-10 13:00:35 +01:00
Bert van der Weerd
b6f61d9a14
Thu 10 Nov 2022 12:31:06 PM CET 2022-11-10 12:31:06 +01:00
Bert van der Weerd
9bd9ddc5ad
push to build on main branch 2022-11-03 14:33:38 +01:00
Bert van der Weerd
90d7782acd
renamed lw-linux-base 2022-11-03 13:10:04 +01:00
Bert van der Weerd
944fcc3072
moved shit around, builds will fail 2022-11-03 12:24:32 +01:00
Bert van der Weerd
dd53bade7b
switch to main branch 2022-10-29 18:05:47 +02:00
Bert van der Weerd
1501493ca6
finished with Linux repo scripts 2022-10-29 09:11:07 +02:00
Bert van der Weerd
a8479c12c3
update readme 2022-10-28 22:17:43 +02:00
Bert van der Weerd
f2f29fc52e
improved mozconfig handling 2022-10-28 22:14:11 +02:00
Bert van der Weerd
6519d75899
update readme 2022-10-28 22:08:17 +02:00
Bert van der Weerd
ea5f0e7c18
Fri 28 Oct 2022 10:00:08 PM CEST 2022-10-28 22:00:08 +02:00
Bert van der Weerd
97f4669180
Fri 28 Oct 2022 09:53:45 PM CEST 2022-10-28 21:53:45 +02:00
Bert van der Weerd
b07a2cad5b
renamed folder 2022-10-28 21:44:08 +02:00
Bert van der Weerd
74308aa5f1
added linux assets 2022-10-28 21:42:48 +02:00
Bert van der Weerd
6885c77040
improved shell script 2022-10-28 14:54:10 +02:00
Bert van der Weerd
2192015575
Fri 28 Oct 2022 12:20:15 PM CEST 2022-10-28 12:20:15 +02:00
Bert van der Weerd
c252da8f74
Fri 28 Oct 2022 03:37:58 AM CEST 2022-10-28 03:37:58 +02:00
Bert van der Weerd
51445b7f15
Fri 28 Oct 2022 03:19:35 AM CEST 2022-10-28 03:19:35 +02:00
Bert van der Weerd
a160c3649d
Fri 28 Oct 2022 02:12:57 AM CEST 2022-10-28 02:12:57 +02:00
Bert van der Weerd
c4b295a4b1
more fixes 2022-10-28 02:04:17 +02:00
Bert van der Weerd
af06eb9fbb
fix 2022-10-28 01:52:00 +02:00
Bert van der Weerd
3f4175dcc0
first aarch64 build 2022-10-27 13:14:46 +02:00
Bert van der Weerd
ea17dc287c
Wed 26 Oct 2022 07:41:30 PM CEST 2022-10-26 19:41:30 +02:00
Bert van der Weerd
002b02bd43
first version of shell scripts 2022-10-26 18:50:55 +02:00
Bert van der Weerd
816a2fd81a
gitdiff 2022-10-26 17:03:34 +02:00
Bert van der Weerd
8351822c32
last changes to integrate flatpak into main makefile 2022-10-24 15:06:24 +02:00
Bert van der Weerd
d1e12410fe
first setup of directory structure 2022-10-24 14:55:41 +02:00
40 changed files with 1368 additions and 263 deletions

View file

@ -2,49 +2,57 @@ stages:
- images - images
- build - build
- release - release
- deploy
# Notes; we want short labes so we can see what is what, and Build Docker Images:
# allow image builds on all branches because don't wan to
# deal with them on the master branch
Images:
stage: images stage: images
when: manual when: manual
only:
- master
image: registry.gitlab.com/librewolf-community/browser/bsys5/dind image: registry.gitlab.com/librewolf-community/browser/bsys5/dind
tags: [autoscale] # Needed because we aren't using our custom runners here
services:
- docker:dind
variables:
DOCKER_HOST: tcp://docker:2375
parallel: parallel:
matrix: matrix:
- DISTRO: - DISTRO:
- debian11 - debian11
- debian12
- ubuntu20 - ubuntu20
- ubuntu22 - ubuntu22
- mint20 - mint20
- mint21 - mint21
- fedora37 - fedora35
- fedora38 - fedora36
- tumbleweed
- macos-x86_64
- macos-aarch64
- dind - dind
script: script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
registry.gitlab.com
- make docker-$DISTRO - make docker-$DISTRO
- docker push - docker push registry.gitlab.com/librewolf-community/browser/bsys5/$DISTRO:latest
registry.gitlab.com/librewolf-community/browser/bsys5/$DISTRO:latest
Build: Build:
stage: build stage: build
when: manual when: manual
only:
- master
allow_failure: false allow_failure: false
parallel: parallel:
matrix: matrix:
- DISTRO: - DISTRO:
- debian11 - debian11
- debian12
- ubuntu20 - ubuntu20
- ubuntu22 - ubuntu22
- mint20 - mint20
- mint21 - mint21
- fedora37 - fedora35
- fedora38 - fedora36
- tumbleweed
- macos-x86_64
- macos-aarch64
image: registry.gitlab.com/librewolf-community/browser/bsys5/dind image: registry.gitlab.com/librewolf-community/browser/bsys5/dind
tags: tags:
- autoscale - autoscale
@ -55,20 +63,96 @@ Build:
- echo VERSION=$(cat version) >> variables.env - echo VERSION=$(cat version) >> variables.env
- echo RELEASE=$(cat release) >> variables.env - echo RELEASE=$(cat release) >> variables.env
- echo SOURCE_RELEASE=$(cat source_release) >> variables.env - echo SOURCE_RELEASE=$(cat source_release) >> variables.env
- "t=$(cat version)-$(cat source_release) ; if ! grep 1 release; then t=$(cat version)-$(cat source_release)-$(cat release); fi; echo FILEVER=$t >> variables.env" - "t=$(cat version)-$(cat source_release) ; grep 1 release ; if [ ! $? ]; then t=$(cat version)-$(cat source_release)-$(cat release); fi; echo FILEVER=$t >> variables.env"
artifacts: artifacts:
paths: paths:
- librewolf-*.deb - librewolf-*.deb
- librewolf-*.deb.sha256sum - librewolf-*.deb.sha256sum
- librewolf-*.rpm - librewolf-*.rpm
- librewolf-*.rpm.sha256sum - librewolf-*.rpm.sha256sum
- librewolf-*-setup.exe - librewolf-*.dmg
- librewolf-*-setup.exe.sha256sum - librewolf-*.dmg.sha256sum
- librewolf-*-portable.zip
- librewolf-*-portable.zip.sha256sum
reports: reports:
dotenv: variables.env dotenv: variables.env
# x86_64
docker-linux-base-x86_64:
stage: images
when: manual
only:
- flatpak
image: registry.gitlab.com/librewolf-community/browser/bsys5/dind
tags:
- autoscale
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
- ( cd linux-base && make arch=x86_64 docker-build )
- docker tag linux-base-x86_64:latest registry.gitlab.com/librewolf-community/browser/bsys5/linux-base-x86_64:latest
- docker push registry.gitlab.com/librewolf-community/browser/bsys5/linux-base-x86_64:latest
linux-base-x86_64:
stage: build
when: manual
only:
- flatpak
image: registry.gitlab.com/librewolf-community/browser/bsys5/linux-base-x86_64:latest
tags:
- autoscale
script:
- ( cd linux-base && make fetch && make arch=x86_64 dir pre-build build package post-package )
- cp linux-base/librewolf-*.tar.bz2 .
artifacts:
paths:
- librewolf-*.tar.bz2
# aarch64
docker-linux-base-aarch64:
stage: images
when: manual
only:
- flatpak
image: registry.gitlab.com/librewolf-community/browser/bsys5/dind
tags:
- autoscale
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com
- ( cd linux-base && make arch=aarch64 docker-build )
- docker tag linux-base-aarch64:latest registry.gitlab.com/librewolf-community/browser/bsys5/linux-base-aarch64:latest
- docker push registry.gitlab.com/librewolf-community/browser/bsys5/linux-base-aarch64:latest
linux-base-aarch64:
stage: build
when: manual
only:
- flatpak
image: registry.gitlab.com/librewolf-community/browser/bsys5/linux-base-aarch64:latest
tags:
- autoscale
script:
- ( cd linux-base && make fetch && make arch=aarch64 dir pre-build build package post-package )
- cp linux-base/librewolf-*.tar.bz2 .
artifacts:
paths:
- librewolf-*.tar.bz2
Release: Release:
stage: release stage: release
when: manual when: manual
@ -84,26 +168,18 @@ Release:
before_script: before_script:
- apt-get update - apt-get update
- apt-get install -y curl - apt-get install -y curl
- curl -L --output /usr/local/bin/release-cli - curl -L --output /usr/local/bin/release-cli "https://release-cli-downloads.s3.amazonaws.com/latest/release-cli-linux-amd64"
"https://release-cli-downloads.s3.amazonaws.com/latest/release-cli-linux-amd64"
- chmod +x /usr/local/bin/release-cli - chmod +x /usr/local/bin/release-cli
script: script:
- | - |
codeberg_release_body=""
function upload_package() { function upload_package() {
echo "Uploading $1"
curl \ curl \
--header "JOB-TOKEN: $CI_JOB_TOKEN" \ --header "JOB-TOKEN: $CI_JOB_TOKEN" \
--upload-file "$1" \ --upload-file "$1" \
"$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/$1" "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/$1"
codeberg_release_body="${codeberg_release_body}[$1]($CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/$1)\n"
} }
upload_package librewolf-$FILEVER.en-US.debian11.x86_64.deb upload_package librewolf-$FILEVER.en-US.debian11.x86_64.deb
upload_package librewolf-$FILEVER.en-US.debian11.x86_64.deb.sha256sum upload_package librewolf-$FILEVER.en-US.debian11.x86_64.deb.sha256sum
upload_package librewolf-$FILEVER.en-US.debian12.x86_64.deb
upload_package librewolf-$FILEVER.en-US.debian12.x86_64.deb.sha256sum
upload_package librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb upload_package librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb
upload_package librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb.sha256sum upload_package librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb.sha256sum
upload_package librewolf-$FILEVER.en-US.ubuntu22.x86_64.deb upload_package librewolf-$FILEVER.en-US.ubuntu22.x86_64.deb
@ -112,73 +188,19 @@ Release:
upload_package librewolf-$FILEVER.en-US.mint20.x86_64.deb.sha256sum upload_package librewolf-$FILEVER.en-US.mint20.x86_64.deb.sha256sum
upload_package librewolf-$FILEVER.en-US.mint21.x86_64.deb upload_package librewolf-$FILEVER.en-US.mint21.x86_64.deb
upload_package librewolf-$FILEVER.en-US.mint21.x86_64.deb.sha256sum upload_package librewolf-$FILEVER.en-US.mint21.x86_64.deb.sha256sum
upload_package librewolf-$FILEVER.fc37.x86_64.rpm upload_package librewolf-$FILEVER.fc35.x86_64.rpm
upload_package librewolf-$FILEVER.fc37.x86_64.rpm.sha256sum upload_package librewolf-$FILEVER.fc35.x86_64.rpm.sha256sum
upload_package librewolf-$FILEVER.fc38.x86_64.rpm upload_package librewolf-$FILEVER.fc36.x86_64.rpm
upload_package librewolf-$FILEVER.fc38.x86_64.rpm.sha256sum upload_package librewolf-$FILEVER.fc36.x86_64.rpm.sha256sum
upload_package librewolf-$FILEVER.tumbleweed.x86_64.rpm
echo "Creating Codeberg release" upload_package librewolf-$FILEVER.tumbleweed.x86_64.rpm.sha256sum
codeberg_release_body="${codeberg_release_body}\n[View on GitLab](https://gitlab.com/librewolf-community/browser/bsys5/-/releases/$FILEVER)" upload_package librewolf-$FILEVER.en-US.mac.x86_64.dmg
curl -X 'POST' \ upload_package librewolf-$FILEVER.en-US.mac.x86_64.dmg.sha256sum
"https://codeberg.org/api/v1/repos/librewolf/bsys5/releases?token=$CODEBERG_TOKEN" \ upload_package librewolf-$FILEVER.en-US.mac.aarch64.dmg
-H 'accept: application/json' \ upload_package librewolf-$FILEVER.en-US.mac.aarch64.dmg.sha256sum
-H 'Content-Type: application/json' \
-d "{
\"name\": \"$FILEVER\",
\"tag_name\": \"$FILEVER\",
\"body\": \"$codeberg_release_body\"
}"
- |
body=$(cat <<EOF
{
"token": "$REPO_DEPLOY_TOKEN",
"debs": [
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian11.x86_64.deb",
"distros": ["bullseye"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian12.x86_64.deb",
"distros": ["bookworm"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb",
"distros": ["focal"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.ubuntu22.x86_64.deb",
"distros": ["jammy"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mint20.x86_64.deb",
"distros": ["uma", "una"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mint21.x86_64.deb",
"distros": ["vanessa", "vera"]
}
],
"rpms": [
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc37.x86_64.rpm"
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc38.x86_64.rpm"
}
]
}
EOF
)
id=$(curl "https://updaterepos.librewolf.net/job" --request POST --data "$body")
echo "Submitted update request to LibreWolf Software Repository (https://updaterepos.librewolf.net/job?id=$id)"
release: release:
tag_name: "$FILEVER" tag_name: "$FILEVER"
description: description: "## LibreWolf bsys5 Release v$FILEVER\n\n- \n\n(Built on GitLab by pipeline [$CI_PIPELINE_ID](https://gitlab.com/librewolf-community/browser/bsys5/-/pipelines/$CI_PIPELINE_ID))"
"## LibreWolf bsys5 Release v$FILEVER\n\n- \n\n(Built on GitLab by
pipeline
[$CI_PIPELINE_ID](https://gitlab.com/librewolf-community/browser/bsys5/-/pipelines/$CI_PIPELINE_ID))"
assets: assets:
links: links:
- name: Debian 11 (deb) - name: Debian 11 (deb)
@ -187,12 +209,6 @@ Release:
- name: Debian 11 (sha256sum) - name: Debian 11 (sha256sum)
link_type: other link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian11.x86_64.deb.sha256sum url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian11.x86_64.deb.sha256sum
- name: Debian 12 (deb)
link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian12.x86_64.deb
- name: Debian 12 (sha256sum)
link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian12.x86_64.deb.sha256sum
- name: Ubuntu 20 (deb) - name: Ubuntu 20 (deb)
link_type: package link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb
@ -217,15 +233,93 @@ Release:
- name: Linux Mint 21 (sha256sum) - name: Linux Mint 21 (sha256sum)
link_type: other link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mint21.x86_64.deb.sha256sum url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mint21.x86_64.deb.sha256sum
- name: Fedora 37 (rpm) - name: Fedora 35 (rpm)
link_type: package link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc37.x86_64.rpm url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc35.x86_64.rpm
- name: Fedora 37 (sha256sum) - name: Fedora 35 (sha256sum)
link_type: other link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc37.x86_64.rpm.sha256sum url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc35.x86_64.rpm.sha256sum
- name: Fedora 38 (rpm) - name: Fedora 36 (rpm)
link_type: package link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc38.x86_64.rpm url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc36.x86_64.rpm
- name: Fedora 38 (sha256sum) - name: Fedora 36 (sha256sum)
link_type: other link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc38.x86_64.rpm.sha256sum url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc36.x86_64.rpm.sha256sum
- name: openSUSE Tumbleweed (rpm)
link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.tumbleweed.x86_64.rpm
- name: openSUSE Tumbleweed (sha256sum)
link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.tumbleweed.x86_64.rpm.sha256sum
- name: macOS x86_64 (dmg)
link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mac.x86_64.dmg
- name: macOS x86_64 (sha256sum)
link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mac.x86_64.dmg.sha256sum
- name: macOS aarch64 (dmg)
link_type: package
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mac.aarch64.dmg
- name: macOS aarch64 (sha256sum)
link_type: other
url: $CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mac.aarch64.dmg.sha256sum
Update Repositories:
stage: deploy
only:
- master
except:
- merge_requests
image: curlimages/curl
script:
- |
#
FILEVER=$(cat version)-$(cat source_release) ; grep -q 1 release ; if [ ! $? ]; then FILEVER=$(cat version)-$(cat source_release)-$(cat release); fi
curl "https://shorsh.de/update_lw_repos.php?version=$FILEVER&log=false&token=$REPO_DEPLOY_TOKEN"
echo "Submitted update request to live LibreWolf repositories"
body=$(cat <<EOF
{
"token": "$REPO_DEPLOY_TOKEN",
"debs": [
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.debian11.x86_64.deb",
"distros": ["bullseye"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.ubuntu20.x86_64.deb",
"distros": ["focal"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.ubuntu22.x86_64.deb",
"distros": ["jammy"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mint20.x86_64.deb",
"distros": ["uma", "una"]
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.en-US.mint21.x86_64.deb",
"distros": ["vanessa"]
}
],
"rpms": [
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc35.x86_64.rpm"
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.fc36.x86_64.rpm"
},
{
"file": "$CI_API_V4_URL/projects/$CI_PROJECT_ID/packages/generic/librewolf/$FILEVER/librewolf-$FILEVER.tumbleweed.x86_64.rpm"
}
]
}
EOF
)
id=$(curl "https://kho.librewolf.net/job" --request POST --data "$body")
echo "Submitted update request to testing LibreWolf repository (https://kho.librewolf.net/job?id=$id)"

3
.gitmodules vendored
View file

@ -1,3 +0,0 @@
[submodule "submodules/windows"]
path = submodules/windows
url = https://gitlab.com/librewolf-community/browser/windows.git

View file

@ -1,4 +1,4 @@
.PHONY : help clean veryclean prune docker push rmi build update work docker-debian11 debian11 docker-mint20 mint20 docker-mint21 mint21 docker-ubuntu20 ubuntu20 docker-ubuntu21 ubuntu21 docker-ubuntu22 ubuntu22 docker-fedora37 fedora37 docker-fedora38 fedora38 docker-macos-x86_64 macos-x86_64 docker-macos-aarch64 macos-aarch64 docker-tumbleweed tumbleweed tarball docker-dind windows .PHONY : help clean veryclean prune docker push rmi build update work docker-debian11 debian11 docker-mint20 mint20 docker-mint21 mint21 docker-ubuntu20 ubuntu20 docker-ubuntu21 ubuntu21 docker-ubuntu22 ubuntu22 docker-fedora34 fedora34 docker-fedora35 fedora35 docker-fedora36 fedora36 docker-macos-x86_64 macos-x86_64 docker-macos-aarch64 macos-aarch64 docker-tumbleweed tumbleweed tarball docker-dind docker-flatpak flatpak docker-flatpak-x86_64 docker-flatpak-aarch64 flatpak-x86_64 flatpak-aarch64
version:=$(shell cat version) version:=$(shell cat version)
release:=$(shell cat release) release:=$(shell cat release)
@ -13,23 +13,27 @@ help :
@echo " [update] [prune] - misc." @echo " [update] [prune] - misc."
@echo "" @echo ""
@echo "docker targets:" @echo "docker targets:"
@echo " [docker-debian11], [docker-debian12],[docker-mint20], [docker-mint21]" @echo " [docker-debian11], [docker-mint20], [docker-mint21]"
@echo " [docker-ubuntu20], [docker-ubuntu21], [docker-ubuntu22]" @echo " [docker-ubuntu20], [docker-ubuntu21], [docker-ubuntu22]"
@echo " [docker-fedora37], [docker-fedora38]" @echo " [docker-fedora34], [docker-fedora35], [docker-fedora36]"
@echo " [docker-macos-x86_64], [docker-macos-aarch64]" @echo " [docker-macos-x86_64], [docker-macos-aarch64]"
@echo " [docker-tumbleweed]" @echo " [docker-tumbleweed]"
@echo " [docker-dind]" @echo " [docker-dind]"
@echo " [docker-windows]"
@echo "" @echo ""
@echo "build targets:" @echo "build targets:"
@echo " [debian11], [debian12], [mint20], [mint21], [ubuntu20], [ubuntu21]" @echo " [debian11], [mint20], [mint21], [ubuntu20], [ubuntu21]"
@echo " [ubuntu22]" @echo " [ubuntu22]"
@echo " [fedora37], [fedora38]" @echo " [fedora34], [fedora35], [fedora36]"
@echo " [macos-x64_64], [macos-aarch64]" @echo " [macos-x64_64], [macos-aarch64]"
@echo " [tumbleweed]" @echo " [tumbleweed]"
@echo " [windows]"
@echo " [tarball]" @echo " [tarball]"
@echo "" @echo ""
@echo "flatpak version:"
@echo " [docker-flatpak]"
@echo " [flatpak]"
@echo ""
@echo " [docker-flatpak-x86_64] [docker-flatpak-aarch64]"
@echo " [flatpak-x86_64] [flatpak-aarch64]"
clean : clean :
@ -44,14 +48,12 @@ veryclean : clean
prune : prune :
docker system prune --all --force docker system prune --all --force
docker : docker-debian11 docker-debian12 docker-mint20 docker-mint21 docker-ubuntu20 docker-ubuntu21 docker-ubuntu22 docker-fedora34 docker-fedora37 docker-fedora38 docker-tumbleweed docker-macos-x86_64 docker-macos-aarch64 docker-dind docker : docker-debian11 docker-mint20 docker-mint21 docker-ubuntu20 docker-ubuntu21 docker-ubuntu22 docker-fedora34 docker-fedora35 docker-fedora36 docker-tumbleweed docker-macos-x86_64 docker-macos-aarch64 docker-dind
build : build :
${MAKE} clean ${MAKE} clean
${MAKE} debian11 ${MAKE} debian11
${MAKE} clean ${MAKE} clean
${MAKE} debian12
${MAKE} clean
${MAKE} mint20 ${MAKE} mint20
${MAKE} clean ${MAKE} clean
${MAKE} mint21 ${MAKE} mint21
@ -64,9 +66,9 @@ build :
${MAKE} clean ${MAKE} clean
${MAKE} fedora34 ${MAKE} fedora34
${MAKE} clean ${MAKE} clean
${MAKE} fedora37 ${MAKE} fedora35
${MAKE} clean ${MAKE} clean
${MAKE} fedora38 ${MAKE} fedora36
${MAKE} clean ${MAKE} clean
${MAKE} tumbleweed ${MAKE} tumbleweed
${MAKE} clean ${MAKE} clean
@ -74,20 +76,17 @@ build :
${MAKE} clean ${MAKE} clean
${MAKE} macos-aarch64 ${MAKE} macos-aarch64
${MAKE} clean ${MAKE} clean
${MAKE} windows
${MAKE} clean
push : push :
docker push registry.gitlab.com/librewolf-community/browser/bsys5/debian11 docker push registry.gitlab.com/librewolf-community/browser/bsys5/debian11
docker push registry.gitlab.com/librewolf-community/browser/bsys5/debian12
docker push registry.gitlab.com/librewolf-community/browser/bsys5/mint20 docker push registry.gitlab.com/librewolf-community/browser/bsys5/mint20
docker push registry.gitlab.com/librewolf-community/browser/bsys5/mint21 docker push registry.gitlab.com/librewolf-community/browser/bsys5/mint21
docker push registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu20 docker push registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu20
docker push registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu21 docker push registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu21
docker push registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu22 docker push registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu22
docker push registry.gitlab.com/librewolf-community/browser/bsys5/fedora34 docker push registry.gitlab.com/librewolf-community/browser/bsys5/fedora34
docker push registry.gitlab.com/librewolf-community/browser/bsys5/fedora37 docker push registry.gitlab.com/librewolf-community/browser/bsys5/fedora35
docker push registry.gitlab.com/librewolf-community/browser/bsys5/fedora38 docker push registry.gitlab.com/librewolf-community/browser/bsys5/fedora36
docker push registry.gitlab.com/librewolf-community/browser/bsys5/tumbleweed docker push registry.gitlab.com/librewolf-community/browser/bsys5/tumbleweed
docker push registry.gitlab.com/librewolf-community/browser/bsys5/macos-x86_64 docker push registry.gitlab.com/librewolf-community/browser/bsys5/macos-x86_64
docker push registry.gitlab.com/librewolf-community/browser/bsys5/macos-aarch64 docker push registry.gitlab.com/librewolf-community/browser/bsys5/macos-aarch64
@ -95,15 +94,14 @@ push :
rmi : rmi :
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/debian11 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/debian11
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/debian12
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/mint20 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/mint20
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/mint21 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/mint21
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu20 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu20
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu21 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu21
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu22 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/ubuntu22
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/fedora34 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/fedora34
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/fedora37 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/fedora35
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/fedora38 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/fedora36
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/tumbleweed docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/tumbleweed
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/macos-x86_64 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/macos-x86_64
docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/macos-aarch64 docker rmi registry.gitlab.com/librewolf-community/browser/bsys5/macos-aarch64
@ -146,12 +144,6 @@ docker-debian11 :
debian11 : debian11 :
${MAKE} -f assets/linux.mk distro=debian11 build ${MAKE} -f assets/linux.mk distro=debian11 build
${MAKE} -f assets/linux.artifacts.mk distro=debian11 artifacts-deb ${MAKE} -f assets/linux.artifacts.mk distro=debian11 artifacts-deb
## debian12
docker-debian12 :
${MAKE} -f assets/linux.mk distro=debian12 "distro_image=debian:bookworm" docker
debian12 :
${MAKE} -f assets/linux.mk distro=debian12 build
${MAKE} -f assets/linux.artifacts.mk distro=debian12 artifacts-deb
## mint20 ## mint20
docker-mint20 : docker-mint20 :
${MAKE} -f assets/linux.mk distro=mint20 "distro_image=linuxmintd/mint20.2-amd64" docker ${MAKE} -f assets/linux.mk distro=mint20 "distro_image=linuxmintd/mint20.2-amd64" docker
@ -182,18 +174,24 @@ docker-ubuntu22 :
ubuntu22 : ubuntu22 :
${MAKE} -f assets/linux.mk distro=ubuntu22 build ${MAKE} -f assets/linux.mk distro=ubuntu22 build
${MAKE} -f assets/linux.artifacts.mk distro=ubuntu22 artifacts-deb ${MAKE} -f assets/linux.artifacts.mk distro=ubuntu22 artifacts-deb
## fedora37 ## fedora34
docker-fedora37 : docker-fedora34 :
${MAKE} -f assets/linux.mk distro=fedora37 "distro_image=fedora:37" docker ${MAKE} -f assets/linux.mk distro=fedora34 "distro_image=fedora:34" docker
fedora37 : fedora34 :
${MAKE} -f assets/linux.mk distro=fedora37 build ${MAKE} -f assets/linux.mk distro=fedora34 build
${MAKE} -f assets/linux.artifacts.mk fc=fc37 distro=fedora37 artifacts-rpm ${MAKE} -f assets/linux.artifacts.mk fc=fc34 distro=fedora34 artifacts-rpm
## fedora38 ## fedora35
docker-fedora38 : docker-fedora35 :
${MAKE} -f assets/linux.mk distro=fedora38 "distro_image=fedora:38" docker ${MAKE} -f assets/linux.mk distro=fedora35 "distro_image=fedora:35" docker
fedora38 : fedora35 :
${MAKE} -f assets/linux.mk distro=fedora38 build ${MAKE} -f assets/linux.mk distro=fedora35 build
${MAKE} -f assets/linux.artifacts.mk fc=fc38 distro=fedora38 artifacts-rpm ${MAKE} -f assets/linux.artifacts.mk fc=fc35 distro=fedora35 artifacts-rpm
## fedora36
docker-fedora36 :
${MAKE} -f assets/linux.mk distro=fedora36 "distro_image=fedora:36" docker
fedora36 :
${MAKE} -f assets/linux.mk distro=fedora36 build
${MAKE} -f assets/linux.artifacts.mk fc=fc36 distro=fedora36 artifacts-rpm
## opensuse tumbleweed ## opensuse tumbleweed
docker-tumbleweed : docker-tumbleweed :
${MAKE} -f assets/linux.mk distro=tumbleweed "distro_image=opensuse/tumbleweed" docker ${MAKE} -f assets/linux.mk distro=tumbleweed "distro_image=opensuse/tumbleweed" docker
@ -224,11 +222,19 @@ docker-macos-aarch64 :
macos-aarch64 : macos-aarch64 :
${MAKE} -f assets/macos.mk arch=aarch64 build ${MAKE} -f assets/macos.mk arch=aarch64 build
## windows ## docker-flatpak-x86_64 docker-flatpak-aarch64 flatpak-x86_64 flatpak-aarch64
docker-windows :
${MAKE} -f assets/windows.mk docker docker-flatpak : docker-flatpak-x86_64
windows : flatpak : flatpak-x86_64
${MAKE} -f assets/windows.mk build
docker-flatpak-x86_64 :
${MAKE} -C flatpak arch=x86_64 docker-build
docker-flatpak-aarch64 :
${MAKE} -C flatpak arch=aarch64 docker-build
flatpak-x86_64 :
${MAKE} -C flatpak arch=x86_64 docker-run
flatpak-aarch64 :
${MAKE} -C flatpak arch=aarch64 docker-run
# #
# Docker in Docker (for GitLab CI) # Docker in Docker (for GitLab CI)

View file

@ -10,15 +10,15 @@ scripts.
## <a id="targets"></a> Supported Targets ## <a id="targets"></a> Supported Targets
| Platform | x86_64 | aarch64 | | Platform | x86_64 | aarch64 |
| ------------------------ | ----------------------- | ------------------ | | ----------------- | ----------------------- | ------------------ |
| Linux | | | | Linux | | |
| └─ Debian (deb) | ✅ (debian11,debian12) | - | | └─ Debian (deb) | ✅ (debian11) | - |
| └─ Ubuntu (deb) | ✅ (ubuntu20, ubuntu22) | - | | └─ Ubuntu (deb) | ✅ (ubuntu20, ubuntu22) | - |
| └─ Mint (deb) | ✅ (mint20, mint21) | - | | └─ Mint (deb) | ✅ (mint20, mint21) | - |
| └─ Fedora (rpm) | ✅ (fedora38, fedora37) | - | | └─ Fedora (rpm) | ✅ (fedora35, fedora36) | - |
| └─ openSUSE (rpm) | ✅ (tumbleweed) | - | | └─ openSUSE (rpm) | ✅ (tumbleweed) | - |
| MacOS (dmg) | ✅ (macos-x64_64) | ✅ (macos-aarch64) | | MacOS (dmg) | ✅ (macos-x64_64) | ✅ (macos-aarch64) |
| Windows (setup,portable) | ✅ (windows) | - | | Windows | _WIP_ | - |
## Running bsys5 Locally ## Running bsys5 Locally

View file

@ -14,13 +14,13 @@ ENV TZ=Europe/Amsterdam
# dependencies needed to run ./mach bootstrap # dependencies needed to run ./mach bootstrap
RUN ( apt-get -y update && apt-get -y upgrade && apt-get -y install python3 python3-dev python3-pip wget ; apt-get -y install dpkg-sig; true) RUN ( apt-get -y update && apt-get -y upgrade && apt-get -y install python3 python3-dev python3-pip wget dpkg-sig ; true)
RUN ( dnf -y upgrade && dnf -y install python3 python3-devel gcc wget rpm-build rpm-sign ; true) RUN ( dnf -y upgrade && dnf -y install python3 python3-devel wget rpm-build rpm-sign ; true)
RUN ( zypper -n in mercurial python3 python3-pip python3-devel wget rpm-build ; true) RUN ( zypper -n in mercurial python3 python3-pip python3-devel wget rpm-build ; true)
# run the bootstrap # run the bootstrap
RUN cd /tmp &&\ RUN cd /tmp &&\
wget -q -O librewolf-$version-$source_release.source.tar.gz https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/$version-$source_release/librewolf-$version-$source_release.source.tar.gz &&\ wget -q -O librewolf-$version-$source_release.source.tar.gz https://gitlab.com/librewolf-community/browser/source/-/jobs/artifacts/main/raw/librewolf-$version-$source_release.source.tar.gz?job=Build &&\
tar xf librewolf-$version-$source_release.source.tar.gz &&\ tar xf librewolf-$version-$source_release.source.tar.gz &&\
cd librewolf-$version-$source_release &&\ cd librewolf-$version-$source_release &&\
MOZBUILD_STATE_PATH=$HOME/.mozbuild ./mach --no-interactive bootstrap --application-choice=browser &&\ MOZBUILD_STATE_PATH=$HOME/.mozbuild ./mach --no-interactive bootstrap --application-choice=browser &&\

View file

@ -20,7 +20,7 @@ librewolf-$(full_version).en-US.$(distro).x86_64.deb : $(infile)
(cd work && tar xf ../$<) (cd work && tar xf ../$<)
cp -v assets/linux.build-deb.sh work/ cp -v assets/linux.build-deb.sh work/
[ "$(SIGNING_KEY)" != "" ] && cp -v $(SIGNING_KEY) work/pk.asc ; true [ "$(SIGNING_KEY)" != "" ] && cp -v $(SIGNING_KEY) work/pk.asc ; true
(cd work && sed "s/MYDIR/\/usr\/share\/librewolf/g" < ../assets/linux.librewolf.desktop.in > librewolf.desktop) (cd work && sed "s/MYDIR/\/usr\/share\/librewolf/g" < ../assets/linux.librewolf.desktop.in > start-librewolf.desktop)
ifeq ($(use_docker),false) ifeq ($(use_docker),false)
(cd work && bash linux.build-deb.sh $(full_version)) (cd work && bash linux.build-deb.sh $(full_version))
else else
@ -46,7 +46,7 @@ librewolf-$(full_version).$(fc).x86_64.rpm : $(infile)
cp -v release work cp -v release work
cp -v source_release work cp -v source_release work
cp -v assets/linux.librewolf.spec work/librewolf.spec cp -v assets/linux.librewolf.spec work/librewolf.spec
cp -v assets/linux.librewolf.desktop.in work/librewolf/librewolf.desktop.in cp -v assets/linux.librewolf.desktop.in work/librewolf/start-librewolf.desktop.in
cp -v assets/linux.librewolf.ico work/librewolf/librewolf.ico cp -v assets/linux.librewolf.ico work/librewolf/librewolf.ico
[ "$(SIGNING_KEY)" != "" ] && cp -v $(SIGNING_KEY) work/pk.asc ; true [ "$(SIGNING_KEY)" != "" ] && cp -v $(SIGNING_KEY) work/pk.asc ; true
rm -f work/librewolf/browser/features/proxy-failover@mozilla.com.xpi rm -f work/librewolf/browser/features/proxy-failover@mozilla.com.xpi
@ -66,3 +66,4 @@ endif
artifacts-rpm : $(infile) $(infile).sha256sum artifacts-rpm : $(infile) $(infile).sha256sum
sha256sum -c $(infile).sha256sum sha256sum -c $(infile).sha256sum
${MAKE} -f assets/linux.artifacts.mk fc=$(fc) distro=$(distro) librewolf-$(full_version).$(fc).x86_64.rpm ${MAKE} -f assets/linux.artifacts.mk fc=$(fc) distro=$(distro) librewolf-$(full_version).$(fc).x86_64.rpm

View file

@ -34,21 +34,15 @@ cd ../..
# add the application icon # add the application icon
mkdir -p usr/share/applications mkdir -p usr/share/applications
mkdir -p usr/share/icons/hicolor/16x16/apps mkdir -p usr/share/icons
mkdir -p usr/share/icons/hicolor/32x32/apps cp -v usr/share/librewolf/browser/chrome/icons/default/default64.png usr/share/icons/librewolf.png
mkdir -p usr/share/icons/hicolor/64x64/apps cp -v ../start-librewolf.desktop usr/share/applications/start-librewolf.desktop
mkdir -p usr/share/icons/hicolor/128x128/apps
cp -v usr/share/librewolf/browser/chrome/icons/default/default16.png usr/share/icons/hicolor/16x16/apps/librewolf.png
cp -v usr/share/librewolf/browser/chrome/icons/default/default32.png usr/share/icons/hicolor/32x32/apps/librewolf.png
cp -v usr/share/librewolf/browser/chrome/icons/default/default64.png usr/share/icons/hicolor/64x64/apps/librewolf.png
cp -v usr/share/librewolf/browser/chrome/icons/default/default128.png usr/share/icons/hicolor/128x128/apps/librewolf.png
cp -v ../librewolf.desktop usr/share/applications/librewolf.desktop
cd .. cd ..
dpkg-deb --build librewolf dpkg-deb --build librewolf
# Sign the deb file if private key is provided and we have dpkg-sig available # Sign the deb file if private key is provided
if [[ -f pk.asc ]] && command -v dpkg-sig &>/dev/null; then if [[ -f pk.asc ]]; then
gpg --import pk.asc gpg --import pk.asc
dpkg-sig --sign builder librewolf.deb dpkg-sig --sign builder librewolf.deb
fi fi

View file

@ -43,9 +43,6 @@ rm -rf /usr/src && ln -sv /WORK /usr/src # Required for openSUSE
sed "s/__VERSION__/$version/g" </work/librewolf.spec >/work/tmp.spec sed "s/__VERSION__/$version/g" </work/librewolf.spec >/work/tmp.spec
sed "s/__RELEASE__/$full_release/g" </work/tmp.spec >rpmbuild/SPECS/librewolf.spec sed "s/__RELEASE__/$full_release/g" </work/tmp.spec >rpmbuild/SPECS/librewolf.spec
# fix: remove some tool binaries we don't want
rm -f /work/librewolf/{glxtest,vaapitest}
# copy in the librewolf assets # copy in the librewolf assets
cp -rv /work/librewolf rpmbuild/SOURCES cp -rv /work/librewolf rpmbuild/SOURCES
@ -62,15 +59,9 @@ cd ../../..
# Application icon # Application icon
mkdir -p librewolf-$version/usr/share/applications mkdir -p librewolf-$version/usr/share/applications
mkdir -p librewolf-$version/usr/share/icons/hicolor/16x16/apps mkdir -p librewolf-$version/usr/share/icons
mkdir -p librewolf-$version/usr/share/icons/hicolor/32x32/apps cp -v librewolf-$version/usr/share/librewolf/browser/chrome/icons/default/default64.png librewolf-$version/usr/share/icons/librewolf.png
mkdir -p librewolf-$version/usr/share/icons/hicolor/64x64/apps sed "s/MYDIR/\/usr\/share\/librewolf/g" </work/librewolf/start-librewolf.desktop.in >librewolf-$version/usr/share/applications/librewolf.desktop
mkdir -p librewolf-$version/usr/share/icons/hicolor/128x128/apps
cp -v librewolf-$version/usr/share/librewolf/browser/chrome/icons/default/default16.png librewolf-$version/usr/share/icons/hicolor/16x16/apps/librewolf.png
cp -v librewolf-$version/usr/share/librewolf/browser/chrome/icons/default/default32.png librewolf-$version/usr/share/icons/hicolor/32x32/apps/librewolf.png
cp -v librewolf-$version/usr/share/librewolf/browser/chrome/icons/default/default64.png librewolf-$version/usr/share/icons/hicolor/64x64/apps/librewolf.png
cp -v librewolf-$version/usr/share/librewolf/browser/chrome/icons/default/default128.png librewolf-$version/usr/share/icons/hicolor/128x128/apps/librewolf.png
sed "s/MYDIR/\/usr\/share\/librewolf/g" </work/librewolf/librewolf.desktop.in >librewolf-$version/usr/share/applications/librewolf.desktop
tar cvfz lw.tar.gz librewolf-$version tar cvfz lw.tar.gz librewolf-$version
# todo perhaps: rm -rf librwolf-$version # todo perhaps: rm -rf librwolf-$version

View file

@ -12,7 +12,7 @@ Comment=LibreWolf Browser
Categories=Network;WebBrowser;Security; Categories=Network;WebBrowser;Security;
StartupWMClass=librewolf-default StartupWMClass=librewolf-default
Exec=MYDIR/librewolf %u Exec=MYDIR/librewolf %u
Icon=librewolf Icon=MYDIR/browser/chrome/icons/default/default64.png
Actions=new-window;new-private-window;safe-mode;preferences; Actions=new-window;new-private-window;safe-mode;preferences;

View file

@ -22,10 +22,7 @@ cp -rv * "$RPM_BUILD_ROOT"
%files %files
/usr/bin/librewolf /usr/bin/librewolf
/usr/share/applications/librewolf.desktop /usr/share/applications/librewolf.desktop
/usr/share/icons/hicolor/16x16/apps/librewolf.png /usr/share/icons/librewolf.png
/usr/share/icons/hicolor/32x32/apps/librewolf.png
/usr/share/icons/hicolor/64x64/apps/librewolf.png
/usr/share/icons/hicolor/128x128/apps/librewolf.png
/usr/share/librewolf/application.ini /usr/share/librewolf/application.ini
/usr/share/librewolf/browser/chrome/icons/default/default128.png /usr/share/librewolf/browser/chrome/icons/default/default128.png
/usr/share/librewolf/browser/chrome/icons/default/default16.png /usr/share/librewolf/browser/chrome/icons/default/default16.png
@ -61,7 +58,6 @@ cp -rv * "$RPM_BUILD_ROOT"
/usr/share/librewolf/librewolf /usr/share/librewolf/librewolf
/usr/share/librewolf/librewolf-bin /usr/share/librewolf/librewolf-bin
/usr/share/librewolf/librewolf.cfg /usr/share/librewolf/librewolf.cfg
/usr/share/librewolf/librewolf.desktop.in
/usr/share/librewolf/librewolf.ico /usr/share/librewolf/librewolf.ico
/usr/share/librewolf/libsmime3.so /usr/share/librewolf/libsmime3.so
/usr/share/librewolf/libsoftokn3.so /usr/share/librewolf/libsoftokn3.so
@ -70,3 +66,5 @@ cp -rv * "$RPM_BUILD_ROOT"
/usr/share/librewolf/omni.ja /usr/share/librewolf/omni.ja
/usr/share/librewolf/platform.ini /usr/share/librewolf/platform.ini
/usr/share/librewolf/plugin-container /usr/share/librewolf/plugin-container
/usr/share/librewolf/start-librewolf.desktop.in

View file

@ -16,21 +16,20 @@ ENV wasi_mainversion 14
# dependencies needed to run ./mach bootstrap # dependencies needed to run ./mach bootstrap
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install mercurial python3 python3-dev python3-pip wget build-essential libpython3-dev m4 unzip uuid zip libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdbus-glib-1-dev libdrm-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb rsync RUN apt-get -y update && apt-get -y upgrade && apt-get -y install mercurial python3 python3-dev python3-pip wget build-essential libpython3-dev m4 unzip uuid zip libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdbus-glib-1-dev libdrm-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb rsync
# setup osx sdk
# RUN mkdir -p /osx-cross/MacOSX-SDKs &&\
# Setup MacOSX SDK v13.0 cd /osx-cross/MacOSX-SDKs &&\
RUN mkdir -p /osx-cross/MacOSX-SDKs && cd /osx-cross/MacOSX-SDKs && wget https://files.stanzabird.nl/MacOSX13.0.sdk.zip && unzip MacOSX13.0.sdk.zip && rm MacOSX13.0.sdk.zip wget -q "https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz" &&\
tar xf MacOSX11.3.sdk.tar.xz &&\
rm -f MacOSX11.3.sdk.tar.xz
# run the bootstrap # run the bootstrap
RUN wget -q -O librewolf-$version-$source_release.source.tar.gz https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/$version-$source_release/librewolf-$version-$source_release.source.tar.gz RUN wget -q -O librewolf-$version-$source_release.source.tar.gz https://gitlab.com/librewolf-community/browser/source/-/jobs/artifacts/main/raw/librewolf-$version-$source_release.source.tar.gz?job=Build
RUN tar xf librewolf-$version-$source_release.source.tar.gz RUN tar xf librewolf-$version-$source_release.source.tar.gz
WORKDIR librewolf-$version-$source_release WORKDIR librewolf-$version-$source_release
RUN echo ac_add_options --target=$arch-apple-darwin > mozconfig RUN echo ac_add_options --target=$arch-apple-darwin > mozconfig
RUN echo ac_add_options --enable-bootstrap >> mozconfig RUN echo ac_add_options --enable-bootstrap >> mozconfig
RUN echo ac_add_options --with-macos-sdk=/osx-cross/MacOSX-SDKs/MacOSX13.0.sdk >> mozconfig RUN echo ac_add_options --with-macos-sdk=/osx-cross/MacOSX-SDKs/MacOSX11.3.sdk >> mozconfig
RUN MOZBUILD_STATE_PATH=$HOME/.mozbuild ./mach --no-interactive bootstrap --application-choice=browser RUN MOZBUILD_STATE_PATH=$HOME/.mozbuild ./mach --no-interactive bootstrap --application-choice=browser
RUN ./mach artifact toolchain --from-build linux64-libdmg RUN ./mach artifact toolchain --from-build linux64-libdmg
RUN ./mach artifact toolchain --from-build linux64-cctools-port RUN ./mach artifact toolchain --from-build linux64-cctools-port
@ -45,7 +44,7 @@ RUN cp -r cctools /root/.mozbuild
RUN cp -r sysroot-wasm32-wasi /root/.mozbuild RUN cp -r sysroot-wasm32-wasi /root/.mozbuild
## RUN cp -r clang /root/.mozbuild ## RUN cp -r clang /root/.mozbuild
RUN cp -r dmg /root/.mozbuild RUN cp -r dmg /root/.mozbuild
# RUN cp -r hfsplus-tools /root/.mozbuild RUN cp -r hfsplus-tools /root/.mozbuild
RUN pip install testresources pycairo RUN pip install testresources pycairo
WORKDIR .. WORKDIR ..
RUN rm -rf librewolf-$version-$source_release librewolf-$version-$source_release.source.tar.gz RUN rm -rf librewolf-$version-$source_release librewolf-$version-$source_release.source.tar.gz

View file

@ -2,7 +2,7 @@ ac_add_options --enable-application=browser
# for crosscompiling... # for crosscompiling...
ac_add_options --target=_ARCH_-apple-darwin ac_add_options --target=_ARCH_-apple-darwin
ac_add_options --with-macos-sdk=/osx-cross/MacOSX-SDKs/MacOSX13.0.sdk ac_add_options --with-macos-sdk=/osx-cross/MacOSX-SDKs/MacOSX11.3.sdk
CROSS_BUILD=1 CROSS_BUILD=1
export CROSS=/root/.mozbuild export CROSS=/root/.mozbuild
@ -22,7 +22,7 @@ export HOST_CC="$CROSS/clang/bin/clang"
export HOST_CXX="$CROSS/clang/bin/clang++" export HOST_CXX="$CROSS/clang/bin/clang++"
# These are needed for packaging. # These are needed for packaging.
# export MKFSHFS="$CROSS/hfsplus-tools/newfs_hfs" export MKFSHFS="$CROSS/hfsplus-tools/newfs_hfs"
export DMG_TOOL="$CROSS/dmg/dmg" export DMG_TOOL="$CROSS/dmg/dmg"
export HFS_TOOL="$CROSS/dmg/hfsplus" export HFS_TOOL="$CROSS/dmg/hfsplus"

9
assets/setup-rust.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/sh
set -e
tmpfile=/tmp/tmp.784979489.sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > $tmpfile
chmod +x $tmpfile
/bin/sh -c "$tmpfile -y"
rm -f $tmpfile

View file

@ -1,8 +0,0 @@
FROM ubuntu:latest
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install bash git wget build-essential zip
RUN dpkg --add-architecture i386 && apt-get -y update && apt-get -y install wine32
RUN tmpdir=$(mktemp -d) && cd $tmpdir && git clone https://gitlab.com/librewolf-community/browser/windows.git && cd windows/linux && make setup-debian && make fetch && make bootstrap && cd /root && rm -rf $tmpdir
WORKDIR /work
VOLUME ["/work"]

View file

@ -1,42 +0,0 @@
# windows.mk - this one is quite a bit different from the others,
# but we can fix that later.
.PHONY : docker build
version:=$(shell cat version)
release:=$(shell cat release)
source_release:=$(shell cat source_release)
full_version:=$(version)-$(source_release)$(shell [ $(release) -gt 1 ] && echo "-$(release)")
outfile-exe=librewolf-$(full_version).en-US.win64-setup.exe
outfile-zip=librewolf-$(full_version).en-US.win64-portable.zip
outfiles=$(outfile-exe) $(outfile-zip)
distro=windows
image=registry.gitlab.com/librewolf-community/browser/bsys5/$(distro):latest
docker :
docker build -t $(image) - < assets/windows.Dockerfile
build :
pwd
rm -rf windows
git clone https://gitlab.com/librewolf-community/browser/windows.git
( cd windows/linux && pwd && ${MAKE} fetch )
ifeq ($(use_docker),false)
( cd windows/linux && ${MAKE} )
else
docker run --rm -v $(shell pwd)/windows/linux:/work:rw registry.gitlab.com/librewolf-community/browser/bsys5/$(distro) sh -c "${MAKE} all"
endif
cp -v windows/linux/$(outfiles) .
sha256sum $(outfile-exe) > $(outfile-exe).sha256sum
cat $(outfile-exe).sha256sum
sha256sum $(outfile-zip) > $(outfile-zip).sha256sum
cat $(outfile-zip).sha256sum

156
linux-base/Makefile Normal file
View file

@ -0,0 +1,156 @@
.PHONY : help fetch all clean build dir bootstrap winsdk setup-debian setup-fedora veryclean docker-build docker-run docker-shell docker-clean artifacts pre-build post-package update
version:=$(shell cat version)
release:=$(shell cat release)
source_release:=$(shell cat source_release)
full_version:=$(version)-$(source_release)$(shell [ $(release) -gt 1 ] && echo "-$(release)")
mozbuild=~/.mozbuild
assets=assets/linux-base
ifeq ($(target_type),)
target_type:=flatpak
endif
ifeq ($(arch),)
arch:=x86_64
endif
docker_image_name=linux-base-$(arch)
help :
@echo "use: make [help] [all] [clean] [build] [package] [artifacts]"
@echo ""
@echo " fetch - get the latest tarball. must be done first, at least once."
@echo " update - Only fetch the LibreWolf version-release files. used by 'fetch'"
@echo ""
@echo " all - Build librewolf and it's artifacts."
@echo ""
@echo " dir - just extract and patch the LW tarball."
@echo " pre-build - Perform 'target_type' specific pre-build tasks."
@echo " build - Perform './mach build' on the extracted tarball."
@echo " package - Build symbols, and multilocale package."
@echo " post-package - Perform 'target_type' specific post-package tasks."
@echo " artifacts - Build the artifacts"
@echo ""
@echo " clean - Remove output files and temporary files."
@echo " veryclean - Remove even more stuff."
@echo " bootstrap - try to set up the build environment."
@echo " setup-debian, setup-fedora - needed packages."
@echo ""
@echo " docker-build - Run 'docker build' for " $(docker_image_name) " image."
@echo " docker-run - Run LW build using 'docker run' on then image."
@echo " docker-shell - Run a shell in the docker image."
@echo " docker-clean - Remove the docker image."
@echo ""
@echo "Use arch=x86_64 or arch=aarch64 to specify the target architecture."
@echo "Use target_type=flatpak or target_type=appimage to specify artifacts type."
all : dir pre-build build package post-package artifacts
update :
@wget -q -O version "https://gitlab.com/librewolf-community/browser/source/-/raw/main/version"
@wget -q -O source_release "https://gitlab.com/librewolf-community/browser/source/-/raw/main/release"
@echo "Using LibreWolf version $$(cat version)-$$(cat source_release)."
@echo "Targeting: $(target_type), architecture: $(arch)."
fetch : update
@wget -q -O "librewolf-$$(cat version)-$$(cat source_release).source.tar.gz.sha256sum" "https://gitlab.com/librewolf-community/browser/source/-/jobs/artifacts/main/raw/librewolf-$$(cat version)-$$(cat source_release).source.tar.gz.sha256sum?job=Build"
wget --progress=bar:force -O "librewolf-$$(cat version)-$$(cat source_release).source.tar.gz" "https://gitlab.com/librewolf-community/browser/source/-/jobs/artifacts/main/raw/librewolf-$$(cat version)-$$(cat source_release).source.tar.gz?job=Build"
cat "librewolf-$$(cat version)-$$(cat source_release).source.tar.gz.sha256sum"
sha256sum -c "librewolf-$$(cat version)-$$(cat source_release).source.tar.gz.sha256sum"
clean :
rm -rf librewolf-$(full_version) work
veryclean : clean
rm -rf firefox-$(full_version).en-US.win64.zip librewolf-$(full_version).en-US.win64-setup.exe librewolf-$(full_version).en-US.win64-portable.zip
rm -f "librewolf-$$(cat version)-$$(cat source_release).source.tar.gz" "librewolf-$$(cat version)-$$(cat source_release).source.tar.gz.sha256sum"
rm -f version source_release
rm -f librewolf-*.en-US.linux-*.tar.bz2
# this is the place to apply patches and create a custom mozconfig
pre-build :
./assets/pre_build_patches_mozconfig.sh
build : dir
(cd librewolf-$(full_version) && ./mach build)
package : dir
( cd librewolf-$(full_version) && ./mach buildsymbols )
( cd librewolf-$(full_version) && echo 'Packaging... (output hidden)' && \
cat browser/locales/shipped-locales | xargs ./mach package-multi-locale --locales >/dev/null )
post-package :
cp -v librewolf-$(full_version)/obj-$(arch)-pc-linux-gnu/dist/librewolf-$(full_version).en-US.linux-$(arch).tar.bz2 .
ARCH=$(arch) ./assets/post_package_distini_etc.sh
artifacts :
${MAKE} -f assets/$(target_type)/artifacts.mk artifacts
dir : librewolf-$(full_version)
librewolf-$(full_version) : librewolf-$(full_version).source.tar.gz
rm -rf $@
tar xf $<
touch $@
# we include the standard mozconfig from our $(arch)-specific one
mv librewolf-$(full_version)/mozconfig librewolf-$(full_version)/mozconfig.std
cp assets/mozconfig.$(arch) librewolf-$(full_version)/mozconfig
docker-build :
docker build --no-cache --build-arg "arch=$(arch)" -t $(docker_image_name) - < assets/Dockerfile
docker-run :
docker run --rm $(docker_image_name) sh -c "git pull && make fetch && make arch=$(arch) all"
docker-shell :
docker run -it --rm $(docker_image_name) sh -c "/bin/bash"
docker-clean :
docker rmi $(docker_image_name)
bootstrap : dir
(cd librewolf-$(full_version) && ./mach --no-interactive bootstrap --application-choice=browser)
( export t=$$(pwd)/librewolf-$(full_version) && \
cd $(mozbuild) && \
$$t/mach artifact toolchain --from-build sysroot-aarch64-linux-gnu && \
$$t/mach artifact toolchain --from-build linux64-binutils && \
$$t/mach artifact toolchain --from-build linux64-cctools-port && \
true )
/root/.cargo/bin/rustup target add aarch64-unknown-linux-gnu
setup-debian :
apt-get -y install mercurial python3 python3-dev python3-pip curl wget dpkg-sig libssl-dev zstd
setup-fedora :
dnf -y install python3 curl wget zstd python3-devel python3-pip mercurial openssl-devel

29
linux-base/README.md Normal file
View file

@ -0,0 +1,29 @@
# lw-linux-base
Use `make help` to get this help message:
```
Build for flatpack and appimage files.
use: make [help] [all] [clean] [build] [package] [artifacts]
fetch - get the latest tarball. must be done first, at least once.
update - Only fetch the LibreWolf version-release files. used by 'fetch'
all - Build librewolf and it's artifacts.
build - Perform './mach build' on the extracted tarball.
package - multilocale package.
artifacts - Build the artifacts
clean - Remove output files and temporary files.
veryclean - Remove even more stuff.
dir - just extract and patch the LW tarball.
bootstrap - try to set up the build environment.
setup-debian, setup-fedora - needed packages.
docker-build - Run 'docker build' for lw-linux-base-x86_64 image.
docker-run - Run LW build using 'docker run' on then image.
docker-shell - Run a shell in the docker image.
docker-clean - Remove the docker image.
Use arch=x86_64 or arch=aarch64 to specify the target architecture.
Use target_type=flatpak or target_type=appimage to specify target type.
```

View file

@ -0,0 +1,14 @@
.PHONY: artifacts
version:=$(shell cat version)
release:=$(shell cat release)
source_release:=$(shell cat source_release)
full_version:=$(version)-$(source_release)$(shell [ $(release) -gt 1 ] && echo "-$(release)")
mozbuild=~/.mozbuild
incoming_artifact=firefox-$(full_version).en-US.win64.zip
setupname=librewolf-$(full_version).en-US.win64-setup.exe
zipname=librewolf-$(full_version).en-US.win64-portable.zip
artifacts :
@echo "assets/appimage/artifacts.mk: Starting artifacts build."

View file

@ -0,0 +1,22 @@
FROM ubuntu:jammy
#FROM fedora:36
ARG arch=error
RUN apt-get -y update && apt-get -y upgrade && apt-get -y install make wget git patch gettext-base
#RUN dnf -y update && dnf -y install make wget git patch gettext
RUN git clone https://gitlab.com/librewolf-community/browser/bsys5
WORKDIR bsys5
RUN git checkout flatpak
WORKDIR linux-base
ENV PATH="${PATH}:/root/.cargo/bin"
#RUN make setup-fedora && make fetch && make arch=$arch bootstrap && make veryclean
RUN make setup-debian
RUN make update # this makes it not reproducible
RUN make fetch
RUN sh -c ./assets/setup-rust.sh
RUN make arch=$arch bootstrap
RUN make veryclean

View file

@ -0,0 +1,24 @@
Description: starting with firefox 66, armhf builds on Launchpad frequently
fail with "/usr/bin/ld: final link failed: memory exhausted" when linking
libxul.so. This is an attempt to reduce the memory used by ld.
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -1631,12 +1631,15 @@ set_config("LINKER_KIND", select_linker.KIND)
target_multiarch_dir,
android_platform,
c_compiler,
+ host,
)
@imports("os")
def linker_ldflags(
- linker, target, sysroot, multiarch_dir, android_platform, c_compiler
+ linker, target, sysroot, multiarch_dir, android_platform, c_compiler, host
):
flags = list((linker and linker.LINKER_FLAG) or [])
+ if host.cpu == "arm":
+ flags.append("-Wl,--no-keep-memory")
# rpath-link is irrelevant to wasm, see for more info https://github.com/emscripten-core/emscripten/issues/11076.
if sysroot.path and multiarch_dir and target.os != "WASI":
for d in ("lib", "usr/lib"):

View file

@ -0,0 +1,17 @@
Description: Remove an extra constant definition that is now being generated by newer versions of cbindgen (0.24),
and causing build failures because it is defined in several places.
Author: Olivier Tilloy <olivier.tilloy@canonical.com>
Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1773259
Forwarded: not-needed
--- a/gfx/webrender_bindings/webrender_ffi.h
+++ b/gfx/webrender_bindings/webrender_ffi.h
@@ -73,8 +73,6 @@ struct WrPipelineInfo;
struct WrPipelineIdAndEpoch;
using WrPipelineIdEpochs = nsTArray<WrPipelineIdAndEpoch>;
-const uint64_t ROOT_CLIP_CHAIN = ~0;
-
} // namespace wr
} // namespace mozilla

View file

@ -0,0 +1,19 @@
Description: Fix FTBFS on bionic. Compiler errors:
In file included from Unified_cpp_widget_gtk1.cpp:2:
/<<BUILDDIR>>/firefox-92.0~b2+build1/widget/gtk/WaylandBuffer.cpp:261:39: error: unknown type name 'GLContext'; did you mean 'EGLContext'?
const LayoutDeviceIntSize& aSize, GLContext* aGL) {
^~~~~~~~~
Author: Rico Tzschichholz <ricotz@ubuntu.com>
--- a/widget/gtk/WaylandBuffer.cpp
+++ b/widget/gtk/WaylandBuffer.cpp
@@ -258,7 +258,7 @@
/* static */
RefPtr<WaylandBufferDMABUF> WaylandBufferDMABUF::Create(
- const LayoutDeviceIntSize& aSize, GLContext* aGL) {
+ const LayoutDeviceIntSize& aSize, gl::GLContext* aGL) {
RefPtr<WaylandBufferDMABUF> buffer = new WaylandBufferDMABUF(aSize);
const auto flags =

View file

@ -0,0 +1,21 @@
Description: reduce the rust debuginfo level
because compiling with debuginfo=2 causes the OOM killer to interrupt the build
on launchpad builders. Initially this was only on 32 bit architectures, but
with firefox 63 it started happening frequently on arm64 and ppc64el too,
with newer versions it started happening very frequently on s390x too, and with
firefox 84 (built with rustc 1.47) it started happening on amd64 too.
This patch would initially decrease debug_info for selected architectures, but
with recent versions of rustc pretty much all supported architectures are
affected, so it is now unconditional.
--- a/build/moz.configure/rust.configure
+++ b/build/moz.configure/rust.configure
@@ -2167,7 +2167,7 @@ def rust_compile_flags(opt_level, debug_
debug_assertions = False
if debug_symbols:
- debug_info = "2"
+ debug_info = "1"
opts = []

View file

@ -0,0 +1,13 @@
diff -r 08cd64cdbc3b config/external/icu/data/convert_icudata.py
--- a/config/external/icu/data/convert_icudata.py Fri Jul 17 11:18:09 2020 +0000
+++ b/config/external/icu/data/convert_icudata.py Sat Jul 18 14:40:33 2020 +0200
@@ -11,7 +11,7 @@
subprocess.run(
[
- os.path.join(buildconfig.topobjdir, "dist", "host", "bin", "icupkg"),
+ "icupkg",
"-tb",
data_file,
output.name,
]

View file

@ -0,0 +1,369 @@
This file contains the PGP keys of various developers that work on
Mozilla and its subprojects (such as Firefox and Thunderbird).
Please realize that this file itself or the public key servers may be
compromised. You are encouraged to validate the authenticity of these keys in
an out-of-band manner.
Mozilla users: pgp < KEY
pub rsa4096 2015-07-17 [SC]
14F26682D0916CDD81E37B6D61B7B526D98F0353
uid [ full ] Mozilla Software Releases <release@mozilla.com>
sub rsa4096 2015-07-17 [S] [expired: 2017-07-16]
sub rsa4096 2017-06-22 [S] [expired: 2019-06-22]
sub rsa4096 2019-05-30 [S] [expires: 2021-05-29]
sub rsa4096 2021-05-17 [S] [expires: 2023-05-17]
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=81zK
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>io.gitlab.librewolf-community</id>
<launchable type="desktop-id">io.gitlab.librewolf-community.desktop</launchable>
<name>LibreWolf</name>
<developer_name>LibreWolf Community</developer_name>
<summary>LibreWolf Web Browser</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MPL-2.0</project_license>
<screenshots>
<screenshot type="default">
<image type="source" width="1121" height="902">https://librewolf.net/screenshot.png</image>
</screenshot>
</screenshots>
<description>
<p>LibreWolf</p>
<p>This project is an independent fork of Firefox, with the primary goals of privacy security and user freedom. It is the community run successor to LibreFox.</p>
<p>LibreWolf uses more than 500 privacy/security/performance settings, patches, LibreWolf-Addons (optional) and is designed to minimize data collection and telemetry as much as possible (updater, crashreporter and Firefoxs integrated addons that dont respect privacy are removed).</p>
<p>LibreWolf is NOT associated with Mozilla or its products.</p>
<p>Features:</p>
<ul>
<li>Latest Version of Firefox: LibreWolf is compiled directly from the latest build of Firefox Stable. You will have the the latest features, and security updates.</li>
<li>Completely Independent Build: LibreWolf uses a completely independent build from Firefox and has its own settings, profile folder and installation path. As a result, it can be installed alongside Firefox or any other browser.</li>
<li>Settings protection: important settings are enforced/locked within librewolf.cfg and policies.json, those settings cannot be changed by addons/updates/LibreWolf itself or unwanted/accidental manipulation; To change those settings you can easily do it by editing librewolf.cfg and policies.json.</li>
<li>LibreWolf-addons: set of optional LibreWolf extensions</li>
<li>Statistics disabled: telemetry and similar functions are disabled</li>
<li>Tested settings: settings are performance aware</li>
<li>Recommended and code reviewed addons list</li>
<li>Community-Driven</li>
<li>And much more…</li>
</ul>
</description>
<releases>
<release version="$pkgver-$pkgrel" date="$DATE"/>
</releases>
<keywords>
<keyword>librewolf</keyword>
<keyword>internet</keyword>
<keyword>web</keyword>
</keywords>
<url type="homepage">https://librewolf.net/</url>
<url type="bugtracker">https://gitlab.com/groups/librewolf-community/-/issues/</url>
<provides>
<id>io.gitlab.librewolf-community</id>
</provides>
<content_rating type="oars-1.1" />
</component>

View file

@ -0,0 +1,29 @@
#!/usr/bin/env bash
INSTALL_FOLDER=$(realpath $(dirname $0));
INSTALL_SETTINGS_FOLDER=$INSTALL_FOLDER/settings;
PROFILE_SETTINGS_FOLDER=$HOME/.librewolf/settings;
# Adds option to install settings if argument is passed
if [ "$1" = "--install-settings" ]; then
mkdir -p $PROFILE_SETTINGS_FOLDER;
cp $INSTALL_SETTINGS_FOLDER/defaults/pref/local-settings.js $PROFILE_SETTINGS_FOLDER/local-settings.js;
cp $INSTALL_SETTINGS_FOLDER/distribution/policies.json $PROFILE_SETTINGS_FOLDER/policies.json;
cp $INSTALL_SETTINGS_FOLDER/librewolf.cfg $PROFILE_SETTINGS_FOLDER/librewolf.cfg;
cp $INSTALL_SETTINGS_FOLDER/toggle-settings.sh $PROFILE_SETTINGS_FOLDER/toggle-settings.sh;
fi
# Sets up settings links
mkdir -p $INSTALL_FOLDER/defaults/pref/;
mkdir -p $INSTALL_FOLDER/distribution/;
ln -s $PROFILE_SETTINGS_FOLDER/local-settings.js $INSTALL_FOLDER/defaults/pref/local-settings.js;
ln -s $PROFILE_SETTINGS_FOLDER/policies.json $INSTALL_FOLDER/distribution/policies.json;
ln -s $PROFILE_SETTINGS_FOLDER/librewolf.cfg $INSTALL_FOLDER/librewolf.cfg;
# Sets env variables to disable dedicated profiles (which breaks some packaging methods)
export MOZ_LEGACY_PROFILES=1;
export SNAP_NAME="firefox";
# Launches librewolf
chmod +x $INSTALL_FOLDER/librewolf;
$INSTALL_FOLDER/librewolf "$@";

View file

@ -0,0 +1,21 @@
#!/usr/bin/env bash
# Exit script with a non-zero exit code if:
# - any command fails (-e | --errexit)
# - any variable is unset (-u | --nounset)
# - a part of a piped sequence fails (-o pipefail)
set -euo pipefail
SCRIPT_FOLDER=$(realpath $(dirname $0));
# Enable settings ------------------------------------------------------------------------------------------
if [[ "${1}" = "--enable" ]]; then
mv "${SCRIPT_FOLDER}/[DISABLED] local-settings.js" "${SCRIPT_FOLDER}/local-settings.js";
mv "${SCRIPT_FOLDER}/[DISABLED] policies.json" "${SCRIPT_FOLDER}/policies.json";
mv "${SCRIPT_FOLDER}/[DISABLED] librewolf.cfg" "${SCRIPT_FOLDER}/librewolf.cfg";
# Disable settings ------------------------------------------------------------------------------------------
elif [[ "${1}" = "--disable" ]]; then
mv "${SCRIPT_FOLDER}/local-settings.js" "${SCRIPT_FOLDER}/[DISABLED] local-settings.js";
mv "${SCRIPT_FOLDER}/policies.json" "${SCRIPT_FOLDER}/[DISABLED] policies.json";
mv "${SCRIPT_FOLDER}/librewolf.cfg" "${SCRIPT_FOLDER}/[DISABLED] librewolf.cfg";
fi

View file

@ -0,0 +1,5 @@
. "$topsrcdir/mozconfig.std"
ac_add_options --target=aarch64-pc-linux-gnu
ac_add_options --enable-linker=lld
ac_add_options --enable-bootstrap

View file

@ -0,0 +1,4 @@
. "$topsrcdir/mozconfig.std"
ac_add_options --target=x86_64-pc-linux-gnu
ac_add_options --enable-bootstrap

View file

@ -0,0 +1,45 @@
#!/bin/sh
set -e
version=$(cat version)
release=$(cat release)
source_release=$(cat source_release)
tmp="" && [ $release -gt 1 ] && tmp=-$release
full_version=$version-$source_release$tmp
arch="x86_64" && [ ! -z $ARCH ] && arch=$ARCH
echo assets/post_package_distini_etc.sh: Starting Post-package script for version $full_version for $arch.
# ---
# See: https://gitlab.com/librewolf-community/browser/linux/-/blob/master/scripts/5_Configure_Binary_Tarball.sh
binary_tarball=librewolf-$full_version.en-US.linux-$arch.tar.bz2
# Extract tarball
mkdir -p work
tar --strip-components=1 -xf $binary_tarball -C work
# Add distribution.ini
distini="work/distribution/distribution.ini"
install -Dvm644 /dev/stdin $distini <<END
[Global]
id=io.gitlab.librewolf-community
version=1.0
about=LibreWolf
[Preferences]
app.distributor="LibreWolf Community"
app.distributor.channel=librewolf
app.partner.librewolf=librewolf
END
# Create Appstream metadate file
export DATE=$(date +%Y-%m-%d)
envsubst < assets/from-linux-repo/content/io.gitlab.librewolf-community.appdata.xml.in > work/io.gitlab.librewolf-community.appdata.xml
# Recompress tarball
rm -f $binary_tarball
tar -jvcf $binary_tarball -C work .

View file

@ -0,0 +1,45 @@
#!/bin/sh
set -e
version=$(cat version)
release=$(cat release)
source_release=$(cat source_release)
tmp="" && [ $release -gt 1 ] && tmp=-$release
full_version=$version-$source_release$tmp
arch="x86_64" && [ ! -z $ARCH ] && arch=$ARCH
echo assets/pre_build_patches_mozconfig.sh: Starting Pre-build script for version $full_version for $arch.
# ---
# See: https://gitlab.com/librewolf-community/browser/linux/-/blob/master/scripts/3_Configure_Source_Code.sh
#
# 1) Creating a valid mozconfig is already done by Makefile. Skipped.
#
# allow setting limited resource usage via ENV / CI:
if [ ! -z ${CORES_TO_USE} ]; then
echo "mk_add_options MOZ_MAKE_FLAGS=\"-j${CORES_TO_USE}\"" >> librewolf-${full_version}/mozconfig
fi
#
# 2) apply patches not already done in the source tarball
#
cd librewolf-$full_version
# hopefully the magic sauce that makes things build on 18.04 and later on work "everywhere"
patch -Np1 -i ../assets/deb_patches/armhf-reduce-linker-memory-use.patch
patch -Np1 -i ../assets/deb_patches/reduce-rust-debuginfo.patch
patch -Np1 -i ../assets/deb_patches/use-system-icupkg.patch
# might make the build just a tiny bit cleaner, not really required though
patch -Np1 -i ../assets/deb_patches/fix-wayland-build.patch
cd ..

View file

@ -0,0 +1,9 @@
#!/bin/sh
set -e
tmpfile=/tmp/tmp.784979489.sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > $tmpfile
chmod +x $tmpfile
/bin/sh -c "$tmpfile -y"
rm -f $tmpfile

View file

@ -0,0 +1,34 @@
.PHONY: artifacts
version:=$(shell cat version)
release:=$(shell cat release)
source_release:=$(shell cat source_release)
full_version:=$(version)-$(source_release)$(shell [ $(release) -gt 1 ] && echo "-$(release)")
ifeq ($(target_type),)
target_type:=flatpak
endif
ifeq ($(arch),)
arch:=x86_64
endif
binary_tarball:=librewolf-$(full_version).en-US.linux-$(arch).tar.bz2
flatpak_repo=librewolf-$(full_version).$(arch).flatpak-repo
flatpak_bundle=LibreWolf-$(full_version).$(arch).flatpak
flatpak_build_folder=work
artifacts :
@echo "assets/flatpak/artifacts.mk: Starting artifacts build for version $(full_version) for $(arch)."
rm -rf work
# ideally, we wanna do this somewhere else
sudo ./assets/flatpak/setup-debian.sh
rm -rf assets/flatpak/shared-modules
( cd assets/flatpak && git clone "https://github.com/flathub/shared-modules.git" && cd shared-modules && git checkout fd4d38328ccb078b88ad4a891807e593ae8de806)
flatpak-builder --disable-rofiles-fuse --repo="$(flatpak_repo)" "$(flatpak_build_folder)" assets/flatpak/io.gitlab.librewolf-community.json
rm -rf assets/flatpak/shared-modules
flatpak build-bundle $(flatpak_repo) $(flatpak_bundle) io.gitlab.librewolf-community master

View file

@ -0,0 +1,135 @@
{
"app-id": "io.gitlab.librewolf-community",
"runtime": "org.freedesktop.Platform",
"runtime-version": "21.08",
"sdk": "org.freedesktop.Sdk",
"add-extensions": {
"org.freedesktop.Platform.ffmpeg-full": {
"directory": "lib/ffmpeg",
"version": "21.08",
"add-ld-path": "."
}
},
"command": "librewolf",
"finish-args": [
"--share=ipc",
"--share=network",
"--socket=wayland",
"--socket=fallback-x11",
"--socket=pcsc",
"--socket=pulseaudio",
"--socket=cups",
"--env=GTK_PATH=/app/lib/gtkmodules",
"--persist=.librewolf",
"--filesystem=xdg-download:rw",
"--filesystem=xdg-run/pipewire-0",
"--device=dri",
"--talk-name=org.freedesktop.FileManager1",
"--system-talk-name=org.freedesktop.NetworkManager",
"--talk-name=org.a11y.Bus",
"--talk-name=org.gnome.SessionManager",
"--talk-name=org.freedesktop.ScreenSaver",
"--talk-name=org.gtk.vfs.*",
"--talk-name=org.freedesktop.Notifications",
"--env=MOZ_ENABLE_WAYLAND=1",
"--env=MOZ_USE_XINPUT2=1",
"--own-name=io.gitlab.librewolf.*",
"--own-name=org.mpris.MediaPlayer2.firefox.*",
"--share=network"
],
"modules": [
"shared-modules/dbus-glib/dbus-glib-0.110.json",
{
"name": "librewolf",
"buildsystem": "simple",
"build-commands": [
"mkdir -p /app/lib",
"mv librewolf.tar.bz2 /app/lib/librewolf",
"install -D -m644 /app/lib/librewolf/browser/chrome/icons/default/default128.png /app/share/icons/hicolor/128x128/apps/io.gitlab.librewolf-community.png",
"install -D -m644 /app/lib/librewolf/browser/chrome/icons/default/default128.png /app/usr/share/icons/hicolor/128x128/apps/io.gitlab.librewolf-community.png",
"install -D -m644 /app/lib/librewolf/io.gitlab.librewolf-community.appdata.xml -t /app/share/metainfo",
"install -D -m644 io.gitlab.librewolf-community.desktop -t /app/share/applications",
"install -D -m755 librewolf.sh /app/bin/librewolf",
"install -d /app/lib/ffmpeg"
],
"sources": [
{
"type": "archive",
"url": "https://www.dropbox.com/s/09dcce6xjj37c6x/librewolf-106.0.1-1.en-US.linux-x86_64.tar.bz2",
"sha256":"b844c0dafacb7d77d1131cc63912a651752d271d5500c4af84a7bd25835518d0",
"dest": "librewolf.tar.bz2",
"strip-components": 0,
"only-arches": [
"x86_64"
]
},
{
"type": "file",
"path": "io.gitlab.librewolf-community.desktop"
},
{
"type": "file",
"path": "librewolf.sh"
}
]
},
{
"name": "gtk-cups-backend",
"buildsystem": "meson",
"make-args": [
"modules/printbackends/libprintbackend-cups.so"
],
"no-make-install": true,
"post-install": [
"install -Dm 755 modules/printbackends/libprintbackend-cups.so -t /app/lib/gtkmodules/3.0.0/printbackends/"
],
"sources": [
{
"type": "archive",
"url": "https://download.gnome.org/core/41/41.0/sources/gtk%2B-3.24.30.tar.xz",
"sha256": "ba75bfff320ad1f4cfbee92ba813ec336322cc3c660d406aad014b07087a3ba9"
},
{
"type": "patch",
"path": "gtk3-werror.patch"
}
]
},
{
"name": "gtk-settings",
"buildsystem": "simple",
"build-commands": [
"install -Dm 644 gtk-settings.ini /app/etc/xdg/gtk-3.0/settings.ini"
],
"sources": [
{
"type": "file",
"path": "gtk-settings.ini"
}
]
},
{
"name": "libnotify",
"buildsystem": "meson",
"config-opts": [
"-Dtests=false",
"-Dintrospection=disabled",
"-Dman=false",
"-Dgtk_doc=false",
"-Ddocbook_docs=disabled"
],
"sources": [
{
"sha256": "d033e6d4d6ccbf46a436c31628a4b661b36dca1f5d4174fe0173e274f4e62557",
"type": "archive",
"url": "https://download.gnome.org/sources/libnotify/0.8/libnotify-0.8.1.tar.xz",
"x-checker-data": {
"project-id": 13149,
"type": "anitya",
"url-template": "https://download.gnome.org/sources/libnotify/$major.$minor/libnotify-$version.tar.xz"
}
}
]
}
]
}

View file

@ -0,0 +1,9 @@
set -e
flathub_repo="flathub https://flathub.org/repo/flathub.flatpakrepo"
flathub_packages_to_install="org.freedesktop.Platform//21.08 org.freedesktop.Sdk//21.08"
apt update && apt install -y software-properties-common bzip2 flatpak flatpak-builder
flatpak remote-add --if-not-exists $flathub_repo;
flatpak install -y flathub $flathub_packages_to_install;

1
linux-base/release Normal file
View file

@ -0,0 +1 @@
1

@ -1 +0,0 @@
Subproject commit 70b155aca44a159c3a93430f283efd2df2381547

View file

@ -1 +1 @@
116.0.2 106.0.2

@ -1 +0,0 @@
Subproject commit b3b007f1710ccfe2c9b6442f5f836a16af8b5acb