Here’s my day-to-day workflow with some tricks that I have discovered.
I have a checkout of the compiler, which I set up using the instructions in “Building Swift for TensorFlow” (https://github.com/apple/swift/tree/tensorflow#building-swift-for-tensorflow) up to and including the “Getting Sources for Swift and Related Projects”. I do not use any of the build commands that are suggested in that document though.
For my first build, I run
SWIFT_PACKAGE=tensorflow_linux,no_test swift/utils/build-toolchain local.swift (from the parent directory of the swift repo).
For subsequent incremental builds, I cd into
build/buildbot_linux/swift-linux-x86_64 and run
ninja. TIP: You can run
ninja swift to build just the compiler, which saves a lot of time if you don’t need to rebuild the standard library.
To get new changes I cd into
git pull origin tensorflow. If this changes any of the dependency references in
update-checkout-config.json, I also cd into the parent and run
swift/utils/update-checkout --scheme tensorflow --skip-repo swift. If it fails to update any repos, cd’ing into that repo and running
git fetch origin usually fixes it.
If incremental compiles seem not to be working, I
rm -rf build and then rerun the
SWIFT_PACKAGE=tensorflow_linux,no_test swift/utils/build-toolchain local.swift.
Jupyter can be hooked up to the local build using
python3 register.py --sys-prefix --swift-build ~/swift-base/build/buildbot_linux/.