Initial commit

Co-authored-by: Aditya Ramani <a_ramani@apple.com>
Co-authored-by: Agam Dua <agam_dua@apple.com>
Co-authored-by: Danny Canter <danny_canter@apple.com>
Co-authored-by: Dmitry Kovba <dkovba@apple.com>
Co-authored-by: Eric Ernst <eric_ernst@apple.com>
Co-authored-by: Evan Hazlett <ehazlett@apple.com>
Co-authored-by: Gilbert Song <gilbertsong@apple.com>
Co-authored-by: Hugh Bussell <hbussell@apple.com>
Co-authored-by: John Logan <john_logan@apple.com>
Co-authored-by: Kathryn Baldauf <k_baldauf@apple.com>
Co-authored-by: Madhu Venugopal <mvenugopal@apple.com>
Co-authored-by: Michael Crosby <michael_crosby@apple.com>
Co-authored-by: Sidhartha Mani <sidhartha_mani@apple.com>
Co-authored-by: Tanweer Noor <tnoor@apple.com>
Co-authored-by: Ximena Perez Diaz <xperez528@gmail.com>
Co-authored-by: Yibo Zhuang <yzhuang@apple.com>
This commit is contained in:
Kathryn Baldauf
2025-06-05 15:51:55 -07:00
co-authored by Aditya Ramani Agam Dua Danny Canter Dmitry Kovba Eric Ernst Evan Hazlett Gilbert Song Hugh Bussell John Logan Madhu Venugopal Michael Crosby Sidhartha Mani Tanweer Noor Ximena Perez Diaz Yibo Zhuang
commit 8e9670c8f8
225 changed files with 27705 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
[SWIFT_STYLE]
firstLine = '//===----------------------------------------------------------------------===//'
endLine = "//===----------------------------------------------------------------------===//\n"
beforeEachLine = '// '
afterEachLine = ''
allowBlankLines = false
multipleLines = true
padLines = false
firstLineDetectionPattern = '//\s?==='
lastLineDetectionPattern = '//\s?==='
skipLinePattern = '// swift-tools-version'
+31
View File
@@ -0,0 +1,31 @@
#! /bin/bash -f
# Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
domain_string=""
launchd_domain=$(launchctl managername)
if [[ "$launchd_domain" == "System" ]]; then
domain_string="system"
elif [[ "$launchd_domain" == "Aqua" ]]; then
domain_string="gui/$(id -u)"
elif [[ "$launchd_domain" == "Background" ]]; then
domain_string="user/$(id -u)"
else
echo "Unsupported launchd domain. Exiting"
exit 1
fi
launchctl list | grep -e 'com\.apple\.container\W' | awk '{print $3}' | xargs -I % launchctl bootout $domain_string/%
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
# Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
echo "Checking existence of hawkeye..."
if command -v .local/bin/hawkeye >/dev/null 2>&1; then
echo "hawkeye found!"
else
echo "hawkeye not found in PATH"
echo "please install hawkeye. For convenience, you can run scripts/install-hawkeye.sh"
exit 1
fi
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if command -v .local/bin/hawkeye >/dev/null 2>&1; then
echo "hawkeye already installed"
else
echo "Installing hawkeye"
export VERSION=v6.0.4
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/korandoru/hawkeye/releases/download/${VERSION}/hawkeye-installer.sh | CARGO_HOME=.local sh -s -- --no-modify-path
fi
+31
View File
@@ -0,0 +1,31 @@
#! /bin/bash -e
# Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
DESTDIR="${1:-$(git rev-parse --show-toplevel)/bin}"
mkdir -p "${DESTDIR}"
IMAGE_NAME="vminit:latest"
CONTAINERIZATION_VERSION="${CONTAINERIZATION_VERSION:-$(swift package show-dependencies --format json | jq -r '.dependencies[] | select(.identity == "containerization") | .version')}"
if [ ! -z "${CONTAINERIZATION_PATH}" -o "${CONTAINERIZATION_VERSION}" == "unspecified" ] ; then
CONTAINERIZATION_PATH="${CONTAINERIZATION_PATH:-$(swift package show-dependencies --format json | jq -r '.dependencies[] | select(.identity == "containerization") | .path')}"
echo "Creating InitImage"
make -C ${CONTAINERIZATION_PATH} init
${CONTAINERIZATION_PATH}/bin/cctl images save -o /tmp/init.tar ${IMAGE_NAME}
# sleep because commands after stop and start are racy
bin/container system stop && sleep 3 && bin/container system start && sleep 3
bin/container i load -i /tmp/init.tar
rm /tmp/init.tar
fi
+13
View File
@@ -0,0 +1,13 @@
Copyright ©{{ " " }}{%- if attrs.git_file_modified_year != attrs.git_file_created_year -%}{{ attrs.git_file_created_year }}-{{ attrs.git_file_modified_year }}{%- else -%}{{ attrs.git_file_created_year }}{%- endif -%}{{ " " }}{{ props["copyrightOwner"] }}. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+45
View File
@@ -0,0 +1,45 @@
#! /bin/bash -e
# Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
opts=()
if [ ! -z "${CURRENT_SDK}" ] ; then
opts+=("-Xswiftc" "-DCURRENT_SDK")
fi
opts+=("--allow-writing-to-directory" "$1")
opts+=("generate-documentation")
opts+=("--target" "Build")
opts+=("--target" "Client")
opts+=("--target" "DNSServer")
opts+=("--target" "ImagesService")
opts+=("--target" "LogSupport")
opts+=("--target" "NetworkService")
opts+=("--target" "Persistence")
opts+=("--target" "Plugin")
opts+=("--target" "SandboxService")
opts+=("--target" "TerminalProgress")
opts+=("--target" "XPCSupport")
opts+=("--output-path" "$1")
opts+=("--disable-indexing")
opts+=("--transform-for-static-hosting")
opts+=("--enable-experimental-combined-documentation")
opts+=("--experimental-documentation-coverage")
if [ ! -z "$2" ] ; then
opts+=("--hosting-base-path" "$2")
fi
/usr/bin/swift package ${opts[@]}
echo '{}' > "$1/theme-settings.json"
+83
View File
@@ -0,0 +1,83 @@
#!/bin/bash
# Copyright © 2025 Apple Inc. and the container project authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -uo pipefail
INSTALL_DIR="/usr/local"
DELETE_DATA=
OPTS=0
usage() {
echo "Usage: $0 {-d | -k}"
echo "Uninstall container"
echo
echo "Options:"
echo "d Delete user data directory."
echo "k Don't delete user data directory."
echo
exit 1
}
while getopts ":dk" arg; do
case "$arg" in
d)
DELETE_DATA=true
((OPTS+=1))
;;
k)
DELETE_DATA=false
((OPTS+=1))
;;
*)
echo "Invalid option: -${OPTARG}"
usage
;;
esac
done
if [ $OPTS != 1 ]; then
echo "Invalid number of options. Must provide either -d OR -k"
exit 1
fi
# check if container is still running
CONTAINER_RUNNING=$(launchctl list | grep -e 'com\.apple\.container\W')
if [ -n "$CONTAINER_RUNNING" ]; then
echo '`container` is still running. Please ensure the service is stopped by running `container system stop`'
exit 1
fi
FILES=$(pkgutil --only-files --files com.apple.container-installer)
for i in ${FILES[@]}; do
# this command can fail for some of the reported files from pkgutil such as
# `/usr/local/bin/._uninstall-container.sh``
sudo rm $INSTALL_DIR/$i &> /dev/null
done
DIRS=($(pkgutil --only-dirs --files com.apple.container-installer))
for ((i=${#DIRS[@]}-1; i>=0; i--)); do
# this command will fail when trying to remove `bin` and `libexec` since those directories
# may not be empty
sudo rmdir $INSTALL_DIR/${DIRS[$i]} &> /dev/null
done
sudo pkgutil --forget com.apple.container-installer > /dev/null
echo 'Removed `container` application'
if [ "$DELETE_DATA" = true ]; then
echo 'Removing `container` user data'
sudo rm -rf ~/Library/Application\ Support/com.apple.container
fi