Merge branch 'master' into coc-qcc

This commit is contained in:
mayeut 2015-10-13 21:57:58 +02:00
commit c8d03fea9b
15 changed files with 562 additions and 108 deletions

View File

@ -1,42 +1,38 @@
language: c language: c
os:
- linux
- osx
compiler:
- gcc
- clang
- x86_64-w64-mingw32-gcc
env:
- OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
- OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
- OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
- OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug
matrix: matrix:
exclude: include:
- os: osx - os: osx
compiler: clang
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
- os: linux
compiler: gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
- os: linux
compiler: gcc compiler: gcc
- os: osx
compiler: x86_64-w64-mingw32-gcc
- compiler: clang
env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
- compiler: clang - os: linux
compiler: gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug
- os: linux - os: linux
compiler: clang compiler: clang
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
- os: linux
compiler: x86_64-w64-mingw32-gcc
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Release
- compiler: gcc - os: linux
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1 compiler: x86_64-w64-mingw32-gcc
- compiler: x86_64-w64-mingw32-gcc env: OPJ_CI_ARCH=i386 OPJ_CI_BUILD_CONFIGURATION=Release
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1 - os: linux
- compiler: x86_64-w64-mingw32-gcc compiler: gcc-4.8
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug env: OPJ_CI_ABI_CHECK=1
- os: osx
env: OPJ_CI_ARCH=x86_64 OPJ_CI_BUILD_CONFIGURATION=Debug OPJ_CI_ASAN=1
addons: addons:
apt: apt:
sources:
- ubuntu-toolchain-r-test
packages: packages:
- gcc-4.8
- gcc-multilib - gcc-multilib
- gcc-mingw-w64-base - gcc-mingw-w64-base
- binutils-mingw-w64-i686 - binutils-mingw-w64-i686
@ -44,9 +40,14 @@ addons:
- gcc-mingw-w64-i686 - gcc-mingw-w64-i686
- gcc-mingw-w64-x86-64 - gcc-mingw-w64-x86-64
- gcc-mingw-w64 - gcc-mingw-w64
- libelf-dev
- elfutils
- texinfo
- exuberant-ctags
install: install:
- ./tools/travis-ci/install.sh - ./tools/travis-ci/install.sh
script: script:
- ./tools/travis-ci/run.sh - ./tools/travis-ci/run.sh
- ./tools/travis-ci/abi-check.sh

26
appveyor.yml Normal file
View File

@ -0,0 +1,26 @@
version: 2.1.1.{build}
branches:
except:
- coverity_scan
skip_tags: true
clone_depth: 50
environment:
OPJ_NONCOMMERCIAL: 1
OPJ_CI_SKIP_TESTS: 0
OPJ_DO_SUBMIT: 1
matrix:
- OPJ_CI_ARCH: x86
OPJ_CI_VSCOMNTOOLS: $(VS140COMNTOOLS)
- OPJ_CI_ARCH: x64
OPJ_CI_VSCOMNTOOLS: $(VS140COMNTOOLS)
- OPJ_CI_ARCH: x86
OPJ_CI_VSCOMNTOOLS: $(VS100COMNTOOLS)
install:
- cmd: c:\cygwin\bin\bash ./tools/travis-ci/install.sh
build_script:
- cmd: >-
"%OPJ_CI_VSCOMNTOOLS%..\..\VC\vcvarsall.bat" %OPJ_CI_ARCH%
bash ./tools/travis-ci/run.sh
test: off
deploy: off

View File

@ -617,7 +617,7 @@ void color_cielab_to_rgb(opj_image_t *image)
default_type = (unsigned int)row[1]; default_type = (unsigned int)row[1];
if(default_type == 0x44454600)// DEF : default if(default_type == 0x44454600)/* DEF : default */
{ {
rl = 100; ra = 170; rb = 200; rl = 100; ra = 170; rb = 200;
ol = 0; ol = 0;
@ -679,9 +679,9 @@ void color_cielab_to_rgb(opj_image_t *image)
} }
fprintf(stderr,"%s:%d:\n\tenumCS %d not handled. Ignoring.\n", __FILE__,__LINE__, enumcs); fprintf(stderr,"%s:%d:\n\tenumCS %d not handled. Ignoring.\n", __FILE__,__LINE__, enumcs);
}// color_apply_conversion() }/* color_apply_conversion() */
#endif // OPJ_HAVE_LIBLCMS2 || OPJ_HAVE_LIBLCMS1 #endif /* OPJ_HAVE_LIBLCMS2 || OPJ_HAVE_LIBLCMS1 */
void color_cmyk_to_rgb(opj_image_t *image) void color_cmyk_to_rgb(opj_image_t *image)
{ {
@ -732,11 +732,11 @@ void color_cmyk_to_rgb(opj_image_t *image)
memcpy(&(image->comps[i]), &(image->comps[i+1]), sizeof(image->comps[i])); memcpy(&(image->comps[i]), &(image->comps[i+1]), sizeof(image->comps[i]));
} }
}// color_cmyk_to_rgb() }/* color_cmyk_to_rgb() */
// /*
// This code has been adopted from sjpx_openjpeg.c of ghostscript * This code has been adopted from sjpx_openjpeg.c of ghostscript
// */
void color_esycc_to_rgb(opj_image_t *image) void color_esycc_to_rgb(opj_image_t *image)
{ {
int y, cb, cr, sign1, sign2, val; int y, cb, cr, sign1, sign2, val;
@ -785,4 +785,4 @@ void color_esycc_to_rgb(opj_image_t *image)
} }
image->color_space = OPJ_CLRSPC_SRGB; image->color_space = OPJ_CLRSPC_SRGB;
}// color_esycc_to_rgb() }/* color_esycc_to_rgb() */

View File

@ -741,8 +741,8 @@ static void opj_v4dwt_decode_step1(opj_v4_t* w, OPJ_INT32 count, const OPJ_FLOAT
static void opj_v4dwt_decode_step2(opj_v4_t* l, opj_v4_t* w, OPJ_INT32 k, OPJ_INT32 m, OPJ_FLOAT32 c) static void opj_v4dwt_decode_step2(opj_v4_t* l, opj_v4_t* w, OPJ_INT32 k, OPJ_INT32 m, OPJ_FLOAT32 c)
{ {
OPJ_FLOAT32* restrict fl = (OPJ_FLOAT32*) l; OPJ_FLOAT32* fl = (OPJ_FLOAT32*) l;
OPJ_FLOAT32* restrict fw = (OPJ_FLOAT32*) w; OPJ_FLOAT32* fw = (OPJ_FLOAT32*) w;
OPJ_INT32 i; OPJ_INT32 i;
for(i = 0; i < m; ++i){ for(i = 0; i < m; ++i){
OPJ_FLOAT32 tmp1_1 = fl[0]; OPJ_FLOAT32 tmp1_1 = fl[0];

View File

@ -1008,6 +1008,7 @@ static void j3d_write_qcx(opj_j3d_t *j3d, int compno) {
cio_write(cio, tccp->qntsty + (tccp->numgbits << 5), 1); /* Sqcx : Table A28 de 15444-1*/ cio_write(cio, tccp->qntsty + (tccp->numgbits << 5), 1); /* Sqcx : Table A28 de 15444-1*/
numbands = 0; // compiler warning
if (j3d->cinfo->codec_format == CODEC_J2K) if (j3d->cinfo->codec_format == CODEC_J2K)
numbands = tccp->qntsty == J3D_CCP_QNTSTY_SIQNT ? 1 : tccp->numresolution[0] * 3 - 2; numbands = tccp->qntsty == J3D_CCP_QNTSTY_SIQNT ? 1 : tccp->numresolution[0] * 3 - 2;
else if (j3d->cinfo->codec_format == CODEC_J3D) { else if (j3d->cinfo->codec_format == CODEC_J3D) {

View File

@ -1296,7 +1296,7 @@ opj_bool jpwl_check_tile(opj_j2k_t *j2k, opj_tcd_t *tcd, int tileno) {
opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR, opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
"JPWL: wrong x-cord of block origin %d => x-prec is (%d, %d)\n", "JPWL: wrong x-cord of block origin %d => x-prec is (%d, %d)\n",
block->x0, prec->x0, prec->x1); block->x0, prec->x0, prec->x1);
if (!JPWL_ASSUME || JPWL_ASSUME) if (!JPWL_ASSUME)
return OPJ_FALSE; return OPJ_FALSE;
}; };
} }

View File

@ -0,0 +1,131 @@
{
"Name": "openjpeg",
"Title": "OpenJPEG",
"SourceUrl": "https://github.com/uclouvain/openjpeg/tags",
"Git": "https://github.com/uclouvain/openjpeg.git",
"Maintainer": "Antonin D.",
"MaintainerUrl": "http://www.openjpeg.org/",
"Package": "version.",
"Versions": [
{
"Number": "current",
"Installed": "installed/openjpeg/current",
"Source": "src/openjpeg/current",
"Changelog": "On",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/current/list",
"PublicTypes": "public_types/openjpeg/current/list"
},
{
"Number": "2.1",
"Installed": "installed/openjpeg/2.1",
"Source": "src/openjpeg/2.1/version.2.1.tar.gz",
"Changelog": "NEWS",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/2.1/list",
"PublicTypes": "public_types/openjpeg/2.1/list"
},
{
"Number": "2.0.1",
"Installed": "installed/openjpeg/2.0.1",
"Source": "src/openjpeg/2.0.1/version.2.0.1.tar.gz",
"Changelog": "NEWS",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/2.0.1/list",
"PublicTypes": "public_types/openjpeg/2.0.1/list"
},
{
"Number": "2.0",
"Installed": "installed/openjpeg/2.0",
"Source": "src/openjpeg/2.0/version.2.0.tar.gz",
"Changelog": "NEWS",
"HeadersDiff": "On",
"PkgDiff": "On",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/2.0/list",
"PublicTypes": "public_types/openjpeg/2.0/list"
},
{
"Number": "1.5.2",
"Installed": "installed/openjpeg/1.5.2",
"Source": "src/openjpeg/1.5.2/version.1.5.2.tar.gz",
"Changelog": "NEWS",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/1.5.2/list",
"PublicTypes": "public_types/openjpeg/1.5.2/list"
},
{
"Number": "1.5.1",
"Installed": "installed/openjpeg/1.5.1",
"Source": "src/openjpeg/1.5.1/version.1.5.1.tar.gz",
"Changelog": "NEWS",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/1.5.1/list",
"PublicTypes": "public_types/openjpeg/1.5.1/list"
},
{
"Number": "1.5",
"Installed": "installed/openjpeg/1.5",
"Source": "src/openjpeg/1.5/version.1.5.tar.gz",
"Changelog": "NEWS",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/1.5/list",
"PublicTypes": "public_types/openjpeg/1.5/list"
},
{
"Number": "1.4",
"Installed": "installed/openjpeg/1.4",
"Source": "src/openjpeg/1.4/version.1.4.tar.gz",
"Changelog": "CHANGES",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/1.4/list",
"PublicTypes": "public_types/openjpeg/1.4/list"
},
{
"Number": "1.3",
"Installed": "installed/openjpeg/1.3",
"Source": "src/openjpeg/1.3/version.1.3.tar.gz",
"Changelog": "ChangeLog",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/1.3/list",
"PublicTypes": "public_types/openjpeg/1.3/list"
},
{
"Number": "1.2",
"Installed": "installed/openjpeg/1.2",
"Source": "src/openjpeg/1.2/version.1.2.tar.gz",
"Changelog": "ChangeLog",
"HeadersDiff": "On",
"PkgDiff": "Off",
"ABIView": "Off",
"ABIDiff": "Off",
"PublicSymbols": "public_symbols/openjpeg/1.2/list",
"PublicTypes": "public_types/openjpeg/1.2/list"
}]
}

View File

@ -7,8 +7,21 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
set( ENV{LANG} en_US.UTF-8) set( ENV{LANG} en_US.UTF-8)
if($ENV{OPJ_BINARY_DIR})
set( CTEST_DASHBOARD_ROOT "$ENV{OPJ_BINARY_DIR}" )
else()
set( CTEST_DASHBOARD_ROOT "$ENV{PWD}/build" ) set( CTEST_DASHBOARD_ROOT "$ENV{PWD}/build" )
endif()
if("$ENV{TRAVIS_OS_NAME}" STREQUAL "windows")
set( CTEST_CMAKE_GENERATOR "NMake Makefiles")
set( CTEST_BUILD_COMMAND "nmake" )
set( JPYLYZER_EXT "exe" )
else()
set( CTEST_CMAKE_GENERATOR "Unix Makefiles") # Always makefile in travis-ci environment set( CTEST_CMAKE_GENERATOR "Unix Makefiles") # Always makefile in travis-ci environment
set( CCFLAGS_WARNING "-Wall -Wextra -Wconversion -Wno-unused-parameter -Wdeclaration-after-statement")
set( JPYLYZER_EXT "py" )
endif()
if ("$ENV{OPJ_BUILD_CONFIGURATION}" STREQUAL "") if ("$ENV{OPJ_BUILD_CONFIGURATION}" STREQUAL "")
set( CTEST_BUILD_CONFIGURATION "Release") set( CTEST_BUILD_CONFIGURATION "Release")
@ -66,9 +79,13 @@ if(NOT "$ENV{OPJ_CI_SKIP_TESTS}" STREQUAL "1")
# Note: Binaries can only be used for non-commercial purposes. # Note: Binaries can only be used for non-commercial purposes.
if ("$ENV{OPJ_NONCOMMERCIAL}" STREQUAL "1" ) if ("$ENV{OPJ_NONCOMMERCIAL}" STREQUAL "1" )
set(KDUPATH $ENV{PWD}/kdu) set(KDUPATH $ENV{PWD}/kdu)
if("$ENV{TRAVIS_OS_NAME}" STREQUAL "windows")
set(ENV{PATH} "$ENV{PATH};${KDUPATH}")
else()
set(ENV{LD_LIBRARY_PATH} ${KDUPATH}) set(ENV{LD_LIBRARY_PATH} ${KDUPATH})
set(ENV{PATH} $ENV{PATH}:${KDUPATH}) set(ENV{PATH} $ENV{PATH}:${KDUPATH})
endif() endif()
endif()
set(BUILD_TESTING "TRUE") set(BUILD_TESTING "TRUE")
else() else()
set(BUILD_TESTING "FALSE") set(BUILD_TESTING "FALSE")
@ -81,7 +98,7 @@ set( CACHE_CONTENTS "
CMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} CMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION}
# Warning level # Warning level
CMAKE_C_FLAGS:STRING= ${CCFLAGS_ARCH} -Wall -Wextra -Wconversion -Wno-unused-parameter -Wdeclaration-after-statement CMAKE_C_FLAGS:STRING= ${CCFLAGS_ARCH} ${CCFLAGS_WARNING}
# Use to activate the test suite # Use to activate the test suite
BUILD_TESTING:BOOL=${BUILD_TESTING} BUILD_TESTING:BOOL=${BUILD_TESTING}
@ -93,7 +110,7 @@ BUILD_THIRDPARTY:BOOL=TRUE
OPJ_DATA_ROOT:PATH=$ENV{PWD}/data OPJ_DATA_ROOT:PATH=$ENV{PWD}/data
# jpylyzer is available with on GitHub: https://github.com/openpreserve/jpylyzer # jpylyzer is available with on GitHub: https://github.com/openpreserve/jpylyzer
JPYLYZER_EXECUTABLE=$ENV{PWD}/jpylyzer/jpylyzer/jpylyzer.py JPYLYZER_EXECUTABLE=$ENV{PWD}/jpylyzer/jpylyzer.${JPYLYZER_EXT}
" ) " )

77
tools/travis-ci/abi-check.sh Executable file
View File

@ -0,0 +1,77 @@
#!/bin/bash
# This script executes the abi-check step when running under travis-ci (in run step)
# Set-up some bash options
set -o nounset ## set -u : exit the script if you try to use an uninitialised variable
set -o errexit ## set -e : exit the script if any statement returns a non-true return value
set -o pipefail ## Fail on error in pipe
set -o xtrace ## set -x : Print a trace of simple commands and their arguments after they are expanded and before they are executed.
# Exit if not ABI check
if [ "${OPJ_CI_ABI_CHECK:-}" != "1" ]; then
exit 0
fi
OPJ_UPLOAD_ABI_REPORT=0
OPJ_LIMIT_ABI_BUILDS="-limit 2"
if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then
if [ "$(echo "${TRAVIS_REPO_SLUG}" | sed 's/\(^.*\)\/.*/\1/')" == "uclouvain" ] && [ "${TRAVIS_PULL_REQUEST:-}" == "false" ]; then
# Upload report
OPJ_UPLOAD_ABI_REPORT=1
# Build full report
OPJ_LIMIT_ABI_BUILDS=
fi
fi
OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd)
mkdir ${HOME}/abi-check
cd ${HOME}/abi-check
# Let's get tools not available with apt
mkdir tools
# Travis doesn't allow package wdiff...
wget -qO - http://mirrors.kernel.org/gnu/wdiff/wdiff-latest.tar.gz | tar -xz
cd wdiff-*
./configure --prefix=${HOME}/abi-check/tools/wdiff &> /dev/null
make &> /dev/null
make check &> /dev/null
make install &> /dev/null
cd ..
export PATH=${PWD}/tools/wdiff/bin:$PATH
wget -qO - https://tools.ietf.org/tools/rfcdiff/rfcdiff-1.42.tgz | tar -xz
mv rfcdiff-1.42 ${PWD}/tools/rfcdiff
export PATH=${PWD}/tools/rfcdiff:$PATH
wget -qO - https://github.com/lvc/installer/archive/0.4.tar.gz | tar -xz
mkdir ${PWD}/tools/abi-tracker
make -C installer-0.4 install prefix=${PWD}/tools/abi-tracker target=abi-tracker
export PATH=${PWD}/tools/abi-tracker/bin:$PATH
mkdir tracker
cd tracker
# Let's create all we need
grep -v Git ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json > ./openjpeg.json
abi-monitor ${OPJ_LIMIT_ABI_BUILDS} -get openjpeg.json
cp -f ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json ./openjpeg.json
cp -rf ${OPJ_SOURCE_DIR} src/openjpeg/current
abi-monitor ${OPJ_LIMIT_ABI_BUILDS} -build openjpeg.json
abi-tracker -build openjpeg.json
EXIT_CODE=0
# Check API
abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/2.1 -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -api -s || EXIT_CODE=1
# Check ABI
# Disabled for now, problems with symbol visibility...
# abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/2.1 -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -abi -s || EXIT_CODE=1
rm -rf src installed
if [ ${OPJ_UPLOAD_ABI_REPORT} -eq 1 ]; then
echo "TODO: Where to upload the report"
fi
exit $EXIT_CODE

View File

@ -2,6 +2,17 @@
# This script executes the install step when running under travis-ci # This script executes the install step when running under travis-ci
#if cygwin, check path
case ${MACHTYPE} in
*cygwin*) OPJ_CI_IS_CYGWIN=1;;
*) ;;
esac
if [ "${OPJ_CI_IS_CYGWIN:-}" == "1" ]; then
# PATH is not yet set up
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
fi
# Set-up some error handling # Set-up some error handling
set -o nounset ## set -u : exit the script if you try to use an uninitialised variable set -o nounset ## set -u : exit the script if you try to use an uninitialised variable
set -o errexit ## set -e : exit the script if any statement returns a non-true return value set -o errexit ## set -e : exit the script if any statement returns a non-true return value
@ -19,9 +30,10 @@ function exit_handler ()
trap exit_handler EXIT trap exit_handler EXIT
trap exit ERR trap exit ERR
# We don't need anything for coverity scan builds # We don't need anything for coverity scan builds. ABI check is managed in abi-check.sh
if [ "${COVERITY_SCAN_BRANCH:-}" == "1" ] || [ "${OPJ_CI_ABI_CHECK:-}" == "1" ]; then
if [ "${COVERITY_SCAN_BRANCH:-}" != "1" ]; then exit 0
fi
if [ "${OPJ_CI_ASAN:-}" == "1" ]; then if [ "${OPJ_CI_ASAN:-}" == "1" ]; then
# We need a new version of cmake than travis-ci provides # We need a new version of cmake than travis-ci provides
@ -35,13 +47,15 @@ if [ "${COVERITY_SCAN_BRANCH:-}" != "1" ]; then
OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd) OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd)
# We need test data # We need test data
if [ "${TRAVIS_BRANCH:-}" == "" ]; then if [ "${TRAVIS_BRANCH:-}" != "" ]; then
TRAVIS_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') #default to same branch as we're setting up
fi
OPJ_DATA_HAS_BRANCH=$(git ls-remote --heads git://github.com/uclouvain/openjpeg-data.git ${TRAVIS_BRANCH} | wc -l)
if [ ${OPJ_DATA_HAS_BRANCH} -ne 0 ]; then
OPJ_DATA_BRANCH=${TRAVIS_BRANCH} OPJ_DATA_BRANCH=${TRAVIS_BRANCH}
elif [ "${APPVEYOR_REPO_BRANCH:-}" != "" ]; then
OPJ_DATA_BRANCH=${APPVEYOR_REPO_BRANCH}
else else
OPJ_DATA_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') #default to same branch as we're setting up
fi
OPJ_DATA_HAS_BRANCH=$(git ls-remote --heads git://github.com/uclouvain/openjpeg-data.git ${OPJ_DATA_BRANCH} | wc -l)
if [ ${OPJ_DATA_HAS_BRANCH} -eq 0 ]; then
OPJ_DATA_BRANCH=master #default to master OPJ_DATA_BRANCH=master #default to master
fi fi
echo "Cloning openjpeg-data from ${OPJ_DATA_BRANCH} branch" echo "Cloning openjpeg-data from ${OPJ_DATA_BRANCH} branch"
@ -49,9 +63,17 @@ if [ "${COVERITY_SCAN_BRANCH:-}" != "1" ]; then
# We need jpylyzer for the test suite # We need jpylyzer for the test suite
echo "Retrieving jpylyzer" echo "Retrieving jpylyzer"
if [ "${APPVEYOR:-}" == "True" ]; then
wget --local-encoding=UTF-8 -q http://dl.bintray.com/openplanets/opf-windows/jpylyzer_1.14.2_win32.zip
mkdir jpylyzer
cd jpylyzer
cmake -E tar -xf ../jpylyzer_1.14.2_win32.zip
cd ..
else
wget -qO - https://github.com/openpreserve/jpylyzer/archive/1.14.2.tar.gz | tar -xz wget -qO - https://github.com/openpreserve/jpylyzer/archive/1.14.2.tar.gz | tar -xz
mv jpylyzer-1.14.2 jpylyzer mv jpylyzer-1.14.2/jpylyzer ./
chmod +x jpylyzer/jpylyzer/jpylyzer.py chmod +x jpylyzer/jpylyzer.py
fi
# When OPJ_NONCOMMERCIAL=1, kakadu trial binaries are used for testing. Here's the copyright notice from kakadu: # When OPJ_NONCOMMERCIAL=1, kakadu trial binaries are used for testing. Here's the copyright notice from kakadu:
# Copyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney. # Copyright is owned by NewSouth Innovations Pty Limited, commercial arm of the UNSW Australia in Sydney.
@ -79,6 +101,15 @@ if [ "${COVERITY_SCAN_BRANCH:-}" != "1" ]; then
install_name_tool -id ${PWD}/libkdu_v77R.dylib libkdu_v77R.dylib install_name_tool -id ${PWD}/libkdu_v77R.dylib libkdu_v77R.dylib
install_name_tool -change /usr/local/lib/libkdu_v77R.dylib ${PWD}/libkdu_v77R.dylib kdu_compress install_name_tool -change /usr/local/lib/libkdu_v77R.dylib ${PWD}/libkdu_v77R.dylib kdu_compress
install_name_tool -change /usr/local/lib/libkdu_v77R.dylib ${PWD}/libkdu_v77R.dylib kdu_expand install_name_tool -change /usr/local/lib/libkdu_v77R.dylib ${PWD}/libkdu_v77R.dylib kdu_expand
elif [ "${APPVEYOR:-}" == "True" ] || 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/2014/06/KDU77_Demo_Apps_for_Win32_150710.msi_.zip
cmake -E tar -xf KDU77_Demo_Apps_for_Win32_150710.msi_.zip
msiexec /i KDU77_Demo_Apps_for_Win32_150710.msi /quiet /qn /norestart
if [ -d "C:/Program Files/Kakadu" ]; then
cp -r "C:/Program Files/Kakadu" ./kdu
else
cp -r "C:/Program Files (x86)/Kakadu" ./kdu
fi fi
fi fi
fi fi

View File

@ -0,0 +1,61 @@
NR-ENC-issue203-32x32-bgr16.bmp-43-compare_dump2base
NR-ENC-issue203-32x32-bgr16.bmp-43-compare_dec-ref-out2base
NR-ENC-issue203-33x33-bgr16.bmp-44-compare_dump2base
NR-ENC-issue203-33x33-bgr16.bmp-44-compare_dec-ref-out2base
NR-ENC-issue203-32x32-bgra16.bmp-45-compare_dump2base
NR-ENC-issue203-33x33-bgra16.bmp-46-compare_dump2base
NR-ENC-issue203-127x64-bgr16.bmp-49-compare_dump2base
NR-ENC-issue203-127x64-bgr16.bmp-49-compare_dec-ref-out2base
NR-DEC-issue104_jpxstream.jp2-33-decode-md5
NR-DEC-issue226.j2k-74-decode
NR-DEC-issue226.j2k-74-decode-md5
NR-DEC-p1_06.j2k-156-decode
NR-DEC-p1_06.j2k-156-decode-md5
NR-DEC-p1_06.j2k-164-decode-md5
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-issue208.jp2-69-decode-md5
NR-DEC-issue211.jp2-70-decode-md5
NR-DEC-issue135.j2k-68-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-issue559-eci-090-CIELab.jp2-255-decode-md5
NR-DEC-issue236-ESYCC-CDEF.jp2-254-decode-md5
NR-DEC-issue559-eci-091-CIELab.jp2-256-decode-md5
NR-DEC-p1_06.j2k-164-decode

View File

@ -0,0 +1,44 @@
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-ENC-Bretagne2.ppm-7-compare_dec-ref-out2base
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-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

View File

@ -0,0 +1,3 @@
NR-ENC-Bretagne2.ppm-7-compare_dec-ref-out2base
NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5
NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5

View File

@ -0,0 +1,3 @@
NR-ENC-Bretagne2.ppm-7-compare_dec-ref-out2base
NR-DEC-kodak_2layers_lrcp.j2c-31-decode-md5
NR-DEC-kodak_2layers_lrcp.j2c-32-decode-md5

View File

@ -2,11 +2,34 @@
# This script executes the script step when running under travis-ci # This script executes the script step when running under travis-ci
#if cygwin, check path
case ${MACHTYPE} in
*cygwin*) OPJ_CI_IS_CYGWIN=1;;
*) ;;
esac
# Hack for appveyor to get GNU find in path before windows one.
export PATH=$(dirname ${BASH}):$PATH
# Set-up some bash options # Set-up some bash options
set -o nounset ## set -u : exit the script if you try to use an uninitialised variable set -o nounset ## set -u : exit the script if you try to use an uninitialised variable
set -o errexit ## set -e : exit the script if any statement returns a non-true return value set -o errexit ## set -e : exit the script if any statement returns a non-true return value
set -o pipefail ## Fail on error in pipe set -o pipefail ## Fail on error in pipe
function opjpath ()
{
if [ "${OPJ_CI_IS_CYGWIN:-}" == "1" ]; then
cygpath $1 "$2"
else
echo "$2"
fi
}
# ABI check is done by abi-check.sh
if [ "${OPJ_CI_ABI_CHECK:-}" == "1" ]; then
exit 0
fi
# Set-up some variables # Set-up some variables
if [ "${OPJ_CI_BUILD_CONFIGURATION:-}" == "" ]; then if [ "${OPJ_CI_BUILD_CONFIGURATION:-}" == "" ]; then
export OPJ_CI_BUILD_CONFIGURATION=Release #default export OPJ_CI_BUILD_CONFIGURATION=Release #default
@ -22,6 +45,12 @@ if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then
if [ "${OPJ_OWNER}" == "uclouvain" ]; then if [ "${OPJ_OWNER}" == "uclouvain" ]; then
OPJ_DO_SUBMIT=1 OPJ_DO_SUBMIT=1
fi 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 else
OPJ_SITE="$(hostname)" OPJ_SITE="$(hostname)"
fi fi
@ -37,6 +66,10 @@ if [ "${TRAVIS_OS_NAME:-}" == "" ]; then
# default to gcc # default to gcc
export CC=gcc export CC=gcc
fi fi
elif uname -s | grep -i CYGWIN &> /dev/null; then
TRAVIS_OS_NAME=windows
elif uname -s | grep -i MINGW &> /dev/null; then
TRAVIS_OS_NAME=windows
else else
echo "Failed to guess OS"; exit 1 echo "Failed to guess OS"; exit 1
fi fi
@ -66,6 +99,26 @@ elif [ "${TRAVIS_OS_NAME}" == "linux" ]; then
else else
echo "Compiler not supported: ${CC}"; exit 1 echo "Compiler not supported: ${CC}"; exit 1
fi fi
elif [ "${TRAVIS_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/')
if [ ${OPJ_CL_VERSION} -eq 19 ]; then
OPJ_CC_VERSION=vs2015
elif [ ${OPJ_CL_VERSION} -eq 18 ]; then
OPJ_CC_VERSION=vs2013
elif [ ${OPJ_CL_VERSION} -eq 17 ]; then
OPJ_CC_VERSION=vs2012
elif [ ${OPJ_CL_VERSION} -eq 16 ]; then
OPJ_CC_VERSION=vs2010
elif [ ${OPJ_CL_VERSION} -eq 15 ]; then
OPJ_CC_VERSION=vs2008
elif [ ${OPJ_CL_VERSION} -eq 14 ]; then
OPJ_CC_VERSION=vs2005
else
OPJ_CC_VERSION=vs????
fi
fi
else else
echo "OS not supported: ${TRAVIS_OS_NAME}"; exit 1 echo "OS not supported: ${TRAVIS_OS_NAME}"; exit 1
fi fi
@ -80,14 +133,20 @@ if [ "${OPJ_CI_ARCH:-}" == "" ]; then
fi fi
if [ "${TRAVIS_BRANCH:-}" == "" ]; then if [ "${TRAVIS_BRANCH:-}" == "" ]; then
if [ "${APPVEYOR_REPO_BRANCH:-}" != "" ]; then
TRAVIS_BRANCH=${APPVEYOR_REPO_BRANCH}
else
echo "Guessing branch" echo "Guessing branch"
TRAVIS_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]') #default to master TRAVIS_BRANCH=$(git -C ${OPJ_SOURCE_DIR} branch | grep '*' | tr -d '*[[:blank:]]')
fi
fi 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}-${TRAVIS_BRANCH}
OPJ_BUILDNAME_TEST=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${OPJ_CI_ARCH} OPJ_BUILDNAME_TEST=${OPJ_OS_NAME}-${OPJ_CC_VERSION}-${OPJ_CI_ARCH}
if [ "${TRAVIS_PULL_REQUEST:-}" != "false" ] && [ "${TRAVIS_PULL_REQUEST:-}" != "" ]; then if [ "${TRAVIS_PULL_REQUEST:-}" != "false" ] && [ "${TRAVIS_PULL_REQUEST:-}" != "" ]; then
OPJ_BUILDNAME=${OPJ_BUILDNAME}-pr${TRAVIS_PULL_REQUEST} OPJ_BUILDNAME=${OPJ_BUILDNAME}-pr${TRAVIS_PULL_REQUEST}
elif [ "${APPVEYOR_PULL_REQUEST_NUMBER:-}" != "" ]; then
OPJ_BUILDNAME=${OPJ_BUILDNAME}-pr${APPVEYOR_PULL_REQUEST_NUMBER}
fi fi
OPJ_BUILDNAME=${OPJ_BUILDNAME}-${OPJ_CI_BUILD_CONFIGURATION}-3rdP OPJ_BUILDNAME=${OPJ_BUILDNAME}-${OPJ_CI_BUILD_CONFIGURATION}-3rdP
OPJ_BUILDNAME_TEST=${OPJ_BUILDNAME_TEST}-${OPJ_CI_BUILD_CONFIGURATION}-3rdP OPJ_BUILDNAME_TEST=${OPJ_BUILDNAME_TEST}-${OPJ_CI_BUILD_CONFIGURATION}-3rdP
@ -115,9 +174,11 @@ set -x
# travis-ci doesn't dump cmake version in system info, let's print it # travis-ci doesn't dump cmake version in system info, let's print it
cmake --version cmake --version
export TRAVIS_OS_NAME=${TRAVIS_OS_NAME}
export OPJ_SITE=${OPJ_SITE} export OPJ_SITE=${OPJ_SITE}
export OPJ_BUILDNAME=${OPJ_BUILDNAME} export OPJ_BUILDNAME=${OPJ_BUILDNAME}
export OPJ_SOURCE_DIR=${OPJ_SOURCE_DIR} export OPJ_SOURCE_DIR=$(opjpath -m ${OPJ_SOURCE_DIR})
export OPJ_BINARY_DIR=$(opjpath -m ${PWD}/build)
export OPJ_BUILD_CONFIGURATION=${OPJ_CI_BUILD_CONFIGURATION} export OPJ_BUILD_CONFIGURATION=${OPJ_CI_BUILD_CONFIGURATION}
export OPJ_DO_SUBMIT=${OPJ_DO_SUBMIT} export OPJ_DO_SUBMIT=${OPJ_DO_SUBMIT}
@ -176,11 +237,11 @@ if [ "${OPJ_CI_SKIP_TESTS:-}" != "1" ]; then
awk -F: '{ print $2 }' ${OPJ_FAILEDTEST_LOG} > failures.txt awk -F: '{ print $2 }' ${OPJ_FAILEDTEST_LOG} > failures.txt
while read FAILEDTEST; do while read FAILEDTEST; do
# Start with common errors # Start with common errors
if grep -x "${FAILEDTEST}" ${OPJ_SOURCE_DIR}/tools/travis-ci/knownfailures-all.txt > /dev/null; then if grep -x "${FAILEDTEST}" $(opjpath -u ${OPJ_SOURCE_DIR})/tools/travis-ci/knownfailures-all.txt > /dev/null; then
continue continue
fi fi
if [ -f ${OPJ_SOURCE_DIR}/tools/travis-ci/knownfailures-${OPJ_BUILDNAME_TEST}.txt ]; then if [ -f $(opjpath -u ${OPJ_SOURCE_DIR})/tools/travis-ci/knownfailures-${OPJ_BUILDNAME_TEST}.txt ]; then
if grep -x "${FAILEDTEST}" ${OPJ_SOURCE_DIR}/tools/travis-ci/knownfailures-${OPJ_BUILDNAME_TEST}.txt > /dev/null; then if grep -x "${FAILEDTEST}" $(opjpath -u ${OPJ_SOURCE_DIR})/tools/travis-ci/knownfailures-${OPJ_BUILDNAME_TEST}.txt > /dev/null; then
continue continue
fi fi
fi fi
@ -207,8 +268,6 @@ New/unknown test failure found!!!
OPJ_CI_RESULT=1 OPJ_CI_RESULT=1
fi fi
fi fi
fi fi
exit ${OPJ_CI_RESULT} exit ${OPJ_CI_RESULT}