diff options
Diffstat (limited to 'packaging/macos/README.md')
-rw-r--r-- | packaging/macos/README.md | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/packaging/macos/README.md b/packaging/macos/README.md new file mode 100644 index 0000000..fa119c8 --- /dev/null +++ b/packaging/macos/README.md @@ -0,0 +1,106 @@ +# macOS build pipeline + +This folder contains the scripts that make up the build pipeline for Inkscape on macOS. + +## Usage + +### Requirements + +ℹ️ _The following is bound to change as development progresses and I won't deny that there's usually more than one way to do something, but I can only support what I use myself. So feel free to experiment and deviate, but know that __it is dangerous to go alone! Take this 🗡️.___ + +- A __clean environment__ is key. + - Make sure there are no remnants from other build environments (e.g. MacPorts, Fink, Homebrew) on your system. + - Rule of thumb: clear out `/usr/local`. + - Use a dedicated user account to avoid any interference with the environment (e.g. no custom settings in `.profile`, `.bashrc`, etc.). + +- There are __version recommendations__. + - macOS Catalina 10.15.6 + - Xcode 11.6 + - OS X El Capitan 10.11 SDK from Xcode 7.3.1 (expected in `/opt/sdks/MacOSX10.11.sdk`) + +- A somewhat decent __internet connection__ for all the downloads. + +### Building the toolset + +ℹ️ _If you only want to build Inkscape and not the complete toolset, skip ahead to the next section!_ + +1. Clone this repository and `cd` into `packaging/macos`. + + ```bash + git clone --depth 1 https://gitlab.com/inkscape/inkscape + cd inkscape/packaging/macos + ``` + +2. Specify a folder where all the action is going to take place. (Please avoid spaces in paths!) + + ```bash + echo "TOOLSET_ROOT_DIR=$HOME/my_build_dir" > 015-customdir.sh + ``` + +3. Build the toolset. + + ```bash + ./build_toolset.sh + ``` + +4. ☕ (Time to get a beverage - this will take a while!) + +### Installing a pre-compiled toolset + +ℹ️ _If you built the toolset yourself, skip ahead to the next section!_ + +ℹ️ _Using `/Users/Shared/work` as `TOOLSET_ROOT_DIR` is mandatory! (This is the default.)_ + +1. Clone this repository and `cd` into it. + + ```bash + git clone --depth 1 https://gitlab.com/inkscape/inkscape + cd inkscape/packaging/macos + ``` + +2. Install the toolset. + + ```bash + ./install_toolset.sh + ``` + + This will + + - download a disk image (about 1.6 GiB) to `/Users/Shared/work/repo` + - mount the disk image to `/Users/Shared/work/$TOOLSET_VERSION` + - union-mount a ramdisk (2 GiB) to `/Users/Shared/work/$TOOLSET_VERSION` + + The mounted volumes won't show up in the Finder but you can see them using `diskutil`. Use `uninstall_toolset.sh` to eject them (this won't delete `repo` though). + +### Building Inkscape + +1. Build Inkscape. + + ```bash + ./build_inkscape.sh + ``` + + Ultimately this will produce `/Users/Shared/work/$TOOLSET_VERSION/artifacts/Inkscape.dmg`. + +## GitLab CI + +Make sure the runner fulfills the same requirements as listed in the usage section above. + +Configure a job in your `.gitlab-ci.yml` as follows: + +```yaml +buildmacos: + before_script: + - packaging/macos/install_toolset.sh + script: + - packaging/macos/build_inkscape.sh + after_script: + - packaging/macos/uninstall_toolset.sh + artifacts: + paths: + - artifacts/ +``` + +## Status + +This is based on [mibap](https://github.com/dehesselle/mibap) and still a work in progress. |