calculix-ccx
maintainer mauritiusdadd
· 29 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The source URLs are hosted on the project maintainer's personal domain (dhondt.de), which is not a standard forge but is the official source for CalculiX; the tarballs are the project's own source code, built locally, and the checksums are verified, so the risk is low despite the non-whitelisted host.
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 source URLs are hosted on the project maintainer's personal domain (dhondt.de), which is not a standard forge but is the official source for CalculiX; the tarballs are the project's own source code, built locally, and the checksums are verified, so the risk is low despite the non-whitelisted host.
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:26
"http://www.dhondt.de/ccx_${pkgver}.src.tar.bz2"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Maurizio D'Addona <mauritiusdadd@gmail.com>
2
# Contributor: Sven Niese <Fd3querm@yahoo.de>
3
# Contributor: Daniel Murphy <mosquitogang201@gmail.com>
4
5
# NOTE: If build fails try to add the option "!makeflags" to options array
6
# !buildflags is needed in order to compile the code
7
8
pkgname=calculix-ccx
9
pkgver=2.23
10
pkgrel=1
11
provides=('calculix')
12
replaces=('calculix')
13
conflicts=('calculix')
14
pkgdesc="CalculiX: 3D Structural Finite Element Program - Solver"
15
arch=('i686' 'x86_64')
16
options=(!buildflags)
17
url="http://www.calculix.de/"
18
license=('GPL2')
19
depends=('arpack' 'spooles' 'blas')
20
optdepends=('calculix-doc: documentation and examples'
21
'tetgen: for tet meshing')
22
makedepends=('gcc-fortran' 'perl')
23
checkdepends=('perl')
24
25
source=(
26
"http://www.dhondt.de/ccx_${pkgver}.src.tar.bz2"
27
"http://www.dhondt.de/ccx_${pkgver}.test.tar.bz2"
28
"http://www.dhondt.de/ccx_${pkgver}.fluidtest.tar.bz2"
29
"http://www.dhondt.de/ccx_${pkgver}.structest.tar.bz2"
30
)
31
32
sha256sums=('9c88385c10fb04f5dc6c4e98027a51bebdd8aee3920e05190d6c1dd08357d6e7'
33
'be2259fd9a7b990d0453b30708e1b05f2cd4b6df4a90fa96f0e4abd1ae7beaa0'
34
'db8b1361b89e357266d1dcebc071b3fd9fd37b83b4b7bb6f4a0f99b1759fbe80'
35
'3407b2ce1366df62b1ab43a21ea76ff54386b8842e6cd8660fd9047526be5dec')
36
#
37
# NOTE: remove -Wno-implicit when code is fixed by upstream
38
# idem for -Wno-return-mismatch
39
#
40
build()
41
{
42
cd "${srcdir}/CalculiX/ccx_${pkgver}/src"
43
make CFLAGS="${CFLAGS} -Wno-return-mismatch -Wno-implicit -O2 -fopenmp \
44
-I /usr/include/spooles \
45
-DARCH=\"Linux\" -DSPOOLES -DARPACK -DMATRIXSTORAGE \
46
-DNETWORKOUT -DUSE_MT=1" \
47
FFLAGS='-Wall -O2 -cpp -fopenmp -fpic -fallow-argument-mismatch' \
48
LIBS='-lpthread -lm -lc -lspooles -larpack -lblas -llapack -lgomp'
49
}
50
51
check()
52
{
53
tests=('beamp' 'ball' 'pipe' 'pipe2' 'planestress'
54
'gap' 'gap2' 'capacitor' 'carbonseal' 'beamptied1'
55
'beamp1rotate' 'beamp2' 'beamp2rotate' 'beamf' 'beamhf'
56
'furnace' 'gaspipe1' 'gaspipe1-oil' 'gaspipe2'
57
'gaspipe3' 'gaspipe4' 'gaspipe5' 'gaspipe6' 'gaspipe7'
58
'gaspipe8' 'gaspipe-cfd-pressure' 'gaspipe8-cfd-pressure'
59
'gaspipe8-cfd-massflow' 'gaspipe8-cfd-pressure'
60
'gaspipe8-cfd-pressure-split' 'green1' 'green2' 'green3'
61
'green4' 'hinge' 'hueeber1' 'hueeber2' 'induction' 'induction2'
62
'inistrain' 'largerot1' 'linearnet' 'mass1' 'mass2' 'mass3'
63
'massflow_percent_ccx' 'membrane1' 'metalforming' 'modelchel'
64
'networkmpc' 'oneel' 'pendel' 'resstress1'
65
'restrictor' 'segment' 'sensitivity_I' 'shell1'
66
'shellbeam' 'shellf' 'simplebeam' 'spring1' 'spring2'
67
'small_pressure_gradient' 'square' 'substructure' 'swing'
68
'thermomech' 'transition' 'truss' 'vortex1' 'wire')
69
70
msg "Testing solver..."
71
cd ${srcdir}/CalculiX/ccx_${pkgver}/test
72
73
error_status=0
74
start_time="$(date -u +%s)"
75
for test_name in "${tests[@]}" ; do
76
ref_file=${test_name}.dat.ref
77
dat_file=${test_name}.dat
78
frd_file=${test_name}.frd
79
log_file=${test_name}.log
80
81
msg2 "testing ${test_name}"
82
rm -f ${dat_file}
83
rm -f ${frd_file}
84
85
# Testing on maximum 4 cores
86
OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\
87
warning "check $(pwd)/${log_file}"
88
89
if [ ! -f ${dat_file} ]; then
90
warning "${dat_file} does not exist"
91
error_status=1
92
fi
93
94
sum1="$(wc -l ${dat_file})"
95
sum2="$(wc -l ${ref_file})"
96
if [ ${sum1%* *} != ${sum2%* *} ]; then
97
warning "The data file generated by ccx is not valid"
98
error_status=1
99
fi
100
101
if grep "NaN" ${dat_file} ; then
102
warning "${dat_file} contains NaNs!"
103
error_status=1
104
fi
105
106
if ! ./datcheck.pl ${test_name} ; then
107
warning "Result is inconsistent with reference data!"
108
error_status=1
109
fi
110
done
111
112
cd ${srcdir}/CalculiX/ccx_${pkgver}/fluidtest
113
for test_name in ./*.inp ; do
114
msg2 "testing ${test_name}"
115
OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\
116
error_status=1 warning "check $(pwd)/${log_file}"
117
done
118
119
cd ${srcdir}/CalculiX/ccx_${pkgver}/structest
120
for test_name in ./*.inp ; do
121
msg2 "testing ${test_name}"
122
OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\
123
error_status=1 warning "check $(pwd)/${log_file}"
124
done
125
end_time="$(date -u +%s)"
126
elapsed="$(($end_time-$start_time))"
127
128
msg "Total of $elapsed seconds elapsed for tesing"
129
130
return $error_status
131
}
132
133
package()
134
{
135
install -d ${pkgdir}/usr/bin
136
install -Dm755 ${srcdir}/CalculiX/ccx_${pkgver}/src/ccx_${pkgver} ${pkgdir}/usr/bin/ccx
137
}
138
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 |