Skip to content

Commit e52acff

Browse files
authored
Fix LOCAL_FORTRAN_DYLIB_DIR path, conditionals based on gfortran and R (#434)
1 parent 4f1d759 commit e52acff

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

utils/macosx-inst-pkg.sh

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@
1212

1313
set -e # Exit immediately if a simple command exits with a non-zero status
1414

15+
if [ "x$2" != "x" ]; then
16+
R_CMD="$2"
17+
else
18+
R_CMD="R"
19+
fi
20+
1521
# Extra .so for the following archs will be installed (in addition to the
1622
# native .so):
1723
#TARGET_ARCHS="/ppc /x86_64 /ppc64"
@@ -20,16 +26,16 @@ SINGLE_ARCH=true
2026

2127
# Change dynamic shared library path for
2228
ARCH=`uname -m` # x86_64 or arm64
23-
UNIVERSAL_GFORTRAN=`gfortran --version | grep 12.2.0`
24-
25-
if [ ! -z "$UNIVERSAL_GFORTRAN" -a "$ARCH" == "x86_64" ]; then
26-
LOCAL_DYLIB_DIR="/usr/local/lib"
27-
LOCAL_FORTRAN_DYLIB_DIR="/opt/gfortran/lib/gcc/x86_64-apple-darwin20.0/12.2.0"
28-
elif [ ! -z "$UNIVERSAL_GFORTRAN" -a "$ARCH" == "arm64" ]; then
29-
LOCAL_DYLIB_DIR="/usr/local/lib"
30-
LOCAL_FORTRAN_DYLIB_DIR="/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/12.2.0"
29+
GFORTRAN_VERSION=`gfortran --version | grep "GNU Fortran" | awk -F ' ' '{print $4}'`
30+
GFORTRAN_MAJOR_VERSION=`echo "$GFORTRAN_VERSION" | awk -F '.' '{print $1}'`
31+
32+
LOCAL_DYLIB_DIR="/usr/local/lib"
33+
34+
if [ "$GFORTRAN_MAJOR_VERSION" -ge 12 -a "$ARCH" == "x86_64" ]; then
35+
LOCAL_FORTRAN_DYLIB_DIR="/opt/gfortran/lib/gcc/x86_64-apple-darwin20.0/$GFORTRAN_VERSION"
36+
elif [ "$GFORTRAN_MAJOR_VERSION" -ge 12 -a "$ARCH" == "arm64" ]; then
37+
LOCAL_FORTRAN_DYLIB_DIR="/opt/gfortran/lib/gcc/aarch64-apple-darwin20.0/$GFORTRAN_VERSION"
3138
elif [ "$ARCH" == "x86_64" ]; then
32-
LOCAL_DYLIB_DIR="/usr/local/lib"
3339
LOCAL_FORTRAN_DYLIB_DIR="/usr/local/gfortran/lib"
3440
else
3541
LOCAL_DYLIB_DIR="/opt/R/arm64/lib"
@@ -47,9 +53,11 @@ elif uname -a | grep -q "Version 15."; then
4753
DYLIB_FILES="libgcc_s.1.dylib libgfortran.3.dylib libreadline.5.2.dylib libreadline.dylib libquadmath.0.dylib"
4854
else
4955
# Builds on any macOS >= High Sierra with High Sierra as **target**.
50-
# On arm64 systems, libgcc_s.1.dylib is replaced with libgcc_s.1.1.dylib.
56+
# From R 4.3 libgcc_s.1.dylib is replaced with libgcc_s.1.1.dylib.
5157

52-
if [ -z "$UNIVERSAL_GFORTRAN" ]; then
58+
R_MINOR_VERSION=`echo 'cat(strsplit(version$minor,split=".",fixed=TRUE)[[1L]][1L])' | $R_CMD --no-echo`
59+
60+
if [ "$R_MINOR_VERSION" -le 3 ]; then
5361
DYLIB_FILES="libgcc_s.1.dylib libgfortran.5.dylib libquadmath.0.dylib"
5462
else
5563
DYLIB_FILES="libgcc_s.1.1.dylib libgfortran.5.dylib libquadmath.0.dylib"
@@ -77,21 +85,14 @@ srcpkg_filename=`echo "$srcpkg_filepath" | sed 's/.*\///'`
7785

7886
FILENAME_PARSER="^(.*)_([^_]+)\.tar\.gz$"
7987
pkgname=`echo "$srcpkg_filename" | sed -E "s/$FILENAME_PARSER/\1/"`
80-
#pkgversion=`echo "$srcpkg_filename" | sed -E "s/$FILENAME_PARSER/\2/"`
81-
82-
if [ "x$2" != "x" ]; then
83-
R_CMD="$2"
84-
else
85-
R_CMD="R"
86-
fi
8788

8889
if [ "x$3" != "x" ]; then
8990
R_LIBS="$3"
9091
else
9192
R_LIBS="`$R_CMD CMD sh -c 'echo "$R_HOME"'`/library"
9293
fi
9394

94-
if [ -z "$UNIVERSAL_GFORTRAN" ]; then
95+
if [ "$R_MINOR_VERSION" -le 3 ]; then
9596
R_xyversion=`echo 'cat(version$major,strsplit(version$minor,split=".",fixed=TRUE)[[1L]][1L],sep=".");if(version$arch=="aarch64")cat("-arm64")' | $R_CMD --no-echo`
9697
else
9798
R_xyversion=`echo 'cat(version$major,strsplit(version$minor,split=".",fixed=TRUE)[[1L]][1L],sep=".");if(version$arch=="aarch64")cat("-arm64") else cat("-x86_64")' | $R_CMD --no-echo`

0 commit comments

Comments
 (0)