Skip to main content
Sign in
Snippets Groups Projects
Unverified Commit 0d395222 authored by boklm's avatar boklm
Browse files

Bug 41129: Make an rpm package for Mullvad Browser

parent c37f7e92
Branches
Tags
1 merge request!970Bug 41129: Make an rpm package for Mullvad Browser
......@@ -3,5 +3,25 @@ build:
echo 'This is a packaged app.' > "${DEB_TARGET_ARCH}/Browser/is-packaged-app"
[% c("touch") %] "${DEB_TARGET_ARCH}/Browser/is-packaged-app"
install:
mkdir -p "${DESTDIR}/[% c('var/system_pkg/install_path') %]"
cp -a "${DEB_TARGET_ARCH}/Browser"/* "${DESTDIR}/[% c('var/system_pkg/install_path') %]"
chmod -R go+rX "${DESTDIR}/[% c('var/system_pkg/install_path') %]"
mkdir -p "${DESTDIR}/usr/share/applications"
cp -a [% c("var/system_pkg/pkg_name") %].desktop "${DESTDIR}/usr/share/applications"
mkdir -p "${DESTDIR}/usr/bin"
ln -s "/[% c('var/system_pkg/install_path') %]/start-[% c('var/project-name') %]" \
"${DESTDIR}/usr/bin/[% c('var/system_pkg/pkg_name') %]"
for res in 16 32 48 64 128 ;\
do \
resdir="${DESTDIR}/usr/share/icons/hicolor/$${res}x$${res}/apps"; \
mkdir -p "$$resdir"; \
ln -s "/[% c('var/system_pkg/install_path') %]/browser/chrome/icons/default/default$${res}.png" \
"$${resdir}/[% c('var/system_pkg/pkg_name') %].png"; \
done
mkdir -p "${DESTDIR}/usr/share/icons/hicolor/scalable/apps"
ln -s "/[% c('var/system_pkg/install_path') %]/browser/chrome/icons/default/about-logo.svg" \
"${DESTDIR}/usr/share/icons/hicolor/scalable/apps/[% c('var/system_pkg/pkg_name') %].svg"
clean:
rm -f "${DEB_TARGET_ARCH}/Browser/is-packaged-app"
......@@ -7,12 +7,13 @@ mkdir -p $OUTDIR
mkdir -p "$distdir"
export SOURCE_DATE_EPOCH='[% c("timestamp") %]'
umask 0022
[% IF c("var/build_deb_pkg") -%]
cd $distdir
project_dir=[% c("var/system_pkg/pkg_name") %]-[% c("var/system_pkg/pkg_version") %]
mkdir "$project_dir"
mv $rootdir/Makefile "$project_dir"
cp -a $rootdir/Makefile $rootdir/[% c("var/system_pkg/pkg_name") %].desktop "$project_dir"
[% c('tar', {
tar_src => [ '$project_dir' ],
tar_args => '-cJf ' _ c("var/system_pkg/pkg_name") _ '_' _ c("var/system_pkg/pkg_version") _ '.orig.tar.xz',
......@@ -20,7 +21,7 @@ export SOURCE_DATE_EPOCH='[% c("timestamp") %]'
cd "$project_dir"
mv $rootdir/debian .
chmod +x debian/install debian/docs debian/rules
chmod +x debian/docs debian/rules
mkdir debian/source
echo -n '3.0 (quilt)' > debian/source/format
......@@ -30,7 +31,7 @@ export SOURCE_DATE_EPOCH='[% c("timestamp") %]'
deb_arch="$2"
mkdir $deb_arch
tar -C $deb_arch --strip-components=1 -xf "$src_tar"
mv "$src_tar" \
cp "$src_tar" \
../[% c("var/system_pkg/pkg_name") %]_[% c("var/system_pkg/pkg_version") %].orig-$deb_arch.tar.xz
}
[% IF c("var/browser-linux-x86_64") -%]
......@@ -52,4 +53,34 @@ export SOURCE_DATE_EPOCH='[% c("timestamp") %]'
mv -f "$deb_file_name" *.dsc *.orig.tar.xz *.debian.tar.xz "$OUTDIR/"
popd
[% END -%]
cd ..
[% END %]
[% IF c("var/build_rpm_pkg") -%]
cat > ~/.rpmmacros << EOF
%clamp_mtime_to_source_date_epoch 1
%use_source_date_epoch_as_buildtime 1
%build_mtime_policy clamp_to_source_date_epoch
%_buildhost localhost
EOF
mkdir rpm
cd rpm
mkdir SPECS SOURCES
cp -a $rootdir/[% c("var/system_pkg/pkg_name") %].spec SPECS
cp -a $rootdir/Makefile $rootdir/[% c("var/system_pkg/pkg_name") %].desktop SOURCES/
[% IF c("var/browser-linux-x86_64") -%]
cp -a $rootdir/[% c('input_files_by_name/linux-x86_64') %]/[% c("var/project-name") %]-linux-x86_64-[% c("version") %].tar.xz \
SOURCES/[% c("var/system_pkg/pkg_name") %]-linux-x86_64-[% c("var/system_pkg/pkg_version") %].tar.xz
[% END -%]
[% IF c("var/browser-linux-i686") -%]
cp -a $rootdir/[% c('input_files_by_name/linux-i686') %]/[% c("var/project-name") %]-linux-i686-[% c("version") %].tar.xz \
SOURCES/[% c("var/system_pkg/pkg_name") %]-linux-i686-[% c("var/system_pkg/pkg_version") %].tar.xz
[% END -%]
rpmdir=$(pwd)
rpmbuild --define "_topdir $rpmdir" -v -bb SPECS/[% c("var/system_pkg/pkg_name") %].spec
mv RPMS/*/*.rpm "$OUTDIR/"
[% END %]
......@@ -6,11 +6,10 @@ container:
use_container: 1
var:
build_deb_pkg: '[% c("var/mullvad-browser") %]'
system_pkg:
install_path: 'usr/lib/[% c("var/system_pkg/pkg_name") %]'
pkg_name: '[% c("var/project-name") %]-[% c("var/channel") %]'
pkg_version: '[% c("var/torbrowser_version") %]-[% c("var/torbrowser_build") %]'
pkg_version: '[% c("var/torbrowser_version") %]'
pkg_revision: '1'
pkg_description: '[% c("var/display_name") %]'
deb_release_date: '[% USE date; date.format(c("timestamp"), format = "%a, %d %b %Y 01:02:03 +0000", locale = "en_US") %]'
......@@ -19,6 +18,12 @@ var:
- '[% IF c("var/browser-linux-x86_64") %]amd64[% END %]'
- '[% IF c("var/browser-linux-i686") %]i386[% END %]'
targets:
deb:
var:
build_deb_pkg: '[% c("var/mullvad-browser") %]'
arch_deps:
# Packages needed to build the deb package
- dpkg-dev
......@@ -36,7 +41,18 @@ var:
- libx11-xcb-dev
- libxt-dev
targets:
rpm:
var:
build_rpm_pkg: '[% c("var/mullvad-browser") %]'
arch_deps:
# Packages needed to build the rpm package
- rpm
# Use bookworm since rpm version from stretch does not produce
# reproducible rpm files
container:
suite: bookworm
browser-all:
- browser-linux-x86_64
......@@ -54,6 +70,8 @@ targets:
torbrowser:
var:
browser_type: torbrowser
system_pkg:
pkg_url: 'https://torproject.org/'
basebrowser:
var:
browser_type: basebrowser
......@@ -62,6 +80,7 @@ targets:
browser_type: mullvadbrowser
system_pkg:
pkg_description: 'Mullvad Browser is a privacy-focused web browser designed to minimize tracking and fingerprinting.'
pkg_url: 'https://mullvad.net/browser'
release:
var:
......@@ -105,6 +124,11 @@ input_files:
content: "[% INCLUDE 'Makefile.in' %]"
refresh_input: 1
- filename: '[% c("var/system_pkg/pkg_name") %].desktop'
content: "[% INCLUDE 'browser.desktop.in' %]"
refresh_input: 1
enable: '[% c("var/build_deb_pkg") || c("var/build_rpm_pkg") %]'
# Debian Package
- filename: debian/changelog
content: "[% INCLUDE 'debian/changelog.in' %]"
......@@ -120,25 +144,19 @@ input_files:
content: "[% INCLUDE 'debian/copyright.in' %]"
refresh_input: 1
enable: '[% c("var/build_deb_pkg") %]'
- filename: debian/install
content: "[% INCLUDE 'debian/install.in' %]"
refresh_input: 1
enable: '[% c("var/build_deb_pkg") %]'
- filename: debian/docs
content: "[% INCLUDE 'debian/docs.in' %]"
refresh_input: 1
enable: '[% c("var/build_deb_pkg") %]'
- filename: 'debian/[% c("var/system_pkg/pkg_name") %].desktop'
content: "[% INCLUDE 'debian/browser.desktop.in' %]"
refresh_input: 1
enable: '[% c("var/build_deb_pkg") %]'
- filename: debian/links
content: "[% INCLUDE 'debian/links.in' %]"
refresh_input: 1
enable: '[% c("var/build_deb_pkg") %]'
- filename: debian/rules
enable: '[% c("var/build_deb_pkg") %]'
# rpm package
- filename: '[% c("var/system_pkg/pkg_name") %].spec'
content: "[% INCLUDE 'rpm-package.spec' %]"
refresh_input: 1
enable: '[% c("var/build_rpm_pkg") %]'
--- |
# This part of the file contains options written in perl
(
......
......
#! /usr/bin/dh-exec
${DEB_HOST_ARCH}/Browser/* [% c("var/system_pkg/install_path") %]
debian/[% c("var/system_pkg/pkg_name") %].desktop usr/share/applications
[% c("var/system_pkg/install_path") %]/start-[% c("var/project-name") %] usr/bin/[% c("var/system_pkg/pkg_name") %]
[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default16.png usr/share/icons/hicolor/16x16/apps/[% c("var/system_pkg/pkg_name") %].png
[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default32.png usr/share/icons/hicolor/32x32/apps/[% c("var/system_pkg/pkg_name") %].png
[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default48.png usr/share/icons/hicolor/48x48/apps/[% c("var/system_pkg/pkg_name") %].png
[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default64.png usr/share/icons/hicolor/64x64/apps/[% c("var/system_pkg/pkg_name") %].png
[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/default128.png usr/share/icons/hicolor/128x128/apps/[% c("var/system_pkg/pkg_name") %].png
[% c("var/system_pkg/install_path") %]/browser/chrome/icons/default/about-logo.svg usr/share/icons/hicolor/scalable/apps/[% c("var/system_pkg/pkg_name") %].svg
# Avoid provides/requires from private libraries
%global privlibs libfreeblpriv3
%global privlibs %{privlibs}|libipcclientcerts
%global privlibs %{privlibs}|liblgpllibs
%global privlibs %{privlibs}|libmozavcodec
%global privlibs %{privlibs}|libmozavutil
%global privlibs %{privlibs}|libmozgtk
%global privlibs %{privlibs}|libmozsandbox
%global privlibs %{privlibs}|libmozsqlite3
%global privlibs %{privlibs}|libmozwayland
%global privlibs %{privlibs}|libnspr4
%global privlibs %{privlibs}|libnss3
%global privlibs %{privlibs}|libnssckbi
%global privlibs %{privlibs}|libnssutil3
%global privlibs %{privlibs}|libplc4
%global privlibs %{privlibs}|libplds4
%global privlibs %{privlibs}|libsmime3
%global privlibs %{privlibs}|libsoftokn3
%global privlibs %{privlibs}|libssl3
%global privlibs %{privlibs}|libstdc\\+\\+
%global privlibs %{privlibs}|libxul
%global __provides_exclude ^(%{privlibs})\\.so
%global __requires_exclude ^(%{privlibs})\\.so
Summary: [% c("var/display_name") %]
Name: [% c("var/system_pkg/pkg_name") %]
Version: [% c("var/system_pkg/pkg_version") %]
Release: [% c("var/system_pkg/pkg_revision") %]
URL: [% c("var/system_pkg/pkg_url") %]
License: MPL-2.0 AND GPL-3.0-or-later AND OFL-1.1 AND Apache-2.0[% IF c("var/tor-browser") %] AND BSD-3-Clause AND CC0-1.0 AND MIT[% END %]
Source0: Makefile
Source1: [% c("var/system_pkg/pkg_name") %].desktop
[% IF c("var/browser-linux-x86_64") -%]
Source2: %{name}-linux-x86_64-%{version}.tar.xz
[% END -%]
[% IF c("var/browser-linux-i686") -%]
Source3: %{name}-linux-i686-%{version}.tar.xz
[% END -%]
%description
[% c("var/system_pkg/pkg_description") %]
%prep
mkdir -p "%name-%version"
cd "%name-%version"
cp %{_sourcedir}/Makefile .
cp %{_sourcedir}/[% c("var/system_pkg/pkg_name") %].desktop .
mkdir %{_arch}
tar -C %{_arch} --strip-components=1 -xf %{_sourcedir}/%{name}-linux-%{_arch}-%{version}.tar.xz
%build
cd "%name-%version"
DEB_TARGET_ARCH=%{_arch} make build
%install
cd "%name-%version"
DEB_TARGET_ARCH=%{_arch} make install DESTDIR="$RPM_BUILD_ROOT"
%files
%defattr(-,root,root)
/[% c('var/system_pkg/install_path') %]
/usr/bin/[% c('var/system_pkg/pkg_name') %]
/usr/share/applications/[% c("var/system_pkg/pkg_name") %].desktop
/usr/share/icons/hicolor/16x16/apps/[% c("var/system_pkg/pkg_name") %].png
/usr/share/icons/hicolor/32x32/apps/[% c("var/system_pkg/pkg_name") %].png
/usr/share/icons/hicolor/48x48/apps/[% c("var/system_pkg/pkg_name") %].png
/usr/share/icons/hicolor/64x64/apps/[% c("var/system_pkg/pkg_name") %].png
/usr/share/icons/hicolor/128x128/apps/[% c("var/system_pkg/pkg_name") %].png
/usr/share/icons/hicolor/scalable/apps/[% c("var/system_pkg/pkg_name") %].svg
......@@ -38,7 +38,8 @@ mkdir -p "$destdir"
mv [% c('input_files_by_name/linux-x86_64') %]/* "$destdir"/
[% END -%]
[% IF c("var/linux-packages") -%]
mv [% c('input_files_by_name/linux-packages') %]/* "$destdir"/
mv [% c('input_files_by_name/deb-packages') %]/* "$destdir"/
mv [% c('input_files_by_name/rpm-packages') %]/* "$destdir"/
[% END -%]
[% IF c("var/browser-src") -%]
mv [% c('input_files_by_name/src-firefox') %] \
......@@ -62,7 +63,7 @@ EOF
# empty any existing sh256sums file
echo -n > sha256sums-unsigned-build.txt
# concat sha256sum entry for each file in set
for i in $(ls -1 *.exe *.tar.xz *.dmg *.mar *.zip *.tar.gz *.apk *.bspatch *.json *.deb | grep -v '\.incremental\.mar$' | sort)
for i in $(ls -1 *.exe *.tar.xz *.dmg *.mar *.zip *.tar.gz *.apk *.bspatch *.json *.deb *.rpm | grep -v '\.incremental\.mar$' | sort)
do
sha256sum $i >> sha256sums-unsigned-build.txt
done
......
......
......@@ -188,11 +188,21 @@ input_files:
- '[% c("var/build_target") %]'
- '[% c("var/browser_type") %]-linux-i686'
- name: linux-packages
- name: deb-packages
project: linux-packages
enable: '[% c("var/linux-packages") %]'
# Add linux-x86_64 targets for container config
target_prepend:
- deb
- linux-x86_64
- linux
- name: rpm-packages
project: linux-packages
enable: '[% c("var/linux-packages") %]'
# Add linux-x86_64 targets for container config
target_prepend:
- rpm
- linux-x86_64
- linux
......
......
......@@ -10,7 +10,7 @@ test -n "$GPG_PASS" || read -sp "Enter gpg passphrase: " GPG_PASS
currentdir=$(pwd)
for i in `find . -name "*.dmg" -o -name "*.exe" -o -name "*.tar.xz" \
-o -name "*.txt" -o -name "*.zip" -o -name "*.tar.gz" -o -name "*.apk" \
-o -name "*.deb" | sort`
-o -name "*.deb" -o -name "*.rpm" | sort`
do
if test -f "$i.asc"
then
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment