From 30e4eb970200ba28bf99a25d587b1e43aaa7a084 Mon Sep 17 00:00:00 2001 From: Deda Date: Thu, 22 Feb 2024 11:19:57 +0100 Subject: [PATCH] Modify run.sh for the toolchain upgrade --- release/package/run.sh | 56 ++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/release/package/run.sh b/release/package/run.sh index bbd5ff48a..054892775 100755 --- a/release/package/run.sh +++ b/release/package/run.sh @@ -1,11 +1,14 @@ #!/bin/bash - set -Eeuo pipefail - SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +SUPPORTED_TOOLCHAINS=( + v4 v5 +) + SUPPORTED_OS=( centos-7 centos-9 - debian-10 debian-11 debian-11-arm + debian-10 debian-11 debian-11-arm debian-12 debian-12-arm ubuntu-18.04 ubuntu-20.04 ubuntu-22.04 ubuntu-22.04-arm fedora-36 amzn-2 @@ -18,26 +21,30 @@ SUPPORTED_BUILD_TYPES=( ) PROJECT_ROOT="$SCRIPT_DIR/../.." -TOOLCHAIN_VERSION="toolchain-v4" -ACTIVATE_TOOLCHAIN="source /opt/${TOOLCHAIN_VERSION}/activate" +# TODO(gitbuda): Toolchain is now specific for a given OS -> ADJUST: +# * under init, toolchain version is passed to docker compose -> consider having arch + toolchain version as a folder structure +# * for a give OS latest possible toolchain should be picked -> there is only one toolchain per OS possible HOST_OUTPUT_DIR="$PROJECT_ROOT/build/output" print_help () { - # TODO(gitbuda): Update the release/package/run.sh help - echo "$0 init|package|docker|test {os} {build_type} [--for-docker|--for-platform]" + echo "$0 init {toolchain _version} | docker | build {toolchain _version} {os} | package {toolchain _version} {os} {build_type} [--for-docker|--for-platform]" echo "" + echo " Toolchain versions: ${SUPPORTED_TOOLCHAINS[*]}" echo " OSs: ${SUPPORTED_OS[*]}" echo " Build types: ${SUPPORTED_BUILD_TYPES[*]}" exit 1 } make_package () { - os="$1" - build_type="$2" + toolchain_version="$1" + os="$2" + build_type="$3" - build_container="mgbuild_$os" + build_container="mgbuild_${toolchain_version}_${os}" echo "Building Memgraph for $os on $build_container..." + local ACTIVATE_TOOLCHAIN="source /opt/toolchain-${toolchain_version}/activate" + package_command="" if [[ "$os" =~ ^"centos".* ]] || [[ "$os" =~ ^"fedora".* ]] || [[ "$os" =~ ^"amzn".* ]]; then docker exec "$build_container" bash -c "yum -y update" @@ -52,10 +59,10 @@ make_package () { package_command=" cpack -G DEB --config ../CPackConfig.cmake " fi telemetry_id_override_flag="" - if [[ "$#" -gt 2 ]]; then - if [[ "$3" == "--for-docker" ]]; then + if [[ "$#" -gt 3 ]]; then + if [[ "$4" == "--for-docker" ]]; then telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER " - elif [[ "$3" == "--for-platform" ]]; then + elif [[ "$4" == "--for-platform" ]]; then telemetry_id_override_flag=" -DMG_TELEMETRY_ID_OVERRIDE=DOCKER-PLATFORM" else print_help @@ -75,7 +82,7 @@ make_package () { # Ensure we have a clean build directory docker exec "$build_container" rm -rf /memgraph - + docker exec "$build_container" mkdir -p /memgraph # TODO(gitbuda): Revisit copying the whole repo -> makese sense under CI. docker cp "$PROJECT_ROOT/." "$build_container:/memgraph/" @@ -124,14 +131,20 @@ make_package () { case "$1" in init) + shift 1 + if [[ "$#" -lt 1 ]]; then + print_help + fi + toolchain_version="$1" cd "$SCRIPT_DIR" if ! which "docker-compose" >/dev/null; then docker_compose_cmd="docker compose" else docker_compose_cmd="docker-compose" fi - $docker_compose_cmd build --build-arg TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}" - $docker_compose_cmd up -d + $docker_compose_cmd -f docker-compose-${toolchain_version}.yml up -d --build + # $docker_compose_cmd build --build-arg TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}" + # $docker_compose_cmd up -d ;; docker) @@ -153,11 +166,12 @@ case "$1" in package) shift 1 - if [[ "$#" -lt 2 ]]; then + if [[ "$#" -lt 3 ]]; then print_help fi - os="$1" - build_type="$2" + toolchain_version="$1" + os="$2" + build_type="$3" shift 2 is_os_ok=false for supported_os in "${SUPPORTED_OS[@]}"; do @@ -174,7 +188,7 @@ case "$1" in fi done if [[ "$is_os_ok" == true && "$is_build_type_ok" == true ]]; then - make_package "$os" "$build_type" "$@" + make_package "$toolchain_version" "$os" "$build_type" "$@" else if [[ "$is_os_ok" == false ]]; then echo "Unsupported OS: $os" @@ -195,7 +209,7 @@ case "$1" in # a name of the os folder, e.g. ubuntu-22.04-arm os="$2" cd "$SCRIPT_DIR/$os" - docker build -f Dockerfile --build-arg TOOLCHAIN_VERSION="toolchain-$toolchain_version" -t "memgraph/memgraph-builder:${toolchain_version}_$os" . + docker build -f Dockerfile --build-arg TOOLCHAIN_VERSION="toolchain-$toolchain_version" -t "memgraph/memgraph-builder:v${toolchain_version}_$os" . ;; test)