aports/community/wezterm/APKBUILD

172 lines
5.1 KiB
Text

# Contributor: Jakub Panek <me@panekj.dev>
# Maintainer: Matthias Ahouansou <matthias@ahouansou.cz>
pkgname=wezterm
pkgver=20240203.110809
_pkgver="${pkgver/./-}-5046fc22"
pkgrel=5
pkgdesc="GPU-accelerated cross-platform terminal emulator and multiplexer written in Rust"
url="https://wezfurlong.org/wezterm/"
# s390x and loongarch64 blocked by nix crate
arch="all !s390x !loongarch64"
license="MIT"
# See remove-bundled-fonts.patch for more info about fonts.
_depends_fonts="
font-jetbrains-mono-vf
font-noto-emoji
font-roboto
"
makedepends="
$_depends_fonts
cargo
cargo-auditable
fontconfig-dev
freetype-dev
harfbuzz-dev
libgit2-dev
libpng-dev
libssh2-dev
libx11-dev
libxkbcommon-dev
lua5.4-dev
ncurses
openssl-dev>3
python3
wayland-dev
xcb-imdkit-dev
xcb-util-dev
xcb-util-image-dev
xcb-util-keysyms-dev
xcb-util-wm-dev
zlib-dev
zstd-dev
"
checkdepends="openssh"
install="$pkgname.post-install $pkgname.post-upgrade"
subpackages="
$pkgname-common
$pkgname-mux-server:_mux_server
$pkgname-fonts::noarch
$pkgname-bash-completion
$pkgname-fish-completion
$pkgname-zsh-completion
"
source="
https://github.com/wez/wezterm/releases/download/$_pkgver/wezterm-$_pkgver-src.tar.gz
link-against-system-libs.patch
rust1.78-from_raw_parts.patch
time-crate-update.patch
"
builddir="$srcdir/wezterm-$_pkgver"
options="net"
export LIBSSH2_SYS_USE_PKG_CONFIG=1 # use system libssh2
prepare() {
cargo fetch --target="$CTARGET" --locked
default_prepare
# Rust target triple.
local target=$(rustc -vV | sed -n 's/host: //p')
# Build against system-provided libs
mkdir -p .cargo
cat >> .cargo/config <<-EOF
[target.$target]
git2 = { rustc-link-lib = ["git2"] }
EOF
cargo fetch --target="$CTARGET" # regenerate Cargo.lock after patching
# dont print malformed sshd config, this can possibly fail on builders but not on CI
sed 's|std::fs::write|//std::fs::write|g' -i "$builddir"/wezterm-ssh/tests/sshd.rs
}
build() {
cargo auditable build \
--release \
--frozen \
--no-default-features \
--features wayland,distro-defaults \
--bin wezterm \
--bin wezterm-gui \
--bin wezterm-mux-server \
--bin strip-ansi-escapes
# Regenerate shell completions (to be up-to-date).
local sh; for sh in bash fish zsh; do
./target/release/wezterm shell-completion --shell $sh > assets/shell-completion/$sh
done
}
check() {
# Test ligatures_jetbrains is somehow broken; it's *not* related to our
# patches, but probably to fontconfig or freetype version.
# e2e::sftp::symlink* failures: https://github.com/wezterm/wezterm/issues/6984
cargo test --frozen -- \
--skip shapecache::test::ligatures_jetbrains \
--skip e2e::sftp::symlink_should_create_symlink_pointing_to_directory \
--skip e2e::sftp::symlink_should_create_symlink_pointing_to_file \
--skip e2e::sftp::symlink_should_succeed_even_if_path_missing
# required to unstuck CI
killall -q sshd || true
}
package() {
depends="$pkgname-common=$pkgver-r$pkgrel"
local appid="org.wezfurlong.wezterm"
cd target/release
install -Dm755 -t "$pkgdir"/usr/bin/ \
wezterm \
wezterm-gui \
wezterm-mux-server \
strip-ansi-escapes
cd "$builddir"
install -Dm644 assets/wezterm.desktop "$pkgdir"/usr/share/applications/$appid.desktop
install -Dm644 assets/wezterm.appdata.xml "$pkgdir"/usr/share/metainfo/$appid.appdata.xml
install -Dm644 LICENSE.md -t "$pkgdir"/usr/share/licences/$pkgname/
install -Dm644 assets/shell-integration/wezterm.sh -t "$pkgdir"/etc/profile.d/
install -Dm644 assets/icon/terminal.png "$pkgdir"/usr/share/icons/hicolor/128x128/apps/$appid.png
install -Dm644 assets/icon/wezterm-icon.svg "$pkgdir"/usr/share/icons/hicolor/scalable/apps/$appid.svg
install -Dm644 assets/shell-completion/bash "$pkgdir"/usr/share/bash-completion/completions/wezterm
install -Dm644 assets/shell-completion/fish "$pkgdir"/usr/share/fish/vendor_completions.d/wezterm.fish
install -Dm644 assets/shell-completion/zsh "$pkgdir"/usr/share/zsh/site-functions/_wezterm
}
# NOTE: This package contains programs that don't depend on Gtk, X11 etc.
# It may be installed on a remote server.
common() {
pkgdesc="Common files for WezTerm GUI and multiplexer server"
depends="ncurses-terminfo"
amove etc/profile.d
amove usr/bin/strip-ansi-escapes
amove usr/bin/wezterm
}
_mux_server() {
pkgdesc="WezTerm multiplexer server"
depends="$pkgname-common=$pkgver-r$pkgrel"
amove usr/bin/wezterm-mux-server
}
fonts() {
pkgdesc="Meta package for fonts bundled in Wezterm"
depends="$_depends_fonts"
mkdir -p "$subpkgdir"
}
sha512sums="
2413e1537ed4cf699f0754d76f35cd679591e4e215e782fab61f5bd7c4615e3916398e16709445406ef241e3fb721111daed917c546abb1f5130109b40bb2774 wezterm-20240203-110809-5046fc22-src.tar.gz
d4c13f079dd0348d60eed577a0467cf4da9b202c5c959902b0626019c95d945d2a91023bc6844c19d5a3aecaa8d0de007966a6a2113549fe5328c3c8de79381f link-against-system-libs.patch
a13edbf756ef697ecc640103589d686043f4790b36ac0867a777c47cae1b6cd7482eca229d514fb6feb61e5b274c564e304eacad90001dff82e3dc01f20a3ffa rust1.78-from_raw_parts.patch
13ff3f0cbba05263234826ade6f27a58fd01c29372f55d431ebbac15d1ef0b01dd577d0ad9595ab7f626ff3a270f749e5c7f47d9b8584b3a2ca0b16ff47e06c2 time-crate-update.patch
"