summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: d263d127bdf7109f3833e8cb7d0fddbcef9d2306 (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
# Maintainer: sukanka <su975853527 at gmail dot com>
# Contributor: zxp19821005 <zxp19821005 at 163 dot com>
pkgname=cherry-studio
_pkgname="Cherry Studio"
pkgver=1.3.5
_electron=electron35
pkgrel=1
pkgdesc="A desktop client that supports for multiple LLM providers.(Use system-wide electron)"
arch=('x86_64')
url="https://cherry-ai.com/"
_ghurl="https://github.com/CherryHQ/cherry-studio"
license=('MIT')
depends=(
    "${_electron}"
)
makedepends=(
    'gendesk'
    'npm'
    'yarn'
    'jq'
    'moreutils'
    'python'
    'python-setuptools'
)
optdepends=(
    'ollama: use local LLM server'
)
source=(
    "${pkgname}-${pkgver}.tar.gz::${_ghurl}/archive/refs/tags/v${pkgver}.tar.gz"
    "${pkgname}.sh"
)
sha256sums=('d50374af86193b6b9d206bfc35c9ce1639edec784fdb51e48b07061cce9bf223'
            '44a824951155af10ff8d683a0856249c2033a195b9ba04cb5bb8dcfdff4ca463')

prepare() {
    sed -e "s|__ELECTRON__|${_electron}|g" -i "${srcdir}/${pkgname}.sh"

    gendesk -q -f -n --pkgname="${pkgname}" --pkgdesc="${pkgdesc}" \
        --categories="Utility" --name="${_pkgname}" --exec="${pkgname} %U" \
        --custom="StartupWMClass=${_pkgname/ /}"
    cd "${srcdir}/${pkgname}-${pkgver}"
    local electronDist="/usr/lib/${_electron}"
    local electronVersion="$(<$electronDist/version)"
    jq ".devDependencies.electron = \"$electronVersion\"" package.json |
        jq ".build.electronDist = \"$electronDist\"" |
        jq ".build.electronVersion = \"$electronVersion\"" |
        sponge package.json

    # fix for electron35+, electron36 gives the following error:
    # /src/renderer/src/pages/home/Inputbar/Inputbar.tsx(563,20): \
    # error TS2339: Property 'path' does not exist on type 'File'.
    jq '.resolutions."node-abi"="^4.8.0"' package.json | sponge package.json

    #  no auto update
    sed -i package.json -e "s|electron-builder --dir|& --p never|g"

}
build() {
    cd "${srcdir}/${pkgname}-${pkgver}"
    export HOME=${srcdir}
    export ELECTRON_SKIP_BINARY_DOWNLOAD=1
    export TMPDIR=${srcdir}
    yarn install
    export NODE_ENV=production
    # skip download node headers
    export npm_config_nodedir=/usr/include/
    yarn run build:unpack
}
package() {

    install -Dm755 "${pkgname}.sh" "${pkgdir}/usr/bin/${pkgname}"
    install -Dm644 "${pkgname}.desktop" -t "${pkgdir}/usr/share/applications"

    cd "${srcdir}/${pkgname}-${pkgver}"
    install -Dm644 "dist/linux-unpacked"/resources/app.asar -t "${pkgdir}/usr/lib/${pkgname}"
    cp -Pr --no-preserve=ownership "dist/linux-unpacked"/resources/app.asar.unpacked "${pkgdir}/usr/lib/${pkgname}"
    install -Dm644 "build/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname}.png"
    install -Dm644 "LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"

    for f in build/icons/*; do
        res="${f##*/}"
        res="${res%.png}"
        install -Dm644 "$f" "${pkgdir}/usr/share/icons/hicolor/${res}/apps/${pkgname}.png"
    done
}