From 3d582dd8856bd9c8e3243407b61690263ed2ee48 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 10 Sep 2021 16:05:04 +0200 Subject: [PATCH 1/2] Add github action workflows CI --- .github/workflows/abi_check.yml | 24 +++ .github/workflows/build.yml | 189 ++++++++++++++++++ .github/workflows/code_style.yml | 26 +++ scripts/verify-indentation.sh | 22 +- tools/abi-tracker/openjpeg.json | 12 ++ tools/ctest_scripts/travis-ci.cmake | 4 +- tools/travis-ci/abi-check.sh | 17 +- tools/travis-ci/install.sh | 14 +- ...ntu20.04-clang10.0.0-i386-Release-3rdP.txt | 48 +++++ ...untu20.04-gcc9.3.0-x86_64-Release-3rdP.txt | 6 + ...s-windows-vs2015-x64-avx2-Release-3rdP.txt | 45 +++++ tools/travis-ci/run.sh | 110 ++++++---- 12 files changed, 458 insertions(+), 59 deletions(-) create mode 100644 .github/workflows/abi_check.yml create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/code_style.yml create mode 100644 tools/travis-ci/knownfailures-Ubuntu20.04-clang10.0.0-i386-Release-3rdP.txt create mode 100644 tools/travis-ci/knownfailures-Ubuntu20.04-gcc9.3.0-x86_64-Release-3rdP.txt create mode 100644 tools/travis-ci/knownfailures-windows-vs2015-x64-avx2-Release-3rdP.txt diff --git a/.github/workflows/abi_check.yml b/.github/workflows/abi_check.yml new file mode 100644 index 00000000..bb0162dc --- /dev/null +++ b/.github/workflows/abi_check.yml @@ -0,0 +1,24 @@ +name: ABI check + +on: [push, pull_request, workflow_dispatch] + +jobs: + abi_check: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Install Requirements + run: | + sudo apt update + sudo apt install -y gcc g++ libelf-dev elfutils texinfo exuberant-ctags libtiff-dev libwebp-dev libzstd-dev + + - name: Build + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + ./tools/travis-ci/abi-check.sh + env: + OPJ_CI_ABI_CHECK: 1 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..be2c2325 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,189 @@ +name: Build + +on: [push, pull_request, workflow_dispatch] + +jobs: + regular: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Install Requirements + run: | + sudo apt update + sudo apt install -y gcc g++ + + - name: Build and run tests + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + env: + OPJ_CI_ARCH: x86_64 + OPJ_CI_BUILD_CONFIGURATION: Release + OPJ_CI_PERF_TESTS: 1 + OPJ_CI_BUILD_FUZZERS: 1 + OPJ_CI_INCLUDE_IF_DEPLOY: 1 + OPJ_NONCOMMERCIAL: 1 + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: build/openjpeg-*.tar.gz + + asan: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Install Requirements + run: | + sudo apt update + sudo apt install -y gcc g++ + + - name: Build and run tests + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + env: + OPJ_CI_ARCH: x86_64 + OPJ_CI_BUILD_CONFIGURATION: Debug + OPJ_CI_ASAN: 1 + OPJ_NONCOMMERCIAL: 1 + + clang_32bit: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Install Requirements + run: | + sudo apt update + sudo apt install -y clang gcc-multilib + + - name: Build and run tests + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + env: + OPJ_CI_CC: clang + OPJ_CI_CXX: clang++ + OPJ_CI_INSTRUCTION_SETS: "-mavx2" + OPJ_CI_BUILD_CONFIGURATION: Release + OPJ_CI_ARCH: i386 + OPJ_NUM_THREADS: 2 + OPJ_NONCOMMERCIAL: 1 + + mingw_64: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Install Requirements + run: | + sudo apt update + sudo apt install -y gcc-mingw-w64-base binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 gcc-mingw-w64 g++-mingw-w64-x86-64 + + - name: Build and run tests + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + env: + OPJ_CI_CC: x86_64-w64-mingw32-gcc + OPJ_CI_CXX: x86_64-w64-mingw32-g++ + OPJ_CI_ARCH: x86_64 + OPJ_CI_BUILD_CONFIGURATION: Release + OPJ_NONCOMMERCIAL: 1 + + macos: + runs-on: macos-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Build and run tests + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + env: + OPJ_CI_ARCH: x86_64 + OPJ_CI_BUILD_CONFIGURATION: Release + OPJ_CI_INCLUDE_IF_DEPLOY: 1 + #OPJ_NONCOMMERCIAL: 1 + + - name: Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: build/openjpeg-*.zip + + windows_build: + runs-on: windows-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + + strategy: + matrix: + include: + - VS_VER: 2019 + OPJ_CI_ARCH: x64 + OPJ_CI_INCLUDE_IF_DEPLOY: 1 + - VS_VER: 2019 + OPJ_CI_ARCH: x86 + OPJ_CI_INCLUDE_IF_DEPLOY: 1 + - VS_VER: 2019 + OPJ_CI_ARCH: x64 + # We do have specific failures noted in tools/travis-ci/knownfailures-windows-vs2015-x64-avx2-Release-3rdP.txt + # not sure why that happens + OPJ_CI_INSTRUCTION_SETS: "/arch:AVX2" + + env: + VS_VER: ${{ matrix.VS_VER }} + OPJ_CI_ARCH: ${{ matrix.OPJ_CI_ARCH }} + OPJ_CI_INCLUDE_IF_DEPLOY: ${{ matrix.OPJ_CI_INCLUDE_IF_DEPLOY }} + OPJ_CI_INSTRUCTION_SETS: ${{ matrix.OPJ_CI_INSTRUCTION_SETS }} + #OPJ_NONCOMMERCIAL: 1 + + steps: + + - name: Setup git + run: | + git config --global core.autocrlf false + git config --system core.longpaths true + + - name: Checkout + uses: actions/checkout@v2 + + - name: Set compiler environment + shell: cmd + run: | + if "%VS_VER%" == "2019" CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=%OPJ_CI_ARCH% + echo PATH=%PATH%>> %GITHUB_ENV% + echo INCLUDE=%INCLUDE%>> %GITHUB_ENV% + echo LIB=%LIB%>> %GITHUB_ENV% + echo LIBPATH=%LIBPATH%>> %GITHUB_ENV% + + - name: Install wget + shell: cmd + run: | + choco install wget --no-progress + + - name: Build and run tests + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + shell: bash + + - name: Release + uses: softprops/action-gh-release@v1 + if: ${{startsWith(github.ref, 'refs/tags/') && env.OPJ_CI_INCLUDE_IF_DEPLOY == 1}} + with: + files: build/openjpeg-*.zip diff --git a/.github/workflows/code_style.yml b/.github/workflows/code_style.yml new file mode 100644 index 00000000..bd09e5e8 --- /dev/null +++ b/.github/workflows/code_style.yml @@ -0,0 +1,26 @@ +name: Code Style + +on: [push, pull_request, workflow_dispatch] + +jobs: + code_style: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Install Requirements + run: | + sudo apt update + sudo apt install -y gcc g++ flip + + - name: Run check + run: | + ./tools/travis-ci/install.sh + ./tools/travis-ci/run.sh + env: + OPJ_CI_CHECK_STYLE: 1 + OPJ_CI_SKIP_TESTS: 1 diff --git a/scripts/verify-indentation.sh b/scripts/verify-indentation.sh index 120e1411..80c58283 100755 --- a/scripts/verify-indentation.sh +++ b/scripts/verify-indentation.sh @@ -3,7 +3,7 @@ cd $(git rev-parse --show-toplevel) export PATH=$PATH:$PWD/scripts -if [ -z "$TRAVIS_COMMIT_RANGE" ]; then +if [ -z "$TRAVIS_COMMIT_RANGE" -a -z "$GITHUB_SHA" ]; then echo "No commit range given" exit 0 fi @@ -18,14 +18,24 @@ set -e ASTYLEDIFF=/tmp/astyle.diff >$ASTYLEDIFF - -if [[ ! -z $TRAVIS_PULL_REQUEST_BRANCH ]]; then +if [ ! -z $GITHUB_BASE_REF ] && [ ! -z $GITHUB_HEAD_REF ]; then + # on a PR + echo "GitHub PR COMMIT RANGE: ${GITHUB_BASE_REF}..${GITHUB_HEAD_REF}" + git branch ${GITHUB_BASE_REF} origin/${GITHUB_BASE_REF} + git branch ${GITHUB_HEAD_REF} origin/${GITHUB_HEAD_REF} + BASE_SHA1=$(git rev-parse ${GITHUB_BASE_REF}) + HEAD_SHA1=$(git rev-parse ${GITHUB_HEAD_REF}) + FILES=$(git diff --diff-filter=AMR --name-only ${BASE_SHA1}..${HEAD_SHA1} | tr '\n' ' ' ) +elif [ ! -z $GITHUB_SHA ]; then + echo "GitHub push COMMIT $GITHUB_SHA" + FILES=$(git diff --diff-filter=AMR --name-only ${GITHUB_SHA}~1..${GITHUB_SHA} | tr '\n' ' ' ) +elif [ ! -z $TRAVIS_PULL_REQUEST_BRANCH ]; then # if on a PR, just analyse the changed files echo "TRAVIS PR BRANCH: $TRAVIS_PULL_REQUEST_BRANCH" - FILES=$(git diff --diff-filter=AM --name-only $(git merge-base HEAD master) | tr '\n' ' ' ) -elif [[ ! -z $TRAVIS_COMMIT_RANGE ]]; then + FILES=$(git diff --diff-filter=AMR --name-only $(git merge-base HEAD master) | tr '\n' ' ' ) +elif [ ! -z $TRAVIS_COMMIT_RANGE ]; then echo "TRAVIS COMMIT RANGE: $TRAVIS_COMMIT_RANGE" - FILES=$(git diff --diff-filter=AM --name-only ${TRAVIS_COMMIT_RANGE/.../..} | tr '\n' ' ' ) + FILES=$(git diff --diff-filter=AMR --name-only ${TRAVIS_COMMIT_RANGE/.../..} | tr '\n' ' ' ) fi for f in $FILES; do diff --git a/tools/abi-tracker/openjpeg.json b/tools/abi-tracker/openjpeg.json index 9f091f7f..3c459276 100644 --- a/tools/abi-tracker/openjpeg.json +++ b/tools/abi-tracker/openjpeg.json @@ -21,6 +21,18 @@ "PublicSymbols": "public_symbols/openjpeg/current/list", "PublicTypes": "public_types/openjpeg/current/list" }, + { + "Number": "2.4.0", + "Installed": "installed/openjpeg/2.4.0", + "Source": "src/openjpeg/2.4.0/version.-2.4.0.tar.gz", + "Changelog": "CHANGELOG.md", + "HeadersDiff": "On", + "PkgDiff": "Off", + "ABIView": "Off", + "ABIDiff": "Off", + "PublicSymbols": "public_symbols/openjpeg/2.4.0/list", + "PublicTypes": "public_types/openjpeg/2.4.0/list" + }, { "Number": "2.3.0", "Installed": "installed/openjpeg/2.3.0", diff --git a/tools/ctest_scripts/travis-ci.cmake b/tools/ctest_scripts/travis-ci.cmake index 0d54773c..6dbe52c4 100644 --- a/tools/ctest_scripts/travis-ci.cmake +++ b/tools/ctest_scripts/travis-ci.cmake @@ -13,7 +13,7 @@ else() set( CTEST_DASHBOARD_ROOT "$ENV{PWD}/build" ) endif() -if("$ENV{TRAVIS_OS_NAME}" STREQUAL "windows") +if("$ENV{OPJ_SHORT_OS_NAME}" STREQUAL "windows") set( CTEST_CMAKE_GENERATOR "NMake Makefiles") set( CTEST_BUILD_COMMAND "nmake" ) set( JPYLYZER_EXT "exe" ) @@ -84,7 +84,7 @@ if(NOT "$ENV{OPJ_CI_SKIP_TESTS}" STREQUAL "1") # Note: Binaries can only be used for non-commercial purposes. if ("$ENV{OPJ_NONCOMMERCIAL}" STREQUAL "1" ) set(KDUPATH $ENV{PWD}/kdu) - if("$ENV{TRAVIS_OS_NAME}" STREQUAL "windows") + if("$ENV{OPJ_SHORT_OS_NAME}" STREQUAL "windows") set(ENV{PATH} "$ENV{PATH};${KDUPATH}") else() set(ENV{LD_LIBRARY_PATH} ${KDUPATH}) diff --git a/tools/travis-ci/abi-check.sh b/tools/travis-ci/abi-check.sh index 21ad9dc8..cf47da8f 100755 --- a/tools/travis-ci/abi-check.sh +++ b/tools/travis-ci/abi-check.sh @@ -35,7 +35,18 @@ OPJ_REPO="https://github.com/uclouvain/openjpeg.git" OPJ_SSH_REPO=${OPJ_REPO/https:\/\/github.com\//git@github.com:} OPJ_UPLOAD_BRANCH="gh-pages" OPJ_UPLOAD_DIR="abi-check" -if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then +OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd) + +if [ "${GITHUB_REPOSITORY:-}" != "" ]; then + BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') + if [ "$(echo "${GITHUB_REPOSITORY}" | sed 's/\(^.*\)\/.*/\1/')" == "uclouvain" ] && [ "${GITHUB_EVENT_NAME:-}" != "pull_request" ] && [ "$BRANCH" == "master" ]; then + # Upload updated report to gh-pages + echo "FIXME. We aren't yet ready to upload ABI report due to lack of keys to push to the gh-pages branch" + # OPJ_UPLOAD_ABI_REPORT=1 + # Build full report + #OPJ_LIMIT_ABI_BUILDS= + fi +elif [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then if [ "$(echo "${TRAVIS_REPO_SLUG}" | sed 's/\(^.*\)\/.*/\1/')" == "uclouvain" ] && [ "${TRAVIS_PULL_REQUEST:-}" == "false" ] && [ "${TRAVIS_BRANCH:-}" == "master" ]; then # Upload updated report to gh-pages OPJ_UPLOAD_ABI_REPORT=1 @@ -44,8 +55,6 @@ if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then fi fi -OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd) - # INSTALL REQUIRED PACKAGES mkdir ${HOME}/abi-check @@ -94,7 +103,9 @@ else grep -v Configure ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json > ./openjpeg.json fi cp -rf ${OPJ_SOURCE_DIR} src/openjpeg/current +rm -f src/openjpeg/current/build/CMakeCache.txt abi-monitor -v current -build openjpeg.json +cat build_logs/openjpeg/current/make rm -rf ./installed/openjpeg/${OPJ_LATEST_VERSION} rm -rf ./compat_report/openjpeg/${OPJ_LATEST_VERSION} diff --git a/tools/travis-ci/install.sh b/tools/travis-ci/install.sh index 149a1af6..997f7bb8 100755 --- a/tools/travis-ci/install.sh +++ b/tools/travis-ci/install.sh @@ -47,7 +47,9 @@ if [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ]; then OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd) # We need test data - if [ "${TRAVIS_BRANCH:-}" != "" ]; then + if [ "${GITHUB_HEAD_REF:-}" != "" ]; then + OPJ_DATA_BRANCH=${GITHUB_HEAD_REF} + elif [ "${TRAVIS_BRANCH:-}" != "" ]; then OPJ_DATA_BRANCH=${TRAVIS_BRANCH} elif [ "${APPVEYOR_REPO_BRANCH:-}" != "" ]; then OPJ_DATA_BRANCH=${APPVEYOR_REPO_BRANCH} @@ -59,12 +61,12 @@ if [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ]; then OPJ_DATA_BRANCH=master #default to master fi echo "Cloning openjpeg-data from ${OPJ_DATA_BRANCH} branch" - git clone --depth=1 --branch=${OPJ_DATA_BRANCH} git://github.com/uclouvain/openjpeg-data.git data + git clone -v --depth=1 --branch=${OPJ_DATA_BRANCH} git://github.com/uclouvain/openjpeg-data.git data # We need jpylyzer for the test suite JPYLYZER_VERSION="1.17.0" echo "Retrieving jpylyzer" - if [ "${APPVEYOR:-}" == "True" ]; then + if [ "${APPVEYOR:-}" == "True" -o "${RUNNER_OS:-}" == "Windows" ]; then wget -q https://github.com/openpreserve/jpylyzer/releases/download/${JPYLYZER_VERSION}/jpylyzer_${JPYLYZER_VERSION}_win32.zip mkdir jpylyzer cd jpylyzer @@ -82,12 +84,12 @@ if [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ]; then # so long as such use or re-distribution is accompanied with this copyright notice and is not for commercial gain. # Note: Binaries can only be used for non-commercial purposes. if [ "${OPJ_NONCOMMERCIAL:-}" == "1" ]; then - if [ "${TRAVIS_OS_NAME:-}" == "linux" ] || uname -s | grep -i Linux &> /dev/null; then + if [ "${TRAVIS_OS_NAME:-}" == "linux" -o "${RUNNER_OS:-}" == "Linux" ] || uname -s | grep -i Linux &> /dev/null; then echo "Retrieving Kakadu" wget -q http://kakadusoftware.com/wp-content/uploads/KDU805_Demo_Apps_for_Linux-x86-64_200602.zip cmake -E tar -xf KDU805_Demo_Apps_for_Linux-x86-64_200602.zip mv KDU805_Demo_Apps_for_Linux-x86-64_200602 kdu - elif [ "${TRAVIS_OS_NAME:-}" == "osx" ] || uname -s | grep -i Darwin &> /dev/null; then + elif [ "${TRAVIS_OS_NAME:-}" == "osx" -o "${RUNNER_OS:-}" == "macOS" ] || uname -s | grep -i Darwin &> /dev/null; then echo "Retrieving Kakadu" wget -v http://kakadusoftware.com/wp-content/uploads/KDU805_Demo_Apps_for_MacOS_200602.dmg_.zip cmake -E tar -xf KDU805_Demo_Apps_for_MacOS_200602.dmg_.zip @@ -102,7 +104,7 @@ if [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ]; then install_name_tool -id ${PWD}/libkdu_v80R.dylib libkdu_v80R.dylib install_name_tool -change /usr/local/lib/libkdu_v80R.dylib ${PWD}/libkdu_v80R.dylib kdu_compress install_name_tool -change /usr/local/lib/libkdu_v80R.dylib ${PWD}/libkdu_v80R.dylib kdu_expand - elif [ "${APPVEYOR:-}" == "True" ] || uname -s | grep -i MINGW &> /dev/null || uname -s | grep -i CYGWIN &> /dev/null; then + elif [ "${APPVEYOR:-}" == "True" -o "${RUNNER_OS:-}" == "Windows" ] || uname -s | grep -i MINGW &> /dev/null || uname -s | grep -i CYGWIN &> /dev/null; then echo "Retrieving Kakadu" wget -q http://kakadusoftware.com/wp-content/uploads/KDU805_Demo_Apps_for_Win64_200602.msi_.zip cmake -E tar -xf KDU805_Demo_Apps_for_Win64_200602.msi_.zip diff --git a/tools/travis-ci/knownfailures-Ubuntu20.04-clang10.0.0-i386-Release-3rdP.txt b/tools/travis-ci/knownfailures-Ubuntu20.04-clang10.0.0-i386-Release-3rdP.txt new file mode 100644 index 00000000..69c5c5df --- /dev/null +++ b/tools/travis-ci/knownfailures-Ubuntu20.04-clang10.0.0-i386-Release-3rdP.txt @@ -0,0 +1,48 @@ +NR-C1P0-p0_04.j2k-compare2base +NR-C1P0-p0_05.j2k-compare2base +NR-C1P0-p0_06.j2k-compare2base +NR-C1P1-p1_02.j2k-compare2base +NR-C1P1-p1_03.j2k-compare2base +NR-C1P1-p1_04.j2k-compare2base +NR-C1P1-p1_05.j2k-compare2base +NR-JP2-file2.jp2-compare2base +NR-JP2-file3.jp2-compare2base +NR-RIC-subsampling_1.jp2-compare2base +NR-RIC-subsampling_2.jp2-compare2base +NR-RIC-zoo1.jp2-compare2base +NR-RIC-zoo2.jp2-compare2base +NR-DEC-_00042.j2k-2-decode-md5 +NR-DEC-buxI.j2k-9-decode-md5 +NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 +NR-DEC-Marrin.jp2-18-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 +NR-DEC-file409752.jp2-40-decode-md5 +NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 +NR-DEC-issue206_image-000.jp2-42-decode-md5 +NR-DEC-issue205.jp2-43-decode-md5 +NR-DEC-issue228.j2k-60-decode-md5 +NR-DEC-issue134.jp2-67-decode-md5 +NR-DEC-issue135.j2k-68-decode-md5 +NR-DEC-issue208.jp2-69-decode-md5 +NR-DEC-issue211.jp2-70-decode-md5 +NR-DEC-issue414.jp2-110-decode-md5 +NR-DEC-p1_04.j2k-124-decode-md5 +NR-DEC-p1_04.j2k-125-decode-md5 +NR-DEC-p1_04.j2k-126-decode-md5 +NR-DEC-p1_04.j2k-127-decode-md5 +NR-DEC-p1_04.j2k-128-decode-md5 +NR-DEC-p1_04.j2k-129-decode-md5 +NR-DEC-p1_04.j2k-131-decode-md5 +NR-DEC-p1_04.j2k-134-decode-md5 +NR-DEC-p1_04.j2k-138-decode-md5 +NR-DEC-p1_04.j2k-140-decode-md5 +NR-DEC-p0_04.j2k-166-decode-md5 +NR-DEC-p0_04.j2k-168-decode-md5 +NR-DEC-p0_04.j2k-172-decode-md5 +NR-DEC-issue205.jp2-253-decode-md5 +NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5 +NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 +NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 +NR-DEC-db11217111510058.jp2-306-decode-md5 +NR-DEC-tnsot_zero.jp2-307-decode-md5 diff --git a/tools/travis-ci/knownfailures-Ubuntu20.04-gcc9.3.0-x86_64-Release-3rdP.txt b/tools/travis-ci/knownfailures-Ubuntu20.04-gcc9.3.0-x86_64-Release-3rdP.txt new file mode 100644 index 00000000..0ed8ee4c --- /dev/null +++ b/tools/travis-ci/knownfailures-Ubuntu20.04-gcc9.3.0-x86_64-Release-3rdP.txt @@ -0,0 +1,6 @@ +NR-DEC-_00042.j2k-2-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 +NR-DEC-issue205.jp2-43-decode-md5 +NR-DEC-issue135.j2k-68-decode-md5 +NR-DEC-issue208.jp2-69-decode-md5 diff --git a/tools/travis-ci/knownfailures-windows-vs2015-x64-avx2-Release-3rdP.txt b/tools/travis-ci/knownfailures-windows-vs2015-x64-avx2-Release-3rdP.txt new file mode 100644 index 00000000..16abf39c --- /dev/null +++ b/tools/travis-ci/knownfailures-windows-vs2015-x64-avx2-Release-3rdP.txt @@ -0,0 +1,45 @@ +NR-C1P0-p0_04.j2k-compare2base +NR-C1P0-p0_05.j2k-compare2base +NR-C1P0-p0_06.j2k-compare2base +NR-C1P1-p1_02.j2k-compare2base +NR-C1P1-p1_03.j2k-compare2base +NR-C1P1-p1_04.j2k-compare2base +NR-C1P1-p1_05.j2k-compare2base +NR-RIC-subsampling_1.jp2-compare2base +NR-RIC-subsampling_2.jp2-compare2base +NR-RIC-zoo1.jp2-compare2base +NR-RIC-zoo2.jp2-compare2base +NR-DEC-_00042.j2k-2-decode-md5 +NR-DEC-buxI.j2k-9-decode-md5 +NR-DEC-CT_Phillips_JPEG2K_Decompr_Problem.j2k-13-decode-md5 +NR-DEC-Marrin.jp2-18-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5 +NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5 +NR-DEC-file409752.jp2-40-decode-md5 +NR-DEC-issue188_beach_64bitsbox.jp2-41-decode-md5 +NR-DEC-issue206_image-000.jp2-42-decode-md5 +NR-DEC-issue205.jp2-43-decode-md5 +NR-DEC-issue228.j2k-60-decode-md5 +NR-DEC-issue142.j2k-66-decode-md5 +NR-DEC-issue134.jp2-67-decode-md5 +NR-DEC-issue135.j2k-68-decode-md5 +NR-DEC-issue208.jp2-69-decode-md5 +NR-DEC-issue211.jp2-70-decode-md5 +NR-DEC-p1_04.j2k-124-decode-md5 +NR-DEC-p1_04.j2k-125-decode-md5 +NR-DEC-p1_04.j2k-126-decode-md5 +NR-DEC-p1_04.j2k-127-decode-md5 +NR-DEC-p1_04.j2k-128-decode-md5 +NR-DEC-p1_04.j2k-129-decode-md5 +NR-DEC-p1_04.j2k-131-decode-md5 +NR-DEC-p1_04.j2k-138-decode-md5 +NR-DEC-p1_04.j2k-140-decode-md5 +NR-DEC-p0_04.j2k-166-decode-md5 +NR-DEC-p0_04.j2k-167-decode-md5 +NR-DEC-p0_04.j2k-168-decode-md5 +NR-DEC-p0_04.j2k-172-decode-md5 +NR-DEC-issue205.jp2-253-decode-md5 +NR-DEC-issue559-eci-090-CIELab.jp2-255-decode-md5 +NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5 +NR-DEC-db11217111510058.jp2-306-decode-md5 +NR-DEC-tnsot_zero.jp2-307-decode-md5 diff --git a/tools/travis-ci/run.sh b/tools/travis-ci/run.sh index 97f5f712..fcdea9e6 100755 --- a/tools/travis-ci/run.sh +++ b/tools/travis-ci/run.sh @@ -49,54 +49,69 @@ OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd) if [ "${OPJ_DO_SUBMIT:-}" == "" ]; then OPJ_DO_SUBMIT=0 # Do not flood cdash by default fi -if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then + +if [ "${GITHUB_REPOSITORY:-}" != "" ]; then + OPJ_OWNER=$(echo "${GITHUB_REPOSITORY}" | sed 's/\(^.*\)\/.*/\1/') + OPJ_SITE="${OPJ_OWNER}.gha" +elif [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then OPJ_OWNER=$(echo "${TRAVIS_REPO_SLUG}" | sed 's/\(^.*\)\/.*/\1/') OPJ_SITE="${OPJ_OWNER}.travis-ci.org" - if [ "${OPJ_OWNER}" == "uclouvain" ]; then - OPJ_DO_SUBMIT=1 - fi elif [ "${APPVEYOR_REPO_NAME:-}" != "" ]; then OPJ_OWNER=$(echo "${APPVEYOR_REPO_NAME}" | sed 's/\(^.*\)\/.*/\1/') OPJ_SITE="${OPJ_OWNER}.appveyor.com" - if [ "${OPJ_OWNER}" == "uclouvain" ]; then - OPJ_DO_SUBMIT=1 - fi else OPJ_SITE="$(hostname)" fi -if [ "${TRAVIS_OS_NAME:-}" == "" ]; then +if [ "${OPJ_OWNER:-}" == "uclouvain" ]; then + OPJ_DO_SUBMIT=1 +fi + +if [ "${RUNNER_OS:-}" != "" ]; then + if [ "${RUNNER_OS:-}" == "Linux" ]; then + OPJ_SHORT_OS_NAME=linux + elif [ "${RUNNER_OS:-}" == "Windows" ]; then + OPJ_SHORT_OS_NAME=windows + elif [ "${RUNNER_OS:-}" == "macOS" ]; then + OPJ_SHORT_OS_NAME=osx + else + echo "Unhandled RUNNER_OS = ${RUNNER_OS:-}"; exit 1 + fi +elif [ "${TRAVIS_OS_NAME:-}" != "" ]; then + OPJ_SHORT_OS_NAME="${${TRAVIS_OS_NAME:-}}" +else # Let's guess OS for testing purposes echo "Guessing OS" if uname -s | grep -i Darwin &> /dev/null; then - TRAVIS_OS_NAME=osx + OPJ_SHORT_OS_NAME=osx elif uname -s | grep -i Linux &> /dev/null; then - TRAVIS_OS_NAME=linux - if [ "${CC:-}" == "" ]; then - # default to gcc - export CC=gcc - fi + OPJ_SHORT_OS_NAME=linux elif uname -s | grep -i CYGWIN &> /dev/null; then - TRAVIS_OS_NAME=windows + OPJ_SHORT_OS_NAME=windows elif uname -s | grep -i MINGW &> /dev/null; then - TRAVIS_OS_NAME=windows + OPJ_SHORT_OS_NAME=windows elif [ "${APPVEYOR:-}" == "True" ]; then - TRAVIS_OS_NAME=windows + OPJ_SHORT_OS_NAME=windows else echo "Failed to guess OS"; exit 1 fi - echo "${TRAVIS_OS_NAME}" + echo "${OPJ_SHORT_OS_NAME}" fi -if [ "${TRAVIS_OS_NAME}" == "osx" ]; then +if [ "${OPJ_SHORT_OS_NAME}" == "osx" ]; then OPJ_OS_NAME=$(sw_vers -productName | tr -d ' ')$(sw_vers -productVersion | sed 's/\([^0-9]*\.[0-9]*\).*/\1/') OPJ_CC_VERSION=$(xcodebuild -version | grep -i xcode) OPJ_CC_VERSION=xcode${OPJ_CC_VERSION:6} -elif [ "${TRAVIS_OS_NAME}" == "linux" ]; then +elif [ "${OPJ_SHORT_OS_NAME}" == "linux" ]; then OPJ_OS_NAME=linux if which lsb_release > /dev/null; then OPJ_OS_NAME=$(lsb_release -si)$(lsb_release -sr | sed 's/\([^0-9]*\.[0-9]*\).*/\1/') fi + if [ "${CC:-}" == "" ]; then + # default to gcc + export CC=gcc + echo "Defaulting to CC=gcc" + fi if [ -z "${CC##*gcc*}" ]; then OPJ_CC_VERSION=$(${CC} --version | head -1 | sed 's/.*\ \([0-9.]*[0-9]\)/\1/') if [ -z "${CC##*mingw*}" ]; then @@ -122,7 +137,7 @@ elif [ "${TRAVIS_OS_NAME}" == "linux" ]; then export OPJ_CI_SKIP_TESTS=1 fi fi -elif [ "${TRAVIS_OS_NAME}" == "windows" ]; then +elif [ "${OPJ_SHORT_OS_NAME}" == "windows" ]; then OPJ_OS_NAME=windows if which cl > /dev/null; then OPJ_CL_VERSION=$(cl 2>&1 | grep Version | sed 's/.*Version \([0-9]*\).*/\1/') @@ -152,7 +167,7 @@ elif [ "${TRAVIS_OS_NAME}" == "windows" ]; then fi fi else - echo "OS not supported: ${TRAVIS_OS_NAME}"; exit 1 + echo "OS not supported: ${OPJ_SHORT_OS_NAME}"; exit 1 fi if [ "${OPJ_CI_ARCH:-}" == "" ]; then @@ -164,18 +179,27 @@ if [ "${OPJ_CI_ARCH:-}" == "" ]; then echo "${OPJ_CI_ARCH}" fi -if [ "${TRAVIS_BRANCH:-}" == "" ]; then - if [ "${APPVEYOR_REPO_BRANCH:-}" != "" ]; then - TRAVIS_BRANCH=${APPVEYOR_REPO_BRANCH} - else - echo "Guessing branch" - TRAVIS_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') - fi +if [ "${GITHUB_HEAD_REF:-}" != "" ]; then + OPJ_BRANCH=${GITHUB_HEAD_REF} +elif [ "${TRAVIS_BRANCH:-}" != "" ]; then + OPJ_BRANCH=${TRAVIS_BRANCH} +elif [ "${APPVEYOR_REPO_BRANCH:-}" != "" ]; then + OPJ_BRANCH=${APPVEYOR_REPO_BRANCH} +else + echo "Guessing branch" + OPJ_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') fi -OPJ_BUILDNAME=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${OPJ_CI_ARCH}-${TRAVIS_BRANCH} +OPJ_BUILDNAME=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${OPJ_CI_ARCH}-${OPJ_BRANCH} OPJ_BUILDNAME_TEST=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${OPJ_CI_ARCH} -if [ "${TRAVIS_PULL_REQUEST:-}" != "false" ] && [ "${TRAVIS_PULL_REQUEST:-}" != "" ]; then +if [ "${OPJ_CI_INSTRUCTION_SETS-:}" == "/arch:AVX2" ]; then + OPJ_BUILDNAME=${OPJ_BUILDNAME}-avx2 + OPJ_BUILDNAME_TEST=${OPJ_BUILDNAME_TEST}-avx2 +fi +if [ "${GITHUB_EVENT_NAME:-}" = "pull_request" ]; then + PULL_REQUEST_NUMBER=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }') + OPJ_BUILDNAME=${OPJ_BUILDNAME}-${PULL_REQUEST_NUMBER} +elif [ "${TRAVIS_PULL_REQUEST:-}" != "false" ] && [ "${TRAVIS_PULL_REQUEST:-}" != "" ]; then OPJ_BUILDNAME=${OPJ_BUILDNAME}-pr${TRAVIS_PULL_REQUEST} elif [ "${APPVEYOR_PULL_REQUEST_NUMBER:-}" != "" ]; then OPJ_BUILDNAME=${OPJ_BUILDNAME}-pr${APPVEYOR_PULL_REQUEST_NUMBER} @@ -206,7 +230,7 @@ set -x # travis-ci doesn't dump cmake version in system info, let's print it cmake --version -export TRAVIS_OS_NAME=${TRAVIS_OS_NAME} +export OPJ_SHORT_OS_NAME=${OPJ_SHORT_OS_NAME} export OPJ_SITE=${OPJ_SITE} export OPJ_BUILDNAME=${OPJ_BUILDNAME} export OPJ_SOURCE_DIR=$(opjpath -m ${OPJ_SOURCE_DIR}) @@ -233,22 +257,24 @@ fi # Deployment if needed #--------------------- if [ "${TRAVIS_TAG:-}" != "" ]; then - OPJ_TAG_NAME=${TRAVIS_TAG} - elif [ "${APPVEYOR_REPO_TAG:-}" == "true" ]; then - OPJ_TAG_NAME=${APPVEYOR_REPO_TAG_NAME} - else - OPJ_TAG_NAME="" - fi + OPJ_TAG_NAME=${TRAVIS_TAG} +elif [ "${APPVEYOR_REPO_TAG:-}" == "true" ]; then + OPJ_TAG_NAME=${APPVEYOR_REPO_TAG_NAME} +elif test $(git describe --exact-match --tags 2>/dev/null); then + OPJ_TAG_NAME="$(git describe --exact-match --tags)" +else + OPJ_TAG_NAME="" +fi if [ "${OPJ_CI_INCLUDE_IF_DEPLOY:-}" == "1" ] && [ "${OPJ_TAG_NAME:-}" != "" ]; then #if [ "${OPJ_CI_INCLUDE_IF_DEPLOY:-}" == "1" ]; then OPJ_CI_DEPLOY=1 # unused for now OPJ_CUR_DIR=${PWD} - if [ "${TRAVIS_OS_NAME:-}" == "linux" ]; then + if [ "${OPJ_SHORT_OS_NAME:-}" == "linux" ]; then OPJ_PACK_GENERATOR="TGZ" # ZIP generator currently segfaults on linux else OPJ_PACK_GENERATOR="ZIP" fi - OPJ_PACK_NAME="openjpeg-${OPJ_TAG_NAME}-${TRAVIS_OS_NAME}-${OPJ_CI_ARCH}" + OPJ_PACK_NAME="openjpeg-${OPJ_TAG_NAME}-${OPJ_SHORT_OS_NAME}-${OPJ_CI_ARCH}" cd ${OPJ_BINARY_DIR} cmake -D CPACK_GENERATOR:STRING=${OPJ_PACK_GENERATOR} -D CPACK_PACKAGE_FILE_NAME:STRING=${OPJ_PACK_NAME} ${OPJ_SOURCE_DIR} cd ${OPJ_CUR_DIR} @@ -330,7 +356,7 @@ if [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ]; then " else echo " -New/unknown test failure found!!! +New/unknown test failure found!!! You may need to update/create tools/travis-ci/knownfailures-${OPJ_BUILDNAME_TEST}.txt " fi @@ -365,7 +391,7 @@ if [ "${OPJ_CI_PERF_TESTS:-}" == "1" ]; then cd ../.. REF_VERSION=master - if [ "${TRAVIS_PULL_REQUEST:-false}" == "false" ]; then + if [ "${TRAVIS_PULL_REQUEST:-false}" == "false" -a "${GITHUB_EVENT_NAME:-}" != "pull_request" ]; then REF_VERSION=v2.1.2 fi if [ ! -d ref_opj ]; then From 3d3b58c61f584487c6ab6664fd8e667453b45c85 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 11 Sep 2021 18:28:44 +0200 Subject: [PATCH 2/2] appveyor.yml: disable deploy --- appveyor.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index dd438f9e..9c230103 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,15 +27,15 @@ build_script: test: off #before_deploy: #- cmd: c:\cygwin\bin\bash ./tools/travis-ci/before_deploy.sh -deploy: - #release: openjpeg-$(appveyor_repo_tag_name) - description: 'OpenJPEG $(appveyor_repo_tag_name) has been released. More info [here](https://github.com/uclouvain/openjpeg/blob/$(appveyor_repo_tag_name)/NEWS) and a detailed view [here](https://github.com/uclouvain/openjpeg/blob/$(appveyor_repo_tag_name)/CHANGES).' - provider: GitHub - auth_token: - secure: XUL+IoRRw8U/4tupa/fMpinxurft7WRQHZiWHMLO5iuFbwZ+C3vCjVVVM+5Ebky7 # your encrypted token from GitHub - artifact: /.*\.zip/ # upload all zip packages to release assets - draft: true - prerelease: false - on: - appveyor_repo_tag: true # deploy on tag push only - OPJ_CI_INCLUDE_IF_DEPLOY: 1 +#deploy: +# #release: openjpeg-$(appveyor_repo_tag_name) +# description: 'OpenJPEG $(appveyor_repo_tag_name) has been released. More info [here](https://github.com/uclouvain/openjpeg/blob/$(appveyor_repo_tag_name)/NEWS) and a detailed view [here](https://github.com/uclouvain/openjpeg/blob/$(appveyor_repo_tag_name)/CHANGES).' +# provider: GitHub +# auth_token: +# secure: XUL+IoRRw8U/4tupa/fMpinxurft7WRQHZiWHMLO5iuFbwZ+C3vCjVVVM+5Ebky7 # your encrypted token from GitHub +# artifact: /.*\.zip/ # upload all zip packages to release assets +# draft: true +# prerelease: false +# on: +# appveyor_repo_tag: true # deploy on tag push only +# OPJ_CI_INCLUDE_IF_DEPLOY: 1