|
1 | 1 | #!/bin/false |
2 | 2 |
|
3 | 3 | gmsh_version=4.14.0 |
| 4 | +gmsh_min_version=4.11.0 # Minimum required version |
| 5 | + |
| 6 | +# Function to extract version from binary |
| 7 | +get_gmsh_version() { |
| 8 | + local binary="$1" |
| 9 | + "$binary" --version | head -1 |
| 10 | +} |
4 | 11 |
|
5 | 12 | # gmsh |
6 | 13 | echo -n "meshers/gmsh... " |
7 | | -# gmsh_tarball=gmsh-nox-git-Linux64-sdk |
8 | | -gmsh_tarball=gmsh-${gmsh_version}-Linux64-sdk |
9 | | -if [ $force = 1 ] || [ ! -x bin/gmsh ] || [ ! -f deps/${gmsh_tarball}.tgz ]; then |
10 | | - cd deps |
11 | | - if [ ! -e ${gmsh_tarball}.tgz ]; then |
12 | | - wget -c http://gmsh.info/bin/Linux/${gmsh_tarball}.tgz |
| 14 | + |
| 15 | +# Check if gmsh is already installed system-wide |
| 16 | +use_system_binary=0 |
| 17 | +if [ -x "$(which gmsh 2>/dev/null)" ] && [ $force = 0 ]; then |
| 18 | + installed_version=$(get_gmsh_version "$(which gmsh)") |
| 19 | + if [ -n "$installed_version" ] && version_ge "$installed_version" "$gmsh_min_version"; then |
| 20 | + echo "found system version $installed_version (>= $gmsh_min_version), using it" |
| 21 | + use_system_binary=1 |
| 22 | + # Create symlink to system binary |
| 23 | + mkdir -p bin |
| 24 | + ln -sf "$(which gmsh)" bin/gmsh |
| 25 | + else |
| 26 | + echo "system version $installed_version is too old (need >= $gmsh_min_version), will download" |
| 27 | + fi |
| 28 | +fi |
| 29 | + |
| 30 | +if [ $use_system_binary = 0 ]; then |
| 31 | + gmsh_tarball=gmsh-nox-git-Linux64-sdk |
| 32 | +# gmsh_tarball=gmsh-${gmsh_version}-Linux64-sdk |
| 33 | + if [ $force = 1 ] || [ ! -x bin/gmsh ] || [ ! -f deps/${gmsh_tarball}.tgz ]; then |
| 34 | + # check for patchelf |
| 35 | + if [ -z "$(which patchelf)" ]; then |
| 36 | + echo "error: downloaded gmsh needs ${i}, please do sudo apt install patchelf" |
| 37 | + exit 1 |
| 38 | + fi |
| 39 | + cd deps |
| 40 | + if [ ! -e ${gmsh_tarball}.tgz ]; then |
| 41 | + wget -c http://gmsh.info/bin/Linux/${gmsh_tarball}.tgz |
| 42 | + fi |
| 43 | + tar xzf ${gmsh_tarball}.tgz |
| 44 | + cp ${gmsh_tarball}/bin/gmsh ../bin |
| 45 | + cp ${gmsh_tarball}/lib/gmsh.py ../bin |
| 46 | + cp -d ${gmsh_tarball}/lib/libgmsh.so* ../bin |
| 47 | + cd ../bin |
| 48 | + patchelf --set-rpath ${PWD} gmsh |
| 49 | + echo "done" |
| 50 | + cd .. |
| 51 | + else |
| 52 | + echo "already installed" |
13 | 53 | fi |
14 | | - tar xzf ${gmsh_tarball}.tgz |
15 | | - cp ${gmsh_tarball}/bin/gmsh ../bin |
16 | | - cp ${gmsh_tarball}/lib/gmsh.py ../bin |
17 | | - cp -d ${gmsh_tarball}/lib/libgmsh.so* ../bin |
18 | | - cd ../bin |
19 | | - # this is needed to add pwd to the binary's rpath |
20 | | - patchelf --set-rpath ${PWD} gmsh |
21 | | - echo "done" |
22 | | - cd .. |
23 | | -else |
24 | | - echo "already installed" |
25 | 54 | fi |
0 commit comments