Skip to content

Commit 3c380ff

Browse files
author
psadi
committed
feat: switch to uruntime/dwarfs & misc
* switched completely to uruntime * make use of uruntime dwarfs for reduction in size and faster launchtimes * handle ghostty-version based on upsteam tags and nightly hashes * remove blueprint-compiler dependency as its optional (only required if we we built from git na for tar builds)
1 parent 5b4dfc2 commit 3c380ff

File tree

2 files changed

+35
-29
lines changed

2 files changed

+35
-29
lines changed

build.sh

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,25 @@ mkdir -p -- "${TMP_DIR}" "${APP_DIR}/share/metainfo" "${APP_DIR}/shared/lib"
2929
cd "${TMP_DIR}"
3030

3131
if [ $GHOSTTY_VERSION == "tip" ]; then
32-
BUILD_DIR="ghostty-source"
3332
wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz" -O ghostty-${GHOSTTY_VERSION}.tar.gz
3433
wget "https://github.com/ghostty-org/ghostty/releases/download/tip/ghostty-source.tar.gz.minisig" -O ghostty-${GHOSTTY_VERSION}.tar.gz.minisig
34+
GHOSTTY_VERSION="$(tar -tf ghostty-${GHOSTTY_VERSION}.tar.gz --wildcards "*zig.zon.txt" | awk -F'[-/]' '{print $2"-"$3}')"
35+
mv ghostty-tip.tar.gz ghostty-${GHOSTTY_VERSION}.tar.gz
36+
mv ghostty-tip.tar.gz.minisig ghostty-${GHOSTTY_VERSION}.tar.gz.minisig
3537
else
36-
BUILD_DIR="ghostty-${GHOSTTY_VERSION}"
37-
BUILD_ARGS="${BUILD_ARGS} -Dversion-string=${GHOSTTY_VERSION}"
3838
wget "https://release.files.ghostty.org/${GHOSTTY_VERSION}/ghostty-${GHOSTTY_VERSION}.tar.gz"
3939
wget "https://release.files.ghostty.org/${GHOSTTY_VERSION}/ghostty-${GHOSTTY_VERSION}.tar.gz.minisig"
4040
fi
4141

4242
minisign -V -m "ghostty-${GHOSTTY_VERSION}.tar.gz" -P "${PUB_KEY}" -s "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig"
4343

44-
rm "ghostty-${GHOSTTY_VERSION}.tar.gz.minisig"
45-
4644
tar -xzmf "ghostty-${GHOSTTY_VERSION}.tar.gz"
4745

48-
rm "ghostty-${GHOSTTY_VERSION}.tar.gz"
46+
rm "ghostty-${GHOSTTY_VERSION}.tar.gz" \
47+
"ghostty-${GHOSTTY_VERSION}.tar.gz.minisig"
4948

50-
if [ $GHOSTTY_VERSION == 'tip' ]; then
51-
mv ghostty-* ghostty-source
52-
fi
49+
BUILD_DIR="ghostty-${GHOSTTY_VERSION}"
50+
BUILD_ARGS="${BUILD_ARGS} -Dversion-string=${GHOSTTY_VERSION}"
5351

5452
cd "${TMP_DIR}/${BUILD_DIR}"
5553

@@ -73,7 +71,7 @@ ln -s "share/applications/com.mitchellh.ghostty.desktop" .
7371
ln -s "share/icons/hicolor/256x256/apps/com.mitchellh.ghostty.png" .
7472

7573
# bundle all libs
76-
xvfb-run -a -- lib4bin -p -v -e -s -k \
74+
xvfb-run -a -- sharun l -p -v -e -s -k \
7775
./bin/ghostty \
7876
/usr/lib/libEGL* \
7977
/usr/lib/gdk-pixbuf-*/*/*/*
@@ -85,7 +83,6 @@ cp -rv /opt/path-mapping.so ./shared/lib/
8583
cp -rv gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader_svg.so ./shared/lib/
8684

8785
echo 'path-mapping.so' >./.preload
88-
8986
echo 'PATH_MAPPING=/usr/lib/gdk-pixbuf-2.0:${SHARUN_DIR}/gdk-pixbuf-2.0' >>./.env
9087
echo 'GHOSTTY_RESOURCES_DIR=${SHARUN_DIR}/share/ghostty' >>./.env
9188
echo 'unset ARGV0' >>./.env
@@ -102,7 +99,21 @@ fi
10299
cd "${TMP_DIR}"
103100

104101
# create app image
105-
URUNTIME_PRELOAD=1 appimagetool --comp zstd \
106-
--mksquashfs-opt -Xcompression-level --mksquashfs-opt 22 \
107-
--mksquashfs-opt -b --mksquashfs-opt 1M \
108-
-u "${UPINFO}" "${APP_DIR}"
102+
cp $(which uruntime) ./uruntime
103+
104+
# persist mount for faster launch times
105+
sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime
106+
107+
# update info
108+
./uruntime --appimage-addupdinfo "${UPINFO}"
109+
110+
echo "Generating AppImage"
111+
./uruntime --appimage-mkdwarfs -f \
112+
--set-owner 0 --set-group 0 \
113+
--no-history --no-create-timestamp \
114+
--compression zstd:level=22 -S26 -B32 \
115+
--header uruntime -i "${APP_DIR}" \
116+
-o Ghostty-"${VERSION}"-anylinux-"${ARCH}".AppImage
117+
118+
echo "Generating Zsync file"
119+
zsyncmake *.AppImage -u *.AppImage

setup.sh

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ get_latest_gh_release() {
1111

1212
# Update & install OS base dependencies
1313
buildDeps="base-devel freetype2 oniguruma wget mesa file zsync appstream xorg-server-xvfb patchelf binutils strace git jq"
14-
ghosttyDeps="gtk4 libadwaita blueprint-compiler gtk4-layer-shell"
14+
ghosttyDeps="gtk4 libadwaita gtk4-layer-shell"
1515
rm -rf "/usr/share/libalpm/hooks/package-cleanup.hook"
1616
pacman -Syuq --needed --noconfirm --noprogressbar ${buildDeps} ${ghosttyDeps}
1717

@@ -26,11 +26,11 @@ URUNTIME_VERSION="$(get_latest_gh_release 'VHSgunzo/uruntime')"
2626
GITHUB_BASE="https://github.com"
2727
PANDOC_BASE="${GITHUB_BASE}/jgm/pandoc/releases/download/${PANDOC_VERSION}"
2828
MINISIGN_URL="${GITHUB_BASE}/jedisct1/minisign/releases/download/${MINISIGN_VERSION}/minisign-${MINISIGN_VERSION}-linux.tar.gz"
29-
APPIMAGE_URL="${GITHUB_BASE}/pkgforge-dev/appimagetool-uruntime/releases/download/continuous/appimagetool-${ARCH}.AppImage"
29+
URUNTIME_URL="${GITHUB_BASE}/VHSgunzo/uruntime/releases/download/${URUNTIME_VERSION}/uruntime-appimage-dwarfs-${ARCH}"
3030
LLVM_BASE="${GITHUB_BASE}/pkgforge-dev/llvm-libs-debloated/releases/download/continuous"
3131
ZIG_URL="https://ziglang.org/download/${ZIG_VERSION}/zig-linux-${ARCH}-${ZIG_VERSION}.tar.xz"
32-
LIB4BIN_URL="https://raw.githubusercontent.com/VHSgunzo/sharun/refs/heads/main/lib4bin"
3332
SHARUN_URL="${GITHUB_BASE}/VHSgunzo/sharun/releases/download/${SHARUN_VERSION}/sharun-${ARCH}"
33+
LD_PRELOAD_OPEN="${GITHUB_BASE}/fritzw/ld-preload-open.git"
3434

3535
case "${ARCH}" in
3636
"x86_64")
@@ -62,11 +62,11 @@ wget "${ZIG_URL}" -O /tmp/zig-linux.tar.xz
6262
tar -xJf /tmp/zig-linux.tar.xz -C /opt
6363
ln -s "/opt/zig-linux-${ARCH}-${ZIG_VERSION}/zig" /usr/local/bin/zig
6464

65-
# appimagetool: https://github.com/AppImage/appimagetool
66-
rm -rf /usr/local/bin/appimagetool
67-
wget "${APPIMAGE_URL}" -O /tmp/appimagetool.AppImage
68-
chmod +x /tmp/appimagetool.AppImage
69-
mv /tmp/appimagetool.AppImage /usr/local/bin/appimagetool
65+
# uruntime: https://github.com/VHSgunzo/uruntime
66+
rm -rf /usr/local/bin/uruntime
67+
wget "${URUNTIME_URL}" -O /tmp/uruntime
68+
chmod +x /tmp/uruntime
69+
mv /tmp/uruntime /usr/local/bin/uruntime
7070

7171
# minisign: https://github.com/jedisct1/minisign
7272
rm -rf /usr/local/bin/minisign
@@ -80,19 +80,14 @@ wget "${PANDOC_URL}" -O /tmp/pandoc-linux.tar.gz
8080
tar -xzf /tmp/pandoc-linux.tar.gz -C /tmp
8181
mv /tmp/"pandoc-${PANDOC_VERSION}"/bin/* /usr/local/bin
8282

83-
# lib4bin: https://github.com/VHSgunzo/sharun/blob/main/lib4bin
84-
rm -rf /usr/local/bin/lib4bin
85-
wget "${LIB4BIN_URL}" -O /usr/local/bin/lib4bin
86-
chmod +x /usr/local/bin/lib4bin
87-
8883
# sharun: https://github.com/VHSgunzo/sharun
8984
rm -rf /usr/local/bin/sharun
9085
wget "${SHARUN_URL}" -O /usr/local/bin/sharun
9186
chmod +x /usr/local/bin/sharun
9287

9388
# ld-preload-open: https://github.com/fritzw/ld-preload-open
9489
rm -rf /opt/path-mapping.so
95-
git clone https://github.com/fritzw/ld-preload-open.git
90+
git clone "${LD_PRELOAD_OPEN}"
9691
(
9792
cd ld-preload-open
9893
make all

0 commit comments

Comments
 (0)