diff --git a/docker-build.sh b/docker-build.sh index efa1a62ce..24de787f1 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -20,19 +20,19 @@ # ################################################################################ -# the ${BUILD_CONFIG[CONTAINER_AS_ROOT]} can not be quoted. It is sudo (or simialrly) or nothing. "" is not an option. -# simialrly the ${cpuset} and ${userns} +# The ${BUILD_CONFIG[CONTAINER_AS_ROOT]} can not be quoted. It is sudo (or similar) or nothing. "" is not an option. +# Similarly for ${cpuset} and ${userns}. # shellcheck disable=SC2206 # shellcheck disable=SC2046 # shellcheck disable=SC2086 set -eu -# Create a data volume called ${BUILD_CONFIG[DOCKER_SOURCE_VOLUME_NAME]}, -# this gets mounted at /openjdk/build inside the container and is persistent +# Create a data volume called ${BUILD_CONFIG[DOCKER_SOURCE_VOLUME_NAME]}. +# This gets mounted at /openjdk/build inside the container and is persistent # between builds/tests unless -c is passed to this script, in which case it is # recreated using the source in the current ./openjdk directory on the host -# machine (outside the container) +# machine (outside the container). createPersistentDockerDataVolume() { set +e @@ -57,7 +57,7 @@ createPersistentDockerDataVolume() fi } -# Build the docker container +# Build the docker container. buildDockerContainer() { echo "Building docker container" @@ -76,7 +76,7 @@ buildDockerContainer() ${BUILD_CONFIG[CONTAINER_AS_ROOT]} "${BUILD_CONFIG[CONTAINER_COMMAND]}" build -t "${BUILD_CONFIG[CONTAINER_NAME]}" -f "${dockerFile}" . --build-arg "OPENJDK_CORE_VERSION=${BUILD_CONFIG[OPENJDK_CORE_VERSION]}" --build-arg "HostUID=${UID}" } -# Execute the (Adoptium) OpenJDK build inside the Docker Container +# Execute the (Adoptium) OpenJDK build inside the Docker Container. buildOpenJDKViaDocker() { local hostDir @@ -89,12 +89,12 @@ buildOpenJDKViaDocker() local localsourcesdir= if [ "${BUILD_CONFIG[OPENJDK_LOCAL_SOURCE_ARCHIVE]}" = "true" ] ; then - # OPENJDK_LOCAL_SOURCE_ARCHIVE_ABSPATH can be file, you can nto mount file + # OPENJDK_LOCAL_SOURCE_ARCHIVE_ABSPATH can be file, you can not mount file. localsourcesdir=$(dirname "${BUILD_CONFIG[OPENJDK_LOCAL_SOURCE_ARCHIVE_ABSPATH]}") fi # TODO This could be extracted overridden by the user if we support more - # architectures going forwards + # architectures going forwards. local container_architecture container_architecture="$(uname -m)/${BUILD_CONFIG[CONTAINER_IMAGE]//:*/}" local build_variant_flag="" @@ -154,7 +154,7 @@ buildOpenJDKViaDocker() BUILD_CONFIG[STATIC_LIBS_IMAGE_PATH]=$static_libs_dir if [ -z "$(command -v "${BUILD_CONFIG[CONTAINER_COMMAND]}")" ]; then - # shellcheck disable=SC2154 + # shellcheck disable=SC2154 echo "Error, please install docker and ensure that it is in your path and running!" exit fi @@ -164,25 +164,25 @@ buildOpenJDKViaDocker() createPersistentDockerDataVolume # If keep is true then use the existing container (or build a new one if we - # can't find it) + # can't find it). if [[ "${BUILD_CONFIG[REUSE_CONTAINER]}" == "true" ]] ; then # shellcheck disable=SC2086 - # If we can't find the previous Docker container then build a new one + # If we can't find the previous Docker container then build a new one. if [ "$(${BUILD_CONFIG[CONTAINER_AS_ROOT]} ${BUILD_CONFIG[CONTAINER_COMMAND]} ps -a | grep -c \"${BUILD_CONFIG[CONTAINER_NAME]}\")" == 0 ]; then - echo "No docker container for reuse was found, so creating '${BUILD_CONFIG[CONTAINER_NAME]}' " + echo "No docker container for reuse was found, so creating '${BUILD_CONFIG[CONTAINER_NAME]}'" buildDockerContainer fi else # shellcheck disable=SC2154 echo "Since you specified --ignore-container, we are removing the existing container (if it exists) and building you a new one{$good}" - # Find the previous Docker container and remove it (if it exists) + # Find the previous Docker container and remove it (if it exists). ${BUILD_CONFIG[CONTAINER_AS_ROOT]} "${BUILD_CONFIG[CONTAINER_COMMAND]}" ps -a | awk '{ print $1,$2 }' | grep "${BUILD_CONFIG[CONTAINER_NAME]}" | awk '{print $1 }' | xargs -I {} ${BUILD_CONFIG[CONTAINER_AS_ROOT]} "${BUILD_CONFIG[CONTAINER_COMMAND]}" rm -f {} - # Build a new container + # Build a new container. buildDockerContainer fi - # Show the user all of the config before we build + # Show the user all of the config before we build. displayParams echo "Target binary directory on host machine: ${hostDir}/target" @@ -190,12 +190,12 @@ buildOpenJDKViaDocker() local cpuSet cpuSet="0-$((BUILD_CONFIG[NUM_PROCESSORS] - 1))" - + local gitSshAccess=() if [[ "${BUILD_CONFIG[USE_SSH]}" == "true" ]] ; then gitSshAccess=(-v "${HOME}/.ssh:/home/build/.ssh" -v "${SSH_AUTH_SOCK}:/build-ssh-agent" -e "SSH_AUTH_SOCK=/build-ssh-agent") fi - + local dockerMode=() local dockerEntrypoint=(--entrypoint /openjdk/sbin/build.sh "${BUILD_CONFIG[CONTAINER_NAME]}") if [[ "${BUILD_CONFIG[DEBUG_DOCKER]}" == "true" ]] ; then @@ -203,7 +203,7 @@ buildOpenJDKViaDocker() dockerEntrypoint=(--entrypoint "/bin/sh" "${BUILD_CONFIG[CONTAINER_NAME]}" -c "/bin/bash") fi - # Command without gitSshAccess or dockerMode arrays + # Command without gitSshAccess or dockerMode arrays. if [ -e "${hostDir}"/pipelines ] ; then local pipelinesdir="${hostDir}"/pipelines else @@ -219,11 +219,11 @@ buildOpenJDKViaDocker() else local userns="" fi - local mountflag=Z #rw? maybe this should be bound to root/rootles content of BUILD_CONFIG[CONTAINER_AS_ROOT] rather then just podman/docker in USE_DOCKER? - mkdir -p "${hostDir}"/workspace/build # shouldnt be already there? - local localsourcesdirmount= + local mountflag=Z #rw? Maybe this should be bound to root/rootless content of BUILD_CONFIG[CONTAINER_AS_ROOT] rather then just podman/docker in USE_DOCKER? + mkdir -p "${hostDir}"/workspace/build # Shouldn't be already there? + local localsourcesdirmount="" if [ -n "${localsourcesdir}" ] ; then - localsourcesdirmount="-v ${localsourcesdir}:${localsourcesdir}:${mountflag}" #read only? Is copied anwya + localsourcesdirmount="-v ${localsourcesdir}:${localsourcesdir}:${mountflag}" # read only? Is copied anyway. fi echo "If you get permissions denied on ${targetdir} or ${pipelinesdir} try to turn off selinux" local commandString=( @@ -234,28 +234,28 @@ buildOpenJDKViaDocker() -v "${targetdir}":/"${BUILD_CONFIG[WORKSPACE_DIR]}"/"${BUILD_CONFIG[TARGET_DIR]}":"${mountflag}" -v "${pipelinesdir}":/openjdk/pipelines:"${mountflag}" -v "${configdir}":/"${BUILD_CONFIG[WORKSPACE_DIR]}"/"config":"${mountflag}" - -e "DEBUG_DOCKER_FLAG=${BUILD_CONFIG[DEBUG_DOCKER]}" + -e "DEBUG_DOCKER_FLAG=${BUILD_CONFIG[DEBUG_DOCKER]}" -e "BUILD_VARIANT=${BUILD_CONFIG[BUILD_VARIANT]}" "${dockerEntrypoint[@]:+${dockerEntrypoint[@]}}") - # If build specifies --ssh, add array to the command string + # If build specifies --ssh, add array to the command string. if [[ "${BUILD_CONFIG[USE_SSH]}" == "true" ]] ; then commandString=("${gitSshAccess[@]:+${gitSshAccess[@]}}" "${commandString[@]}") fi - # If build specifies --debug-docker, add array to the command string + # If build specifies --debug-docker, add array to the command string. if [[ "${BUILD_CONFIG[DEBUG_DOCKER]}" == "true" ]] ; then commandString=("${dockerMode[@]:+${dockerMode[@]}}" "${commandString[@]}") echo "DEBUG DOCKER MODE. To build jdk run /openjdk/sbin/build.sh" fi - # Run the command string in Docker + # Run the command string in Docker. ${BUILD_CONFIG[CONTAINER_AS_ROOT]} "${BUILD_CONFIG[CONTAINER_COMMAND]}" run --name "${BUILD_CONFIG[OPENJDK_CORE_VERSION]}-${BUILD_CONFIG[BUILD_VARIANT]}" "${commandString[@]}" - # Tell user where the resulting binary can be found on the host system + # Tell user where the resulting binary can be found on the host system. echo "The finished image can be found in ${targetdir} on the host system" - # If we didn't specify to keep the container then remove it + # If we didn't specify to keep the container then remove it. if [[ "${BUILD_CONFIG[KEEP_CONTAINER]}" == "false" ]] ; then echo "Removing container ${BUILD_CONFIG[OPENJDK_CORE_VERSION]}-${BUILD_CONFIG[BUILD_VARIANT]}" ${BUILD_CONFIG[CONTAINER_AS_ROOT]} "${BUILD_CONFIG[CONTAINER_COMMAND]}" ps -a | awk '{ print $1,$(NF) }' | grep "${BUILD_CONFIG[OPENJDK_CORE_VERSION]}-${BUILD_CONFIG[BUILD_VARIANT]}" | awk '{print $1 }' | xargs -I {} ${BUILD_CONFIG[CONTAINER_AS_ROOT]} ${BUILD_CONFIG[CONTAINER_COMMAND]} rm {}