#!/bin/bash set -e UNAME="$(uname)" || UNAME="" if test "${UNAME}" = "Linux" ; then NPROC=$(nproc); elif test "${UNAME}" = "Darwin" ; then NPROC=$(sysctl -n hw.ncpu); fi if test "x${NPROC}" = "x"; then NPROC=2; fi echo "NPROC=${NPROC}" export MAKEFLAGS="-j ${NPROC}" # prepare build files ./autogen.sh # 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 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..." $TRAVIS_BUILD_DIR/scripts/dump_exported_symbols.sh src/.libs/libproj.so > /tmp/got_symbols.txt diff -u $TRAVIS_BUILD_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 make install find /tmp/proj_autoconf_install_from_dist_all if [ $BUILD_NAME = "linux_gcc" ] || [ $BUILD_NAME = "osx" ]; then $TRAVIS_BUILD_DIR/test/postinstall/test_pkg-config.sh /tmp/proj_autoconf_install_from_dist_all else echo "Skipping test_pkg-config.sh test for $BUILD_NAME" fi /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 # Test make clean target make clean cd .. if [ $TRAVIS_OS_NAME != "osx" ]; then # Check that we can retrieve the resource directory in a relative way after renaming the installation prefix mkdir /tmp/proj_autoconf_install_from_dist_all_renamed mv /tmp/proj_autoconf_install_from_dist_all /tmp/proj_autoconf_install_from_dist_all_renamed/subdir LD_LIBRARY_PATH=/tmp/proj_autoconf_install_from_dist_all_renamed/subdir/lib /tmp/proj_autoconf_install_from_dist_all_renamed/subdir/bin/projsync --source-id ? --dry-run --system-directory || /bin/true LD_LIBRARY_PATH=/tmp/proj_autoconf_install_from_dist_all_renamed/subdir/lib /tmp/proj_autoconf_install_from_dist_all_renamed/subdir/bin/projsync --source-id ? --dry-run --system-directory 2>/dev/null | grep "Downloading from https://cdn.proj.org into /tmp/proj_autoconf_install_from_dist_all_renamed/subdir/share/proj" sed -i '1cprefix=/tmp/proj_autoconf_install_from_dist_all_renamed/subdir' /tmp/proj_autoconf_install_from_dist_all_renamed/subdir/lib/pkgconfig/proj.pc if [ $BUILD_NAME = "linux_gcc" ]; then $TRAVIS_BUILD_DIR/test/postinstall/test_pkg-config.sh /tmp/proj_autoconf_install_from_dist_all_renamed/subdir else echo "Skipping test_pkg-config.sh test for $BUILD_NAME" fi fi if [ "$BUILD_NAME" != "linux_gcc8" ]; then # cmake build from generated tarball mkdir build_cmake cd build_cmake cmake --version cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/proj_cmake_install VERBOSE=1 make make install ctest find /tmp/proj_cmake_install if [ $BUILD_NAME = "linux_gcc" ] || [ $BUILD_NAME = "osx" ]; then $TRAVIS_BUILD_DIR/test/postinstall/test_cmake.sh /tmp/proj_cmake_install else echo "Skipping test_cmake.sh test for $BUILD_NAME" fi cd .. if [ $TRAVIS_OS_NAME != "osx" ]; then # Check that we can retrieve the resource directory in a relative way after renaming the installation prefix mkdir /tmp/proj_cmake_install_renamed mv /tmp/proj_cmake_install /tmp/proj_cmake_install_renamed/subdir /tmp/proj_cmake_install_renamed/subdir/bin/projsync --source-id ? --dry-run --system-directory || /bin/true /tmp/proj_cmake_install_renamed/subdir/bin/projsync --source-id ? --dry-run --system-directory 2>/dev/null | grep "Downloading from https://cdn.proj.org into /tmp/proj_cmake_install_renamed/subdir/share/proj" fi # return to root 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; else CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" LDFLAGS="$LDFLAGS -lgcov" ./configure; fi else ./configure fi make 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 fi