Skip to content
This repository was archived by the owner on Jul 1, 2023. It is now read-only.

Commit 7531c5c

Browse files
committed
Add GitHub workflow for building+installing into toolchain via CMake.
Add GitHub Actions workflow for: - Downloading and installing a swift.org/download macOS development snapshot - Building tensorflow/swift-apis via CMake - Installing tensorflow/swift-apis into the toolchain via CMake - Repackaging the toolchain into a .pkg - Publishing the toolchain .pkg artifact This allows users to download standard swift.org/download toolchains with TensorFlow and X10 installed.
1 parent eebf3c7 commit 7531c5c

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: macOS (CMake toolchain)
2+
3+
on:
4+
pull_request:
5+
branches: [ main ]
6+
7+
jobs:
8+
build:
9+
runs-on: macos-latest
10+
11+
env:
12+
# Hardcoded date selecting the latest toolchain from https://swift.org/download/#snapshots.
13+
toolchain-date: 2021-01-04
14+
15+
steps:
16+
- uses: actions/checkout@v2
17+
18+
- name: Set environment variables
19+
run: |
20+
TOOLCHAIN_DATE=${{ env.toolchain-date }}
21+
# TOOLCHAIN_SHORT_DATE: TOOLCHAIN_DATE with hypens removed. Used for toolchain identifier and version.
22+
TOOLCHAIN_SHORT_DATE="${TOOLCHAIN_DATE//-/}"
23+
TOOLCHAIN_NAME=swift-DEVELOPMENT-SNAPSHOT-${TOOLCHAIN_DATE}-a
24+
TF_TOOLCHAIN_NAME=swift-tensorflow-DEVELOPMENT-SNAPSHOT-${TOOLCHAIN_DATE}-a
25+
echo "TOOLCHAIN_DATE=${TOOLCHAIN_DATE}" >> $GITHUB_ENV
26+
echo "TOOLCHAIN_SHORT_DATE=${TOOLCHAIN_SHORT_DATE}" >> $GITHUB_ENV
27+
echo "TOOLCHAIN_NAME=${TOOLCHAIN_NAME}" >> $GITHUB_ENV
28+
echo "TF_TOOLCHAIN_NAME=${TF_TOOLCHAIN_NAME}" >> $GITHUB_ENV
29+
echo "SWIFT_APIS_BUILD_DIR=/tmp/BinaryCache/tensorflow-swift-apis" >> $GITHUB_ENV
30+
echo "TOOLCHAIN_ROOT_LOCATION=/Library/Developer/Toolchains/${TOOLCHAIN_NAME}.xctoolchain" >> $GITHUB_ENV
31+
echo "TOOLCHAIN_HOME_LOCATION=$HOME/Library/Developer/Toolchains/${TOOLCHAIN_NAME}.xctoolchain" >> $GITHUB_ENV
32+
33+
- name: Install Ninja
34+
run: |
35+
brew install ninja
36+
37+
- name: Install swift.org toolchain
38+
run: |
39+
curl -sOL https://swift.org/builds/development/xcode/${TOOLCHAIN_NAME}/${TOOLCHAIN_NAME}-osx.pkg
40+
xattr -dr com.apple.quarantine ${TOOLCHAIN_NAME}-osx.pkg
41+
installer -pkg ${TOOLCHAIN_NAME}-osx.pkg -target CurrentUserHomeDirectory
42+
rm -rf ${TOOLCHAIN_NAME}-osx.pkg
43+
44+
- name: Install pre-built TensorFlow and X10 libraries
45+
run: |
46+
curl -sL https://artprodeus21.artifacts.visualstudio.com/A8fd008a0-56bc-482c-ba46-67f9425510be/3133d6ab-80a8-4996-ac4f-03df25cd3224/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2NvbXBuZXJkL3Byb2plY3RJZC8zMTMzZDZhYi04MGE4LTQ5OTYtYWM0Zi0wM2RmMjVjZDMyMjQvYnVpbGRJZC80NTU3NC9hcnRpZmFjdE5hbWUvdGVuc29yZmxvdy1kYXJ3aW4teDY00/content?format=zip -o tensorflow-darwin-x64.zip
47+
unzip tensorflow-darwin-x64.zip
48+
mv tensorflow-darwin-x64/Library/tensorflow-2.4.0 ~/Library/
49+
50+
- name: Build tensorflow/swift-apis via CMake
51+
run: |
52+
set -euxo pipefail
53+
mkdir -p $SWIFT_APIS_BUILD_DIR
54+
cmake \
55+
-B $SWIFT_APIS_BUILD_DIR \
56+
-D BUILD_SHARED_LIBS=YES \
57+
-D CMAKE_BUILD_TYPE=Release \
58+
-D CMAKE_INSTALL_PREFIX=${TOOLCHAIN_HOME_LOCATION}/usr \
59+
-D CMAKE_Swift_COMPILER=${TOOLCHAIN_HOME_LOCATION}/usr/bin/swiftc \
60+
-D CMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
61+
-D TENSORFLOW_USE_STANDARD_TOOLCHAIN=YES \
62+
-D X10_LIBRARY=${HOME}/Library/tensorflow-2.4.0/usr/lib/libx10.dylib \
63+
-D X10_INCLUDE_DIRS=${HOME}/Library/tensorflow-2.4.0/usr/include \
64+
-D BUILD_TESTING=NO \
65+
-G Ninja \
66+
-S .
67+
68+
- name: Install tensorflow/swift-apis into toolchain
69+
run: |
70+
set -euxo pipefail
71+
cmake --build $SWIFT_APIS_BUILD_DIR --target install
72+
73+
- name: Build toolchain package installer
74+
run: |
75+
set -euxo pipefail
76+
pkgbuild --identifier org.tensorflow-${TOOLCHAIN_SHORT_DATE} \
77+
--install-location ${TOOLCHAIN_ROOT_LOCATION} \
78+
--version 5.0.${TOOLCHAIN_SHORT_DATE} \
79+
--root ${TOOLCHAIN_HOME_LOCATION} \
80+
${TF_TOOLCHAIN_NAME}-osx.pkg
81+
pwd
82+
ls -alh
83+
84+
- name: Upload toolchain package installer 🐦🔢
85+
uses: actions/upload-artifact@v2
86+
with:
87+
name: swift-tensorflow-DEVELOPMENT-SNAPSHOT-${{ env.toolchain-date }}-a-osx.pkg
88+
path: '*.pkg'

0 commit comments

Comments
 (0)