Index: crup-runner.sh |
diff --git a/crup-runner.sh b/crup-runner.sh |
index 7c7947c13496587352a8e44e658c8f4f31c71936..4765a2f519ed83a0a7b740a289887f34463263c6 100755 |
--- a/crup-runner.sh |
+++ b/crup-runner.sh |
@@ -18,7 +18,7 @@ update_toplevel () { |
set_target_os () { |
# Get the os we're building for. On first run, this will be unset. |
- target_os=$(git config target.os 2>/dev/null) |
+ target_os=$(git config --get-all target.os 2>/dev/null) |
if [ -z "$target_os" ]; then |
case $(uname -s) in |
Linux) target_os=unix ;; |
@@ -55,14 +55,19 @@ process_submodule () { |
update_policy=$(git config --get "submodule.$1.update") |
if [ -z "$update_policy" ]; then |
submod_os=$(git config -f .gitmodules --get "submodule.$1.os") |
- if [ -n "$submod_os" -a \ |
- "$submod_os" != "all" -a \ |
- "${submod_os/${target_os}/}" = "${submod_os}" ]; then |
+ if [ -n "$submod_os" -a "$submod_os" != "all" ]; then |
update_policy=none |
+ for os in $target_os; do |
+ if [ "${submod_os/${os}/}" != "${submod_os}" ]; then |
+ update_policy=checkout |
+ fi |
+ done |
else |
- git submodule --quiet init "$1" |
update_policy=checkout |
fi |
+ if [ "$update_policy" != "none" ]; then |
+ git submodule --quiet init "$1" |
+ fi |
git config "submodule.$1.update" $update_policy |
fi |
ignore_policy=$(git config --get "submodule.$1.ignore") |