summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 28a0f03b0a766decf71e40cc09cfc5cee42be7c7 (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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# Maintainer: Georg Nagel <g.schlmm at gmail dot com>

_pkgbase=penpot
pkgname=(penpot penpot-exporter penpot-frontend)
pkgver=2.0.2
babashka_version="1.3.189"
pkgrel=3
pkgdesc="The open-source design tool for design and code collaboration "
arch=('x86_64')
url="https://penpot.app"
license=('MPL-2.0')
# penpot is using 19, but archlinux only has 17 and 21. 17 and > 21 doesnt work
# also jdk is needed and not only jre
_jdkver="21"
depends=(
  "java-environment>=${_jdkver}" "java-environment<=${_jdkver}"
  'nodejs'
  'redis'
  'postgresql'
  'imagemagick'
  'poppler'
  'potrace'
  'woff2'
  'fontforge'
  'rlwrap'
  'libwebp'
  'fontconfig'
  'ghostscript'
  'netpbm'
  'potrace'
)
makedepends=('clojure' 'git' 'curl' 'npm' 'rsync')
optdepends=(
  "python-tabulator: for the penbot-manage script"
  "sfnt2woff: for uploading own fonts"
  "chromium: for making the exporter work"
)
source=(
  https://github.com/penpot/penpot/archive/refs/tags/$pkgver.tar.gz
  https://github.com/borkdude/babashka/releases/download/v$babashka_version/babashka-$babashka_version-linux-amd64-static.tar.gz
  sysusers.conf
  penpot.conf.d
  penpot-exporter.conf.d
  penpot.service
  penpot-exporter.service
  penpot.tmpfiles.d
  penpot-update-flags.sh
  nginx.conf
)
noextract=($pkgname-$pkgver.tgz)
sha256sums=(
  '52b3e81d2032055f3d845e2e6db03ba266d159532939e26347ba340f20515337'
  '228e8ccee724ba8d66c66d8672161b991bb00b00e538e7aecd0b902330e5a712'
  '4b82b8a79d8a143fd8a6e4473447f8946c095e2617ba5fcba4cb5b1fdd840c2c'
  'bc133ba7409921978655c488293ef83f77250fd65cb7d574c3cba9f34ff42523'
  '828087c8fab14fb481b4bd01d92f47e9ecc9c07551a7a873bcfbafd1e3644afb'
  'a95f1029cec7cf408cf19cb97cf235c48f671aa93424c138759ee77e239d1c6a'
  '865ac061c90c1f64b60af7f1e36938748e2e2bd45e680b429e41dc9db6892bf8'
  'f3208349de006fc26119cd9b034958bbfa3c161bfb76a752d43d5b563df6e33d'
  'b759994786bcbba553ba50837c8f222760b344319e81655f32ea6e68097ec02a'
  '29f5cde4d5ba6d73b14d6fd88a0be930c6bcf5eff3512332cba50a30316c6621'
)

prepare() {
  # Set CLOJURE_GITLIBS environment variable to define the path for Git libraries
  # export CLOJURE_GITLIBS="$srcdir/clojure-gitlibs"
  mkdir -p $srcdir/bin
  cp "${srcdir}/bb" "${srcdir}/bin/bb"
  chmod +x "${srcdir}/bin/bb"
  export JAVA_HOME="/usr/lib/jvm/java-${_jdkver}-openjdk"
  export PATH=$srcdir/bin:$JAVA_HOME/bin:$PATH
}

build() {
  # build the frontend
  cd "${srcdir}/${_pkgbase}-${pkgver}/frontend"
  # we dont have yarn @ version 4 as package, so use npm
  sed -i s/yarn\ /npm\ / ./scripts/build
  sed -i 's/npm install/npm install --dev/' ./scripts/build
  # add buffer to dependencies?
  sed -i 's/"dependencies": {/"dependencies": {"buffer": "*",/' package.json
  rm -f package-lock.json
  # somehow shadow-cljs is needed but isnt installed (maybe because of not using yarn?)
  npm install --save-dev shadow-cljs
  CURRENT_HASH=$(echo $sha256sums[0] | head -c 7) ./scripts/build $pkgver

  # build the exporter
  cd "${srcdir}/${_pkgbase}-${pkgver}/exporter"
  sed -i s/yarn\ /npm\ / ./scripts/build
  sed -i 's/cp npm.lock target/#/' ./scripts/build
  # patch playwright to use chromium from archlinux
  # so we don't have to install the playwright binaries
  sed -i 's|:args #js|:executablePath "/usr/bin/chromium", :args #js|' src/app/browser.cljs
  ./scripts/build "${pkgver}"
  cd target
  sed -i 's#"packageManager": ".*",#"bin": "./app.js",#' package.json
  sed -i 's#"name": "exporter",#"name": "penpot-exporter",#' package.json
  tar cvf penpot-exporter.tgz .

  # build the backend
  cd "${srcdir}/${_pkgbase}-${pkgver}/backend"
  ./scripts/build "${pkgver}"
  sed -i "2 i JAVA_HOME='$JAVA_HOME'" target/dist/run.sh
  sed -i s#penpot.jar#/usr/share/java/penpot/backend.jar# target/dist/run.sh
}

package_penpot-exporter() {
  npm install -g \
    --cache "${srcdir}/npm-cache" \
    --prefix "${pkgdir}/usr" \
    "${srcdir}/${_pkgbase}-${pkgver}/exporter/target/penpot-exporter.tgz"
  install -Dm644 penpot-exporter.service "${pkgdir}/usr/lib/systemd/system/penpot-exporter.service"
}

package_penpot-frontend() {
  install -dm 755 "${pkgdir}/usr/share/webapps/penpot"
  cp -r "${srcdir}/${_pkgbase}-${pkgver}/frontend/target/dist/"* \
    "${pkgdir}/usr/share/webapps/penpot/"
}

package_penpot() {
  install -Dm644 "${srcdir}/${_pkgbase}-${pkgver}/backend/target/dist/penpot.jar" \
    "${pkgdir}/usr/share/java/penpot/backend.jar"
  install -Dm755 "${srcdir}/${_pkgbase}-${pkgver}/backend/target/dist/run.sh" \
    "${pkgdir}/usr/bin/penpot"
  install -Dm755 "${srcdir}/${_pkgbase}-${pkgver}/backend/target/dist/manage.py" \
    "${pkgdir}/usr/bin/penpot-manage"

  install -Dm755 penpot-update-flags.sh "${pkgdir}/usr/bin/penpot-update-flags.sh"
  install -Dm644 penpot.conf.d "${pkgdir}/etc/conf.d/penpot"
  install -Dm644 penpot.service "${pkgdir}/usr/lib/systemd/system/penpot.service"
  install -Dm644 sysusers.conf "${pkgdir}/usr/lib/sysusers.d/penpot.conf"
  install -Dm644 penpot.tmpfiles.d "${pkgdir}/usr/lib/tmpfiles.d/penpot.conf"
  install -Dm644 nginx.conf "${pkgdir}/usr/share/penpot/nginx.conf"
}