calcesara
maintainer sigurd4
· 1 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads a prebuilt installer from the official project host (web.calce.umd.edu), which is plausibly the project's own; building from this source is normal for AUR packages and the installer is unpacked, not executed remotely.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt installer from the official project host (web.calce.umd.edu), which is plausibly the project's own; building from this source is normal for AUR packages and the installer is unpacked, not executed remotely.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:71
"https://web.calce.umd.edu/software/releaseSARA/${pkgver}/${_installer_exe}"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: sigurd4 <sigurd dot spangelo at gmail dot com>
2
# Authors: Prof. Michael Pecht, Dr. Michael Osterman
3
# Contributors: Prof. Abhijit Dasgutpa, Prof. Donald Barker, David Eisner
4
#
5
# ##############################################################################################
6
#
7
# Thank you for your interest in the calceSARA Software.
8
#
9
# Copyright:
10
# Copyright (c) 1987,2020 CALCE and the University of Maryland
11
# All Rights Reserved
12
#
13
# License:
14
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
15
#
16
#The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
17
# Liability:
18
#
19
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
# Contact:
21
#
22
# CALCE, University of Maryland, College Park, MD 20742
23
# calce-software@umd.edu
24
25
# Package name without suffix (-git, -bin, -whatever)
26
_pkgname=calcesara
27
28
DLAGENTS=('https::/usr/bin/curl -k -o %o %u')
29
pkgname="${_pkgname}"
30
pkgver=8.6.6
31
pkgrel=1
32
pkgdesc='Simulation Assisted Reliability Assessment (SARA) Software'
33
arch=('any')
34
url='https://web.calce.umd.edu/software/releaseSARA'
35
license=('LicenseRef-calceSARA')
36
depends=(
37
'wine' # Runs CalceSARA
38
'wine-mono' # .NET framework
39
'bash' # Runs launch script
40
'sed' # Templating
41
'coreutils' # tail and printf are used in launch script for keygen
42
)
43
optdepends=(
44
'winetricks: Installs microsoft fonts locally if missing from system'
45
'ttf-ms-win10-auto: Microsoft fonts'
46
'ttf-liberation: Serif and sans-serif fonts'
47
'ttf-dejavu: Serif and sans-serif fonts'
48
)
49
makedepends=(
50
'curl' # Downloads sources
51
'imagemagick' # Convert icons to png
52
'gendesk' # Generate desktop entries
53
'7zip' # Unzip installer binary
54
)
55
56
# Keyfile-name
57
_keyfile_name='calce.key'
58
59
# Keygen template
60
_keygen_template="${_keyfile_name}.template"
61
62
# Install location folder name.
63
_exe_name="calceSARAv${pkgver}"
64
65
# Installer filename.
66
_installer_exe="install_${_exe_name}.exe"
67
68
source=(
69
"${_keyfile_name}.template"
70
"${_pkgname}.sh.template"
71
"https://web.calce.umd.edu/software/releaseSARA/${pkgver}/${_installer_exe}"
72
)
73
sha256sums=(
74
826670642a9eba219d64063510a8ca33da4a8f2b53717e22c80796bf877e0885
75
f64901f5f5df3bf613b1bf143602380a52469c2a36723b7c5ff6ea95260bca1b
76
5b4cabdc9942978a4473802e2a999a870c911080d3f8b1f365b727631097fd97
77
)
78
79
# If you don't have these font, most text will just render as boxes.
80
# Fonts that are missing from your system will be installed locally in the wine-bottle by winetricks if you have winetricks installed.
81
# See optdepends for relevant packages
82
_fonts=(
83
'arial' # Most important one. Provided by msfonts
84
'arialbd=arial' # Most important one. Provided by msfonts
85
'ariali=arial' # Most important one. Provided by msfonts
86
'arialbi=arial' # Most important one. Provided by msfonts
87
88
'times' # Provided by msfonts
89
'timesbd=times' # Provided by msfonts
90
'timesi=times' # Provided by msfonts
91
'timesbi=times' # Provided by msfonts
92
93
'tahoma' # Provided by msfonts
94
'tahomabd=tahoma' # Provided by msfonts
95
96
'DejaVuSerif|LiberationSerif-Regular=liberation' # Provided by ttf-dejavu or ttf-liberation
97
'DejaVuSerif-Bold|LiberationSerif-Bold=liberation' # Provided by ttf-dejavu or ttf-liberation
98
'DejaVuSerif-Italic|LiberationSerif-Italic=liberation' # Provided by ttf-dejavu or ttf-liberation
99
'DejaVuSerif-BoldItalic|LiberationSerif-BoldItalic=liberation' # Provided by ttf-dejavu or ttf-liberation
100
101
'DejaVuSans|LiberationSans-Regular=liberation' # Provided by ttf-dejavu or ttf-liberation
102
'DejaVuSans-Bold|LiberationSans-Bold=liberation' # Provided by ttf-dejavu or ttf-liberation
103
'DejaVuSans-Oblique|LiberationSans-Italic=liberation' # Provided by ttf-dejavu or ttf-liberation
104
'DejaVuSans-BoldOblique|LiberationSans-BoldItalic=liberation' # Provided by ttf-dejavu or ttf-liberation
105
106
'DejaVuSansMono|LiberationMono-Regular=liberation' # Provided by ttf-dejavu or ttf-liberation
107
'DejaVuSansMono-Bold|LiberationMono-Bold=liberation' # Provided by ttf-dejavu or ttf-liberation
108
'DejaVuSansMono-Oblique|LiberationMono-Italic=liberation' # Provided by ttf-dejavu or ttf-liberation
109
'DejaVuSansMono-BoldOblique|LiberationMono-BoldItalic=liberation' # Provided by ttf-dejavu or ttf-liberation
110
)
111
112
# Found in DecryptInputStream and EncryptOutputStream in calce source code.
113
# Required for keygens because CALCE's official keys are unreliable when running CalceSARA under wine.
114
_keygen_cryptkey=0xD4
115
116
# Runner CLI options.
117
# Each option corresponds to a different CalceSARA application.
118
_options=(
119
'fast'
120
'tce|tcextractor'
121
'docs'
122
'pwa'
123
'wr|whiskerrisk'
124
'updates'
125
)
126
127
# Shortcut names of start-menu entries.
128
# These are needed to launch the different applcations.
129
# Each program is launched from its start-menu shortcut, so these are important.
130
_lnks=(
131
'calceFAST'
132
'calceTCExtractor'
133
'User Documentation'
134
'calcePWA'
135
'calceWhiskerRisk'
136
'Updates'
137
)
138
139
# Shared application data will be stored in /opt
140
# I think that's ok.
141
_shared_data_prefix='/opt'
142
_shared_data_location=${_shared_data_prefix}/${_pkgname}
143
144
prepare() {
145
cd "${srcdir}"
146
147
# Text replacement on launcher template
148
local __option_cases=""
149
local __options_help_list=""
150
for i in ${!_lnks[@]}; do
151
local __option="${_options[i]}"
152
local __lnk="${_lnks[i]}"
153
__option_cases="${__option_cases}\n\t${__option}) lnk=${__lnk};;"
154
__option_help_list="${__option_help_list}\\n\\t- ${__option}"
155
done
156
local __fonts=""
157
for i in ${_fonts[@]}; do
158
__fonts+="\n\t\'${i}\'"
159
done
160
sed -i "s/@keygen_cryptkey@/${_keygen_cryptkey}/g" "${_pkgname}.sh.template"
161
sed -i "s/@pkgver@/${pkgver}/g" "${_pkgname}.sh.template"
162
sed -i "s/@pkgname@/${_pkgname}/g" "${_pkgname}.sh.template"
163
sed -i "s/@exe_name@/${_exe_name}/g" "${_pkgname}.sh.template"
164
sed -i "s/@keyfile_name@/${_keyfile_name}/g" "${_pkgname}.sh.template"
165
sed -i "s#@shared_data_prefix@#${_shared_data_prefix}#g" "${_pkgname}.sh.template"
166
sed -i "s/@option_help_list@/${__option_help_list}/g" "${_pkgname}.sh.template"
167
sed -i "s/@option_cases@/${__option_cases}/g" "${_pkgname}.sh.template"
168
sed -i "s/@fonts@/${__fonts}/g" "${_pkgname}.sh.template"
169
170
cp "${_pkgname}.sh.template" "${_pkgname}.sh"
171
sed -i "s/#@check@/# Good to go!/g" "${_pkgname}.sh.template"
172
sed -i "s/#@check@/exit 0/g" "${_pkgname}.sh"
173
174
# Extracts installer to obtain icon files for desktop entries.
175
7z e "${_installer_exe}" -y
176
}
177
178
# Desktop entry metadata
179
_desk_names=(
180
'calceFAST'
181
'calceTCExtractor'
182
'calceSARA User Documentation'
183
'calcePWA'
184
'calceWhiskerRisk'
185
'calceSARA Updates'
186
)
187
188
build() {
189
cd "${srcdir}"
190
191
local _desk_generic_names=(
192
'Failure Assessment Toolkit'
193
'Temperature Cycle Extraction Module'
194
'User Documentation'
195
'Physical Wiring Assembly Toolbox'
196
'Whisker Risk Calculator'
197
'Updater'
198
)
199
local _desk_comments=(
200
'Failure Assessment Toolkit'
201
'Temperature Cycle Extraction Module'
202
'Documentation for calceSARA'
203
'Physical Wiring Assembly Toolbox'
204
'Whisker Risk Calculator'
205
'Update and validate calceSARA'
206
)
207
208
# Generate desktop entries
209
for i in ${!_lnks[@]}; do
210
local __lnk="${_lnks[i]}"
211
local __desk_name="${_desk_names[i]}"
212
local __desk_generic_name="${_desk_generic_names[i]}"
213
local __desk_comment="${_desk_comments[i]}"
214
local __option="$(echo ${_options[i]} | sed 's/|.*//g')" # Strip aliases
215
216
# Convert icon to png
217
magick "${__lnk}.ico" "${__desk_name}.png"
218
rm "${__lnk}.ico"
219
220
# Generate desktop entry
221
gendesk --pkgname "${_pkgname}" --pkgdesc "${__pkgdesc}" -n --name="${__desk_name}" --genericname="${__desk_generic_name}" --comment="${__desk_comment}" --icon="${__desk_name}" --terminal=false --exec="/usr/bin/${_pkgname} ${__option}" -f
222
mv "${_pkgname}.desktop" "${_pkgname}-${__lnk}.desktop"
223
done
224
}
225
226
check()
227
{
228
cd "${srcdir}"
229
230
bash "${srcdir}/${_pkgname}.sh"
231
}
232
233
package()
234
{
235
cd "${srcdir}"
236
237
# Install License
238
install -Dm644 "${srcdir}/calcelicense.txt" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
239
240
# Install Desktop files
241
for i in ${!_lnks[@]}; do
242
local __lnk="${_lnks[i]}"
243
local __desk_name="${_desk_names[i]}"
244
245
install -Dm644 "${srcdir}/${__desk_name}.png" "${pkgdir}/usr/share/pixmaps/${__desk_name}.png"
246
install -Dm644 "${srcdir}/${_pkgname}-${__lnk}.desktop" "${pkgdir}/usr/share/applications/${_pkgname}-${__lnk}.desktop"
247
done
248
249
# Docs are in the wine-bottle. (for now... not ideal)
250
# Install docs to /usr/share/doc/
251
#install -m755 -d "${pkgdir}/usr/share/doc/${_pkgname}"
252
#cp -r calceSARAHelp/* "${pkgdir}/usr/share/doc/${_pkgname}"
253
254
# Install shared files to /opt/
255
install -Dm755 -d "${pkgdir}${_shared_data_location}"
256
install -Dm644 "${srcdir}/${_keygen_template}" "${pkgdir}${_shared_data_location}/${_keyfile_name}.template"
257
install -Dm644 "${srcdir}/${_installer_exe}" "${pkgdir}${_shared_data_location}/install_${_exe_name}.exe"
258
259
# N/A
260
#install -m644 ChangeLog.txt "${pkgdir}/opt/${_pkgname}"
261
262
# symlink help files
263
#ln -sv "/usr/share/doc/${_pkgname}" "${pkgdir}/opt/${_pkgname}/calceSARAHelp"
264
265
# Install launch script
266
install -Dm755 "${srcdir}/${_pkgname}.sh.template" "${pkgdir}/usr/bin/${_pkgname}"
267
}
268
269
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |