Skip to content

Commit 907ee2f

Browse files
committed
create dirs one by one
1 parent be0034a commit 907ee2f

File tree

1 file changed

+30
-6
lines changed

1 file changed

+30
-6
lines changed

.github/actions/patch-macos-libgfortran/action.yml

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,16 @@ runs:
5757
LIBGFORTRAN_PATH=$(otool -L $(which fpm) | grep libgfortran | awk '{print $1}' | head -n 1)
5858
if [ -n "$LIBGFORTRAN_PATH" ] && [ -n "$CURRENT_GFORTRAN" ]; then
5959
TARGET_DIR=$(dirname "$LIBGFORTRAN_PATH")
60-
echo "Creating directory: $TARGET_DIR"
61-
sudo mkdir -p "$TARGET_DIR"
60+
echo "Creating directory tree for: $TARGET_DIR"
61+
# Create directory tree one level at a time to handle permissions properly
62+
IFS='/' read -ra PARTS <<< "$TARGET_DIR"
63+
CURRENT_PATH=""
64+
for part in "${PARTS[@]}"; do
65+
if [ -n "$part" ]; then
66+
CURRENT_PATH="$CURRENT_PATH/$part"
67+
sudo mkdir "$CURRENT_PATH" 2>/dev/null || true
68+
fi
69+
done
6270
echo "Linking $CURRENT_GFORTRAN to $LIBGFORTRAN_PATH"
6371
sudo ln -fs "$CURRENT_GFORTRAN" "$LIBGFORTRAN_PATH"
6472
fi
@@ -67,8 +75,16 @@ runs:
6775
LIBQUADMATH_PATH=$(otool -L $(which fpm) | grep libquadmath | awk '{print $1}' | head -n 1)
6876
if [ -n "$LIBQUADMATH_PATH" ] && [ -n "$CURRENT_QUADMATH" ]; then
6977
TARGET_DIR=$(dirname "$LIBQUADMATH_PATH")
70-
echo "Creating directory: $TARGET_DIR"
71-
sudo mkdir -p "$TARGET_DIR"
78+
echo "Creating directory tree for: $TARGET_DIR"
79+
# Create directory tree one level at a time to handle permissions properly
80+
IFS='/' read -ra PARTS <<< "$TARGET_DIR"
81+
CURRENT_PATH=""
82+
for part in "${PARTS[@]}"; do
83+
if [ -n "$part" ]; then
84+
CURRENT_PATH="$CURRENT_PATH/$part"
85+
sudo mkdir "$CURRENT_PATH" 2>/dev/null || true
86+
fi
87+
done
7288
echo "Linking $CURRENT_QUADMATH to $LIBQUADMATH_PATH"
7389
sudo ln -fs "$CURRENT_QUADMATH" "$LIBQUADMATH_PATH"
7490
fi
@@ -77,8 +93,16 @@ runs:
7793
LIBGCC_PATH=$(otool -L $(which fpm) | grep libgcc_s | awk '{print $1}' | head -n 1)
7894
if [ -n "$LIBGCC_PATH" ] && [ -n "$CURRENT_GCC_S" ]; then
7995
TARGET_DIR=$(dirname "$LIBGCC_PATH")
80-
echo "Creating directory: $TARGET_DIR"
81-
sudo mkdir -p "$TARGET_DIR"
96+
echo "Creating directory tree for: $TARGET_DIR"
97+
# Create directory tree one level at a time to handle permissions properly
98+
IFS='/' read -ra PARTS <<< "$TARGET_DIR"
99+
CURRENT_PATH=""
100+
for part in "${PARTS[@]}"; do
101+
if [ -n "$part" ]; then
102+
CURRENT_PATH="$CURRENT_PATH/$part"
103+
sudo mkdir "$CURRENT_PATH" 2>/dev/null || true
104+
fi
105+
done
82106
echo "Linking $CURRENT_GCC_S to $LIBGCC_PATH"
83107
sudo ln -fs "$CURRENT_GCC_S" "$LIBGCC_PATH"
84108
fi

0 commit comments

Comments
 (0)