From e921cfca4da3a0ab1dad2ccb629fc6394e104e7d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 16:16:12 +0100 Subject: [PATCH 01/18] cleanup some remains of ivas-float-update branch --- README.md | 2 +- includes/default-variables-basop.yml | 1 - main-basop.yml | 40 ++++++++++------------------ main-float.yml | 1 - 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 60405aa..97e3b78 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ include: file: main-basop.yml ``` -This way, any CI change can be developed centrally in this repository and does not need to be merged/ported to different repositories/branches (e.g. keeping ivas-basop main and ivas-float-update in synch). +This way, any CI change can be developed centrally in this repository and does not need to be merged/ported to different repositories/branches. ### Adding new CI code diff --git a/includes/default-variables-basop.yml b/includes/default-variables-basop.yml index 235c96c..e9aee3e 100644 --- a/includes/default-variables-basop.yml +++ b/includes/default-variables-basop.yml @@ -1,7 +1,6 @@ variables: EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" # TODO: cleanup and use global var defined in ivas-codec-ci - FLOAT_REF_BRANCH: "ivas-float-update" FLOAT_REF_BRANCH_MERGE_SOURCE: "" SCRIPTS_DIR: "/usr/local/scripts" LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv" diff --git a/main-basop.yml b/main-basop.yml index 7b274d7..1d05959 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -129,12 +129,6 @@ workflow: - if: $CI_PIPELINE_SOURCE == 'push' when: never -.rules-merge-request-to-float-ref: - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "ivas-float-update" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - .rules-merge-request-to-main-no-draft: rules: - if: $CI_MERGE_REQUEST_TITLE =~ /^(\[Draft\]|\(Draft\)|Draft:)/ @@ -143,14 +137,6 @@ workflow: - if: $CI_PIPELINE_SOURCE == 'push' when: never -.rules-merge-request-to-float-ref-no-draft: - rules: - - if: $CI_MERGE_REQUEST_TITLE =~ /^(\[Draft\]|\(Draft\)|Draft:)/ - when: never - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "ivas-float-update" - - if: $CI_PIPELINE_SOURCE == 'push' - when: never - .rules-pytest-to-ref-pre: rules: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "ivas-conformance-linux" @@ -1470,10 +1456,11 @@ split-rendering-pytest-on-merge-request: - $REPORT_XML # test that runs all modes with 1s input signals -codec-smoke-test: +# TODO: adapt for BASOP +.codec-smoke-test: extends: - .test-job-linux-needs-testv-dir - - .rules-merge-request-to-float-ref-no-draft + - .rules-merge-request-to-main-no-draft timeout: "20 minutes" stage: test needs: ["build-codec-linux-make"] @@ -1515,7 +1502,7 @@ codec-smoke-test: check-first-frame-is-sid: extends: - .test-job-linux-needs-testv-dir - - .rules-merge-request-to-float-ref-no-draft + - .rules-merge-request-to-main-no-draft stage: test needs: ["build-codec-linux-make"] script: @@ -1560,7 +1547,7 @@ check-first-frame-is-sid: ivas-interop-on-merge-request: extends: - .test-job-linux-needs-testv-dir - - .rules-merge-request-to-float-ref-no-draft + - .rules-merge-request-to-main-no-draft - .test-job-linux-compares-to-fixed-target stage: test timeout: "10 minutes" @@ -1654,10 +1641,11 @@ lc3-wrapper-unit-test: # from float # test renderer executable -renderer-smoke-test: +# TODO: adapt for BASOP +.renderer-smoke-test: extends: - .test-job-linux - - .rules-merge-request-to-float-ref-no-draft + - .rules-merge-request-to-main-no-draft needs: ["build-codec-linux-make"] stage: test script: @@ -1679,10 +1667,10 @@ renderer-smoke-test: # from float # test renderer executable with cmake + asan -renderer-asan: +# TODO: turn into scheduled job +.renderer-asan: extends: - .test-job-linux - - .rules-merge-request-to-float-ref-no-draft needs: ["build-codec-linux-cmake"] stage: test script: @@ -1706,10 +1694,10 @@ renderer-asan: # from float # test renderer executable with cmake + msan -renderer-msan: +# TODO: turn into scheduled job +.renderer-msan: extends: - .test-job-linux - - .rules-merge-request-to-float-ref-no-draft needs: ["build-codec-linux-cmake"] stage: test tags: @@ -1735,10 +1723,10 @@ renderer-msan: # from float # test renderer executable with cmake + usan -renderer-usan: +# TODO: turn into scheduled job +.renderer-usan: extends: - .test-job-linux - - .rules-merge-request-to-float-ref-no-draft needs: ["build-codec-linux-cmake"] stage: test tags: diff --git a/main-float.yml b/main-float.yml index f17b861..a2f6366 100644 --- a/main-float.yml +++ b/main-float.yml @@ -282,7 +282,6 @@ branch-is-up-to-date-with-main-post: junit: - report-junit.xml -### The stv jobs are run for both main and ivas-float-update basop-compat-stv: extends: - .basop-ci-branch-compat-template -- GitLab From 179c6ff70d393fccb8f962a45e74d8f8db652468 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 16:30:46 +0100 Subject: [PATCH 02/18] add basop-compat smoke test --- main-float.yml | 59 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/main-float.yml b/main-float.yml index a2f6366..3e093e8 100644 --- a/main-float.yml +++ b/main-float.yml @@ -402,36 +402,16 @@ build-codec-windows-msbuild: # --------------------------------------------------------------- # test that runs all modes with 1s input signals -codec-smoke-test: +.smoke-test-template: extends: - .test-job-linux-needs-testv-dir - - .rules-merge-request-to-main - timeout: "20 minutes" tags: - ivas-linux-fast - stage: test - needs: - [ - "build-codec-linux-cmake", - "build-codec-linux-make", - "build-codec-instrumented-linux", - "build-codec-sanitizers-linux", - ] - script: + before_script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh # LTV update needed as ltv ISM metadata files are used - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - - # for MRs to basop-ci-branch-pc, we want to test with the BASOP float reference build - # per default, the smoke test builds the current repo again with WMOPS activated to catch unbalanced instrumentation macros - # TODO: make manual for basop-CI merges - - if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" = "basop-ci-branch" ]; then - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/float/build-binaries-from-basop-repo.sh ivas-float-update - - bash ci/smoke_test.sh coverage - - else - - bash ci/smoke_test.sh - - fi - + after_script: ### analyze for failures - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_jbm.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi - ret_val=0 @@ -449,6 +429,39 @@ codec-smoke-test: - smoke_test_output_hrtf.txt expose_as: "Smoke test results" +codec-smoke-test-float: + extends: + - .smoke-test-template + - .rules-merge-request-to-main + timeout: "20 minutes" + stage: test + needs: + [ + "build-codec-linux-cmake", + "build-codec-linux-make", + "build-codec-instrumented-linux", + "build-codec-sanitizers-linux", + ] + script: + - bash ci/smoke_test.sh + +codec-smoke-test-basop-compat: + extends: + - .smoke-test-template + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" + when: manual + - if: $CI_PIPELINE_SOURCE == 'push' + when: never + timeout: "20 minutes" + stage: basop-compat + allow_failure: true + script: + # get basop code and build binaries + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/float/build-binaries-from-basop-repo.sh ivas-float-update + # the "coverage" argument actually means "do not build again with instrumentation, but use the existing binaries" + - bash ci/smoke_test.sh coverage + # code selftest testvectors with memory-sanitizer binaries codec-msan: extends: -- GitLab From b7dd1dd4598137854bbd886ec107d0e08d97103c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 16:32:29 +0100 Subject: [PATCH 03/18] remove obsolete comment --- includes/default-variables-basop.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/includes/default-variables-basop.yml b/includes/default-variables-basop.yml index e9aee3e..57ad92c 100644 --- a/includes/default-variables-basop.yml +++ b/includes/default-variables-basop.yml @@ -1,6 +1,5 @@ variables: EVS_BE_TEST_DIR_BASOP: "/usr/local/be_2_evs_basop" - # TODO: cleanup and use global var defined in ivas-codec-ci FLOAT_REF_BRANCH_MERGE_SOURCE: "" SCRIPTS_DIR: "/usr/local/scripts" LONG_TEST_SUITE: "tests/codec_be_on_mr_nonselection tests/renderer --param_file scripts/config/self_test_ltv.prm --use_ltv" -- GitLab From 8e1443590d39396d3cc8c3d856a83c00f0bddd46 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 16:44:57 +0100 Subject: [PATCH 04/18] fix needs --- main-float.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main-float.yml b/main-float.yml index 32de1b4..e355bf3 100644 --- a/main-float.yml +++ b/main-float.yml @@ -844,7 +844,7 @@ ivas-pytest-on-merge-request: - .test-job-linux-needs-testv-dir - .rules-merge-request-to-main stage: compare - needs: ["build-codec-linux-cmake", "codec-smoke-test"] + needs: ["build-codec-linux-cmake", "codec-smoke-test-float"] timeout: "14 minutes" parallel: matrix: @@ -952,7 +952,7 @@ evs-pytest-on-merge-request: - .test-job-linux - .rules-merge-request-to-main stage: compare - needs: ["build-codec-linux-cmake", "codec-smoke-test"] + needs: ["build-codec-linux-cmake", "codec-smoke-test-float"] timeout: "10 minutes" script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh -- GitLab From 230e2fd727439f805c8565e63be5940ff060dcd0 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 16:52:22 +0100 Subject: [PATCH 05/18] empty needs for basop-compat jobs --- main-float.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main-float.yml b/main-float.yml index e355bf3..49d42df 100644 --- a/main-float.yml +++ b/main-float.yml @@ -252,6 +252,7 @@ branch-is-up-to-date-with-main-post: when: never tags: - ivas-linux-fast + needs: [] before_script: - !reference [.job-linux, before_script] - python3 scripts/prepare_combined_format_inputs.py @@ -449,7 +450,7 @@ codec-smoke-test-float: script: - bash ci/smoke_test.sh -codec-smoke-test-basop-compat: +basop-compat-smoke-test: extends: - .smoke-test-template rules: @@ -459,6 +460,7 @@ codec-smoke-test-basop-compat: when: never timeout: "20 minutes" stage: basop-compat + needs: [] allow_failure: true script: # get basop code and build binaries -- GitLab From 89efce05c4e73642ac16b7ab7ddb0d9f81e65239 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 16:53:35 +0100 Subject: [PATCH 06/18] add missing before_script reference --- main-float.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/main-float.yml b/main-float.yml index 49d42df..839ee92 100644 --- a/main-float.yml +++ b/main-float.yml @@ -413,6 +413,7 @@ build-codec-windows-msbuild: tags: - ivas-linux-fast before_script: + - !reference [.job-linux, before_script] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh # LTV update needed as ltv ISM metadata files are used - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh -- GitLab From 07e6324722848f2c4be78da9199dca778b50ac48 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Wed, 26 Nov 2025 17:16:36 +0100 Subject: [PATCH 07/18] fix before_script section via reference --- main-float.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main-float.yml b/main-float.yml index 839ee92..1b80017 100644 --- a/main-float.yml +++ b/main-float.yml @@ -413,7 +413,7 @@ build-codec-windows-msbuild: tags: - ivas-linux-fast before_script: - - !reference [.job-linux, before_script] + - !reference [.test-job-linux-needs-testv-dir, before_script] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh # LTV update needed as ltv ISM metadata files are used - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh -- GitLab From d095c38aeb4eab6ee13d1d40b12df02e691df778 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 11:34:40 +0100 Subject: [PATCH 08/18] add smoke test for basop repo also fix branch in basop-compat smoke test --- includes/smoke-test.yml | 28 ++++++++++++++++++++++++ main-basop.yml | 47 ++++++++++------------------------------- main-float.yml | 31 ++------------------------- 3 files changed, 41 insertions(+), 65 deletions(-) create mode 100644 includes/smoke-test.yml diff --git a/includes/smoke-test.yml b/includes/smoke-test.yml new file mode 100644 index 0000000..897838c --- /dev/null +++ b/includes/smoke-test.yml @@ -0,0 +1,28 @@ +# test that runs all modes with 1s input signals +.smoke-test-template: + extends: + - .test-job-linux-needs-testv-dir + tags: + - ivas-linux-fast + before_script: + - !reference [.test-job-linux-needs-testv-dir, before_script] + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh + # LTV update needed as ltv ISM metadata files are used + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh + after_script: + ### analyze for failures + - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_jbm.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi + - ret_val=0 + - if cat smoke_test_output.txt | grep -c "failed"; then echo "Smoke test without JBM failed"; ret_val=1; fi + - if cat smoke_test_output_jbm.txt | grep -c "failed"; then echo "Smoke test JBM part failed"; ret_val=1; fi + - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then echo "Smoke test with external hrtf files failed"; ret_val=1; fi + - exit $ret_val + artifacts: + name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" + expire_in: 1 week + when: always + paths: + - smoke_test_output.txt + - smoke_test_output_jbm.txt + - smoke_test_output_hrtf.txt + expose_as: "Smoke test results" diff --git a/main-basop.yml b/main-basop.yml index e581fd8..5666af4 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -1457,46 +1457,21 @@ split-rendering-pytest-on-merge-request: - $REPORT_XML # test that runs all modes with 1s input signals -# TODO: adapt for BASOP -.codec-smoke-test: +codec-smoke-test-basop: extends: - - .test-job-linux-needs-testv-dir - - .rules-merge-request-to-main-no-draft - timeout: "20 minutes" + - .smoke-test-template + - .rules-merge-request-to-main + timeout: "30 minutes" stage: test - needs: ["build-codec-linux-make"] + needs: + [ + "build-codec-linux-cmake", + "build-codec-linux-make", + ] script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - # LTV update needed as ltv ISM metadata files are used - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - bash ci/smoke_test.sh || true - - tar cJf logs.tar.xz out/logs/ - - ls -al logs.tar.* - ### analyze for failures - - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_jbm.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi - - ret_val=0 - - if cat smoke_test_output.txt | grep -c "failed"; then echo "Smoke test without JBM failed"; ret_val=1; fi - - if cat smoke_test_output_jbm.txt | grep -c "failed"; then echo "Smoke test JBM part failed"; ret_val=1; fi - - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then - - if [ "$DISABLE_HRTF" = "false" ]; then - - echo "Smoke test with external hrtf files failed" - - ret_val=1 - - else - - echo "Smoke test with external hrtf files failed, but DISABLE_HRTF is set. Ignoring failure." - - fi - - fi - - exit $ret_val - artifacts: - name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" - expire_in: 1 week - when: always - paths: - - smoke_test_output.txt - - smoke_test_output_jbm.txt - - smoke_test_output_hrtf.txt - - logs.tar.xz - expose_as: "Smoke test results" + # the "coverage" argument actually means "do not build again with instrumentation, but use the existing binaries" + - bash ci/smoke_test.sh coverage # from float # check for crashes if first received frame on decoder side is an SID diff --git a/main-float.yml b/main-float.yml index 1b80017..ebfd0da 100644 --- a/main-float.yml +++ b/main-float.yml @@ -3,6 +3,7 @@ include: - local: main.yml - local: includes/default-variables-float.yml - local: includes/complexity-jobs.yml + - local: includes/smoke-test.yml stages: - .pre @@ -407,34 +408,6 @@ build-codec-windows-msbuild: # --------------------------------------------------------------- # test that runs all modes with 1s input signals -.smoke-test-template: - extends: - - .test-job-linux-needs-testv-dir - tags: - - ivas-linux-fast - before_script: - - !reference [.test-job-linux-needs-testv-dir, before_script] - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - # LTV update needed as ltv ISM metadata files are used - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - after_script: - ### analyze for failures - - if ! [ -s smoke_test_output.txt ] || ! [ -s smoke_test_output_jbm.txt ] || ! [ -s smoke_test_output_hrtf.txt ]; then echo "Error in smoke test"; exit 1; fi - - ret_val=0 - - if cat smoke_test_output.txt | grep -c "failed"; then echo "Smoke test without JBM failed"; ret_val=1; fi - - if cat smoke_test_output_jbm.txt | grep -c "failed"; then echo "Smoke test JBM part failed"; ret_val=1; fi - - if cat smoke_test_output_hrtf.txt | grep -c "failed"; then echo "Smoke test with external hrtf files failed"; ret_val=1; fi - - exit $ret_val - artifacts: - name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" - expire_in: 1 week - when: always - paths: - - smoke_test_output.txt - - smoke_test_output_jbm.txt - - smoke_test_output_hrtf.txt - expose_as: "Smoke test results" - codec-smoke-test-float: extends: - .smoke-test-template @@ -465,7 +438,7 @@ basop-compat-smoke-test: allow_failure: true script: # get basop code and build binaries - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/float/build-binaries-from-basop-repo.sh ivas-float-update + - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/float/build-binaries-from-basop-repo.sh main # the "coverage" argument actually means "do not build again with instrumentation, but use the existing binaries" - bash ci/smoke_test.sh coverage -- GitLab From 2f932b6b37c6253f6435bff51fc35405993d101e Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 12:07:06 +0100 Subject: [PATCH 09/18] print git commit of basop code in smoke test compat job --- main-basop.yml | 3 +-- main-float.yml | 10 ++++++++++ snippets/float/build-binaries-from-basop-repo.sh | 8 +++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/main-basop.yml b/main-basop.yml index 5666af4..9c0d599 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -1470,8 +1470,7 @@ codec-smoke-test-basop: ] script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - # the "coverage" argument actually means "do not build again with instrumentation, but use the existing binaries" - - bash ci/smoke_test.sh coverage + - bash ci/smoke_test.sh # from float # check for crashes if first received frame on decoder side is an SID diff --git a/main-float.yml b/main-float.yml index ebfd0da..08c5ef7 100644 --- a/main-float.yml +++ b/main-float.yml @@ -441,6 +441,16 @@ basop-compat-smoke-test: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/float/build-binaries-from-basop-repo.sh main # the "coverage" argument actually means "do not build again with instrumentation, but use the existing binaries" - bash ci/smoke_test.sh coverage + artifacts: + name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" + expire_in: 1 week + when: always + paths: + - smoke_test_output.txt + - smoke_test_output_jbm.txt + - smoke_test_output_hrtf.txt + - ivas-basop-commit-sha.txt + expose_as: "Smoke test results" # code selftest testvectors with memory-sanitizer binaries codec-msan: diff --git a/snippets/float/build-binaries-from-basop-repo.sh b/snippets/float/build-binaries-from-basop-repo.sh index 9cc0fd0..fd95b38 100644 --- a/snippets/float/build-binaries-from-basop-repo.sh +++ b/snippets/float/build-binaries-from-basop-repo.sh @@ -9,14 +9,20 @@ fi branchname=$1 clone_dir="ivas-basop" +commit_file="ivas-basop-commit-sha.txt" cd "${CI_PROJECT_DIR}" git clone -b $branchname https://forge.3gpp.org/rep/sa4/audio/ivas-basop.git --single-branch --depth 1 $clone_dir -make -C $clone_dir -j +pushd $clone_dir +git rev-parse HEAD >"$commit_file" +echo "Building BASOP codec @ $(git rev-parse HEAD)" +make -j +popd cp $clone_dir/IVAS_cod ./ cp $clone_dir/IVAS_dec ./ cp $clone_dir/IVAS_rend ./ cp $clone_dir/ISAR_post_rend ./ +cp $clone_dir/$commit_file /. -- GitLab From d810fdaae1d8274ba8552e2f7ed112536807203d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 12:18:48 +0100 Subject: [PATCH 10/18] fix path --- snippets/float/build-binaries-from-basop-repo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snippets/float/build-binaries-from-basop-repo.sh b/snippets/float/build-binaries-from-basop-repo.sh index fd95b38..f5eb0fe 100644 --- a/snippets/float/build-binaries-from-basop-repo.sh +++ b/snippets/float/build-binaries-from-basop-repo.sh @@ -25,4 +25,4 @@ cp $clone_dir/IVAS_cod ./ cp $clone_dir/IVAS_dec ./ cp $clone_dir/IVAS_rend ./ cp $clone_dir/ISAR_post_rend ./ -cp $clone_dir/$commit_file /. +cp $clone_dir/$commit_file ./ -- GitLab From 8d1ec5bb942f5df3c8f75dba2716e363106d1c04 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 12:22:09 +0100 Subject: [PATCH 11/18] restructure basop compat smoke test --- main-float.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/main-float.yml b/main-float.yml index 08c5ef7..8a42b12 100644 --- a/main-float.yml +++ b/main-float.yml @@ -438,9 +438,11 @@ basop-compat-smoke-test: allow_failure: true script: # get basop code and build binaries - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/float/build-binaries-from-basop-repo.sh main - # the "coverage" argument actually means "do not build again with instrumentation, but use the existing binaries" - - bash ci/smoke_test.sh coverage + - git clone -b main https://forge.3gpp.org/rep/sa4/audio/ivas-basop.git --single-branch --depth 1 + - cp -r scripts tests ci pytest.ini ivas-basop/ + - pushd ivas-basop + - bash ci/smoke_test.sh + - popd artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week -- GitLab From 54d1485d67cedf37f454e139618fa7f2b891d44c Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 17:02:10 +0100 Subject: [PATCH 12/18] include smoke test in basop config --- main-basop.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/main-basop.yml b/main-basop.yml index 9c0d599..a05fd47 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -3,6 +3,7 @@ include: - local: includes/default-variables-basop.yml - local: includes/rules-basop.yml - local: includes/complexity-jobs.yml + - local: smoke-test.yml stages: - .pre -- GitLab From 8db34768d5be3ac8ce1afeb6cea9a2ca68006fa5 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 17:03:00 +0100 Subject: [PATCH 13/18] fix path --- main-basop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main-basop.yml b/main-basop.yml index a05fd47..08b3cdd 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -3,7 +3,7 @@ include: - local: includes/default-variables-basop.yml - local: includes/rules-basop.yml - local: includes/complexity-jobs.yml - - local: smoke-test.yml + - local: includes/smoke-test.yml stages: - .pre -- GitLab From 4110c59c6f2c7815529e459b5733cc4ebad60ac1 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Thu, 27 Nov 2025 17:13:39 +0100 Subject: [PATCH 14/18] deactivate smoke test in basop pipelines for now --- main-basop.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main-basop.yml b/main-basop.yml index 08b3cdd..ac492fa 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -1458,7 +1458,8 @@ split-rendering-pytest-on-merge-request: - $REPORT_XML # test that runs all modes with 1s input signals -codec-smoke-test-basop: +# TODO: activate once everything is fixed in BASOP +.codec-smoke-test-basop: extends: - .smoke-test-template - .rules-merge-request-to-main -- GitLab From 067b2d8fa93df275b773084ca2e89a16ee84d621 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 28 Nov 2025 11:08:16 +0100 Subject: [PATCH 15/18] remove some obsolete parts --- main-basop.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/main-basop.yml b/main-basop.yml index 433cac1..fcad4e3 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -996,11 +996,7 @@ build-codec-linux-instrumented-make: script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" == "ivas-float-update" ] || [ "$CI_COMMIT_REF_NAME" == "ivas-float-update" ]; then - - bash scripts/prepare_instrumentation.sh - - else - - bash scripts/prepare_instrumentation.sh -m MEM_ONLY - - fi + - bash scripts/prepare_instrumentation.sh -m MEM_ONLY - make -j -C $INSTR_DIR # make sure that the codec builds with msan, asan and usan @@ -2401,7 +2397,6 @@ voip-be-on-merge-request: - .test-job-linux-needs-testv-dir rules: - if: $CI_PIPELINE_SOURCE == 'web' && $MANUAL_PIPELINE_TYPE == "voip-be-test" - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "ivas-float-update" # - if: $CI_PIPELINE_SOURCE == 'merge_request_event' && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # only have MR pipelines for MRs to main stage: test needs: ["build-codec-linux-make"] -- GitLab From 27280f343a1b0e3880f5d9707efb4946bdb66da8 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 28 Nov 2025 11:30:32 +0100 Subject: [PATCH 16/18] cleanup - remove double update-scripts.sh calls --- main-basop.yml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/main-basop.yml b/main-basop.yml index fcad4e3..cb4ad49 100644 --- a/main-basop.yml +++ b/main-basop.yml @@ -215,11 +215,7 @@ workflow: # Job templates # --------------------------------------------------------------- -# override for centrally defined job to make use of the basop runners -.job-linux: - tags: - - ivas-linux - +# override for centrally defined job to add the before_script section # custom variant of this template, we need to update the scripts repo before every build .test-job-linux: extends: @@ -264,7 +260,6 @@ workflow: - set -euxo pipefail - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ $USE_LTV -eq 1 ]; then - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh @@ -406,7 +401,6 @@ workflow: - set -euxo pipefail - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - python3 tests/create_short_testvectors.py - if [ $USE_LTV -eq 1 ]; then @@ -532,8 +526,6 @@ workflow: - exit 0 - fi - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - - if [ $USE_LTV -eq 1 ]; then - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh @@ -670,7 +662,6 @@ workflow: - !reference [ .job-linux, before_script ] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - set -euxo pipefail @@ -712,7 +703,6 @@ workflow: - !reference [ .job-linux, before_script ] - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - if [ $USE_LTV -eq 1 ]; then - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/update-ltv-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh @@ -876,7 +866,6 @@ clang-format-check: needs: [] timeout: "10 minutes" script: - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh # Set up variables. This can't be done in the "variables" section because variables are not expanded properly there - PATCH_FILE_NAME="$ARTIFACT_BASE_NAME".patch - > @@ -1230,7 +1219,6 @@ renderer-pytest-on-merge-request: REPORT_CSV: "report--$CI_JOB_NAME-$CI_JOB_ID--sha-$CI_COMMIT_SHORT_SHA.csv" script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - source "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-merge-target-binaries.sh - source "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/merge-request-comparison-setup-codec.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/merge-request-print-pinned-commits.sh @@ -1303,7 +1291,6 @@ ivas-pytest-on-merge-request: - ivas-linux script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - source "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-merge-target-binaries.sh - source "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/merge-request-comparison-setup-codec.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/merge-request-print-pinned-commits.sh @@ -1374,7 +1361,6 @@ split-rendering-pytest-on-merge-request: REPORT_CSV: "report--$CI_JOB_NAME-$CI_JOB_ID--sha-$CI_COMMIT_SHORT_SHA.csv" script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - source "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/build-merge-target-binaries.sh - source "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/merge-request-comparison-setup-codec.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/merge-request-print-pinned-commits.sh @@ -1555,7 +1541,6 @@ split-rendering-smoke-test: stage: test script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - make -j - testcase_timeout=10 @@ -1579,7 +1564,6 @@ lc3-wrapper-unit-test: stage: test script: - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - cmake -B cmake-build -G "Unix Makefiles" -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true - cmake --build cmake-build -- -j @@ -1732,7 +1716,6 @@ lc3-wrapper-unit-test: # set CLANG_NUM, SELFTEST_SANITY_TIMEOUT and SELF_TEST_PRM_FILE in before_script section .sanitizer-selftest-anchor: &sanitizer-selftest-anchor - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/print-common-info.sh - - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/basop/update-scripts-repo.sh - bash "${CI_PROJECT_DIR}"/ivas-codec-ci/snippets/copy-ltv-files-to-testv-dir.sh - testcase_timeout=$SELFTEST_SANITY_TIMEOUT - export UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1,print_stacktrace=1 -- GitLab From d5f76db2c7a079be0795390226965cac398e2041 Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 2 Dec 2025 16:50:12 +0100 Subject: [PATCH 17/18] update readme --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 97e3b78..597cd6e 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,9 @@ This repository is mainly meant to share scripts and configs between the two rep ``` bash . ├── includes # folder for (possibly shared) yaml files which are included in the main ones -│   ├── default-variables-basop.yml -│   ├── default-variables.yml -│   ├── job-templates.yml -│   ├── rules-basop.yml -│   └── rules.yml +│   ├── .. ├── main-basop.yml # CI config for ivas-basop repo +├── main-float.yml # CI config for ivas-basop repo ├── main.yml # shared CI config ├── ... └── snippets # Folder for scripts used in CI only. Shared ones go in the folder directly. Can be small ones or bigger scripts which implement a whole job -- GitLab From 399d7d831fb8285dbf56a6f504e26cf72d0ca33e Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Tue, 2 Dec 2025 16:58:56 +0100 Subject: [PATCH 18/18] add comments for the various exec naming vars --- includes/default-variables-basop.yml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/includes/default-variables-basop.yml b/includes/default-variables-basop.yml index ee884c4..daf56b0 100644 --- a/includes/default-variables-basop.yml +++ b/includes/default-variables-basop.yml @@ -8,26 +8,31 @@ variables: SHORT_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_basop_encoder.prm" LONG_TEST_SUITE_ENCODER: "tests/codec_be_on_mr_nonselection/test_param_file.py --param_file scripts/config/self_test_ltv_basop_encoder.prm" TEST_SUITE: "" - # These path variables are used by the pytest calls. - # They can be overwritten in the job templates to e.g. only test encoder or decoder in the chain + ### These path variables are used by the pytest calls. + ### They can be overwritten in the job definitions in the variables: section to e.g. only test encoder or decoder in the chain + ### E.g. a job that tests the BASOP encoder against the float ref via MLD etc. would overwrite DUT_DECODER_PATH with REF_DECODER_PATH in its variables: section + # "DUT_" - used in merge request pipelines for the branch build (Device Under Test) DUT_ENCODER_PATH: "./IVAS_cod_dut" DUT_DECODER_PATH: "./IVAS_dec_dut" DUT_RENDERER_PATH: "./IVAS_rend_dut" DUT_POST_RENDERER_PATH: "./ISAR_post_rend_dut" + # "REF_" - used in merge request regression jobs for the floating-point ref (ivas-codec main) REF_ENCODER_PATH: "./IVAS_cod_ref" REF_DECODER_PATH: "./IVAS_dec_ref" REF_RENDERER_PATH: "./IVAS_rend_ref" REF_POST_RENDERER_PATH: "./ISAR_post_rend_ref" + # "MERGE_TARGET_" - used in merge request jobs to denote the build from the target branch (mostly main) MERGE_TARGET_ENCODER_PATH: "./IVAS_cod_merge_target" MERGE_TARGET_DECODER_PATH: "./IVAS_dec_merge_target" MERGE_TARGET_RENDERER_PATH: "./IVAS_rend_merge_target" MERGE_TARGET_POST_RENDERER_PATH: "./ISAR_post_rend_merge_target" + # "MERGE_SOURCE_FLOAT_REF_" - used for the respective float reference branch of an MR. Can be main or the respective companion branch in ivas-codec repo MERGE_SOURCE_FLOAT_REF_ENCODER_PATH: "./IVAS_cod_merge_source_float_ref" MERGE_SOURCE_FLOAT_REF_DECODER_PATH: "./IVAS_dec_merge_source_float_ref" MERGE_SOURCE_FLOAT_REF_RENDERER_PATH: "./IVAS_rend_merge_source_float_ref" MERGE_SOURCE_FLOAT_REF_POST_RENDERER_PATH: "./ISAR_post_rend_merge_source_float_ref" - # These path variables are used for building the binaries - # They should never be overwritten! + ### These path variables are used for building the binaries + ### They should never be overwritten! DUT_ENCODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_cod_dut" DUT_DECODER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_dec_dut" DUT_RENDERER_PATH_FOR_BUILD_DO_NOT_MODIFY: "./IVAS_rend_dut" -- GitLab