From dfa29f9f859c9ca261f96a1bb1b13d7d765d10aa Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 8 Feb 2020 12:07:54 +0100 Subject: Travis: restrict symbol comparison to x86_64 builds --- scripts/dump_exported_symbols.sh | 12 +++++++++++- travis/install.sh | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/dump_exported_symbols.sh b/scripts/dump_exported_symbols.sh index b03d711a..4bd23d64 100755 --- a/scripts/dump_exported_symbols.sh +++ b/scripts/dump_exported_symbols.sh @@ -1,2 +1,12 @@ #!/bin/sh -objdump -TC "$1" | grep " g DF .text" | cut -b 62- | grep -v "thunk to" | sed "s/internal_//" | grep -v "Java_" | sed "s/std::__cxx11::basic_string, std::allocator >/std::string/g" | sed "s/std::string >/std::string>/g" | sed "s/\[abi:cxx11\]//g" | sort -u \ No newline at end of file + +if objdump -TC "$1" | grep "elf64-x86-64">/dev/null; then + COLUMN=62 +#elif objdump -TC "$1" | grep "elf32-i386">/dev/null; then +# COLUMN=46 +else + echo "Unsupported architecture" + exit 1 +fi + +objdump -TC "$1" | grep " g DF .text" | cut -b "${COLUMN}-" | grep -v "thunk to" | sed "s/internal_//" | grep -v "Java_" | sed "s/std::__cxx11::basic_string, std::allocator >/std::string/g" | sed "s/std::string >/std::string>/g" | sed "s/\[abi:cxx11\]//g" | sort -u diff --git a/travis/install.sh b/travis/install.sh index a8b98f98..56533d21 100755 --- a/travis/install.sh +++ b/travis/install.sh @@ -43,9 +43,11 @@ cd build_autoconf make -j${NPROC} if [ "$(uname)" == "Linux" -a -f src/.libs/libproj.so ]; then + if objdump -TC "$1" | grep "elf64-x86-64">/dev/null; then echo "Checking exported symbols..." ${TOP_DIR}/scripts/dump_exported_symbols.sh src/.libs/libproj.so > /tmp/got_symbols.txt diff -u ${TOP_DIR}/scripts/reference_exported_symbols.txt /tmp/got_symbols.txt || (echo "Difference(s) found in exported symbols. If intended, refresh scripts/reference_exported_symbols.txt with 'scripts/dump_exported_symbols.sh src/.libs/libproj.so > scripts/reference_exported_symbols.txt'"; exit 1) + fi fi make check -- cgit v1.2.3 From bec20afdfaf0919cc5ee7bcdfd0b678dd64ed451 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 8 Feb 2020 15:36:18 +0100 Subject: travis/install.sh: fix wrong setting of CXXFLAGS --- travis/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/travis/install.sh b/travis/install.sh index 56533d21..d7749239 100755 --- a/travis/install.sh +++ b/travis/install.sh @@ -115,10 +115,10 @@ cd .. # There's an issue with the clang on Travis + coverage + cpp code if [ "$BUILD_NAME" != "linux_clang" ]; then # autoconf build with grids and coverage - if [ $TRAVIS_OS_NAME == "osx" ]; then + if [ "$TRAVIS_OS_NAME" == "osx" ]; then CFLAGS="--coverage" CXXFLAGS="--coverage" ./configure; else - CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXCFLAGS --coverage" LDFLAGS="$LDFLAGS -lgcov" ./configure; + CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" LDFLAGS="$LDFLAGS -lgcov" ./configure; fi else ./configure -- cgit v1.2.3 From 2d07a8dc0d1fc548f5e6cdc0db90d9a7e523215d Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 8 Feb 2020 15:36:30 +0100 Subject: Travis: modify linux_gcc7 to run i386 --- .travis.yml | 12 +++++++++--- travis/linux_gcc7/before_install.sh | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4f15edd4..4cf67068 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,16 +30,22 @@ matrix: - docker env: - BUILD_NAME=linux_gcc7 - - DETAILS="linux, gcc7" + - DETAILS="linux, gcc7, i386" + - ARCH=i386 - CC=gcc-7 - CXX=g++-7 - - CXXFLAGS='-g -D_GLIBCXX_ASSERTIONS' + - CXXFLAGS='-g -O2 -m32 -D_GLIBCXX_ASSERTIONS' + - CFLAGS='-g -O2 -m32' + - TIFF_CFLAGS=-I/usr/include/i386-linux-gnu + - TIFF_LIBS="-L/usr/lib/i386-linux-gnu -ltiff" + - SQLITE3_CFLAGS=-I/usr/include/i386-linux-gnu + - SQLITE3_LIBS="-L/usr/lib/i386-linux-gnu -lsqlite3" addons: apt: sources: - ubuntu-toolchain-r-test packages: - - g++-7 + - g++-7-multilib - make - autoconf - automake diff --git a/travis/linux_gcc7/before_install.sh b/travis/linux_gcc7/before_install.sh index 2ef2feee..424bc10e 100755 --- a/travis/linux_gcc7/before_install.sh +++ b/travis/linux_gcc7/before_install.sh @@ -8,8 +8,8 @@ set -e sudo apt-get install -qq \ lcov \ doxygen graphviz \ - sqlite3 libsqlite3-dev \ - libtiff-dev libcurl4-openssl-dev + sqlite3 libsqlite3-dev:$ARCH \ + libtiff-dev:$ARCH libcurl4-openssl-dev:$ARCH #scripts/cppcheck.sh #scripts/doxygen.sh -- cgit v1.2.3 From 5bb1920a5bdc3bc3e958a00e15fc449c3d2b8bd2 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 8 Feb 2020 15:40:06 +0100 Subject: Travis: update linux_gcc7 to linux_gcc8 --- .travis.yml | 10 +++++----- travis/linux_gcc7/after_success.sh | 5 ----- travis/linux_gcc7/before_install.sh | 20 -------------------- travis/linux_gcc7/install.sh | 8 -------- travis/linux_gcc8/after_success.sh | 5 +++++ travis/linux_gcc8/before_install.sh | 20 ++++++++++++++++++++ travis/linux_gcc8/install.sh | 8 ++++++++ 7 files changed, 38 insertions(+), 38 deletions(-) delete mode 100755 travis/linux_gcc7/after_success.sh delete mode 100755 travis/linux_gcc7/before_install.sh delete mode 100755 travis/linux_gcc7/install.sh create mode 100755 travis/linux_gcc8/after_success.sh create mode 100755 travis/linux_gcc8/before_install.sh create mode 100755 travis/linux_gcc8/install.sh diff --git a/.travis.yml b/.travis.yml index 4cf67068..82b7bbdf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,11 +29,11 @@ matrix: services: - docker env: - - BUILD_NAME=linux_gcc7 - - DETAILS="linux, gcc7, i386" + - BUILD_NAME=linux_gcc8 + - DETAILS="linux, gcc8, i386" - ARCH=i386 - - CC=gcc-7 - - CXX=g++-7 + - CC=gcc-8 + - CXX=g++-8 - CXXFLAGS='-g -O2 -m32 -D_GLIBCXX_ASSERTIONS' - CFLAGS='-g -O2 -m32' - TIFF_CFLAGS=-I/usr/include/i386-linux-gnu @@ -45,7 +45,7 @@ matrix: sources: - ubuntu-toolchain-r-test packages: - - g++-7-multilib + - g++-8-multilib - make - autoconf - automake diff --git a/travis/linux_gcc7/after_success.sh b/travis/linux_gcc7/after_success.sh deleted file mode 100755 index 70c6f5cb..00000000 --- a/travis/linux_gcc7/after_success.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -e - -#./travis/after_success.sh diff --git a/travis/linux_gcc7/before_install.sh b/travis/linux_gcc7/before_install.sh deleted file mode 100755 index 424bc10e..00000000 --- a/travis/linux_gcc7/before_install.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -e - -./travis/before_install_apt.sh -./travis/before_install_pip.sh - -sudo apt-get install -qq \ - lcov \ - doxygen graphviz \ - sqlite3 libsqlite3-dev:$ARCH \ - libtiff-dev:$ARCH libcurl4-openssl-dev:$ARCH - -#scripts/cppcheck.sh -#scripts/doxygen.sh - -#pip install --user sphinxcontrib-bibtex -#pip install --user cpp-coveralls - -#./travis/docker.sh diff --git a/travis/linux_gcc7/install.sh b/travis/linux_gcc7/install.sh deleted file mode 100755 index 7fa8cfa4..00000000 --- a/travis/linux_gcc7/install.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -set -e - -export CCACHE_CPP2=yes -export PROJ_DB_CACHE_DIR="$HOME/.ccache" - -CC="ccache $CC" CXX="ccache $CXX" CFLAGS="-std=c99 -Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" ./travis/install.sh diff --git a/travis/linux_gcc8/after_success.sh b/travis/linux_gcc8/after_success.sh new file mode 100755 index 00000000..70c6f5cb --- /dev/null +++ b/travis/linux_gcc8/after_success.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +#./travis/after_success.sh diff --git a/travis/linux_gcc8/before_install.sh b/travis/linux_gcc8/before_install.sh new file mode 100755 index 00000000..424bc10e --- /dev/null +++ b/travis/linux_gcc8/before_install.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +./travis/before_install_apt.sh +./travis/before_install_pip.sh + +sudo apt-get install -qq \ + lcov \ + doxygen graphviz \ + sqlite3 libsqlite3-dev:$ARCH \ + libtiff-dev:$ARCH libcurl4-openssl-dev:$ARCH + +#scripts/cppcheck.sh +#scripts/doxygen.sh + +#pip install --user sphinxcontrib-bibtex +#pip install --user cpp-coveralls + +#./travis/docker.sh diff --git a/travis/linux_gcc8/install.sh b/travis/linux_gcc8/install.sh new file mode 100755 index 00000000..7fa8cfa4 --- /dev/null +++ b/travis/linux_gcc8/install.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +export CCACHE_CPP2=yes +export PROJ_DB_CACHE_DIR="$HOME/.ccache" + +CC="ccache $CC" CXX="ccache $CXX" CFLAGS="-std=c99 -Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" ./travis/install.sh -- cgit v1.2.3 From 888e1b1553d4ee19172474f946503fa38885fc60 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Sat, 8 Feb 2020 16:34:52 +0100 Subject: Travis: do only builds that test with all grids on -O2 builds that are slower to build --- .travis.yml | 1 + travis/install.sh | 188 ++++++++++++++++++++++++++++-------------------------- 2 files changed, 98 insertions(+), 91 deletions(-) diff --git a/.travis.yml b/.travis.yml index 82b7bbdf..8ebf6127 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,6 +40,7 @@ matrix: - TIFF_LIBS="-L/usr/lib/i386-linux-gnu -ltiff" - SQLITE3_CFLAGS=-I/usr/include/i386-linux-gnu - SQLITE3_LIBS="-L/usr/lib/i386-linux-gnu -lsqlite3" + - SKIP_BUILDS_WITHOUT_GRID=yes addons: apt: sources: diff --git a/travis/install.sh b/travis/install.sh index d7749239..953a7f0b 100755 --- a/travis/install.sh +++ b/travis/install.sh @@ -21,78 +21,81 @@ wget "https://github.com/OSGeo/proj-datumgrid/blob/master/north-america/ntv2_0.g ./autogen.sh TOP_DIR=$PWD -# autoconf build -mkdir build_autoconf -cd build_autoconf -../configure -make dist-all -# Check consistency of generated tarball -TAR_FILENAME=`ls *.tar.gz` -TAR_DIRECTORY=`basename $TAR_FILENAME .tar.gz` -tar xvzf $TAR_FILENAME -cd $TAR_DIRECTORY - -# There's a nasty #define CS in a Solaris system header. Avoid being caught about that again -CXXFLAGS="-DCS=do_not_use_CS_for_solaris_compat $CXXFLAGS" - -# autoconf build from generated tarball -mkdir build_autoconf -cd build_autoconf -../configure --prefix=/tmp/proj_autoconf_install_from_dist_all - -make -j${NPROC} +if [ "$SKIP_BUILDS_WITHOUT_GRID" != "yes" ]; then + + # autoconf build + mkdir build_autoconf + cd build_autoconf + ../configure + make dist-all + # Check consistency of generated tarball + TAR_FILENAME=`ls *.tar.gz` + TAR_DIRECTORY=`basename $TAR_FILENAME .tar.gz` + tar xvzf $TAR_FILENAME + cd $TAR_DIRECTORY + + # There's a nasty #define CS in a Solaris system header. Avoid being caught about that again + CXXFLAGS="-DCS=do_not_use_CS_for_solaris_compat $CXXFLAGS" + + # autoconf build from generated tarball + mkdir build_autoconf + cd build_autoconf + ../configure --prefix=/tmp/proj_autoconf_install_from_dist_all + + make -j${NPROC} + + if [ "$(uname)" == "Linux" -a -f src/.libs/libproj.so ]; then + if objdump -TC "$1" | grep "elf64-x86-64">/dev/null; then + echo "Checking exported symbols..." + ${TOP_DIR}/scripts/dump_exported_symbols.sh src/.libs/libproj.so > /tmp/got_symbols.txt + diff -u ${TOP_DIR}/scripts/reference_exported_symbols.txt /tmp/got_symbols.txt || (echo "Difference(s) found in exported symbols. If intended, refresh scripts/reference_exported_symbols.txt with 'scripts/dump_exported_symbols.sh src/.libs/libproj.so > scripts/reference_exported_symbols.txt'"; exit 1) + fi + fi -if [ "$(uname)" == "Linux" -a -f src/.libs/libproj.so ]; then - if objdump -TC "$1" | grep "elf64-x86-64">/dev/null; then - echo "Checking exported symbols..." - ${TOP_DIR}/scripts/dump_exported_symbols.sh src/.libs/libproj.so > /tmp/got_symbols.txt - diff -u ${TOP_DIR}/scripts/reference_exported_symbols.txt /tmp/got_symbols.txt || (echo "Difference(s) found in exported symbols. If intended, refresh scripts/reference_exported_symbols.txt with 'scripts/dump_exported_symbols.sh src/.libs/libproj.so > scripts/reference_exported_symbols.txt'"; exit 1) - fi + make check + make install + find /tmp/proj_autoconf_install_from_dist_all + + /tmp/proj_autoconf_install_from_dist_all/bin/projinfo EPSG:32631 -o PROJJSON -q > out.json + cat out.json + echo "Validating JSON" + jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" + + /tmp/proj_autoconf_install_from_dist_all/bin/projinfo EPSG:4326+3855 -o PROJJSON -q > out.json + cat out.json + echo "Validating JSON" + jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" + + /tmp/proj_autoconf_install_from_dist_all/bin/projinfo "+proj=longlat +ellps=GRS80 +nadgrids=@foo +type=crs" -o PROJJSON -q > out.json + cat out.json + echo "Validating JSON" + jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" + /tmp/proj_autoconf_install_from_dist_all/bin/projinfo @out.json -o PROJJSON -q > out2.json + diff -u out.json out2.json + + /tmp/proj_autoconf_install_from_dist_all/bin/projinfo -s EPSG:3111 -t GDA2020 -o PROJJSON -o PROJJSON -q > out.json + cat out.json + echo "Validating JSON" + jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" + /tmp/proj_autoconf_install_from_dist_all/bin/projinfo @out.json -o PROJJSON -q > out2.json + diff -u out.json out2.json + + cd .. + + # cmake build from generated tarball + mkdir build_cmake + cd build_cmake + cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/proj_cmake_install + VERBOSE=1 make -j${NPROC} + make install + ctest + find /tmp/proj_cmake_install + cd .. + + # return to root + cd ../.. fi -make check -make install -find /tmp/proj_autoconf_install_from_dist_all - -/tmp/proj_autoconf_install_from_dist_all/bin/projinfo EPSG:32631 -o PROJJSON -q > out.json -cat out.json -echo "Validating JSON" -jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" - -/tmp/proj_autoconf_install_from_dist_all/bin/projinfo EPSG:4326+3855 -o PROJJSON -q > out.json -cat out.json -echo "Validating JSON" -jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" - -/tmp/proj_autoconf_install_from_dist_all/bin/projinfo "+proj=longlat +ellps=GRS80 +nadgrids=@foo +type=crs" -o PROJJSON -q > out.json -cat out.json -echo "Validating JSON" -jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" -/tmp/proj_autoconf_install_from_dist_all/bin/projinfo @out.json -o PROJJSON -q > out2.json -diff -u out.json out2.json - -/tmp/proj_autoconf_install_from_dist_all/bin/projinfo -s EPSG:3111 -t GDA2020 -o PROJJSON -o PROJJSON -q > out.json -cat out.json -echo "Validating JSON" -jsonschema -i out.json /tmp/proj_autoconf_install_from_dist_all/share/proj/projjson.schema.json && echo "Valid !" -/tmp/proj_autoconf_install_from_dist_all/bin/projinfo @out.json -o PROJJSON -q > out2.json -diff -u out.json out2.json - -cd .. - -# cmake build from generated tarball -mkdir build_cmake -cd build_cmake -cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/proj_cmake_install -VERBOSE=1 make -j${NPROC} -make install -ctest -find /tmp/proj_cmake_install -cd .. - -# return to root -cd ../.. - # Install grid files (cd data && unzip -o ../proj-datumgrid-1.8.zip && cp ../ntv2_0.gsb . ) @@ -112,28 +115,31 @@ make clean find /tmp/proj_autoconf_install_grids cd .. -# There's an issue with the clang on Travis + coverage + cpp code -if [ "$BUILD_NAME" != "linux_clang" ]; then - # autoconf build with grids and coverage - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - CFLAGS="--coverage" CXXFLAGS="--coverage" ./configure; +if [ "$SKIP_BUILDS_WITHOUT_GRID" != "yes" ]; then + + # There's an issue with the clang on Travis + coverage + cpp code + if [ "$BUILD_NAME" != "linux_clang" ]; then + # autoconf build with grids and coverage + if [ "$TRAVIS_OS_NAME" == "osx" ]; then + CFLAGS="--coverage" CXXFLAGS="--coverage" ./configure; + else + CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" LDFLAGS="$LDFLAGS -lgcov" ./configure; + fi else - CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" LDFLAGS="$LDFLAGS -lgcov" ./configure; + ./configure + fi + make -j${NPROC} + make check + + # Rerun tests without grids not included in proj-datumgrid + rm -v data/egm96_15.gtx + make check + + if [ "$BUILD_NAME" != "linux_clang" ]; then + mv src/.libs/*.gc* src + mv src/conversions/.libs/*.gc* src/conversions + mv src/iso19111/.libs/*.gc* src/iso19111 + mv src/projections/.libs/*.gc* src/projections + mv src/transformations/.libs/*.gc* src/transformations fi -else - ./configure -fi -make -j${NPROC} -make check - -# Rerun tests without grids not included in proj-datumgrid -rm -v data/egm96_15.gtx -make check - -if [ "$BUILD_NAME" != "linux_clang" ]; then - mv src/.libs/*.gc* src - mv src/conversions/.libs/*.gc* src/conversions - mv src/iso19111/.libs/*.gc* src/iso19111 - mv src/projections/.libs/*.gc* src/projections - mv src/transformations/.libs/*.gc* src/transformations fi -- cgit v1.2.3