ghostty/snap/snapcraft.yaml
2025-03-12 16:29:17 -07:00

148 lines
3.9 KiB
YAML

name: ghostty
base: core24
summary: A terminal emulator
description: |
Ghostty is a fast, feature-rich, and cross-platform terminal emulator that
uses platform-native UI and GPU acceleration.
grade: stable
confinement: classic
contact: https://github.com/ghostty-org/ghostty/discussions
issues: https://github.com/ghostty-org/ghostty/issues
website: https://ghostty.org
license: MIT
icon: images/icons/icon_512.png
adopt-info: ghostty
platforms:
amd64:
arm64:
apps:
ghostty:
command: bin/ghostty
command-chain: [bin/launcher]
completer: share/bash-completion/completions/ghostty.bash
desktop: share/applications/com.mitchellh.ghostty.desktop
#refresh-mode: ignore-running # Store rejects this, needs fix in review-tools
environment:
PATH: /snap/ghostty/current/bin:/snap/ghostty/current/usr/bin:$PATH
LC_ALL: C.UTF-8
GHOSTTY_RESOURCES_DIR: /snap/ghostty/current/share/ghostty
parts:
launcher:
plugin: dump
source: snap/local
source-type: local
organize:
launcher: bin/
zig:
plugin: nil
build-packages:
- curl
override-pull: |
set -ex
case "$CRAFT_ARCH_BUILD_FOR" in
amd64) arch=x86_64 ;;
arm64) arch=aarch64 ;;
*) arch="" ;;
esac
rm -rf $CRAFT_PART_SRC/*
if [[ -n $arch ]]; then
curl -LO --retry-connrefused --retry 10 https://ziglang.org/download/0.14.0/zig-linux-$arch-0.14.0.tar.xz
else
echo "Unsupported arch"
exit 1
fi
tar xf zig-lin*xz
rm -f *xz
mv zig-linux*/* .
prime:
- -*
ghostty:
source: .
after: [zig]
plugin: nil
build-attributes: [enable-patchelf]
build-packages:
- blueprint-compiler
- libgtk-4-dev
- libadwaita-1-dev
# TODO: Add when the Snap is updated to Ubuntu 24.10+
# - gtk4-layer-shell
- libxml2-utils
- git
- patchelf
- gettext
override-build: |
craftctl set version=$(git describe --abbrev=8)
$CRAFT_PART_SRC/../../zig/src/zig build -Dpatch-rpath=\$ORIGIN/../usr/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR:/snap/core24/current/lib/$CRAFT_ARCH_TRIPLET_BUILD_FOR -Doptimize=ReleaseFast
cp -rp zig-out/* $CRAFT_PART_INSTALL/
sed -i 's|Icon=com.mitchellh.ghostty|Icon=/snap/ghostty/current/share/icons/hicolor/512x512/apps/com.mitchellh.ghostty.png|g' $CRAFT_PART_INSTALL/share/applications/com.mitchellh.ghostty.desktop
libs:
plugin: nil
build-attributes: [enable-patchelf]
stage-packages:
- libadwaita-1-0
- libglib2.0-0t64
- libgtk-4-1
- libgtk-4-media-gstreamer
- ibus-gtk4
- libpciaccess0
- libtinfo6
- libedit2
- libelf1t64
- libsensors5
- libllvm17
- libunistring5
- librsvg2-2
- librsvg2-common
- libgdk-pixbuf-2.0-0
- on amd64:
[
i965-va-driver,
libdrm-intel1,
libdrm-nouveau2,
libdrm-amdgpu1,
libdrm-radeon1,
]
stage:
# The libraries in dri need no-patchelf, so they come from the mesa-unpatched part
- -usr/lib/*/dri
mesa:
plugin: nil
build-attributes: [enable-patchelf]
stage-packages:
- libglu1-mesa
- libgl1-mesa-dri
- libegl-mesa0
- libegl1
- libglx-mesa0
- mesa-libgallium
stage:
# The libraries in dri need no-patchelf, so they come from the mesa-unpatched part
- usr/lib/*/*.so*
- usr/lib/*/dri/libdril_dri.so
- -usr/lib/*/libxml2.so.*
- -usr/lib/*/libgallium*so
- -usr/lib/*/dri
mesa-gl1-dri:
plugin: nil
stage-packages:
- libgl1-mesa-dri
build-attributes: [no-patchelf]
stage:
# Only the libraries in dri need to not be patched, the rest come from the mesa part
# Otherwise snapcraft may strip the build ID and cause the driver to crash
- usr/lib/*/libgallium*so
- -usr/lib/*/dri/libdril_dri.so
- usr/lib/*/dri