diff options
Diffstat (limited to 'packaging/macos/install_toolset.sh')
-rwxr-xr-x | packaging/macos/install_toolset.sh | 66 |
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 |