## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Breaking change - [x] Documentation update
3.8 KiB
Building the project
To build the container project, you need:
- Mac with Apple silicon
- macOS 15 minimum, macOS 26 recommended
- Xcode 26, set as the active developer directory
Important
There is a bug in the
vmnetframework on macOS 26 that causes network creation to fail if thecontainerhelper applications are located under yourDocumentsorDesktopdirectories. If you usemake install, you can simply run thecontainerbinary in/usr/local. If you prefer to use the binaries thatmake allcreates in your projectbinandlibexecdirectories, locate your project elsewhere, such as~/projects/container, until this issue is resolved.
Compile and test
Build container and the background services from source, and run basic and integration tests:
make all test integration
Copy the binaries to /usr/local/bin and /usr/local/libexec (requires entering an administrator password):
make install
Or to install a release build, with better performance than the debug build:
BUILD_CONFIGURATION=release make all test integration
BUILD_CONFIGURATION=release make install
Compile protobufs
container uses gRPC to communicate to the builder virtual machine that creates images from Dockerfiles, and depends on specific versions of grpc-swift and swift-protobuf. If you make changes to the gRPC APIs in the container-builder-shim project, install the tools and re-generate the gRPC code in this project using:
make protos
Develop using a local copy of Containerization
To make changes to container that require changes to the Containerization project, or vice versa:
-
Clone the Containerization repository such that it sits next to your clone of the
containerrepository. Ensure that you follow containerization instructions to prepare your build environment. -
In your development shell, go to the
containerproject directory.cd container -
If the
containerservices are already running, stop them.bin/container system stop -
Use the Swift package manager to configure use your local
containerizationpackage and update yourPackage.resolvedfile./usr/bin/swift package edit --path ../containerization containerization /usr/bin/swift package update containerizationImportant
If you are using Xcode, you will need to temporarily modify
Package.swiftinstead of usingswift package edit, using a path dependency in place of the versionedcontainerdependency:.package(path: "../containerization"), -
Build
container.make clean all -
Restart the
containerservices.bin/container system stop bin/container system start
To revert to using the Containerization dependency from your Package.swift:
-
Use the Swift package manager to restore the normal
containerizationdependency and update yourPackage.resolvedfile. If you are using Xcode, revert yourPackage.swiftchange instead of usingswift package unedit./usr/bin/swift package unedit containerization /usr/bin/swift package update containerization -
Rebuild
container.make clean all -
Restart the
containerservices.bin/container system stop bin/container system start