Skip to content

Commit f1b34d8

Browse files
committed
package: introduce mkdeb script for building .deb packages
1 parent 6c058b3 commit f1b34d8

6 files changed

Lines changed: 78 additions & 6 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Running `scripts/build.sh` directly will not work unless you're running a Debian
3232
### Packaging
3333
After building, run `scripts/package.sh`. Alternatively, you can run `package/docker-package.sh` to build inside a Docker image. Either of these scripts will create `tar.xz` and `AppImage` files under `build/`.
3434

35-
Either of these scripts will create `tar.xz` and `AppImage` files under `build/`.
35+
If you would like to also generate a .deb file, you can set `MAKE_DEB=1` when running the release script.
3636

3737
### Development
3838
By default, the build script uses tarball. If you need to use a source tree clone, you can run `scripts/docker-build.sh -c` instead. This may be useful if a tarball for a release isn't available yet.

docker/package.Dockerfile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,16 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio
88
RUN apt -y update && apt -y upgrade
99

1010
## Install system dependencies
11-
RUN apt -y install binutils elfutils desktop-file-utils dpkg file imagemagick wget xz-utils pv curl jq python3 zsync gnupg
11+
RUN apt -y install binutils elfutils desktop-file-utils dpkg dpkg-dev fakeroot file git imagemagick wget xz-utils pv curl jq python3 zsync gnupg perl make liblocale-gettext-perl
12+
13+
## Install debbuild for .deb packaging
14+
RUN git clone --depth 1 --branch 24.12.0 https://github.com/debbuild/debbuild.git /tmp/debbuild \
15+
&& cd /tmp/debbuild \
16+
&& git checkout 65c140bf902aa4860709a899a0f197fd7aa05e56 \
17+
&& perl configure --prefix=/usr \
18+
&& make \
19+
&& make install \
20+
&& rm -rf /tmp/debbuild
1221

1322
RUN curl -s https://api.github.com/repos/AppImage/appimagetool/releases/tags/1.9.0 \
1423
| jq -r '.assets[].browser_download_url' \

package/docker-package.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ _git_submodule="helium-chromium"
88
_image="helium-chromium-trixie-slim:packager"
99
_user_uidgid="$(id -u):$(id -g)"
1010
_docker_image_args=()
11+
_make_deb=${MAKE_DEB:-0}
1112

1213
if [ "$_user_uidgid" != "0:0" ]; then
1314
_docker_image_args+=(--build-arg "UID=$(id -u)")
@@ -30,5 +31,6 @@ cd "${_root_dir}" && docker run --rm -i \
3031
-e APPIMAGE_EXTRACT_AND_RUN=1 \
3132
-e HOME=/home/builder \
3233
-e GNUPGHOME=/home/builder/.gnupg \
34+
-e MAKE_DEB=$_make_deb \
3335
-v "${_root_dir}:/repo" \
3436
"${_image}" bash "/repo/scripts/package.sh" "$@"

package/helium-bin.spec

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,20 @@ URL: https://github.com/imputnet/helium-linux
1010
Source0: https://github.com/imputnet/helium-linux/releases/download/%{version}/helium-%{version}-x86_64_linux.tar.xz
1111
Source1: https://github.com/imputnet/helium-linux/releases/download/%{version}/helium-%{version}-arm64_linux.tar.xz
1212

13+
%if 0%{?debbuild}
14+
Packager: imput <helium@imput.net>
15+
Provides: www-browser
16+
%endif
17+
1318
%description
1419
Private, fast, and honest web browser based on Chromium
1520

1621
%prep
17-
%ifarch x86_64
22+
%ifarch x86_64 amd64
1823
%setup -q -n helium-%{version}-x86_64_linux
1924
%endif
2025

21-
%ifarch aarch64
26+
%ifarch aarch64 arm64
2227
%setup -q -T -b 1 -n helium-%{version}-arm64_linux
2328
%endif
2429

@@ -36,8 +41,13 @@ mkdir -p %{heliumdir} \
3641

3742
cp -a . %{heliumdir}
3843

44+
%if 0%{?debbuild}
45+
sed -Ei "s/(CHROME_VERSION_EXTRA=).*/\1deb/" \
46+
%{heliumdir}/helium-wrapper
47+
%else
3948
sed -Ei "s/(CHROME_VERSION_EXTRA=).*/\1rpm/" \
4049
%{heliumdir}/helium-wrapper
50+
%endif
4151

4252
install -m 644 product_logo_256.png \
4353
%{buildroot}%{_datadir}/icons/hicolor/256x256/apps/helium.png
@@ -73,13 +83,15 @@ if [ $1 -eq 0 ] ; then
7383
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
7484

7585
if [ -f /etc/apparmor.d/helium-bin ]; then
76-
rm -f /etc/apparmor.d/helium-bin
7786
apparmor_parser -R helium-bin || :
87+
rm -f /etc/apparmor.d/helium-bin
7888
fi
7989
fi
8090

8191
%posttrans
8292
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
8393

8494
%changelog
95+
%if "%{_vendor}" != "debbuild"
8596
%autochangelog
97+
%endif

package/mkdeb.sh

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/bin/bash
2+
set -euxo pipefail
3+
4+
_current_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
5+
_root_dir="$(cd "$_current_dir/.." && pwd)"
6+
_release_dir="$_root_dir/build/release"
7+
_spec="$_root_dir/package/helium-bin.spec"
8+
9+
_version=$(python3 "$_root_dir/helium-chromium/utils/helium_version.py" \
10+
--tree "$_root_dir/helium-chromium" \
11+
--platform-tree "$_root_dir" \
12+
--print)
13+
_tarball="$(realpath "${1:-}")"
14+
15+
if ! [ -f "$_tarball" ]; then
16+
echo "usage: $0 <path to .tar.xz from release.sh" >&2
17+
exit 1
18+
fi
19+
20+
_tarball_basename="$(basename "$_tarball")"
21+
case "$_tarball_basename" in
22+
*x86_64*) _deb_arch="amd64" ;;
23+
*arm64*) _deb_arch="arm64" ;;
24+
*) exit 1;;
25+
esac
26+
27+
_debbuild_dir=$(mktemp -d)
28+
trap 'rm -rf "$_debbuild_dir"' EXIT
29+
30+
mkdir -p "$_debbuild_dir"/{BUILD,SOURCES,SPECS,DEBS}
31+
ln -s "$_tarball" "$_debbuild_dir/SOURCES/"
32+
cp "$_spec" "$_debbuild_dir/SPECS/"
33+
34+
debbuild \
35+
--define "_topdir $_debbuild_dir" \
36+
--define "debbuild 1" \
37+
--define "version $_version" \
38+
--define "_arch $_deb_arch" \
39+
--define "dist %{nil}" \
40+
-bb "$_debbuild_dir/SPECS/helium-bin.spec"
41+
42+
mkdir -p "$_release_dir"
43+
mv "$_debbuild_dir"/DEBS/*/*.deb "$_release_dir/"
44+
ls "$_release_dir"/*.deb

scripts/package.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,13 @@ appimagetool \
111111
popd
112112
wait
113113

114+
if [ "${MAKE_DEB:-0}" = 1 ]; then
115+
"$_root_dir/package/mkdeb.sh" "$TAR_PATH"
116+
fi
117+
114118
if [ -n "${SIGN_TARBALL:-}" ]; then
115-
gpg --detach-sign --passphrase "$GPG_PASSPHRASE" \
119+
gpg --batch --pinentry-mode loopback \
120+
--detach-sign --passphrase "$GPG_PASSPHRASE" \
116121
--output "$TAR_PATH.asc" "$TAR_PATH"
117122
fi
118123

0 commit comments

Comments
 (0)