pkgname=strata pkgver=0.15.0 pkgrel=1 pkgdesc='Fast, keyboard-first file manager for modern Linux desktops' arch=('x86_64' 'aarch64') url='https://github.com/lgse/strata' license=('MIT') depends=( 'bash' 'bubblewrap' 'cairo' 'ffmpeg' 'ffmpegthumbnailer' 'fontconfig' 'gcc-libs' 'gdk-pixbuf2' 'glib2' 'glibc' 'graphene' 'gst-libav' 'gst-plugins-good' 'gvfs' 'gtk4' 'gtksourceview5' 'hicolor-icon-theme' 'pango' 'poppler-glib' 'util-linux' 'xdg-terminal-exec' ) makedepends=('cargo' 'git' 'glib2-devel' 'pkgconf') optdepends=( 'gvfs-smb: browse SMB network shares' 'imagemagick: additional camera RAW preview support' 'libraw: additional camera RAW preview support' ) conflicts=('strata-git') options=('!debug' '!lto') source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") sha256sums=('be4d579a9378b8bf9ccc3904e7327ce756bed61d1e617c75b543e1e539611f0a') prepare() { cd "$pkgname-$pkgver" local commit if ! commit=$(git get-tar-commit-id < <(gzip -dc "$srcdir/$pkgname-$pkgver.tar.gz")) || [[ ! $commit =~ ^[0-9a-f]{40}$ ]]; then printf 'Could not recover the release commit from the source archive\n' >&2 return 1 fi printf '%s\n' "$commit" >.build-commit cargo fetch --locked --target "$CARCH-unknown-linux-gnu" } build() { cd "$pkgname-$pkgver" export CARGO_TARGET_DIR=target export STRATA_BUILD_COMMIT STRATA_BUILD_COMMIT=$(<.build-commit) export STRATA_RELEASE_TAG="v$pkgver" export STRATA_BUILD_KIND=stable cargo build --frozen --release } check() { cd "$pkgname-$pkgver" export CARGO_TARGET_DIR=target export STRATA_BUILD_COMMIT STRATA_BUILD_COMMIT=$(<.build-commit) export STRATA_RELEASE_TAG="v$pkgver" export STRATA_BUILD_KIND=stable # Search fixtures depend on directory enumeration order and fail on overlayfs. # Run them on tmpfs; other suites execute fixtures, so cannot use noexec /dev/shm. local search_tmp search_tmp=$(mktemp -d /dev/shm/strata-tests.XXXXXXXX) || return 1 local test_status=0 TMPDIR="$search_tmp" cargo test --frozen --release --all-targets --all-features \ services::search::tests:: -- --test-threads=1 || test_status=$? rm -rf -- "$search_tmp" (( test_status == 0 )) || return "$test_status" cargo test --frozen --release --all-targets --all-features \ -- --test-threads=1 --skip services::search::tests:: } package() { cd "$pkgname-$pkgver" install -Dm755 target/release/strata "$pkgdir/usr/bin/strata" install -Dm644 data/io.github.lgse.Strata.desktop \ "$pkgdir/usr/share/applications/io.github.lgse.Strata.desktop" install -Dm644 data/icons/scalable/apps/io.github.lgse.Strata.svg \ "$pkgdir/usr/share/icons/hicolor/scalable/apps/io.github.lgse.Strata.svg" # Payload for the app's per-user FileManager1 opt-in; upstream's own # packaging stages it here, not in /usr/share/dbus-1. install -Dm644 data/io.github.lgse.Strata.FileManager1.service \ "$pkgdir/usr/share/strata/io.github.lgse.Strata.FileManager1.service" install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" install -Dm644 THIRD_PARTY_LICENSES.md \ "$pkgdir/usr/share/licenses/$pkgname/THIRD_PARTY_LICENSES.md" install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md" }