diff options
-rw-r--r-- | .travis.yml | 103 | ||||
-rw-r--r-- | METADATA | 6 | ||||
-rw-r--r-- | extras/dockerfiles/Dockerfile.ubuntu-20.10 | 40 | ||||
-rwxr-xr-x | extras/dockerfiles/rebuild_all.sh | 2 | ||||
-rw-r--r-- | extras/dockerfiles/ubuntu-20.10_custom.list | 4 | ||||
-rwxr-xr-x | extras/scripts/postsubmit-helper.sh | 9 | ||||
-rwxr-xr-x | extras/scripts/travis_yml_generator.py | 11 | ||||
-rw-r--r-- | include/fruit/impl/data_structures/semistatic_map.h | 4 |
8 files changed, 134 insertions, 45 deletions
diff --git a/.travis.yml b/.travis.yml index 2b7f4b8..50045e3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,18 +10,39 @@ matrix: fast_finish: true include: - compiler: gcc - env: COMPILER=gcc-10 UBUNTU=20.04 TEST=ReleasePlain - install: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=gcc-10 UBUNTU=20.10 TEST=ReleasePlain + install: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + script: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.10'; extras/scripts/postsubmit.sh ReleasePlain - compiler: gcc - env: COMPILER=gcc-10 UBUNTU=20.04 TEST=DebugPlain - install: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=gcc-10 UBUNTU=20.10 TEST=DebugPlain + install: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + script: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugPlain - compiler: clang + env: COMPILER=clang-8.0 STL=libstdc++ UBUNTU=20.10 TEST=ReleasePlain + install: export OS=linux; export COMPILER='clang-8.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh + os: linux + script: export OS=linux; export COMPILER='clang-8.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/postsubmit.sh ReleasePlain + - compiler: clang + env: COMPILER=clang-8.0 STL=libstdc++ UBUNTU=20.10 TEST=DebugAsanUbsan + install: export OS=linux; export COMPILER='clang-8.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh + os: linux + script: export OS=linux; export COMPILER='clang-8.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugAsanUbsan + - compiler: clang + env: COMPILER=clang-8.0 STL=libstdc++ UBUNTU=20.10 TEST=DebugPlain + install: export OS=linux; export COMPILER='clang-8.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh + os: linux + script: export OS=linux; export COMPILER='clang-8.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugPlain + - compiler: clang env: COMPILER=clang-6.0 STL=libstdc++ UBUNTU=20.04 TEST=ReleasePlain install: export OS=linux; export COMPILER='clang-6.0'; export STL='libstdc++'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh @@ -49,51 +70,63 @@ matrix: script: export OS=linux; export COMPILER='bazel'; export UBUNTU='18.04'; extras/scripts/postsubmit.sh DebugPlain - compiler: gcc - env: COMPILER=gcc-7 UBUNTU=20.04 TEST=ReleasePlain - install: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=gcc-7 UBUNTU=20.10 TEST=ReleasePlain + install: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + script: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.10'; extras/scripts/postsubmit.sh ReleasePlain - compiler: gcc - env: COMPILER=gcc-7 UBUNTU=20.04 TEST=DebugAsanUbsan - install: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=gcc-7 UBUNTU=20.10 TEST=DebugAsanUbsan + install: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + script: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugAsanUbsan - compiler: gcc - env: COMPILER=gcc-10 UBUNTU=20.04 TEST=DebugAsanUbsan - install: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=gcc-10 UBUNTU=20.10 TEST=DebugAsanUbsan + install: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + script: export OS=linux; export COMPILER='gcc-10'; export UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugAsanUbsan - compiler: clang - env: COMPILER=clang-10.0 STL=libstdc++ UBUNTU=20.04 TEST=ReleasePlain - install: export OS=linux; export COMPILER='clang-10.0'; export STL='libstdc++'; - export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=clang-11.0 STL=libstdc++ UBUNTU=20.10 TEST=ReleasePlain + install: export OS=linux; export COMPILER='clang-11.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='clang-10.0'; export STL='libstdc++'; - export UBUNTU='20.04'; extras/scripts/postsubmit.sh ReleasePlain + script: export OS=linux; export COMPILER='clang-11.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/postsubmit.sh ReleasePlain - compiler: clang - env: COMPILER=clang-10.0 STL=libstdc++ UBUNTU=20.04 TEST=DebugAsanUbsan - install: export OS=linux; export COMPILER='clang-10.0'; export STL='libstdc++'; - export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=clang-11.0 STL=libstdc++ UBUNTU=20.10 TEST=DebugAsanUbsan + install: export OS=linux; export COMPILER='clang-11.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='clang-10.0'; export STL='libstdc++'; - export UBUNTU='20.04'; extras/scripts/postsubmit.sh DebugAsanUbsan + script: export OS=linux; export COMPILER='clang-11.0'; export STL='libstdc++'; + export UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugAsanUbsan - compiler: clang - env: COMPILER=clang-10.0 STL=libc++ UBUNTU=20.04 TEST=ReleasePlain - install: export OS=linux; export COMPILER='clang-10.0'; export STL='libc++'; export - UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=clang-11.0 STL=libc++ UBUNTU=20.10 TEST=ReleasePlain + install: export OS=linux; export COMPILER='clang-11.0'; export STL='libc++'; export + UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='clang-10.0'; export STL='libc++'; export - UBUNTU='20.04'; extras/scripts/postsubmit.sh ReleasePlain + script: export OS=linux; export COMPILER='clang-11.0'; export STL='libc++'; export + UBUNTU='20.10'; extras/scripts/postsubmit.sh ReleasePlain - compiler: clang - env: COMPILER=clang-10.0 STL=libc++ UBUNTU=20.04 TEST=DebugAsanUbsan - install: export OS=linux; export COMPILER='clang-10.0'; export STL='libc++'; export - UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + env: COMPILER=clang-11.0 STL=libc++ UBUNTU=20.10 TEST=DebugAsanUbsan + install: export OS=linux; export COMPILER='clang-11.0'; export STL='libc++'; export + UBUNTU='20.10'; extras/scripts/travis_ci_install_linux.sh + os: linux + script: export OS=linux; export COMPILER='clang-11.0'; export STL='libc++'; export + UBUNTU='20.10'; extras/scripts/postsubmit.sh DebugAsanUbsan + - compiler: gcc + env: COMPILER=gcc-7 UBUNTU=20.04 TEST=ReleasePlain + install: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh + os: linux + script: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + ReleasePlain + - compiler: gcc + env: COMPILER=gcc-7 UBUNTU=20.04 TEST=DebugAsanUbsan + install: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/travis_ci_install_linux.sh os: linux - script: export OS=linux; export COMPILER='clang-10.0'; export STL='libc++'; export - UBUNTU='20.04'; extras/scripts/postsubmit.sh DebugAsanUbsan + script: export OS=linux; export COMPILER='gcc-7'; export UBUNTU='20.04'; extras/scripts/postsubmit.sh + DebugAsanUbsan - compiler: gcc env: COMPILER=gcc-5 UBUNTU=18.04 TEST=ReleasePlain install: export OS=linux; export COMPILER='gcc-5'; export UBUNTU='18.04'; extras/scripts/travis_ci_install_linux.sh @@ -9,11 +9,11 @@ third_party { type: GIT value: "https://github.com/google/fruit.git" } - version: "928458857f4b85a0016c2d724486343b4660cb46" + version: "70f7c06e305ad7c9e4e99b87672aaa1061d914d6" license_type: NOTICE last_upgrade_date { year: 2020 - month: 9 - day: 21 + month: 11 + day: 30 } } diff --git a/extras/dockerfiles/Dockerfile.ubuntu-20.10 b/extras/dockerfiles/Dockerfile.ubuntu-20.10 new file mode 100644 index 0000000..6b4e52c --- /dev/null +++ b/extras/dockerfiles/Dockerfile.ubuntu-20.10 @@ -0,0 +1,40 @@ +FROM ubuntu:20.10 +MAINTAINER Marco Poletti <poletti.marco@gmail.com> + +COPY common_install.sh common_cleanup.sh / + +RUN bash -x /common_install.sh + +COPY ubuntu-20.10_custom.list /etc/apt/sources.list.d/ + +RUN apt-get update + +RUN apt-get remove -y python3-pip +RUN python3 -m easy_install pip + +RUN apt-get install -y --allow-unauthenticated --no-install-recommends \ + g++-7 \ + g++-8 \ + g++-9 \ + g++-10 \ + clang-8 \ + clang-9 \ + clang-10 \ + clang-11 \ + python3.8 \ + python3.8-distutils \ + clang-tidy \ + clang-format + +RUN python3.8 -m easy_install pip + +RUN pip3 install absl-py +RUN pip3 install bidict +RUN pip3 install pytest +RUN pip3 install pytest-xdist +RUN pip3 install sh +RUN pip3 install setuptools +RUN pip3 install networkx +RUN pip3 install wheel + +RUN bash -x /common_cleanup.sh diff --git a/extras/dockerfiles/rebuild_all.sh b/extras/dockerfiles/rebuild_all.sh index 77153aa..f0e23d2 100755 --- a/extras/dockerfiles/rebuild_all.sh +++ b/extras/dockerfiles/rebuild_all.sh @@ -7,7 +7,7 @@ docker run --rm --privileged multiarch/qemu-user-static:register --reset COMMANDS=() -for V in 18.04 19.10 20.04 +for V in 18.04 19.10 20.04 20.10 do C="docker build --squash -t polettimarco/fruit-basesystem:ubuntu-$V -f Dockerfile.ubuntu-$V ." COMMANDS+=("$C || { echo; echo FAILED: '$C'; echo; exit 1; }") diff --git a/extras/dockerfiles/ubuntu-20.10_custom.list b/extras/dockerfiles/ubuntu-20.10_custom.list new file mode 100644 index 0000000..c26e2d9 --- /dev/null +++ b/extras/dockerfiles/ubuntu-20.10_custom.list @@ -0,0 +1,4 @@ +deb http://apt.llvm.org/focal/ llvm-toolchain-focal-9 main +deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-9 main +deb http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main +deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-10 main diff --git a/extras/scripts/postsubmit-helper.sh b/extras/scripts/postsubmit-helper.sh index 7be3b88..eecd3c0 100755 --- a/extras/scripts/postsubmit-helper.sh +++ b/extras/scripts/postsubmit-helper.sh @@ -102,6 +102,11 @@ clang-10.0) export CXX=clang++-10 ;; +clang-11.0) + export CC=clang-11 + export CXX=clang++-11 + ;; + clang-default) export CC=clang export CXX=clang++ @@ -123,7 +128,9 @@ if [[ "${COMPILER}" != "bazel" ]] then # This is only needed in OS X but it has no effect on Linux so we can add it unconditionally. BOOST_INCLUDE_FLAG="-I /usr/local/include/boost -I /usr/local/include" - COMMON_CXX_FLAGS="$STLARG $BOOST_INCLUDE_FLAG -Werror -pedantic -Winvalid-pch" + # -Wdtor-name (part of -pedantic) is *very* pedantic. Following that results in weird-looking code. + # See https://bugs.llvm.org/show_bug.cgi?id=46979. + COMMON_CXX_FLAGS="$STLARG $BOOST_INCLUDE_FLAG -Werror -pedantic -Wno-unknown-warning-option -Wno-dtor-name -Winvalid-pch" echo CXX version: $($CXX --version) echo C++ Standard library location: $(echo '#include <vector>' | $CXX -x c++ -E - | grep 'vector\"' | awk '{print $3}' | sed 's@/vector@@;s@\"@@g' | head -n 1) diff --git a/extras/scripts/travis_yml_generator.py b/extras/scripts/travis_yml_generator.py index 93a5a1b..46c5a92 100755 --- a/extras/scripts/travis_yml_generator.py +++ b/extras/scripts/travis_yml_generator.py @@ -144,14 +144,17 @@ def add_bazel_tests(ubuntu_version, smoke_tests=[]): else: build_matrix_rows.append(test_environment) +add_ubuntu_tests(ubuntu_version='20.10', compiler='gcc-7') +add_ubuntu_tests(ubuntu_version='20.10', compiler='gcc-10', + smoke_tests=['DebugPlain', 'ReleasePlain']) +add_ubuntu_tests(ubuntu_version='20.10', compiler='clang-8.0', stl='libstdc++', + smoke_tests=['DebugPlain', 'DebugAsanUbsan', 'ReleasePlain']) +add_ubuntu_tests(ubuntu_version='20.10', compiler='clang-11.0', stl='libstdc++') +add_ubuntu_tests(ubuntu_version='20.10', compiler='clang-11.0', stl='libc++') add_ubuntu_tests(ubuntu_version='20.04', compiler='gcc-7') -add_ubuntu_tests(ubuntu_version='20.04', compiler='gcc-10', - smoke_tests=['DebugPlain', 'ReleasePlain']) add_ubuntu_tests(ubuntu_version='20.04', compiler='clang-6.0', stl='libstdc++', smoke_tests=['DebugPlain', 'DebugAsanUbsan', 'ReleasePlain']) -add_ubuntu_tests(ubuntu_version='20.04', compiler='clang-10.0', stl='libstdc++') -add_ubuntu_tests(ubuntu_version='20.04', compiler='clang-10.0', stl='libc++') add_ubuntu_tests(ubuntu_version='18.04', compiler='gcc-5', asan=False, ubsan=False) add_ubuntu_tests(ubuntu_version='18.04', compiler='gcc-8', asan=False, ubsan=False) diff --git a/include/fruit/impl/data_structures/semistatic_map.h b/include/fruit/impl/data_structures/semistatic_map.h index c5b4eb4..1ccb00a 100644 --- a/include/fruit/impl/data_structures/semistatic_map.h +++ b/include/fruit/impl/data_structures/semistatic_map.h @@ -46,8 +46,10 @@ private: static constexpr unsigned char beta = 4; + // The parentheses around std::numeric_limits<NumBits>::max are needed to workaround an issue in Windows where + // max is defined as a macro by a common system header. See https://github.com/google/fruit/issues/127. static_assert( - std::numeric_limits<NumBits>::max() >= sizeof(Unsigned) * CHAR_BIT, + (std::numeric_limits<NumBits>::max)() >= sizeof(Unsigned) * CHAR_BIT, "An unsigned char is not enough to contain the number of bits in your platform. Please report this issue."); struct HashFunction { |