aboutsummarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 25af87821e7af4e9bd2b179b181d9b8db1c0a61d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Maintainer: Magus <packaging@example.com>
pkgname=magelab-bin
pkgver=0.12.1
pkgrel=1
pkgdesc="Mage Lab is a user-centric AI interface with local reasoning and tools"
arch=('x86_64')
url="https://github.com/majesticio/magelab"
license=('MIT')
depends=('gtk3' 'webkit2gtk-4.1' 'libayatana-appindicator' 'libayatana-appindicator-glib')
provides=('magelab')
conflicts=('magelab')
options=('!strip' '!emptydirs')
source=("LICENSE::https://raw.githubusercontent.com/majesticio/magelab/refs/heads/main/LICENSE")
sha256sums=('c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4')

_magelab_zst_asset="magelab-bin-${pkgver}-${pkgrel}-x86_64.pkg.tar.zst"
_magelab_zst_url="https://cdn.crabnebula.app/asset/01M0BYQ0VA04WJAZF8CBWTM6PK"
_magelab_zst_sha256='2866f42f5f7b752146260221ef405adf28b093e3c6ea677bd60ceaa47bb29f4a'
_magelab_deb_asset="magelab_${pkgver}_amd64.deb"
_magelab_deb_url="https://cdn.crabnebula.app/asset/01M0BY7ENYWTEHN93RVAHV60X9"
_magelab_deb_sha256='30a9f802983947925ab4f070302b3bbb879fb6afbb7bcae07a4a7e1b955d3e44'

if [[ ${MAGELAB_BUILD_FROM_DEB:-0} != 0 ]]; then
  _magelab_source_type='deb'
  source_x86_64=("${_magelab_deb_asset}::${MAGELAB_DEB_URL:-${_magelab_deb_url}}")
  sha256sums_x86_64=("${MAGELAB_DEB_SHA256:-${_magelab_deb_sha256}}")
else
  _magelab_source_type='pkg'
  source_x86_64=("${_magelab_zst_asset}::${MAGELAB_ZST_URL:-${_magelab_zst_url}}")
  sha256sums_x86_64=("${MAGELAB_ZST_SHA256:-${_magelab_zst_sha256}}")
  noextract=("${_magelab_zst_asset}")
fi

prepare() {
  cd "${srcdir}"
  if [[ "${_magelab_source_type}" == 'deb' ]]; then
    bsdtar -xf "${_magelab_deb_asset}"
  fi
}

package() {
  cd "${srcdir}"

  if [[ "${_magelab_source_type}" == 'pkg' ]]; then
    local pkgroot="${srcdir}/pkgroot"
    rm -rf "${pkgroot}"
    mkdir -p "${pkgroot}"
    bsdtar -xf "${_magelab_zst_asset}" -C "${pkgroot}" \
      --exclude='.PKGINFO' \
      --exclude='.BUILDINFO' \
      --exclude='.MTREE' \
      --exclude='.INSTALL' \
      --exclude='.CHANGELOG'
    cp -a "${pkgroot}/." "${pkgdir}/"
  else
    local data_tar
    data_tar=$(find "${PWD}" -maxdepth 1 -name 'data.tar.*' -print -quit)
    bsdtar -xf "${data_tar}" -C "${pkgdir}"

    install -d "${pkgdir}/usr/lib/${pkgname}"
    mv "${pkgdir}/usr/bin/magelab" "${pkgdir}/usr/lib/${pkgname}/magelab.real"
    ln -s ../magelab/bin "${pkgdir}/usr/lib/${pkgname}/bin"
    install -Dm755 "${pkgdir}/usr/bin/run" "${pkgdir}/usr/lib/${pkgname}/run"

    install -Dm755 /dev/stdin "${pkgdir}/usr/bin/magelab" <<'WRAPPER'
#!/bin/bash
set -uo pipefail
REAL_BIN="/usr/lib/magelab-bin/magelab.real"
APP_BIN_DIR="/usr/lib/magelab-bin"
APP_RES_DIR="/usr/lib/magelab"

export PATH="${APP_BIN_DIR}:${PATH}"
export APPDIR="${APP_RES_DIR}"

if [[ -z "${MAGELAB_ENABLE_DMABUF:-}" ]]; then
  if [[ -n "${WAYLAND_DISPLAY:-}" || "${XDG_SESSION_TYPE:-}" == "wayland" ]]; then
    if [[ -z "${WEBKIT_DISABLE_DMABUF_RENDERER:-}" ]]; then
      export WEBKIT_DISABLE_DMABUF_RENDERER=1
    fi
  fi
fi

if [[ -n "${MAGELAB_SKIP_DMABUF_FALLBACK:-}" || -n "${WEBKIT_DISABLE_DMABUF_RENDERER:-}" ]]; then
  exec -a magelab "${REAL_BIN}" "$@"
fi

if ( exec -a magelab "${REAL_BIN}" "$@" ); then
  exit 0
fi
status=$?

if [[ ${status} -eq 139 && -z "${MAGELAB_DMABUF_RETRY:-}" ]]; then
  export MAGELAB_DMABUF_RETRY=1
  export WEBKIT_DISABLE_DMABUF_RENDERER=1
  exec -a magelab "${REAL_BIN}" "$@"
fi

exit ${status}
WRAPPER
  fi

  install -Dm644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}