diff --git a/.circleci/config.yml b/.circleci/config.yml index 4946e851c..db2783e97 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,10 +7,6 @@ # - ems: Emscripten version: 2.1 parameters: - ubuntu-1804-docker-image: - type: string - # solbuildpackpusher/solidity-buildpack-deps:ubuntu1804-4 - default: "solbuildpackpusher/solidity-buildpack-deps@sha256:79ccaf5a294a3c4f480b2cd69c6d845540c12435e64d732e8536f8f99ad35f03" ubuntu-2004-docker-image: type: string # solbuildpackpusher/solidity-buildpack-deps:ubuntu2004-4 @@ -478,19 +474,6 @@ jobs: command: strip build/solc/solc - store_artifacts: *artifacts_solc - b_ubu18: &build_ubuntu1804 - docker: - - image: << pipeline.parameters.ubuntu-1804-docker-image >> - environment: - CMAKE_OPTIONS: -DCMAKE_CXX_FLAGS=-O2 - CMAKE_BUILD_TYPE: RelWithDebugInfo - MAKEFLAGS: -j 3 - steps: - - checkout - - run: *run_build - - store_artifacts: *artifacts_solc - - persist_to_workspace: *artifacts_executables - b_ubu_codecov: <<: *build_ubuntu2004 environment: @@ -1164,7 +1147,6 @@ workflows: # Ubuntu build and tests - b_ubu: *workflow_trigger_on_tags - - b_ubu18: *workflow_trigger_on_tags - t_ubu_cli: *workflow_ubuntu2004 - t_ubu_soltest: *workflow_ubuntu2004 - t_ubu_soltest_enforce_yul: *workflow_ubuntu2004 diff --git a/.github/workflows/buildpack-deps.yml b/.github/workflows/buildpack-deps.yml index 2e2ea547f..535d15239 100644 --- a/.github/workflows/buildpack-deps.yml +++ b/.github/workflows/buildpack-deps.yml @@ -6,7 +6,6 @@ on: paths: - 'scripts/docker/buildpack-deps/Dockerfile.emscripten' - 'scripts/docker/buildpack-deps/Dockerfile.ubuntu1604.clang.ossfuzz' - - 'scripts/docker/buildpack-deps/Dockerfile.ubuntu1804' - 'scripts/docker/buildpack-deps/Dockerfile.ubuntu2004.clang' - 'scripts/docker/buildpack-deps/Dockerfile.ubuntu2004' @@ -23,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - image_variant: [emscripten, ubuntu1604.clang.ossfuzz, ubuntu1804, ubuntu2004.clang, ubuntu2004] + image_variant: [emscripten, ubuntu1604.clang.ossfuzz, ubuntu2004.clang, ubuntu2004] steps: - uses: actions/checkout@v2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 829f8ab24..506badd93 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9.0) +cmake_minimum_required(VERSION 3.13.0) set(ETH_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake" CACHE PATH "The the path to the cmake directory") list(APPEND CMAKE_MODULE_PATH ${ETH_CMAKE_DIR}) diff --git a/ReleaseChecklist.md b/ReleaseChecklist.md index 0fd7e7699..a69f1a9d3 100644 --- a/ReleaseChecklist.md +++ b/ReleaseChecklist.md @@ -52,7 +52,7 @@ ### PPA - [ ] Change ``scripts/release_ppa.sh`` to match your key's email and key id. - [ ] Run ``scripts/release_ppa.sh v$VERSION`` to create the PPA release (you need the relevant openssl key). - - [ ] Wait for the ``~ethereum/ubuntu/ethereum-static`` PPA build to be finished and published for *all platforms*. SERIOUSLY: DO NOT PROCEED EARLIER!!! *After* the static builds are *published*, copy the static package to the ``~ethereum/ubuntu/ethereum`` PPA for the destination series ``Trusty`` and ``Xenial`` while selecting ``Copy existing binaries``. + - [ ] Wait for the ``~ethereum/ubuntu/ethereum-static`` PPA build to be finished and published for *all platforms*. SERIOUSLY: DO NOT PROCEED EARLIER!!! *After* the static builds are *published*, copy the static package to the ``~ethereum/ubuntu/ethereum`` PPA for the destination series ``Trusty``, ``Xenial`` and ``Bionic`` while selecting ``Copy existing binaries``. ### Documentation - [ ] Build the new version on https://readthedocs.org/projects/solidity/ (select `latest` at the bottom of the page and click `BUILD`) diff --git a/cmake/EthCompilerSettings.cmake b/cmake/EthCompilerSettings.cmake index be569ad17..a8ef09bbb 100644 --- a/cmake/EthCompilerSettings.cmake +++ b/cmake/EthCompilerSettings.cmake @@ -52,12 +52,9 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA add_compile_options(-Wimplicit-fallthrough) add_compile_options(-Wsign-conversion) - # While this should work on CMake 3.3+, it fails on Ubuntu 18 - if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.16) - eth_add_cxx_compiler_flag_if_supported( - $<$:-Wextra-semi> - ) - endif() + eth_add_cxx_compiler_flag_if_supported( + $<$:-Wextra-semi> + ) # Configuration-specific compiler settings. set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -DETH_DEBUG") @@ -68,11 +65,11 @@ if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" MA # Additional GCC-specific compiler settings. if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") - # Check that we've got GCC 5.0 or newer. + # Check that we've got GCC 8.0 or newer. execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - if (NOT (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)) - message(FATAL_ERROR "${PROJECT_NAME} requires g++ 5.0 or greater.") + if (NOT (GCC_VERSION VERSION_GREATER 8.0 OR GCC_VERSION VERSION_EQUAL 8.0)) + message(FATAL_ERROR "${PROJECT_NAME} requires g++ 8.0 or greater.") endif () # Use fancy colors in the compiler diagnostics diff --git a/docs/installing-solidity.rst b/docs/installing-solidity.rst index e7e2d73e7..948ded2da 100644 --- a/docs/installing-solidity.rst +++ b/docs/installing-solidity.rst @@ -306,7 +306,7 @@ The following are dependencies for all builds of Solidity: +-----------------------------------+-------------------------------------------------------+ | Software | Notes | +===================================+=======================================================+ -| `CMake`_ (version 3.9+) | Cross-platform build file generator. | +| `CMake`_ (version 3.13+) | Cross-platform build file generator. | +-----------------------------------+-------------------------------------------------------+ | `Boost`_ (version 1.65+) | C++ libraries. | +-----------------------------------+-------------------------------------------------------+ @@ -335,8 +335,8 @@ Minimum compiler versions The following C++ compilers and their minimum versions can build the Solidity codebase: -- `GCC `_, version 5+ -- `Clang `_, version 3.4+ +- `GCC `_, version 8+ +- `Clang `_, version 7+ - `MSVC `_, version 2019+ Prerequisites - macOS diff --git a/scripts/deps-ppa/static_z3.sh b/scripts/deps-ppa/static_z3.sh index 459180924..ca0795815 100755 --- a/scripts/deps-ppa/static_z3.sh +++ b/scripts/deps-ppa/static_z3.sh @@ -27,7 +27,7 @@ email=builds@ethereum.org packagename=libz3-static-dev version=4.8.9 -DISTRIBUTIONS="bionic focal groovy" +DISTRIBUTIONS="focal groovy" for distribution in $DISTRIBUTIONS do diff --git a/scripts/docker/buildpack-deps/Dockerfile.ubuntu1804 b/scripts/docker/buildpack-deps/Dockerfile.ubuntu1804 deleted file mode 100644 index ca6eed20e..000000000 --- a/scripts/docker/buildpack-deps/Dockerfile.ubuntu1804 +++ /dev/null @@ -1,108 +0,0 @@ -# vim:syntax=dockerfile -#------------------------------------------------------------------------------ -# Dockerfile for building and testing Solidity Compiler on CI -# Target: Ubuntu 18.04 (Bionic Beaver) -# URL: https://hub.docker.com/r/ethereum/solidity-buildpack-deps -# -# This file is part of solidity. -# -# solidity is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# solidity is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with solidity. If not, see -# -# (c) 2016-2019 solidity contributors. -#------------------------------------------------------------------------------ -FROM buildpack-deps:bionic AS base -LABEL version="4" - -ARG DEBIAN_FRONTEND=noninteractive - -RUN set -ex; \ - dist=$(grep DISTRIB_CODENAME /etc/lsb-release | cut -d= -f2); \ - echo "deb http://ppa.launchpad.net/ethereum/cpp-build-deps/ubuntu $dist main" >> /etc/apt/sources.list ; \ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1c52189c923f6ca9 ; \ - apt-get update; \ - apt-get install -qqy --no-install-recommends \ - build-essential \ - software-properties-common \ - cmake ninja-build clang++-8 \ - libboost-filesystem-dev libboost-test-dev libboost-system-dev \ - libboost-program-options-dev \ - libjsoncpp-dev \ - llvm-8-dev libz3-static-dev \ - ; \ - apt-get install -qy python-pip python-sphinx; \ - update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-8 1; \ - pip install codecov; \ - rm -rf /var/lib/apt/lists/* - -FROM base AS libraries - -# OSSFUZZ: libprotobuf-mutator -RUN set -ex; \ - git clone https://github.com/google/libprotobuf-mutator.git \ - /usr/src/libprotobuf-mutator; \ - cd /usr/src/libprotobuf-mutator; \ - git checkout d1fe8a7d8ae18f3d454f055eba5213c291986f21; \ - mkdir build; \ - cd build; \ - cmake .. -GNinja -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON \ - -DLIB_PROTO_MUTATOR_TESTING=OFF -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX="/usr"; \ - ninja; \ - cp -vpr external.protobuf/bin/* /usr/bin/; \ - cp -vpr external.protobuf/include/* /usr/include/; \ - cp -vpr external.protobuf/lib/* /usr/lib/; \ - ninja install/strip; \ - rm -rf /usr/src/libprotobuf-mutator - -# OSSFUZZ: libfuzzer -RUN set -ex; \ - cd /var/tmp; \ - svn co https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/fuzzer libfuzzer; \ - mkdir -p build-libfuzzer; \ - cd build-libfuzzer; \ - clang++-8 -O1 -stdlib=libstdc++ -std=c++11 -O2 -fPIC -c ../libfuzzer/*.cpp -I../libfuzzer; \ - ar r /usr/lib/libFuzzingEngine.a *.o; \ - rm -rf /var/lib/libfuzzer - -# EVMONE -ARG EVMONE_HASH="e9f8df89c52d9c60c9a38dd00687b1ec9e9ae9650b400a87c4c0cf7468e35307" -ARG EVMONE_MAJOR="0" -ARG EVMONE_MINOR="4" -ARG EVMONE_MICRO="0" -RUN set -ex; \ - EVMONE_VERSION="$EVMONE_MAJOR.$EVMONE_MINOR.$EVMONE_MICRO"; \ - TGZFILE="evmone-$EVMONE_VERSION-linux-x86_64.tar.gz"; \ - wget https://github.com/ethereum/evmone/releases/download/v$EVMONE_VERSION/$TGZFILE; \ - sha256sum $TGZFILE | grep ${EVMONE_HASH}; \ - tar xzpf $TGZFILE -C /usr; \ - rm -f $TGZFILE; - -# HERA -ARG HERA_HASH="1a0b3cf626910c969f0ac86b7a731969a2e5b8254bc4e626b8f3a60471481f03" -ARG HERA_MAJOR="0" -ARG HERA_MINOR="3" -ARG HERA_MICRO="2" -RUN set -ex; \ - HERA_VERSION="$HERA_MAJOR.$HERA_MINOR.$HERA_MICRO"; \ - TGZFILE="hera-$HERA_VERSION-linux-x86_64.tar.gz"; \ - wget https://github.com/ewasm/hera/releases/download/v$HERA_VERSION/$TGZFILE; \ - sha256sum $TGZFILE | grep ${HERA_HASH}; \ - tar xzpf $TGZFILE -C /usr; \ - rm -f $TGZFILE; - -FROM base -COPY --from=libraries /usr/lib /usr/lib -COPY --from=libraries /usr/bin /usr/bin -COPY --from=libraries /usr/include /usr/include - diff --git a/scripts/release_ppa.sh b/scripts/release_ppa.sh index ebe8c316b..5cc83c020 100755 --- a/scripts/release_ppa.sh +++ b/scripts/release_ppa.sh @@ -57,7 +57,7 @@ packagename=solc static_build_distribution=focal -DISTRIBUTIONS="bionic focal groovy" +DISTRIBUTIONS="focal groovy" if is_release then