summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 0caeec9086e93301ba3536080eb5df41e536a952 (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
# Maintainer: Rongbo Wu <wurongbo2012@hotmail.com>
pkgname=nocodb
pkgver=0.264.1
pkgrel=1
pkgdesc="A no-code database platform that allows teams to collaborate and build processes with ease of a familiar and intuitive spreadsheet interface."
arch=('x86_64' 'aarch64')
url="https://nocodb.com"
license=('AGPL-3.0-or-later')
depends=('nodejs>=20.0.1')
makedepends=('pnpm'
    'node-gyp'
    'python'
    'libvips'
)
optdepends=('postgresql: recommended database'
    'litestream'
    'dasel: read litestream config'
    'mariadb-server'
    'redis'
)

backup=("usr/lib/systemd/system/nocodb.service")
source=(
    "git+https://github.com/nocodb/nocodb.git#tag=${pkgver}"
    "nocodb.service"
    "nocodb.install"
)
sha256sums=('SKIP'
            '6cf8d416e52a2183901cf48a00f8847cd8da7097f203a3ced5266e8f6c50f6b5'
            'f6f2c9c594a6b416fb7cf9e6bb1173236076764f42850ca3f0f66e61201ffa69')
options=('!debug' '!strip')

prepare() {
    export NODE_OPTIONS="--max_old_space_size=16384"
    export NODE_ENV=production
    cd ${srcdir}/nocodb
    pnpm --filter=nocodb-sdk install && pnpm --filter=nocodb-sdk run build
    pnpm --filter=nocodb --filter=nc-gui --filter=playwright install
}

build() {
    export NODE_OPTIONS="--max_old_space_size=16384"
    export NUXT_TELEMETRY_DISABLED=1

    rm -rf ${srcdir}/app
    cp -r ${srcdir}/nocodb ${srcdir}/app && cd ${srcdir}/app
    pnpm run integrations:build && pnpm run registerIntegrations ##comment this if pkgver<=0.262
    pnpm --filter=nc-gui run build:copy
    pnpm --filter=nocodb run docker:build
    ## only ship nocodb workspace prod deps with node_modules (1.9GB -> 400MB)
    rm -rf node_modules ./packages/nocodb/node_modules
    echo "node-linker=hoist" >>.npmrc
    pnpm install \
        --prefer-offline \
        --prod \
        --ignore-scripts \
        --filter=nocodb \
        --frozen-lockfile
    # nodejs 22.11.0 -> 22.12.0 broke pnpm rebuild somehow, so let's do it manaully
    for package in $(find -L packages/nocodb/node_modules -name binding.gyp -type f); do
        cd "$(dirname "$package")"
        node-gyp rebuild
        cd -
    done
}

package() {
    install -Dm644 nocodb.service ${pkgdir}/usr/lib/systemd/system/nocodb.service
    install -dm755 ${pkgdir}/var/lib/nocodb

    cd ${srcdir}/app/packages/nocodb
    install -Dm755 docker/start-litestream.sh ${pkgdir}/usr/bin/nocodb
    install -Dm644 docker/litestream.yml ${pkgdir}/etc/litestream.yml
    install -Dm644 docker/main.js ${pkgdir}/usr/share/nocodb/packages/nocodb/docker/main.js
    install -Dm644 package.json ${pkgdir}/usr/share/nocodb/packages/nocodb/package.json
    cp -r src/public ${pkgdir}/usr/share/nocodb/packages/nocodb/docker/
    cp -r node_modules ${pkgdir}/usr/share/nocodb/packages/nocodb/node_modules
    cp -r ${srcdir}/app/node_modules ${pkgdir}/usr/share/nocodb/node_modules
    cp -r ${srcdir}/app/packages/nocodb-sdk ${pkgdir}/usr/share/nocodb/packages/
}

install=nocodb.install