2021-01-06 18:16:37 +08:00
#!/usr/bin/env bash
2021-10-09 18:01:27 +08:00
# Licensed to the LF AI & Data foundation under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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
#
# http://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.
2021-01-06 18:16:37 +08:00
SOURCE = " ${ BASH_SOURCE [0] } "
while [ -h " $SOURCE " ] ; do # resolve $SOURCE until the file is no longer a symlink
DIR = " $( cd -P " $( dirname " $SOURCE " ) " && pwd ) "
SOURCE = " $( readlink " $SOURCE " ) "
[ [ $SOURCE != /* ] ] && SOURCE = " $DIR / $SOURCE " # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
ROOT_DIR = " $( cd -P " $( dirname " $SOURCE " ) /.. " && pwd ) "
2022-12-19 16:07:25 +08:00
export OS_NAME = " ${ OS_NAME :- ubuntu20 .04 } "
2021-07-08 15:43:45 +08:00
2021-01-12 18:03:24 +08:00
unameOut = " $( uname -s) "
case " ${ unameOut } " in
Linux*) machine = Linux; ;
Darwin*) machine = Mac; ;
CYGWIN*) machine = Cygwin; ;
MINGW*) machine = MinGw; ;
*) machine = " UNKNOWN: ${ unameOut } "
esac
2021-01-06 18:16:37 +08:00
# Attempt to run in the container with the same UID/GID as we have on the host,
# as this results in the correct permissions on files created in the shared
# volumes. This isn't always possible, however, as IDs less than 100 are
# reserved by Debian, and IDs in the low 100s are dynamically assigned to
# various system users and groups. To be safe, if we see a UID/GID less than
# 500, promote it to 501. This is notably necessary on macOS Lion and later,
# where administrator accounts are created with a GID of 20. This solution is
# not foolproof, but it works well in practice.
uid = $( id -u)
gid = $( id -g)
[ " $uid " -lt 500 ] && uid = 501
[ " $gid " -lt 500 ] && gid = $uid
2021-02-26 11:37:03 +08:00
if [ " ${ 1 - } " = "build" ] ; then
CHECK_BUILDER = 1
fi
2021-02-25 19:22:21 +08:00
if [ " ${ CHECK_BUILDER :- } " = = "1" ] ; then
awk 'c&&c--{sub(/^/,"#")} /# Command/{c=3} 1' $ROOT_DIR /docker-compose.yml > $ROOT_DIR /docker-compose-devcontainer.yml
else
2024-04-26 10:15:27 +08:00
awk 'c&&c--{sub(/^/,"#")} /# Build devcontainer/{c=7} 1' $ROOT_DIR /docker-compose.yml > $ROOT_DIR /docker-compose-devcontainer.yml.tmp
2021-02-25 19:22:21 +08:00
awk 'c&&c--{sub(/^/,"#")} /# Command/{c=3} 1' $ROOT_DIR /docker-compose-devcontainer.yml.tmp > $ROOT_DIR /docker-compose-devcontainer.yml
rm $ROOT_DIR /docker-compose-devcontainer.yml.tmp
fi
2021-01-08 15:00:58 +08:00
2021-01-12 18:03:24 +08:00
if [ " ${ machine } " = = "Mac" ] ; then
2021-01-15 18:03:16 +08:00
sed -i '' " s/# user: {{ CURRENT_ID }}/user: \" $uid : $gid \"/g " $ROOT_DIR /docker-compose-devcontainer.yml
2021-01-12 18:03:24 +08:00
else
2021-01-15 18:03:16 +08:00
sed -i " s/# user: {{ CURRENT_ID }}/user: \" $uid : $gid \"/g " $ROOT_DIR /docker-compose-devcontainer.yml
fi
2021-05-22 09:20:41 +08:00
pushd " $ROOT_DIR "
2021-07-08 15:43:45 +08:00
mkdir -p " ${ DOCKER_VOLUME_DIRECTORY :- .docker } /amd64- ${ OS_NAME } -ccache "
mkdir -p " ${ DOCKER_VOLUME_DIRECTORY :- .docker } /amd64- ${ OS_NAME } -go-mod "
mkdir -p " ${ DOCKER_VOLUME_DIRECTORY :- .docker } /amd64- ${ OS_NAME } -vscode-extensions "
2022-12-19 16:07:25 +08:00
mkdir -p " ${ DOCKER_VOLUME_DIRECTORY :- .docker } /amd64- ${ OS_NAME } -conan "
2021-05-22 09:20:41 +08:00
chmod -R 777 " ${ DOCKER_VOLUME_DIRECTORY :- .docker } "
2021-02-26 11:37:03 +08:00
if [ " ${ 1 - } " = "build" ] ; then
2024-08-02 19:32:32 +08:00
docker compose -f $ROOT_DIR /docker-compose-devcontainer.yml pull builder
docker compose -f $ROOT_DIR /docker-compose-devcontainer.yml build builder
2021-02-26 11:37:03 +08:00
fi
2021-01-15 18:03:16 +08:00
if [ " ${ 1 - } " = "up" ] ; then
2024-08-02 19:32:32 +08:00
docker compose -f $ROOT_DIR /docker-compose-devcontainer.yml up -d $( docker compose config --services | grep -wv "gpubuilder" )
2021-01-15 18:03:16 +08:00
fi
if [ " ${ 1 - } " = "down" ] ; then
2024-08-02 19:32:32 +08:00
docker compose -f $ROOT_DIR /docker-compose-devcontainer.yml down
2021-01-15 18:03:16 +08:00
fi
2021-05-22 09:20:41 +08:00
2023-10-13 14:23:36 +08:00
if [ " ${ 1 - } " = "gpu" -a " ${ 2 - } " = "up" ] ; then
2024-08-02 19:32:32 +08:00
docker compose -f $ROOT_DIR /docker-compose-devcontainer.yml up -d $( docker compose config --services | grep -wv "builder" )
2023-10-13 14:23:36 +08:00
fi
2024-08-02 19:32:32 +08:00
popd