fluidx3d
maintainer krant
· 1 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads STL model files from thingiverse.com, a non-whitelisted host, but these are static 3D mesh files used as simulation assets, not executable code; the primary source is from GitHub, and the build process only compiles the project's own code, posing no realistic supply-chain risk.
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 STL model files from thingiverse.com, a non-whitelisted host, but these are static 3D mesh files used as simulation assets, not executable code; the primary source is from GitHub, and the build process only compiles the project's own code, posing no realistic supply-chain risk.
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:14
"https://cdn.thingiverse.com/assets/92/f0/54/ba/e0/concord_cut_large.stl"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: krant <aleksey.vasilenko@gmail.com>
2
3
pkgname=fluidx3d
4
pkgver=3.7
5
pkgrel=1
6
pkgdesc="The fastest and most memory efficient lattice Boltzmann CFD software, using OpenCL"
7
arch=('x86_64' 'aarch64')
8
url="https://github.com/ProjectPhysX/FluidX3D"
9
license=('custom' 'CCPL:by-nc')
10
depends=('ocl-icd' 'libxrandr')
11
makedepends=('opencl-clhpp' 'ninja')
12
options=(!debug)
13
source=("https://github.com/ProjectPhysX/FluidX3D/archive/refs/tags/v$pkgver.tar.gz"
14
"https://cdn.thingiverse.com/assets/92/f0/54/ba/e0/concord_cut_large.stl"
15
"https://cdn.thingiverse.com/assets/0b/5c/e5/f3/f0/techtris_airplane.stl"
16
"https://cdn.thingiverse.com/assets/49/65/42/33/0f/X-Wing.stl"
17
"DWG_Tie_Fighter_Assembled_02.stl::https://cdn.thingiverse.com/assets/f0/3c/64/c7/f5/DWG_Tie_Fighter_Assembled_02.STL"
18
"https://cdn.thingiverse.com/assets/1d/89/dd/cb/fd/FAN_Solid_Bottom.stl"
19
"https://cdn.thingiverse.com/assets/e6/85/cf/21/70/edf_v391.stl"
20
"https://cdn.thingiverse.com/assets/51/31/ed/84/b0/edf_v39.stl"
21
"https://cdn.thingiverse.com/assets/90/2a/a5/12/ce/Cow_t.stl"
22
"https://cdn.thingiverse.com/assets/6d/23/28/24/ea/Full_Shuttle.stl"
23
"https://cdn.thingiverse.com/assets/b8/99/d7/5d/2c/StarShipV2.stl"
24
)
25
26
sha256sums=('457b16f7bec74259594214ae1e44055f181e96b4db876149cbcfdb627a63600a'
27
'db5605f435973c556302124e98ce45dc411ca6a3f71131df37f44ee61f28c9bb'
28
'e8fe5827330bc2adfd5161e42c9d5fd6850d909f7581e0d252e30e3dd623f93d'
29
'47c1c261e0db21faa300574247b646e1886ad4b69932b6e066cd7bf9911da33a'
30
'037a6f8826d6c7c3e96b040bce16485096143ef68c4c25b883ea693c6fdfbb18'
31
'6a7ee3e07ce12bad3d94ab8e109ac95d18026f2259131ed5647da7bd563cd344'
32
'b1e8368224cbb3a92c641b0c19274b152346d8323bbd2ea6f9fe7091bc6e91d0'
33
'348438cf93e06ab539a829584d50e29886f2b430c139c751b9297a0cf684f5fa'
34
'1bd05d2986eb96e2080672a241949a35a6e04bfffcbf4cec18bcad74bb695522'
35
'7503e0ceb5f6d8436b8c3f10e7104ad0433f84a7402e75ff66409eec790d86fd'
36
'00372e3473616e747fe7980170776477ff0eaa265aa1b859c0afe66e85ad43d4'
37
)
38
39
fluid_src=FluidX3D-$pkgver/src
40
41
prepare_sample() {
42
NAME=${1// /-}
43
cp -r $fluid_src $NAME
44
sed -i "/$1/c\void main_setup() {" $NAME/setup.cpp
45
46
OBJS=
47
for f in 'info' 'lbm' 'main' 'setup' 'graphics'; do
48
OBJ=$NAME/$f.o
49
OBJS="$OBJS $OBJ"
50
echo "build $OBJ: cxx $NAME/$f.cpp" >> samples.ninja
51
DEFS=
52
for d in $2; do
53
DEFS="$DEFS -D$d"
54
done
55
echo " defs =$DEFS" >> samples.ninja
56
done
57
echo "build bin/FluidX3D-$NAME: link $OBJS $fluid_src/kernel.o $fluid_src/lodepng.o $fluid_src/shapes.o" >> samples.ninja
58
}
59
60
fix_stl_path() {
61
sed -i 's/get_exe_path()+"..\/stl\/'$1'.stl/"\/usr\/share\/FluidX3D\/'$1'.stl/' src/setup.cpp
62
}
63
64
prepare() {
65
cd FluidX3D-$pkgver
66
67
rm -rf src/{OpenCL,X11}
68
sed -i 's|X11/include/||g' src/graphics.cpp
69
sed -i "/define FP16S/d" src/defines.hpp
70
sed -i "/define D3Q19/d" src/defines.hpp
71
sed -i "/define BENCHMARK/d" src/defines.hpp
72
sed -i "/lbm.write_status/d" src/setup.cpp
73
74
fix_stl_path concord_cut_large
75
fix_stl_path techtris_airplane
76
fix_stl_path X-Wing
77
fix_stl_path DWG_Tie_Fighter_Assembled_02
78
fix_stl_path FAN_Solid_Bottom
79
fix_stl_path edf_v391
80
fix_stl_path edf_v39
81
fix_stl_path Cow_t
82
fix_stl_path Full_Shuttle
83
fix_stl_path StarShipV2
84
sed -i 's/get_exe_path()+"..\/skybox\/skybox8k.png/"\/usr\/share\/FluidX3D\/skybox8k.png/' src/lbm.hpp
85
86
cd ..
87
88
rm -f samples.ninja
89
prepare_sample "Benchmark-FP32-FP16C" "BENCHMARK D3Q19 FP16C"
90
prepare_sample "Benchmark-FP32-FP16S" "BENCHMARK D3Q19 FP16S"
91
prepare_sample "Benchmark-FP32-FP32" "BENCHMARK D3Q19"
92
prepare_sample "3D Taylor-Green vortices" "D3Q19 FP16S"
93
prepare_sample "2D Taylor-Green vortices" "D2Q9 FP16S"
94
prepare_sample "cylinder in rectangular duct" "D3Q19 FP16S VOLUME_FORCE"
95
prepare_sample "Taylor-Couette flow" "D3Q19 FP16S MOVING_BOUNDARIES"
96
prepare_sample "lid-driven cavity" "D3Q19 FP16S MOVING_BOUNDARIES"
97
prepare_sample "2D Karman vortex street" "D2Q9 FP16S EQUILIBRIUM_BOUNDARIES"
98
prepare_sample "particle test" "D3Q19 FP16S VOLUME_FORCE FORCE_FIELD MOVING_BOUNDARIES PARTICLES"
99
prepare_sample "delta wing" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
100
#prepare_sample "NASA Common Research Model" "D3Q19 FP16C EQUILIBRIUM_BOUNDARIES SUBGRID"
101
prepare_sample "Concorde" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
102
prepare_sample "Boeing 747" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
103
prepare_sample "Star Wars X-wing" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
104
prepare_sample "Star Wars TIE fighter" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
105
prepare_sample "radial fan" "D3Q19 FP16S MOVING_BOUNDARIES SUBGRID"
106
prepare_sample "electric ducted fan" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES MOVING_BOUNDARIES SUBGRID"
107
prepare_sample "aerodynamics of a cow" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
108
prepare_sample "Space Shuttle" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
109
prepare_sample "Starship" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES SUBGRID"
110
#prepare_sample "Ahmed body" "D3Q19 FP16C FORCE_FIELD EQUILIBRIUM_BOUNDARIES SUBGRID"
111
#prepare_sample "Cessna 172 propeller aircraft" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES MOVING_BOUNDARIES SUBGRID"
112
#prepare_sample "Bell 222 helicopter" "D3Q19 FP16C EQUILIBRIUM_BOUNDARIES MOVING_BOUNDARIES SUBGRID"
113
#prepare_sample "Mercedes F1 W14 car" "D3Q19 FP16S EQUILIBRIUM_BOUNDARIES MOVING_BOUNDARIES SUBGRID"
114
prepare_sample "hydraulic jump" "D3Q19 FP16S VOLUME_FORCE EQUILIBRIUM_BOUNDARIES MOVING_BOUNDARIES SURFACE SUBGRID"
115
prepare_sample "dam break" "D3Q19 FP16S VOLUME_FORCE SURFACE"
116
prepare_sample "liquid metal on a speaker" "D3Q19 FP16S VOLUME_FORCE MOVING_BOUNDARIES SURFACE"
117
prepare_sample "breaking waves on beach" "D3Q19 FP16S VOLUME_FORCE EQUILIBRIUM_BOUNDARIES SURFACE"
118
prepare_sample "river" "D3Q19 FP16S VOLUME_FORCE SURFACE"
119
prepare_sample "raindrop impact" "D3Q19 FP16C VOLUME_FORCE EQUILIBRIUM_BOUNDARIES SURFACE"
120
prepare_sample "bursting bubble" "D3Q19 FP16C VOLUME_FORCE SURFACE"
121
prepare_sample "cube with changing gravity" "D3Q19 FP16S VOLUME_FORCE SURFACE"
122
prepare_sample "periodic faucet mass conservation test" "D3Q19 FP16S VOLUME_FORCE SURFACE"
123
prepare_sample "two colliding droplets in force field" "D3Q19 FP16S VOLUME_FORCE FORCE_FIELD SURFACE"
124
prepare_sample "Rayleigh-Benard convection" "D3Q19 FP16S TEMPERATURE"
125
prepare_sample "thermal convection" "D3Q19 FP16S TEMPERATURE"
126
}
127
128
build() {
129
cat >build.ninja <<EOF
130
rule cxx
131
command = g++ \$defs -DINTERACTIVE_GRAPHICS $CXXFLAGS -c \$in -o \$out
132
rule link
133
command = g++ -lOpenCL -lX11 -lXrandr $CXXFLAGS $LDFLAGS \$in -o \$out
134
build $fluid_src/kernel.o: cxx $fluid_src/kernel.cpp
135
build $fluid_src/lodepng.o: cxx $fluid_src/lodepng.cpp
136
build $fluid_src/shapes.o: cxx $fluid_src/shapes.cpp
137
include samples.ninja
138
EOF
139
140
ninja
141
}
142
143
package() {
144
mkdir -p "$pkgdir/usr/bin"
145
cp bin/* "$pkgdir/usr/bin"
146
147
mkdir -p "$pkgdir/usr/share/FluidX3D"
148
cp *.stl "$pkgdir/usr/share/FluidX3D"
149
cp FluidX3D-$pkgver/skybox/skybox8k.png "$pkgdir/usr/share/FluidX3D"
150
151
install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 FluidX3D-$pkgver/LICENSE.md
152
}
153
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 |