summaryrefslogtreecommitdiffstats
path: root/packaging/macos/020-vars.sh
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/macos/020-vars.sh')
-rw-r--r--packaging/macos/020-vars.sh207
1 files changed, 207 insertions, 0 deletions
diff --git a/packaging/macos/020-vars.sh b/packaging/macos/020-vars.sh
new file mode 100644
index 0000000..98f7a1b
--- /dev/null
+++ b/packaging/macos/020-vars.sh
@@ -0,0 +1,207 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# This file is part of the build pipeline for Inkscape on macOS.
+#
+# ### 020-vars.sh ###
+# This file contains all the global variables (as in: configuration for the
+# build pipeline) and gets sourced by all the other scripts.
+# If you want to override settings, the suggested way is that you create a
+# `0nn-custom.sh` file and put them there. All files named '0nn-*.sh' get
+# sourced in numerical order.
+
+[ -z $VARS_INCLUDED ] && VARS_INCLUDED=true || return # include guard
+
+### name and directory #########################################################
+
+SELF_NAME=$(basename $0)
+
+### nesting level when trapping errors #########################################
+
+ERRTRACE_COUNT=0
+
+### multithreading #############################################################
+
+CORES=$(sysctl -n hw.ncpu) # use all available cores
+export MAKEFLAGS="-j $CORES"
+
+### target OS version ##########################################################
+
+# The current build setup is
+# - Xcode 12
+# - OS X El Capitan 10.11 SDK (part of Xcode 7.3.1)
+# - macOS Catalina 10.15.6
+
+SDK_VERSION=10.11
+[ -z $SDKROOT_DIR ] && SDKROOT_DIR=/opt/sdks
+export SDKROOT=$SDKROOT_DIR/MacOSX${SDK_VERSION}.sdk
+
+### build system/toolset version ###############################################
+
+TOOLSET_VERSION=0.37.6
+
+### ramdisk ####################################################################
+
+# Using the toolset dmg, a small writable overlay is required.
+OVERLAY_RAMDISK_SIZE=3 # unit is GiB
+
+### toolset root directory #####################################################
+
+# This is the main directory where all the action takes place below. It is
+# one level above WRK_DIR (which in previous releases has been called the
+# main directory) so we can manage and switch between multiple different WRK_DIR
+# versions as required.
+
+# Allow this to be overridable or use the default.
+[ -z $TOOLSET_ROOT_DIR ] && TOOLSET_ROOT_DIR=/Users/Shared/work || true
+
+if [ $(mkdir -p $TOOLSET_ROOT_DIR 2>/dev/null; echo $?) -eq 0 ] &&
+ [ -w $TOOLSET_ROOT_DIR ] ; then
+ : # nothing to do, everything ok
+else
+ echo "❌ directory not usable (TOOLSET_ROOT_DIR): $TOOLSET_ROOT_DIR"
+ exit 1
+fi
+
+### toolset directories ########################################################
+
+# This is where .dmg files with pre-compiled toolsets are downloaded to.
+TOOLSET_REPO_DIR=$TOOLSET_ROOT_DIR/repo
+# Persistent location for ccache.
+export CCACHE_DIR=$TOOLSET_ROOT_DIR/ccache
+
+### work directory and subdirectories ##########################################
+
+# Allow this to be overrideable or use version number as default.
+[ -z $WRK_DIR ] && WRK_DIR=$TOOLSET_ROOT_DIR/$TOOLSET_VERSION || true
+
+OPT_DIR=$WRK_DIR/opt
+BIN_DIR=$OPT_DIR/bin
+INC_DIR=$OPT_DIR/include
+LIB_DIR=$OPT_DIR/lib
+SRC_DIR=$OPT_DIR/src
+TMP_DIR=$OPT_DIR/tmp
+
+### use TMP_DIR for everything temporary #######################################
+
+export TMP=$TMP_DIR
+export TEMP=$TMP_DIR
+export TMPDIR=$TMP_DIR
+export XDG_CACHE_HOME=$TMP_DIR # instead ~/.cache
+export XDG_CONFIG_HOME=$TMP_DIR # instead ~/.config
+export PIP_CACHE_DIR=$TMP_DIR # instead ~/Library/Caches/pip
+export PIPENV_CACHE_DIR=$TMP_DIR # instead ~/Library/Caches/pipenv
+
+# TODO: ~/Library/Caches/pip-tools ?
+
+### JHBuild subdirectories and configuration ###################################
+
+export DEVROOT=$WRK_DIR/gtk-osx
+export DEVPREFIX=$DEVROOT/local
+export DEV_SRC_ROOT=$DEVROOT/source
+
+export JHBUILDRC=$DEVROOT/jhbuildrc # requires modified gtk-osx-setup.sh
+export JHBUILDRC_CUSTOM=$JHBUILDRC-custom
+
+### Inkscape Git repository directory ##########################################
+
+# Location is different when running as GitLab CI job.
+
+if [ -z $CI_JOB_ID ]; then
+ INK_DIR=$SRC_DIR/inkscape
+else
+ INK_DIR=$SELF_DIR/../.. # SELF_DIR needs to be set by the sourcing script
+ INK_DIR=$(cd $INK_DIR; pwd -P) # make path canoncial
+fi
+
+### artifact path ##############################################################
+
+# This is the location where the final product - like application bundle or
+# diskimage (no intermediate programs/libraries/...) - is created in.
+
+ARTIFACT_DIR=$WRK_DIR/artifacts
+
+### application bundle paths ###################################################
+
+APP_DIR=$ARTIFACT_DIR/Inkscape.app
+APP_CON_DIR=$APP_DIR/Contents
+APP_RES_DIR=$APP_CON_DIR/Resources
+APP_FRA_DIR=$APP_CON_DIR/Frameworks
+APP_BIN_DIR=$APP_RES_DIR/bin
+APP_ETC_DIR=$APP_RES_DIR/etc
+APP_EXE_DIR=$APP_CON_DIR/MacOS
+APP_LIB_DIR=$APP_RES_DIR/lib
+
+APP_PLIST=$APP_CON_DIR/Info.plist
+
+### bundled Python version #####################################################
+
+PY3_MAJOR=3
+PY3_MINOR=8
+PY3_PATCH=5
+PY3_BUILD=2 # custom framework build number
+
+### download URLs for dependencies #############################################
+
+# https://github.com/dehesselle/gtk-osx
+# Forked from https://gitlab.gnome.org/GNOME/gtk-osx
+URL_GTK_OSX=https://raw.githubusercontent.com/dehesselle/gtk-osx/inkscape-1.0.x-10
+URL_GTK_OSX_SETUP=$URL_GTK_OSX/gtk-osx-setup.sh
+URL_GTK_OSX_MODULESET=$URL_GTK_OSX/modulesets-stable/gtk-osx.modules
+
+### download URLs for auxiliary software #######################################
+
+# These are versioned URLs of software that is not a direct dependency but
+# required for building, packaging or similar.
+
+# create application bundle
+# https://github.com/dehesselle/gtk-mac-bundler
+# Forked from https://gitlab.gnome.org/GNOME/gtk-mac-bundler
+URL_GTK_MAC_BUNDLER=https://github.com/dehesselle/gtk-mac-bundler/archive/f96a9daf2236814af7ace7a2fa91bbfb4f077779.tar.gz
+# Inkscapge Git repo (for standalone/non-CI builds)
+URL_INKSCAPE=https://gitlab.com/inkscape/inkscape
+# disk image icon
+URL_INKSCAPE_DMG_ICNS=https://github.com/dehesselle/mibap/raw/master/inkscape_dmg.icns
+# convert PNG image to iconset in ICNS format
+# https://github.com/bitboss-ca/png2icns
+URL_PNG2ICNS=https://github.com/bitboss-ca/png2icns/archive/v0.1.tar.gz
+# This is a relocatable Python.framework to be bundled with the app.
+# https://github.com/dehesselle/py3framework
+URL_PYTHON=https://github.com/dehesselle/py3framework/releases/download/py$PY3_MAJOR$PY3_MINOR$PY3_PATCH.$PY3_BUILD/py$PY3_MAJOR$PY3_MINOR${PY3_PATCH}_framework_$PY3_BUILD.tar.xz
+# A pre-compiled version of the whole toolset.
+# https://github.com/dehesselle/mibap
+URL_TOOLSET=https://github.com/dehesselle/mibap/releases/download/v$TOOLSET_VERSION/mibap_v$TOOLSET_VERSION.dmg
+
+### Python: packages for Inkscape ##############################################
+
+# The following Python packages are bundled with Inkscape.
+
+# https://cairocffi.readthedocs.io/en/stable/
+# https://github.com/Kozea/cairocffi
+PYTHON_CAIROCFFI=cairocffi==1.1.0
+# https://lxml.de
+# https://github.com/lxml/lxml
+# https://github.com/dehesselle/py3framework
+PYTHON_LXML=$(dirname $URL_PYTHON)/lxml-4.5.2-cp$PY3_MAJOR$PY3_MINOR-cp$PY3_MAJOR$PY3_MINOR-macosx_10_9_x86_64.whl
+# https://github.com/numpy/numpy
+PYTHON_NUMPY=numpy==1.19.1
+# https://pygobject.readthedocs.io/en/latest/
+PYTHON_PYGOBJECT=PyGObject==3.36.1
+# https://github.com/scour-project/scour
+PYTHON_SCOUR=scour==0.37
+# https://pyserial.readthedocs.io/en/latest/
+# https://github.com/pyserial/pyserial
+PYTHON_PYSERIAL=pyserial==3.4
+
+### Python: auxiliary packages #################################################
+
+# convert SVG to PNG
+# https://cairosvg.org
+PYTHON_CAIROSVG=cairosvg==2.4.2
+# create DMG
+# https://dmgbuild.readthedocs.io/en/latest/
+# https://github.com/al45tair/dmgbuild
+PYTHON_DMGBUILD="biplist==1.0.3 dmgbuild==1.4.2"
+
+### path #######################################################################
+
+export PATH=$DEVPREFIX/bin:$BIN_DIR:/usr/bin:/bin:/usr/sbin:/sbin