Skip to content

Commit 6f79dcc

Browse files
committed
build: add ubuntu appimage packaging script
1 parent 9ceec45 commit 6f79dcc

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

‎scripts/build-appimage-ubuntu.sh‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
project_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
5+
image="${DIFFER_APPIMAGE_UBUNTU_IMAGE:-ubuntu:22.04}"
6+
read -r -a docker_cmd <<< "${DOCKER:-docker}"
7+
host_uid="$(id -u)"
8+
host_gid="$(id -g)"
9+
10+
"${docker_cmd[@]}" run --rm \
11+
--env APPIMAGE_EXTRACT_AND_RUN=1 \
12+
--env CI=1 \
13+
--env DEBIAN_FRONTEND=noninteractive \
14+
--env HOST_UID="${host_uid}" \
15+
--env HOST_GID="${host_gid}" \
16+
--volume "${project_dir}:/work" \
17+
--workdir /work \
18+
"${image}" \
19+
bash -lc '
20+
set -euo pipefail
21+
22+
apt-get update
23+
apt-get install -y --no-install-recommends \
24+
build-essential \
25+
ca-certificates \
26+
curl \
27+
file \
28+
git \
29+
libayatana-appindicator3-dev \
30+
libgtk-3-dev \
31+
libjavascriptcoregtk-4.1-dev \
32+
librsvg2-dev \
33+
libsoup-3.0-dev \
34+
libssl-dev \
35+
libwebkit2gtk-4.1-dev \
36+
patchelf \
37+
wget \
38+
xdg-utils \
39+
xz-utils \
40+
gstreamer1.0-libav \
41+
gstreamer1.0-plugins-bad \
42+
gstreamer1.0-plugins-base \
43+
gstreamer1.0-plugins-good \
44+
gstreamer1.0-tools
45+
46+
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
47+
apt-get install -y --no-install-recommends nodejs
48+
49+
if ! getent group "${HOST_GID}" >/dev/null; then
50+
groupadd --gid "${HOST_GID}" builder
51+
fi
52+
53+
if ! getent passwd "${HOST_UID}" >/dev/null; then
54+
useradd --uid "${HOST_UID}" --gid "${HOST_GID}" --create-home builder
55+
fi
56+
57+
builder_name="$(getent passwd "${HOST_UID}" | cut -d: -f1)"
58+
59+
su "${builder_name}" -s /bin/bash -c "
60+
set -euo pipefail
61+
cd /work
62+
curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal
63+
. \"\${HOME}/.cargo/env\"
64+
npm ci
65+
node --check src/main.js
66+
cargo check --manifest-path src-tauri/Cargo.toml --locked
67+
npm run tauri -- build --ci --bundles appimage
68+
"
69+
'

0 commit comments

Comments
 (0)