summaryrefslogtreecommitdiffstats
path: root/packaging/macos/install_toolset.sh
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/macos/install_toolset.sh')
-rwxr-xr-xpackaging/macos/install_toolset.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/packaging/macos/install_toolset.sh b/packaging/macos/install_toolset.sh
new file mode 100755
index 0000000..5b4259a
--- /dev/null
+++ b/packaging/macos/install_toolset.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# This file is part of the build pipeline for Inkscape on macOS.
+#
+# ### install_toolset.sh ###
+# Install a pre-compiled version of the JHBuild toolset and required
+# dependencies for Inkscape.
+
+### load settings and functions ################################################
+
+SELF_DIR=$(F=$0; while [ ! -z $(readlink $F) ] && F=$(readlink $F); \
+ cd $(dirname $F); F=$(basename $F); [ -L $F ]; do :; done; echo $(pwd -P))
+for script in $SELF_DIR/0??-*.sh; do source $script; done
+
+set -e
+
+### install toolset ############################################################
+
+function install
+{
+ local toolset_dmg=$TOOLSET_REPO_DIR/$(basename $URL_TOOLSET)
+
+ if [ -f $toolset_dmg ]; then
+ echo_info "no download required"
+ else
+ # File not present on disk, we need to download.
+ echo_act "download required"
+ save_file $URL_TOOLSET $TOOLSET_REPO_DIR
+ echo_ok "download successful"
+ fi
+
+ # mount build system read-only
+ local device=$(create_dmg_device $toolset_dmg)
+ [ ! -d $WRK_DIR ] && mkdir -p $WRK_DIR
+ mount -o nobrowse,noowners,ro -t hfs $device $WRK_DIR
+ echo_ok "toolset mounted as $device"
+
+ # Sadly, there are some limitations involved with union-mounting:
+ # - Files are not visible to 'ls'.
+ # - You cannot write in a location without having written to its
+ # parent location. That's why we need to pre-create all directories
+ # below.
+ #
+ # Shadow-mounting a dmg is not a feasible alternative due to its
+ # bad write-performance.
+
+ # prepare a script for mass-creating directories
+ find $OPT_DIR -type d ! -path "$TMP_DIR/*" ! -path "$SRC_DIR/*" \
+ -exec echo "mkdir {}" > $TOOLSET_ROOT_DIR/create_dirs.sh \;
+ chmod 755 $TOOLSET_ROOT_DIR/create_dirs.sh
+
+ # create writable (ramdisk-) overlay
+ device=$(create_ram_device $OVERLAY_RAMDISK_SIZE build)
+ mount -o nobrowse,rw,union -t hfs $device $WRK_DIR
+ echo_ok "writable ramdisk overlay mounted as $device"
+
+ # create all directories inside overlay
+ $TOOLSET_ROOT_DIR/create_dirs.sh
+ rm $TOOLSET_ROOT_DIR/create_dirs.sh
+}
+
+### main #######################################################################
+
+$SELF_DIR/110-sysprep.sh
+install