cadcraft-studio

LOW
maintainer alerque 0 votes scanned 2026-10-19 09:25:06.082550
View on AUR
Why flagged

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

PKGBUILD

1# Maintainer: Caleb Maclennan <caleb@alerque.com>
2
3pkgname=cadcraft-studio
4pkgver=0.6.0
5pkgrel=1
6url="https://getcadcraft.com/studio"
7_url="https://github.com/getcadcraft"
8pkgdesc='Every CadCraft app in one desktop install, on one license'
9arch=(x86_64)
10license=(Apache-2.0)
11depends=(alsa-lib
12 cairo
13 dbus
14 gdk-pixbuf2
15 glib2
16 glibc # libc.so libm.so
17 gtk3
18 hicolor-icon-theme
19 libgcc
20 libstdc++
21 libsoup3
22 openssl
23 pango
24 shared-mime-info
25 webkit2gtk-4.1)
26makedepends=(cargo
27 clang
28 cmake
29 git
30 nodejs
31 php
32 python-pillow)
33options=(!lto)
34_apps=(cadcraft
35 bimcraft
36 civilcraft
37 detailcraft
38 markupcraft
39 modelcraft
40 partcraft
41 takeoffcraft)
42_appver=0.4.0
43_build=0.4
44_studio=57640c4a050843d44abf6abf694ed7543b5a5065
45_shell=d132555bd0bc191c8045eefa12ccd4a8dad6ce02
46source=(studio::git+$_url/studio#commit=$_studio
47 desktop-shell::git+$_url/desktop-shell#commit=$_shell
48 site-bootstrap.php
49 site-edition.php
50 $pkgname.desktop)
51for _a in "${_apps[@]}"; do
52 source+=("$pkgname-$_a-$_appver.tar.gz::$_url/$_a/archive/refs/tags/$_a-v$_appver.tar.gz")
53done
54sha256sums=('2bdc69d33cacb8297517454d232c3a48d9fba4d2058d699bd41dd3809d0b09e9'
55 '33b463e05ce1e02eff8f5c57b6fb65741c7bf8c3e2585bb5b254335864e99b3c'
56 'b571def5924d57801bd2225b0e57667ae805e669ced070d6ae571c14c24b2dfb'
57 'c4347169c28ae2205218df6ca3d1d8761a27e9fcd9a8775a51442c6259cb5dc7'
58 '6d078b7f042dbe7ca89c42021b39339d4e8c5d2f9baf9dbc13accf0642d9db4f'
59 '427b4b165544d9a299ddc1cd886a2d714a1082d08727c7e433a2e843fd6a4569'
60 '9683fb3bc45baba6cf7f570d41703ee0432d0d07e5c83c489b86076cfa66f09b'
61 'd4dd8f8e939c99763217f6cc23b2c605f3377aa413a8227de43db479c23244dd'
62 '11c32ac84230c008e45199a1857fd68274849f55d38f4ef06972f7cf69ad642a'
63 'a9b274dfc3cd8b03ad4cfd2e8731d35bd7c0be7eef2447f61084c30a6e139ebd'
64 '6559d2e6e7f78a1de97a499074b629a778944f73bc76cf4f107f5238ad635c92'
65 'ea4a2e11b481695e272c99f4bda81af17c8706a329d1732a4801d7acc54c4a91'
66 'a8124d6ca0be3ec778da3006240419461a4612ce95adc1dc6f5c72466c810d57')
67
68_srcenv() {
69 cd "${1:-$srcdir/desktop-shell}"
70 export CARGO_HOME="$srcdir"
71 export CARGO_PROFILE_RELEASE_DEBUG=2
72 export CARGO_PROFILE_RELEASE_STRIP=false
73 export CARGO_PROFILE_RELEASE_LTO=thin
74 export CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1
75 export CARGO_PROFILE_RELEASE_OPT_LEVEL=3
76 export CARGO_TARGET_DIR=target
77 export RUSTUP_TOOLCHAIN=stable
78 export PATH="$srcdir/.cargo/bin:$PATH"
79 RUSTFLAGS+=" --remap-path-prefix $PWD=/"
80}
81
82_site() {
83 local site="$srcdir/site" app="$srcdir/cadcraft-cadcraft-v$_appver"
84 install -d "$site"/{bin,devshell} \
85 "$site/public_html/core/classes" \
86 "$site/public_html/core/components" \
87 "$site/public_html/assets/js" \
88 "$site/public_html/assets/lang"
89 # A real copy: bootstrap.php reads dirname(__DIR__) for CC_PUBLIC, which must resolve inside the site.
90 rm -f "$site/public_html/core/bootstrap.php" "$site/devshell/edition.php"
91 cp "$srcdir/site-bootstrap.php" "$site/public_html/core/bootstrap.php"
92 cp "$srcdir/site-edition.php" "$site/devshell/edition.php"
93 ln -sf "$app/devshell/render.php" "$site/devshell/render.php"
94 ln -sf "$app/devshell/stubs.php" "$site/devshell/stubs.php"
95 ln -sf "$app/devshell/site/core/classes/Lang.php" "$site/public_html/core/classes/Lang.php"
96 ln -sf "$app/devshell/site/core/components/app-settings.inc" "$site/public_html/core/components/app-settings.inc"
97 ln -sf "$app/devshell/site/assets/lang/shell" "$site/public_html/assets/lang/shell"
98 ln -sf "$app/devshell/site/assets/js/i18n.js" "$site/public_html/assets/js/i18n.js"
99 ln -sf "$app/web/v$_build/assets/apps/cadcraft/$_build/host.js" "$site/public_html/assets/js/host.js"
100}
101
102_shelljson() {
103 local root="$1"
104 node - "$root" <<-'JS'
105 const fs = require('fs'), path = require('path');
106 const root = process.argv[2];
107 let headers = {};
108 const apps = path.join(root, 'apps');
109 if (fs.existsSync(apps)) {
110 for (const a of fs.readdirSync(apps)) {
111 const d = path.join(apps, a, 'assets/apps', a);
112 if (!fs.existsSync(d) || !fs.statSync(d).isDirectory()) continue;
113 for (const v of fs.readdirSync(d)) {
114 const m = path.join(d, v, 'manifest.json');
115 if (!fs.existsSync(m)) continue;
116 try {
117 const iso = JSON.parse(fs.readFileSync(m, 'utf8')).isolate;
118 if (iso) headers = { 'Cross-Origin-Opener-Policy': 'same-origin', 'Cross-Origin-Embedder-Policy': iso };
119 } catch (e) {}
120 }
121 }
122 }
123 const rel = fs.existsSync(path.join(root, 'release.json'))
124 ? JSON.parse(fs.readFileSync(path.join(root, 'release.json'), 'utf8'))
125 : {};
126 process.stdout.write(JSON.stringify({ app: 'studio', name: rel.name || 'CadCraft Studio', version: String(rel.build || '0.4'), headers, suite: true }, null, 2) + '\n');
127 JS
128}
129
130_icon() {
131 python3 "$srcdir/desktop-shell/make-icon.py" studio icon.png
132 install -d icons
133 python3 - icon.png icons <<-'PY'
134 import os, sys
135 from PIL import Image
136 img = Image.open(sys.argv[1])
137 for s in (16, 24, 32, 48, 64, 128, 256, 512):
138 img.resize((s, s), Image.LANCZOS).save(os.path.join(sys.argv[2], f'{s}x{s}.png'))
139 PY
140}
141
142prepare() {
143 local slug
144 for slug in "${_apps[@]}"; do
145 install -d "editions/$slug/browser-edition"
146 rm -rf "editions/$slug/browser-edition/v$_build"
147 cp -a "$slug-$slug-v$_appver/web/v$_build" "editions/$slug/browser-edition/v$_build"
148 done
149 for slug in "${_apps[@]}"; do
150 install -d "builds/$slug"
151 ln -sf "$srcdir/$slug-$slug-v$_appver/app" "builds/$slug/$_build"
152 ln -sf "$srcdir/$slug-$slug-v$_appver/devshell" "builds/$slug/devshell"
153 done
154 _site
155 _srcenv "$srcdir/desktop-shell/src-tauri"
156 cargo fetch --locked --target host-tuple
157}
158
159build() {
160 CADCRAFT_SITE="$srcdir/site" \
161 CADCRAFT_APPS="$srcdir/builds" \
162 CADCRAFT_EDITIONS="$srcdir/editions" \
163 node "$srcdir/studio/pack/suite.mjs" --build "$_build" --editions "$srcdir/editions" --out "$srcdir/out" --allow-gate
164 _shelljson "$srcdir/out/studio-suite/v$_build" > "$srcdir/shell.json"
165 _icon
166 _srcenv "$srcdir/desktop-shell"
167 node licenses.mjs --target x86_64-unknown-linux-gnu --out THIRD_PARTY.md
168 _srcenv "$srcdir/desktop-shell/src-tauri"
169 TAURI_CONFIG="$_tauriconf" cargo build --frozen --release --features tauri/custom-protocol
170}
171
172package() {
173 depends+=(libasound.so libcairo.so libdbus-1.so libgcc_s.so
174 libgdk-3.so libgdk_pixbuf-2.0.so libgtk-3.so libwebkit2gtk-4.1.so
175 libgio-2.0.so libglib-2.0.so libgobject-2.0.so libjavascriptcoregtk-4.1.so libsoup-3.0.so)
176 local root="$pkgdir/usr/lib/$pkgname"
177 install -Dm0755 "$srcdir/desktop-shell/src-tauri/target/release/cadcraft-desktop" "$pkgdir/usr/bin/$pkgname"
178 install -d "$root"
179 cp -a "$srcdir/out/studio-suite/v$_build" "$root/app"
180 rm -f "$root/app/.htaccess" "$root/app/web.config"
181 install -Dm0644 "$srcdir/shell.json" "$root/shell.json"
182 install -Dm0644 -t "$root/" "$srcdir/desktop-shell/THIRD_PARTY.md" "$srcdir/desktop-shell/LICENSE"
183 install -Dm0644 -t "$pkgdir/usr/share/applications/" "$srcdir/$pkgname.desktop"
184 install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" "$srcdir/desktop-shell/LICENSE"
185 # The apps' shared-mime-info definitions for the types the desktop entry declares.
186 local m slug
187 for slug in "${_apps[@]}"; do
188 for m in "$srcdir/$slug-$slug-v$_appver"/linux/flathub/*.mime.xml; do
189 [[ -e $m ]] || continue
190 install -Dm0644 "$m" "$pkgdir/usr/share/mime/packages/$slug.xml"
191 done
192 done
193 local d
194 for d in 16 24 32 48 64 128 256 512; do
195 install -Dm0644 "$srcdir/icons/${d}x${d}.png" "$pkgdir/usr/share/icons/hicolor/${d}x${d}/apps/$pkgname.png"
196 done
197}
198
199_tauriconf='{"productName":"cadcraft-studio","mainBinaryName":"cadcraft-desktop","identifier":"com.getcadcraft.studio","version":"0.4.0"}'
200

Changes since previous scan

--- PKGBUILD @ 2026-10-17 00:21
+++ PKGBUILD @ 2026-10-19 09:25
@@ -1,7 +1,7 @@
# Maintainer: Caleb Maclennan <caleb@alerque.com>
pkgname=cadcraft-studio
-pkgver=0.4.0
+pkgver=0.6.0
pkgrel=1
url="https://getcadcraft.com/studio"
_url="https://github.com/getcadcraft"

Scan history

Scanned at (UTC)SeverityRules
2026-10-19 09:25:06 Low 1
2026-10-17 00:21:55 Clean 2
2026-10-16 13:16:10 Low 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion