diff --git a/Builder/src/main.cpp b/Builder/src/main.cpp index ab80f12..8c83e4c 100644 --- a/Builder/src/main.cpp +++ b/Builder/src/main.cpp @@ -80,9 +80,9 @@ std::string build_command(const ClientData &client_data) { // Basic build command if (client_data.backend == BackendType::singularity) { - build_command = "/usr/bin/sudo /usr/local/bin/SingularityBuilderBackend"; + build_command = "/usr/bin/sudo /usr/local/bin/singularity-builder-backend.sh"; } else if (client_data.backend == BackendType::docker) { - build_command = "/usr/bin/sudo /usr/local/bin/DockerBuilderBackend"; + build_command = "/usr/bin/sudo /usr/local/bin/docker-builder-backend.sh"; } else { throw std::runtime_error("Invalid builder backend"); } diff --git a/BuilderQueue/include/OpenStack.h b/BuilderQueue/include/OpenStack.h index 2c00ae7..2b63fb8 100644 --- a/BuilderQueue/include/OpenStack.h +++ b/BuilderQueue/include/OpenStack.h @@ -26,7 +26,7 @@ class OpenStack : public std::enable_shared_from_this { // If the builder wasn't created the handlers error_code will be set and a default constructed builder will be returned template void request_create(CreateHandler handler) { - std::string create_command("/usr/local/bin/CreateBuilder"); + std::string create_command("/usr/local/bin/create-builder.sh"); Logger::info("Launching command: " + create_command); @@ -111,7 +111,7 @@ class OpenStack : public std::enable_shared_from_this { // If the builder couldn't be destroyed the handlers error_code will be set template void destroy(BuilderData builder, DestroyHandler handler) { - const std::string destroy_command("/usr/local/bin/DestroyBuilder " + builder.id); + const std::string destroy_command("/usr/local/bin/destroy-builder.sh " + builder.id); Logger::info("Launching command: " + destroy_command); std::error_code destroy_error; diff --git a/CMakeLists.txt b/CMakeLists.txt index 5dd8cdd..953fddf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,9 +45,9 @@ set(SCRIPTS Scripts/DockerBuilderBackend) # Create executables -add_executable(builder_queue ${SOURCE_FILES_QUEUE}) -add_executable(builder_server ${SOURCE_FILES_BUILDER}) -add_executable(container_builder ${SOURCE_FILES_CLIENT}) +add_executable(builder-queue ${SOURCE_FILES_QUEUE}) +add_executable(builder-server ${SOURCE_FILES_BUILDER}) +add_executable(container-builder ${SOURCE_FILES_CLIENT}) # Ignore system boost and use module system boost set(Boost_NO_BOOST_CMAKE TRUE) @@ -60,27 +60,27 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") set(HARDENING_FLAGS "${HADENING_FLAGS} -Wl,-z,noexecstack,-z,now,-z,relro,-z,nodlopen") endif() -set_target_properties(builder_queue PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${HARDENING_FLAGS}") -set_target_properties(builder_queue PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${HARDENING_FLAGS}") -set_target_properties(builder_server PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${HARDENING_FLAGS}") -set_target_properties(builder_server PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${HARDENING_FLAGS}") -set_target_properties(container_builder PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${HARDENING_FLAGS}") -set_target_properties(container_builder PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${HARDENING_FLAGS}") +set_target_properties(builder-queue PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${HARDENING_FLAGS}") +set_target_properties(builder-queue PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${HARDENING_FLAGS}") +set_target_properties(builder-server PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${HARDENING_FLAGS}") +set_target_properties(builder-server PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${HARDENING_FLAGS}") +set_target_properties(container-builder PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS} ${HARDENING_FLAGS}") +set_target_properties(container-builder PROPERTIES LINK_FLAGS "${LINK_FLAGS} ${HARDENING_FLAGS}") set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) -target_link_libraries(builder_queue ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries(builder_server ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries(container_builder ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(builder-queue ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(builder-server ${CMAKE_THREAD_LIBS_INIT}) +target_link_libraries(container-builder ${CMAKE_THREAD_LIBS_INIT}) find_package(Boost 1.66.0 COMPONENTS system filesystem serialization regex thread program_options REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) -target_link_libraries(builder_queue ${Boost_LIBRARIES}) -target_link_libraries(builder_server ${Boost_LIBRARIES}) -target_link_libraries(container_builder ${Boost_LIBRARIES}) +target_link_libraries(builder-queue ${Boost_LIBRARIES}) +target_link_libraries(builder-server ${Boost_LIBRARIES}) +target_link_libraries(container-builder ${Boost_LIBRARIES}) -install(TARGETS builder_queue builder_server container_builder RUNTIME DESTINATION bin) +install(TARGETS builder-queue builder-server container-builder RUNTIME DESTINATION bin) # Install scripts install(FILES ${SCRIPTS} diff --git a/README.md b/README.md index 15da223..480737d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,46 @@ -ContainerBuilder +container-builder ================ +Containers traditionally require root access to build from a recipe file, as such native access to build cannot be granted on OLCF HPC resources such as Titan and Summit. +container-builder is an interactive container building utility that gets around this limitation by building each container on a remote ephemeral VM, streaming the output in real time to the client. +Use +================= +Singularity recipe: +``` +$ module load container-builder +$ container-builder container.img singularity.recipe +``` +Docker recipe: +``` +$ module load container-builder +$ container-builder --backend=docker container.img docker.recipe +``` + +OLCF Recipes +================== +container-builder has access to the private OLCF container-recipes docker registry. + +Implementation +================== +Some insight into the build process: + +* Client initiates build request through CLI +* Client build request enters the queue +* Queue creates builder +* Builder details sent to the client +* The client connects to the builder +* Container recipe file is sent from client to builder +* Build output is streamed in real time to the client +* Container image is sent from the builder to the client +* Client disconnects from queue +* Queue destroys VM + +Deploy +================== +To deploy container-builder three steps are taken +* The Builder OpenStack image must be created +* The Queue OpenStack instance must be started +* The client application must be built + +Due to the non-trivial complexity of provisioning Gitlab runners handle deployment through the CI system. +Following `.gitlab-ci.yml` should provide insight into the provisioning process. diff --git a/Scripts/README.md b/Scripts/README.md deleted file mode 100644 index 2bc6cb6..0000000 --- a/Scripts/README.md +++ /dev/null @@ -1,58 +0,0 @@ -# Server Control - -Prerequisite: On Titan -* module load python -* pip install --user python-openstackclient - -Servers may be spun up anywhere on the ORNL network and also the Titan login nodes. To obtain the credentials required for access take the following steps. -* Login to `cloud.cades.ornl.gov` -* Navigate to `Compute -> Access & Security -> API Access` -* Click `Download OpenStack RC File v3` -* Rename downloaded file as openrc.sh and move it to `ContainerBuilder/Scripts` -* Modify `openrc.sh` to hardcode `$OS_PASSWORD_INPUT` and remove the interactive prompt -* Add the following to the bottom of `openrc.sh` -``` -export OS_PROJECT_DOMAIN_NAME=$OS_USER_DOMAIN_NAME -export OS_IDENTITY_API_VERSION="3" -``` - -To initiate the Containerbuilder service several steps are required. -* Create the BuilderData master OpenStack image which will be used by the BuilderData Queue -* Bring up the BuilderQueue OpenStack instance - -First the builder master image must be created. -``` -ContainerBuilder/Scripts/CreateBuilderImage -``` -After creation an SSH key will be created: `ContainerBuilderKey` - -`ContainerBuilderKey` provides SSH access to the BuilderQueue as well as all of the builders - - -Once the builder master image has been created the queue can be safely brought up. -``` -ContainerBuilder/Scripts/BringUpQueue -``` - -During bring up `openrc.sh` will be copied to `/home/queue` on the `BuilderQueue` host, these credentials are required to bring up builders. - - -`ContainerBuilder` should now be functional - - -To login to the queue or a builder: -``` -ssh -i ./ContainerBuilderKey cades@ -``` - -To destroy a new queue instance: -``` -ContainerBuilder/Scripts/TearDownQueue -``` - ---- -Note: To use the openstack client from Titan yo must export `OS_CACERT=$(pwd)/OpenStack.cer` - -Note: `openstack list` can be called to show all active OpenStack instances including their ID, name, and IP - -Note: To check if the BuilderQueue and BuilderData services are running ssh to each node and run `systemctl status`. To diagnose issues use `sudo journalctl` diff --git a/Scripts/BringUpQueue b/Scripts/bring-up-queue.sh similarity index 94% rename from Scripts/BringUpQueue rename to Scripts/bring-up-queue.sh index 9d3e1a0..b7ddfa5 100755 --- a/Scripts/BringUpQueue +++ b/Scripts/bring-up-queue.sh @@ -44,10 +44,10 @@ while ! ssh_is_up; do done echo "Fixing ORNL TCP timeout issue for current session" -ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/DisableTcpTimestamps +ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/disable-TCP-timestamps.sh echo "Provisioning the queue" -ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/ProvisionQueue +ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/provision-queue.sh # Copy OpenStack credentials to VM and then move to correct directory # These credentials are available as environment variables to the runners @@ -63,6 +63,6 @@ openstack server reboot --wait ${VM_UUID} echo "Started ${VM_UUID} with external IP ${VM_IP} using ${KEY_FILE}" -cat << EOF > ${SCRIPT_DIR}/../artifacts/queue_host.sh +cat << EOF > ${SCRIPT_DIR}/../artifacts/queue-host.sh QUEUE_HOST=${VM_IP} EOF \ No newline at end of file diff --git a/Scripts/CreateBuilderImage b/Scripts/create-builder-image.sh similarity index 95% rename from Scripts/CreateBuilderImage rename to Scripts/create-builder-image.sh index 68b025f..a4dd4e6 100755 --- a/Scripts/CreateBuilderImage +++ b/Scripts/create-builder-image.sh @@ -9,8 +9,8 @@ echo "using OS_CACERT="${OS_CACERT} # OpenStack credentials will be sourced by the gitlab runners # Destroy any existing builder if one exists -./TearDownQueue --no_source -./DestroyBuilderImage --no_source +tear-down-queue.sh --no_source +destroy-builder-image.sh --no_source # Get script directory SCRIPT_DIR=$(dirname $0) @@ -59,10 +59,10 @@ while ! ssh_is_up; do done echo "Fixing ORNL TCP timeout issue for current session" -ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/DisableTcpTimestamps +ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/disable-TCP-timestamps.sh echo "Provisioning the builder" -ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/ProvisionBuilder +ssh -o StrictHostKeyChecking=no -i ${KEY_FILE} cades@${VM_IP} 'sudo bash -s' < ${SCRIPT_DIR}/provision-builder.sh # Copy Gitlab docker registry access token to VM and then move to correct directory # This credentials are available as environment variables to the runners diff --git a/Scripts/CreateBuilder b/Scripts/create-builder.sh similarity index 100% rename from Scripts/CreateBuilder rename to Scripts/create-builder.sh diff --git a/Scripts/DestroyBuilderImage b/Scripts/destroy-builder-image.sh similarity index 100% rename from Scripts/DestroyBuilderImage rename to Scripts/destroy-builder-image.sh diff --git a/Scripts/DestroyBuilder b/Scripts/destroy-builder.sh similarity index 100% rename from Scripts/DestroyBuilder rename to Scripts/destroy-builder.sh diff --git a/Scripts/DisableTcpTimestamps b/Scripts/disable-TCP-timestamps.sh similarity index 100% rename from Scripts/DisableTcpTimestamps rename to Scripts/disable-TCP-timestamps.sh diff --git a/Scripts/DockerBuilderBackend b/Scripts/docker-builder-backend.sh similarity index 94% rename from Scripts/DockerBuilderBackend rename to Scripts/docker-builder-backend.sh index f292689..f366623 100755 --- a/Scripts/DockerBuilderBackend +++ b/Scripts/docker-builder-backend.sh @@ -9,7 +9,7 @@ case ${i} in shift # past argument with no value ;; *) - echo "unknown argument to SingularityBuilderBackend" + echo "unknown argument to singularity-builder-backend.sh" exit 1 ;; esac diff --git a/Scripts/ProvisionBuilder b/Scripts/provision-builder.sh similarity index 86% rename from Scripts/ProvisionBuilder rename to Scripts/provision-builder.sh index c6ba774..03b3d8d 100755 --- a/Scripts/ProvisionBuilder +++ b/Scripts/provision-builder.sh @@ -7,8 +7,8 @@ set -o xtrace useradd --create-home --home-dir /home/builder --shell /bin/bash builder # Allow builder to run singularity as root -echo 'builder ALL=(ALL) NOPASSWD: /usr/local/bin/SingularityBuilderBackend' > /etc/sudoers.d/builder -echo 'builder ALL=(ALL) NOPASSWD: /usr/local/bin/DockerBuilderBackend' >> /etc/sudoers.d/builder +echo 'builder ALL=(ALL) NOPASSWD: /usr/local/bin/singularity-builder-backend.sh' > /etc/sudoers.d/builder +echo 'builder ALL=(ALL) NOPASSWD: /usr/local/bin/docker-builder-backend.sh' >> /etc/sudoers.d/builder chmod 0440 /etc/sudoers.d/builder apt-get -y update @@ -82,8 +82,8 @@ rm -rf /boost_1_66_0 # Install builder_server cd / -git clone https://code.ornl.gov/olcf/ContainerBuilder.git -cd ContainerBuilder +git clone https://code.ornl.gov/olcf/container-builder.git +cd container-builder mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/usr/local" .. make @@ -92,9 +92,9 @@ make install cd / # Create systemd script and launch the Builder daemon -cat << EOF > /etc/systemd/system/builder_server.service +cat << EOF > /etc/systemd/system/builder-server.service [Unit] -Description=builder_server daemon +Description=builder-server daemon After=network.target [Service] @@ -102,11 +102,11 @@ Type=simple User=builder WorkingDirectory=/home/builder Environment="LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib" -ExecStart=/usr/local/bin/builder_server +ExecStart=/usr/local/bin/builder-server Restart=no [Install] WantedBy=multi-user.target EOF -systemctl enable builder_server \ No newline at end of file +systemctl enable builder-server \ No newline at end of file diff --git a/Scripts/ProvisionQueue b/Scripts/provision-queue.sh similarity index 83% rename from Scripts/ProvisionQueue rename to Scripts/provision-queue.sh index e4a33bc..da2f849 100755 --- a/Scripts/ProvisionQueue +++ b/Scripts/provision-queue.sh @@ -26,22 +26,22 @@ rm -rf /boost_1_66_0 # Install ContainerBuilder cd / -git clone https://code.ornl.gov/olcf/ContainerBuilder.git -cd ContainerBuilder +git clone https://code.ornl.gov/olcf/container-builder.git +cd container-builder mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTAL_PREFIX="/usr/local" .. make make install cd / -rm -rf /ContainerBuilder +rm -rf /container-builder # Install OpenStack command line client pip install python-openstackclient # Create systemd script and launch the BuilderQueue daemon -cat << EOF > /etc/systemd/system/builder_queue.service +cat << EOF > /etc/systemd/system/builder-queue.service [Unit] -Description=builder_queue daemon +Description=builder-queue daemon After=network.target [Service] @@ -49,7 +49,7 @@ Type=simple User=queue Environment="LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib" WorkingDirectory=/home/queue -ExecStart=/usr/local/bin/builder_queue +ExecStart=/usr/local/bin/builder-queue Restart=no [Install] @@ -58,4 +58,4 @@ EOF # There appears to be some weird issues with starting systemd services inside of a cloud-init script # The easiest thing to do is just reboot after enabling the service -systemctl enable builder_queue \ No newline at end of file +systemctl enable builder-queue \ No newline at end of file diff --git a/Scripts/recipe_list b/Scripts/recipe_list new file mode 100644 index 0000000..1724d87 --- /dev/null +++ b/Scripts/recipe_list @@ -0,0 +1,5 @@ +#requires CLI utility httpie and jq to be installed + +CREDENTIAL=$(echo -n atj:knx21nws | base64) +TOKEN=$(http 'https://code.ornl.gov/jwt/auth?service=container_registry&expires_in=9000&scope=repository:olcf/container-recipes/test:pull' Authorization:"Basic $CREDENTIAL" | jq -r '.token') +http https://code.ornl.gov:4567/v2/olcf/container-recipes/test/manifests/latest Authorization:"Bearer $TOKEN" \ No newline at end of file diff --git a/Scripts/SingularityBuilderBackend b/Scripts/singularity-builder-backend.sh similarity index 91% rename from Scripts/SingularityBuilderBackend rename to Scripts/singularity-builder-backend.sh index afec989..0c8dd5d 100755 --- a/Scripts/SingularityBuilderBackend +++ b/Scripts/singularity-builder-backend.sh @@ -9,7 +9,7 @@ case ${i} in shift # past argument with no value ;; *) - echo "unknown argument to SingularityBuilderBackend" + echo "unknown argument to singularity-builder-backend.sh" exit 1 ;; esac diff --git a/Scripts/TearDownQueue b/Scripts/tear-down-queue.sh similarity index 100% rename from Scripts/TearDownQueue rename to Scripts/tear-down-queue.sh diff --git a/deploy-openstack.sh b/deploy-openstack.sh index 83560a4..30b63ed 100755 --- a/deploy-openstack.sh +++ b/deploy-openstack.sh @@ -11,5 +11,5 @@ pip install python-openstackclient mkdir artifacts cd Scripts -./CreateBuilderImage -./BringUpQueue \ No newline at end of file +./create-builder-image.sh +./bring-up-queue.sh \ No newline at end of file diff --git a/deploy-summitdev.sh b/deploy-summitdev.sh index c48cce6..3bae0a7 100755 --- a/deploy-summitdev.sh +++ b/deploy-summitdev.sh @@ -27,7 +27,7 @@ if [ ! -d ${SPACKROOT} ]; then fi cp spack-etc-summitdev/*.yaml ${SPACKROOT}/etc/spack -${SPACKROOT}/bin/spack repo add spack-repo/containerbuilder +${SPACKROOT}/bin/spack repo add spack-repo/container-builder ${SPACKROOT}/bin/spack spec -NIl "container-builder%gcc@7.1.0" ${SPACKROOT}/bin/spack install "container-builder%gcc@7.1.0" @@ -40,7 +40,7 @@ real_mf_path="$SPACKROOT/$root/$arch/$mfname" MF_ROOT=/sw/summitdev/modulefiles/core/container-builder mkdir -p ${MF_ROOT} -source artifacts/queue_host.sh +source artifacts/queue-host.sh cat << EOF > ${MF_ROOT}/${VERSION} #%Module @@ -48,4 +48,4 @@ cat << EOF > ${MF_ROOT}/${VERSION} setenv QUEUE_HOST ${QUEUE_HOST} setenv QUEUE_PORT 8080 module --ignore-cache load ${real_mf_path} -EOF +EOF \ No newline at end of file diff --git a/deploy-titan.sh b/deploy-titan.sh index cbeec42..3d90a2c 100755 --- a/deploy-titan.sh +++ b/deploy-titan.sh @@ -28,7 +28,7 @@ if [ ! -d ${SPACKROOT} ]; then fi cp spack-etc-titan/*.yaml ${SPACKROOT}/etc/spack -${SPACKROOT}/bin/spack repo add spack-repo/containerbuilder +${SPACKROOT}/bin/spack repo add spack-repo/container-builder ${SPACKROOT}/bin/spack spec -NIl "container-builder%gcc@5.3.0" ${SPACKROOT}/bin/spack install "container-builder%gcc@5.3.0" @@ -41,7 +41,7 @@ real_mf_path="$SPACKROOT/$root/$arch/$mfname" MF_ROOT=/sw/xk6/modulefiles/container-builder mkdir -p ${MF_ROOT} -source artifacts/queue_host.sh +source artifacts/queue-host.sh cat << EOF > ${MF_ROOT}/${VERSION} #%Module diff --git a/spack-repo/README.md b/spack-repo/README.md index a9a136b..235a515 100644 --- a/spack-repo/README.md +++ b/spack-repo/README.md @@ -1,14 +1,14 @@ Spack Package Repository ======================== -In order to integrate ContainerBuilder with an existing Spack installation, -we separate the ContainerBuilder package into its own "Spack Repository" which +In order to integrate container-builder with an existing Spack installation, +we separate the container-builder package into its own "Spack Repository" which can be dynamically added to an existing spack installation like this: ```bash # Assumes a loaded spack environment -spack repo add spack-repo/containerbuilder +spack repo add spack-repo/container-builder spack install container-builder ``` diff --git a/spack-repo/containerbuilder/.gitignore b/spack-repo/container-builder/.gitignore similarity index 100% rename from spack-repo/containerbuilder/.gitignore rename to spack-repo/container-builder/.gitignore diff --git a/spack-repo/containerbuilder/packages/boost/boost_1.63.0_pgi.patch b/spack-repo/container-builder/packages/boost/boost_1.63.0_pgi.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/boost_1.63.0_pgi.patch rename to spack-repo/container-builder/packages/boost/boost_1.63.0_pgi.patch diff --git a/spack-repo/containerbuilder/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch b/spack-repo/container-builder/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch rename to spack-repo/container-builder/packages/boost/boost_1.63.0_pgi_17.4_workaround.patch diff --git a/spack-repo/containerbuilder/packages/boost/boost_11856.patch b/spack-repo/container-builder/packages/boost/boost_11856.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/boost_11856.patch rename to spack-repo/container-builder/packages/boost/boost_11856.patch diff --git a/spack-repo/containerbuilder/packages/boost/call_once_variadic.patch b/spack-repo/container-builder/packages/boost/call_once_variadic.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/call_once_variadic.patch rename to spack-repo/container-builder/packages/boost/call_once_variadic.patch diff --git a/spack-repo/containerbuilder/packages/boost/package.py b/spack-repo/container-builder/packages/boost/package.py similarity index 100% rename from spack-repo/containerbuilder/packages/boost/package.py rename to spack-repo/container-builder/packages/boost/package.py diff --git a/spack-repo/containerbuilder/packages/boost/python_jam.patch b/spack-repo/container-builder/packages/boost/python_jam.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/python_jam.patch rename to spack-repo/container-builder/packages/boost/python_jam.patch diff --git a/spack-repo/containerbuilder/packages/boost/python_jam_pre156.patch b/spack-repo/container-builder/packages/boost/python_jam_pre156.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/python_jam_pre156.patch rename to spack-repo/container-builder/packages/boost/python_jam_pre156.patch diff --git a/spack-repo/containerbuilder/packages/boost/xl_1_62_0_le.patch b/spack-repo/container-builder/packages/boost/xl_1_62_0_le.patch similarity index 100% rename from spack-repo/containerbuilder/packages/boost/xl_1_62_0_le.patch rename to spack-repo/container-builder/packages/boost/xl_1_62_0_le.patch diff --git a/spack-repo/container-builder/packages/container-builder/package.py b/spack-repo/container-builder/packages/container-builder/package.py new file mode 100644 index 0000000..942a7ba --- /dev/null +++ b/spack-repo/container-builder/packages/container-builder/package.py @@ -0,0 +1,15 @@ +from spack import * +import os + +class ContainerBuilder(CMakePackage): + """container-builder Client""" + + homepage = "https://code.ornl.gov/olcf/container-builder.git" + url = "https://code.ornl.gov/olcf/container-builder/archive/master.zip" + + version('master', git="https://code.ornl.gov/olcf/container-builder.git") + ci_tag = os.environ.get('CI_COMMIT_TAG') + if ci_tag: + version(ci_tag, git="https://code.ornl.gov/olcf/container-builder.git", tag=ci_tag) + + depends_on('boost@1.66.0') diff --git a/spack-repo/containerbuilder/repo.yaml b/spack-repo/container-builder/repo.yaml similarity index 100% rename from spack-repo/containerbuilder/repo.yaml rename to spack-repo/container-builder/repo.yaml diff --git a/spack-repo/containerbuilder/packages/container-builder/package.py b/spack-repo/containerbuilder/packages/container-builder/package.py deleted file mode 100644 index d86460d..0000000 --- a/spack-repo/containerbuilder/packages/container-builder/package.py +++ /dev/null @@ -1,15 +0,0 @@ -from spack import * -import os - -class ContainerBuilder(CMakePackage): - """ContainerBuilder Client""" - - homepage = "https://github.com/AdamSimpson/ContainerBuilder" - url = "https://github.com/AdamSimpson/ContainerBuilder/archive/master.zip" - - version('master', git="https://code.ornl.gov/olcf/ContainerBuilder.git") - ci_tag = os.environ.get('CI_COMMIT_TAG') - if ci_tag: - version(ci_tag, git="https://code.ornl.gov/olcf/ContainerBuilder.git", tag=ci_tag) - - depends_on('boost@1.66.0')