diff --git a/.github/actions/environment/action.yml b/.github/actions/environment/action.yml index c5cfd18e00291b4437bcceb3a63b9f5fad565826..412bcc171474753ac641a54e6bd8f27398ef4f98 100644 --- a/.github/actions/environment/action.yml +++ b/.github/actions/environment/action.yml @@ -10,7 +10,7 @@ runs: echo REPLICATION_SYNC_TIMEOUT=300 | tee -a $GITHUB_ENV echo TEST_TIMEOUT=310 | tee -a $GITHUB_ENV echo NO_OUTPUT_TIMEOUT=320 | tee -a $GITHUB_ENV - echo PRESERVE_ENVVARS=TEST_RUN_RETRIES,SERVER_START_TIMEOUT,REPLICATION_SYNC_TIMEOUT,TEST_TIMEOUT,NO_OUTPUT_TIMEOUT | tee -a $GITHUB_ENV + echo PRESERVE_ENVVARS=TEST_RUN_RETRIES,SERVER_START_TIMEOUT,REPLICATION_SYNC_TIMEOUT,TEST_TIMEOUT,NO_OUTPUT_TIMEOUT,GC64 | tee -a $GITHUB_ENV # Configure AWS Region to avoid of issue: # https://github.com/tarantool/tarantool-qa/issues/111 echo AWS_DEFAULT_REGION=MS | tee -a $GITHUB_ENV diff --git a/.github/workflows/centos_7.yml b/.github/workflows/centos_7.yml index d3397fc8c92748c9ee6b23eda7889f2d4adb87f9..df67349ca5cf62e00075741b2225d25dc953c248 100644 --- a/.github/workflows/centos_7.yml +++ b/.github/workflows/centos_7.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'el' DIST: '7' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/centos_8.yml b/.github/workflows/centos_8.yml index 309994d92de4ca6a8044a3d927386dc4fc7f77e9..56cc624502bec676af8a976b0405e7652319afdc 100644 --- a/.github/workflows/centos_8.yml +++ b/.github/workflows/centos_8.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'el' DIST: '8' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/debian_10.yml b/.github/workflows/debian_10.yml index 5f226195514676256c41b7b6cd643cf603ae8b50..bb527807272c1203b43304cf299e6b8f7b72052e 100644 --- a/.github/workflows/debian_10.yml +++ b/.github/workflows/debian_10.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'debian' DIST: 'buster' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/debian_11.yml b/.github/workflows/debian_11.yml index 5ed4a5958d723876940177c3d6f6ed92cbbdc71c..a37fdf3b507045e3c1a9d81a1a6fdea4d50f0b70 100644 --- a/.github/workflows/debian_11.yml +++ b/.github/workflows/debian_11.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'debian' DIST: 'bullseye' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/debian_9.yml b/.github/workflows/debian_9.yml index b94747ceb8888d26b452710bc039c11f9e5ba0a2..38259e7ea470cde735305773cb9e9e2638142b0c 100644 --- a/.github/workflows/debian_9.yml +++ b/.github/workflows/debian_9.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'debian' DIST: 'stretch' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/fedora_30.yml b/.github/workflows/fedora_30.yml index 0b6a196e3d4f6f7d5dcbdde481e9a239e8e1db1b..6c52de05f55430e114604e2fc61c10915ef54313 100644 --- a/.github/workflows/fedora_30.yml +++ b/.github/workflows/fedora_30.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'fedora' DIST: '30' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/fedora_31.yml b/.github/workflows/fedora_31.yml index 47e3edaf1e5ba3cf421d18409f2c84cf668f0727..b4b38cdb7389619aec812a8c9a34038228457960 100644 --- a/.github/workflows/fedora_31.yml +++ b/.github/workflows/fedora_31.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'fedora' DIST: '31' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/fedora_32.yml b/.github/workflows/fedora_32.yml index bcb3d76e2d9697782d36b95a3cd03ac3cca3bdf5..eba3feeabb99f2904de0a86eee1d2cc9e4a1d3ff 100644 --- a/.github/workflows/fedora_32.yml +++ b/.github/workflows/fedora_32.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'fedora' DIST: '32' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/fedora_33.yml b/.github/workflows/fedora_33.yml index 149e7a296194da1206a4e80aa03d5dfcc97dfe13..4c46c7b5f60d5acafae18e3a53f0e7c4dea40fcd 100644 --- a/.github/workflows/fedora_33.yml +++ b/.github/workflows/fedora_33.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'fedora' DIST: '33' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/fedora_34.yml b/.github/workflows/fedora_34.yml index ebf13dd07ec7498fdc5a682495e2decf8e57f66d..ffc8e7560c6aa5261d779bfd356d23dc1eca112c 100644 --- a/.github/workflows/fedora_34.yml +++ b/.github/workflows/fedora_34.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'fedora' DIST: '34' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/fedora_35.yml b/.github/workflows/fedora_35.yml index 7029513a73e30c4a74bbf3b78b62749bcc8c4e8b..78f0521c0a9d4a34468d7ffb7fb838f3810968ac 100644 --- a/.github/workflows/fedora_35.yml +++ b/.github/workflows/fedora_35.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF", "GC64=ON" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'fedora' DIST: '35' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/ubuntu_16_04.yml b/.github/workflows/ubuntu_16_04.yml index be7bce77723e4e5bc0ef90191a86394485dc365c..c385af4ebd6ac6e1503676305a1e56e55d6fb54f 100644 --- a/.github/workflows/ubuntu_16_04.yml +++ b/.github/workflows/ubuntu_16_04.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'ubuntu' DIST: 'xenial' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/ubuntu_18_04.yml b/.github/workflows/ubuntu_18_04.yml index 62f77884a80a564cc73c02573fc5b3148bd6d7d2..4dc01de86cf94988f0abae821859dbe53b868eb5 100644 --- a/.github/workflows/ubuntu_18_04.yml +++ b/.github/workflows/ubuntu_18_04.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'ubuntu' DIST: 'bionic' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/ubuntu_20_04.yml b/.github/workflows/ubuntu_20_04.yml index 3b13596f2c0d5459b7b8352fea4cfb32f39540d5..2667d3bc2fab8d604c934f8ae1292e4be189ee74 100644 --- a/.github/workflows/ubuntu_20_04.yml +++ b/.github/workflows/ubuntu_20_04.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'ubuntu' DIST: 'focal' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/ubuntu_21_04.yml b/.github/workflows/ubuntu_21_04.yml index 098409fc63ba29915119260a436835b238f7597f..c8d7fb5f5a8773fa920e969c5ca079c4ab4ad20f 100644 --- a/.github/workflows/ubuntu_21_04.yml +++ b/.github/workflows/ubuntu_21_04.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'ubuntu' DIST: 'hirsute' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.github/workflows/ubuntu_21_10.yml b/.github/workflows/ubuntu_21_10.yml index ed640789ee6b909c4e663ab688c31b9311c65c85..921ee58e52c578ad89ce426bc9a1178f55506f56 100644 --- a/.github/workflows/ubuntu_21_10.yml +++ b/.github/workflows/ubuntu_21_10.yml @@ -41,6 +41,11 @@ jobs: runs-on: ubuntu-20.04-self-hosted + strategy: + fail-fast: false + matrix: + gc64: [ "GC64=OFF" ] + steps: - uses: actions/checkout@v2.3.4 with: @@ -52,6 +57,7 @@ jobs: RWS_AUTH: ${{ secrets.RWS_AUTH }} OS: 'ubuntu' DIST: 'impish' + GC64: -DLUAJIT_ENABLE_${{ matrix.gc64 }} uses: ./.github/actions/pack_and_deploy - name: call action to send Telegram message on failure env: diff --git a/.gitlab.mk b/.gitlab.mk index 7f9caf20b7c399bc7b94b6205363ed18bd2d9390..bfec4a9476fdc416e5b99a4dd16d8da6f4ffedb2 100644 --- a/.gitlab.mk +++ b/.gitlab.mk @@ -101,7 +101,6 @@ endif RWS_BASE_URL=https://rws.tarantool.org RWS_ENDPOINT=${RWS_BASE_URL}/${REPO_TYPE}/${TARANTOOL_SERIES}/${OS}/${DIST} -PRODUCT_NAME=tarantool deploy_prepare: rm -rf packpack @@ -110,6 +109,15 @@ deploy_prepare: rm -rf build package: deploy_prepare + # Set PRODUCT_NAME for the package itself. + if [ "$$(echo $(GC64) | sed 's/.*=//')" = ON ]; then \ + export PRODUCT_NAME=tarantool-gc64; \ + if [ "${OS}" = "ubuntu" ] || [ "${OS}" = "debian" ]; then \ + $$(sed -i'' -e 's/Package: tarantool$$/Package: tarantool-gc64/' debian/control); \ + fi; \ + else \ + export PRODUCT_NAME=tarantool; \ + fi; \ if [ -n "$(GIT_TAG)" ]; then \ export VERSION="$$(echo $(GIT_TAG) | sed 's/-/~/')"; \ else \ @@ -118,13 +126,19 @@ package: deploy_prepare echo VERSION=$$VERSION; \ PACKPACK_EXTRA_DOCKER_RUN_PARAMS="--network=host ${PACKPACK_EXTRA_DOCKER_RUN_PARAMS}" \ TARBALL_EXTRA_ARGS="--exclude=*.exe --exclude=*.dll" \ - PRESERVE_ENVVARS="TARBALL_EXTRA_ARGS,${PRESERVE_ENVVARS}" ./packpack/packpack + PRESERVE_ENVVARS="PRODUCT_NAME,TARBALL_EXTRA_ARGS,${PRESERVE_ENVVARS}" ./packpack/packpack deploy: if [ -z "${REPO_TYPE}" ]; then \ echo "Env variable 'REPO_TYPE' must be defined!"; \ exit 1; \ fi; \ + # Set PRODUCT_NAME for the package in the repository. + if [ "$$(echo $(GC64) | sed 's/.*=//')" = ON ]; then \ + PRODUCT_NAME=tarantool-gc64; \ + else \ + PRODUCT_NAME=tarantool; \ + fi; \ CURL_CMD="curl \ --location \ --fail \ @@ -134,7 +148,7 @@ deploy: --retry-delay 5 \ --request PUT ${RWS_ENDPOINT} \ --user $${RWS_AUTH} \ - --form product=${PRODUCT_NAME}"; \ + --form product=$${PRODUCT_NAME}"; \ for f in $$(ls -I '*build*' -I '*.changes' ./build); do \ CURL_CMD="$${CURL_CMD} --form $$(basename $${f})=@./build/$${f}"; \ done; \ diff --git a/debian/rules b/debian/rules index 00b0ae9e45d038f445f7e3f26e50641bfe754667..7e9f73d11b7b40540a833733cb8ff5c66c6ba9c3 100755 --- a/debian/rules +++ b/debian/rules @@ -19,6 +19,12 @@ DEB_CMAKE_EXTRA_FLAGS := \ -DWITH_SYSVINIT=ON \ -DWITH_SYSTEMD=$(WITH_SYSTEMD) +# Append CMAKE flag with -DLUAJIT_ENABLE_GC64 value. It is required +# for CI to build Tarantool with GC64 enabled or disabled dynamically. +ifneq ($(GC64),) + DEB_CMAKE_EXTRA_FLAGS += $(GC64) +endif + # Install tarantool.service within tarantool-common package, but does not # install it within tarantool and tarantool-dev packages. DEB_DH_INSTALLINIT_ARGS := --name=tarantool diff --git a/rpm/tarantool.spec b/rpm/tarantool.spec index 950e5790d8b37d6525ce6efc6e8672cf94640d07..ae01332528fdd330896d5bc37b91a178b7fb9288 100644 --- a/rpm/tarantool.spec +++ b/rpm/tarantool.spec @@ -11,6 +11,11 @@ # need to use cmake3 package to build Tarantool on old systems. %define use_cmake3 0%{?rhel} == 7 +# Get GC64 variable which can keep compiler flag -DLUAJIT_ENABLE_GC64 +# with a value of ON or OFF to enable or disable luajit gc64. +# It needs to build Tarantool in CI dynamically. +%define _gc64 %{getenv:GC64} + %if %use_cmake3 # XXX: Unfortunately there is no way to make rpmbuild install and # enable EPEL repository prior to the build step. However, the @@ -105,7 +110,16 @@ BuildRequires: python3-pyyaml # Install prove to run LuaJIT tests. BuildRequires: perl-Test-Harness +# Set product name from env variable or use default "tarantool". +# It is a temporary solution to define special name of the package +# to "tarantool-gc64" in CI. It is required to set up Tarantool +# with GC64 enabled by "yum install tarantool-gc64" +%define _product %{getenv:PRODUCT_NAME} +%if "%{_product}" +Name: %{_product} +%else Name: tarantool +%endif # ${major}.${major}.${minor}.${patch}, e.g. 1.6.8.175 # Version is updated automaically using git describe --long --always Version: 1.7.2.385 @@ -190,6 +204,9 @@ C and Lua/C modules. %endif %if 0%{?fedora} >= 33 -DENABLE_LTO=ON \ +%endif +%if "%{_gc64}" + %{_gc64} \ %endif -DENABLE_WERROR:BOOL=ON \ -DENABLE_DIST:BOOL=ON