mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #8894 from ethereum/dockerUbuntuFocal
Update Dockerfiles and CI scripts to Ubuntu 20.04 and simplify them.
This commit is contained in:
commit
b9c63e0032
@ -7,15 +7,15 @@ The docker images are build locally on the developer machine:
|
|||||||
```sh
|
```sh
|
||||||
cd .circleci/docker/
|
cd .circleci/docker/
|
||||||
|
|
||||||
docker build -t ethereum/solidity-buildpack-deps:ubuntu1904-<revision> -f Dockerfile.ubuntu1904 .
|
docker build -t ethereum/solidity-buildpack-deps:ubuntu2004-<revision> -f Dockerfile.ubuntu2004 .
|
||||||
docker push ethereum/solidity-buildpack-deps:ubuntu1904-<revision>
|
docker push ethereum/solidity-buildpack-deps:ubuntu2004-<revision>
|
||||||
```
|
```
|
||||||
|
|
||||||
The current revisions per docker image are stored in [circle ci pipeline parameters](https://github.com/CircleCI-Public/api-preview-docs/blob/master/docs/pipeline-parameters.md#pipeline-parameters) called `<image-desc>-docker-image-rev` (e.g., `ubuntu-1904-docker-image-rev`). Please update the value assigned to the parameter(s) corresponding to the docker image(s) being updated at the time of the update. Please verify that the value assigned to the parameter matches the revision part of the docker image tag (`<revision>` in the docker build/push snippet shown above). Otherwise, the docker image used by circle ci and the one actually pushed to docker hub will differ.
|
The current revisions per docker image are stored in [circle ci pipeline parameters](https://github.com/CircleCI-Public/api-preview-docs/blob/master/docs/pipeline-parameters.md#pipeline-parameters) called `<image-desc>-docker-image-rev` (e.g., `ubuntu-2004-docker-image-rev`). Please update the value assigned to the parameter(s) corresponding to the docker image(s) being updated at the time of the update. Please verify that the value assigned to the parameter matches the revision part of the docker image tag (`<revision>` in the docker build/push snippet shown above). Otherwise, the docker image used by circle ci and the one actually pushed to docker hub will differ.
|
||||||
|
|
||||||
Once the docker image has been built and pushed to Dockerhub, you can find it at:
|
Once the docker image has been built and pushed to Dockerhub, you can find it at:
|
||||||
|
|
||||||
https://hub.docker.com/r/ethereum/solidity-buildpack-deps:ubuntu1904-<revision>
|
https://hub.docker.com/r/ethereum/solidity-buildpack-deps:ubuntu2004-<revision>
|
||||||
|
|
||||||
where the image tag reflects the target OS and revision to build Solidity and run its tests on.
|
where the image tag reflects the target OS and revision to build Solidity and run its tests on.
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ where the image tag reflects the target OS and revision to build Solidity and ru
|
|||||||
```sh
|
```sh
|
||||||
cd solidity
|
cd solidity
|
||||||
# Mounts your local solidity directory in docker container for testing
|
# Mounts your local solidity directory in docker container for testing
|
||||||
docker run -v `pwd`:/src/solidity -ti ethereum/solidity-buildpack-deps:ubuntu1904-<revision> /bin/bash
|
docker run -v `pwd`:/src/solidity -ti ethereum/solidity-buildpack-deps:ubuntu2004-<revision> /bin/bash
|
||||||
cd /src/solidity
|
cd /src/solidity
|
||||||
<commands_to_test_build_with_new_docker_image>
|
<commands_to_test_build_with_new_docker_image>
|
||||||
```
|
```
|
||||||
|
@ -10,12 +10,12 @@ parameters:
|
|||||||
ubuntu-1804-docker-image-rev:
|
ubuntu-1804-docker-image-rev:
|
||||||
type: string
|
type: string
|
||||||
default: "4"
|
default: "4"
|
||||||
ubuntu-1904-docker-image-rev:
|
ubuntu-2004-docker-image-rev:
|
||||||
type: string
|
type: string
|
||||||
default: "4"
|
default: "1"
|
||||||
ubuntu-1904-clang-docker-image-rev:
|
ubuntu-2004-clang-docker-image-rev:
|
||||||
type: string
|
type: string
|
||||||
default: "5"
|
default: "1"
|
||||||
ubuntu-1604-clang-ossfuzz-docker-image-rev:
|
ubuntu-1604-clang-ossfuzz-docker-image-rev:
|
||||||
type: string
|
type: string
|
||||||
default: "2"
|
default: "2"
|
||||||
@ -137,9 +137,9 @@ defaults:
|
|||||||
- store_test_results: *store_test_results
|
- store_test_results: *store_test_results
|
||||||
- store_artifacts: *artifacts_test_results
|
- store_artifacts: *artifacts_test_results
|
||||||
|
|
||||||
- test_ubuntu1904_clang: &test_ubuntu1904_clang
|
- test_ubuntu2004_clang: &test_ubuntu2004_clang
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-clang-<< pipeline.parameters.ubuntu-1904-clang-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-clang-<< pipeline.parameters.ubuntu-2004-clang-docker-image-rev >>
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- attach_workspace:
|
- attach_workspace:
|
||||||
@ -148,9 +148,9 @@ defaults:
|
|||||||
- store_test_results: *store_test_results
|
- store_test_results: *store_test_results
|
||||||
- store_artifacts: *artifacts_test_results
|
- store_artifacts: *artifacts_test_results
|
||||||
|
|
||||||
- test_ubuntu1904: &test_ubuntu1904
|
- test_ubuntu2004: &test_ubuntu2004
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-<< pipeline.parameters.ubuntu-2004-docker-image-rev >>
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- attach_workspace:
|
- attach_workspace:
|
||||||
@ -160,7 +160,7 @@ defaults:
|
|||||||
- store_artifacts: *artifacts_test_results
|
- store_artifacts: *artifacts_test_results
|
||||||
|
|
||||||
- test_asan: &test_asan
|
- test_asan: &test_asan
|
||||||
<<: *test_ubuntu1904
|
<<: *test_ubuntu2004
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- attach_workspace:
|
- attach_workspace:
|
||||||
@ -179,7 +179,7 @@ defaults:
|
|||||||
tags:
|
tags:
|
||||||
only: /.*/
|
only: /.*/
|
||||||
|
|
||||||
- workflow_ubuntu1904: &workflow_ubuntu1904
|
- workflow_ubuntu2004: &workflow_ubuntu2004
|
||||||
<<: *workflow_trigger_on_tags
|
<<: *workflow_trigger_on_tags
|
||||||
requires:
|
requires:
|
||||||
- b_ubu
|
- b_ubu
|
||||||
@ -189,17 +189,17 @@ defaults:
|
|||||||
requires:
|
requires:
|
||||||
- b_ubu_ossfuzz
|
- b_ubu_ossfuzz
|
||||||
|
|
||||||
- workflow_ubuntu1904_clang: &workflow_ubuntu1904_clang
|
- workflow_ubuntu2004_clang: &workflow_ubuntu2004_clang
|
||||||
<<: *workflow_trigger_on_tags
|
<<: *workflow_trigger_on_tags
|
||||||
requires:
|
requires:
|
||||||
- b_ubu_clang
|
- b_ubu_clang
|
||||||
|
|
||||||
- workflow_ubuntu1904_release: &workflow_ubuntu1904_release
|
- workflow_ubuntu2004_release: &workflow_ubuntu2004_release
|
||||||
<<: *workflow_trigger_on_tags
|
<<: *workflow_trigger_on_tags
|
||||||
requires:
|
requires:
|
||||||
- b_ubu_release
|
- b_ubu_release
|
||||||
|
|
||||||
- workflow_ubuntu1904_codecov: &workflow_ubuntu1904_codecov
|
- workflow_ubuntu2004_codecov: &workflow_ubuntu2004_codecov
|
||||||
<<: *workflow_trigger_on_tags
|
<<: *workflow_trigger_on_tags
|
||||||
requires:
|
requires:
|
||||||
- b_ubu_codecov
|
- b_ubu_codecov
|
||||||
@ -209,7 +209,7 @@ defaults:
|
|||||||
requires:
|
requires:
|
||||||
- b_osx
|
- b_osx
|
||||||
|
|
||||||
- workflow_ubuntu1904_asan: &workflow_ubuntu1904_asan
|
- workflow_ubuntu2004_asan: &workflow_ubuntu2004_asan
|
||||||
<<: *workflow_trigger_on_tags
|
<<: *workflow_trigger_on_tags
|
||||||
requires:
|
requires:
|
||||||
- b_ubu_asan
|
- b_ubu_asan
|
||||||
@ -359,16 +359,16 @@ jobs:
|
|||||||
|
|
||||||
chk_docs_pragma_min_version:
|
chk_docs_pragma_min_version:
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-<< pipeline.parameters.ubuntu-2004-docker-image-rev >>
|
||||||
environment:
|
environment:
|
||||||
TERM: xterm
|
TERM: xterm
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run: *run_docs_pragma_min_version
|
- run: *run_docs_pragma_min_version
|
||||||
|
|
||||||
b_ubu_clang: &build_ubuntu1904_clang
|
b_ubu_clang: &build_ubuntu2004_clang
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-clang-<< pipeline.parameters.ubuntu-1904-clang-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-clang-<< pipeline.parameters.ubuntu-2004-clang-docker-image-rev >>
|
||||||
environment:
|
environment:
|
||||||
CC: clang
|
CC: clang
|
||||||
CXX: clang++
|
CXX: clang++
|
||||||
@ -378,9 +378,9 @@ jobs:
|
|||||||
- store_artifacts: *artifacts_solc
|
- store_artifacts: *artifacts_solc
|
||||||
- persist_to_workspace: *artifacts_executables
|
- persist_to_workspace: *artifacts_executables
|
||||||
|
|
||||||
b_ubu: &build_ubuntu1904
|
b_ubu: &build_ubuntu2004
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-<< pipeline.parameters.ubuntu-2004-docker-image-rev >>
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run: *run_build
|
- run: *run_build
|
||||||
@ -388,8 +388,8 @@ jobs:
|
|||||||
- store_artifacts: *artifacts_tools
|
- store_artifacts: *artifacts_tools
|
||||||
- persist_to_workspace: *artifacts_executables
|
- persist_to_workspace: *artifacts_executables
|
||||||
|
|
||||||
b_ubu_release: &build_ubuntu1904_release
|
b_ubu_release: &build_ubuntu2004_release
|
||||||
<<: *build_ubuntu1904
|
<<: *build_ubuntu2004
|
||||||
environment:
|
environment:
|
||||||
FORCE_RELEASE: ON
|
FORCE_RELEASE: ON
|
||||||
|
|
||||||
@ -406,7 +406,7 @@ jobs:
|
|||||||
- persist_to_workspace: *artifacts_executables
|
- persist_to_workspace: *artifacts_executables
|
||||||
|
|
||||||
b_ubu_codecov:
|
b_ubu_codecov:
|
||||||
<<: *build_ubuntu1904
|
<<: *build_ubuntu2004
|
||||||
environment:
|
environment:
|
||||||
COVERAGE: ON
|
COVERAGE: ON
|
||||||
CMAKE_BUILD_TYPE: Debug
|
CMAKE_BUILD_TYPE: Debug
|
||||||
@ -416,7 +416,7 @@ jobs:
|
|||||||
- persist_to_workspace: *artifacts_build_dir
|
- persist_to_workspace: *artifacts_build_dir
|
||||||
|
|
||||||
t_ubu_codecov:
|
t_ubu_codecov:
|
||||||
<<: *test_ubuntu1904
|
<<: *test_ubuntu2004
|
||||||
environment:
|
environment:
|
||||||
EVM: constantinople
|
EVM: constantinople
|
||||||
OPTIMIZE: 1
|
OPTIMIZE: 1
|
||||||
@ -439,7 +439,7 @@ jobs:
|
|||||||
# Builds in C++20 mode and uses debug build in order to speed up.
|
# Builds in C++20 mode and uses debug build in order to speed up.
|
||||||
# Do *NOT* store any artifacts or workspace as we don't run tests on this build.
|
# Do *NOT* store any artifacts or workspace as we don't run tests on this build.
|
||||||
b_ubu_cxx20:
|
b_ubu_cxx20:
|
||||||
<<: *build_ubuntu1904
|
<<: *build_ubuntu2004
|
||||||
environment:
|
environment:
|
||||||
CMAKE_BUILD_TYPE: Debug
|
CMAKE_BUILD_TYPE: Debug
|
||||||
CMAKE_OPTIONS: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cxx20.cmake -DUSE_CVC4=OFF
|
CMAKE_OPTIONS: -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/cxx20.cmake -DUSE_CVC4=OFF
|
||||||
@ -591,7 +591,7 @@ jobs:
|
|||||||
|
|
||||||
# x64 ASAN build, for testing for memory related bugs
|
# x64 ASAN build, for testing for memory related bugs
|
||||||
b_ubu_asan: &b_ubu_asan
|
b_ubu_asan: &b_ubu_asan
|
||||||
<<: *build_ubuntu1904
|
<<: *build_ubuntu2004
|
||||||
environment:
|
environment:
|
||||||
CMAKE_OPTIONS: -DSANITIZE=address
|
CMAKE_OPTIONS: -DSANITIZE=address
|
||||||
CMAKE_BUILD_TYPE: Release
|
CMAKE_BUILD_TYPE: Release
|
||||||
@ -603,7 +603,7 @@ jobs:
|
|||||||
|
|
||||||
b_docs:
|
b_docs:
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-<< pipeline.parameters.ubuntu-2004-docker-image-rev >>
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run: *setup_prerelease_commit_hash
|
- run: *setup_prerelease_commit_hash
|
||||||
@ -615,11 +615,11 @@ jobs:
|
|||||||
destination: docs-html
|
destination: docs-html
|
||||||
|
|
||||||
t_ubu_soltest: &t_ubu_soltest
|
t_ubu_soltest: &t_ubu_soltest
|
||||||
<<: *test_ubuntu1904
|
<<: *test_ubuntu2004
|
||||||
|
|
||||||
t_ubu_soltest_enforce_yul: &t_ubu_soltest_enforce_yul
|
t_ubu_soltest_enforce_yul: &t_ubu_soltest_enforce_yul
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-<< pipeline.parameters.ubuntu-2004-docker-image-rev >>
|
||||||
environment:
|
environment:
|
||||||
EVM: constantinople
|
EVM: constantinople
|
||||||
SOLTEST_FLAGS: --enforce-via-yul
|
SOLTEST_FLAGS: --enforce-via-yul
|
||||||
@ -635,7 +635,7 @@ jobs:
|
|||||||
|
|
||||||
|
|
||||||
t_ubu_clang_soltest: &t_ubu_clang_soltest
|
t_ubu_clang_soltest: &t_ubu_clang_soltest
|
||||||
<<: *test_ubuntu1904_clang
|
<<: *test_ubuntu2004_clang
|
||||||
environment:
|
environment:
|
||||||
EVM: constantinople
|
EVM: constantinople
|
||||||
OPTIMIZE: 0
|
OPTIMIZE: 0
|
||||||
@ -645,7 +645,7 @@ jobs:
|
|||||||
|
|
||||||
t_ubu_cli: &t_ubu_cli
|
t_ubu_cli: &t_ubu_cli
|
||||||
docker:
|
docker:
|
||||||
- image: ethereum/solidity-buildpack-deps:ubuntu1904-<< pipeline.parameters.ubuntu-1904-docker-image-rev >>
|
- image: ethereum/solidity-buildpack-deps:ubuntu2004-<< pipeline.parameters.ubuntu-2004-docker-image-rev >>
|
||||||
environment:
|
environment:
|
||||||
TERM: xterm
|
TERM: xterm
|
||||||
steps:
|
steps:
|
||||||
@ -833,21 +833,21 @@ workflows:
|
|||||||
# Ubuntu build and tests
|
# Ubuntu build and tests
|
||||||
- b_ubu: *workflow_trigger_on_tags
|
- b_ubu: *workflow_trigger_on_tags
|
||||||
- b_ubu18: *workflow_trigger_on_tags
|
- b_ubu18: *workflow_trigger_on_tags
|
||||||
- t_ubu_cli: *workflow_ubuntu1904
|
- t_ubu_cli: *workflow_ubuntu2004
|
||||||
- t_ubu_soltest: *workflow_ubuntu1904
|
- t_ubu_soltest: *workflow_ubuntu2004
|
||||||
- t_ubu_soltest_enforce_yul: *workflow_ubuntu1904
|
- t_ubu_soltest_enforce_yul: *workflow_ubuntu2004
|
||||||
- b_ubu_clang: *workflow_trigger_on_tags
|
- b_ubu_clang: *workflow_trigger_on_tags
|
||||||
- t_ubu_clang_soltest: *workflow_ubuntu1904_clang
|
- t_ubu_clang_soltest: *workflow_ubuntu2004_clang
|
||||||
|
|
||||||
# Ubuntu fake release build and tests
|
# Ubuntu fake release build and tests
|
||||||
- b_ubu_release: *workflow_trigger_on_tags
|
- b_ubu_release: *workflow_trigger_on_tags
|
||||||
- t_ubu_release_cli: *workflow_ubuntu1904_release
|
- t_ubu_release_cli: *workflow_ubuntu2004_release
|
||||||
- t_ubu_release_soltest: *workflow_ubuntu1904_release
|
- t_ubu_release_soltest: *workflow_ubuntu2004_release
|
||||||
|
|
||||||
# ASan build and tests
|
# ASan build and tests
|
||||||
- b_ubu_asan: *workflow_trigger_on_tags
|
- b_ubu_asan: *workflow_trigger_on_tags
|
||||||
- t_ubu_asan_constantinople: *workflow_ubuntu1904_asan
|
- t_ubu_asan_constantinople: *workflow_ubuntu2004_asan
|
||||||
- t_ubu_asan_cli: *workflow_ubuntu1904_asan
|
- t_ubu_asan_cli: *workflow_ubuntu2004_asan
|
||||||
|
|
||||||
# Emscripten build and selected tests
|
# Emscripten build and selected tests
|
||||||
- b_ems: *workflow_trigger_on_tags
|
- b_ems: *workflow_trigger_on_tags
|
||||||
@ -874,4 +874,4 @@ workflows:
|
|||||||
|
|
||||||
# Code Coverage enabled build and tests
|
# Code Coverage enabled build and tests
|
||||||
- b_ubu_codecov: *workflow_trigger_on_tags
|
- b_ubu_codecov: *workflow_trigger_on_tags
|
||||||
- t_ubu_codecov: *workflow_ubuntu1904_codecov
|
- t_ubu_codecov: *workflow_ubuntu2004_codecov
|
||||||
|
@ -1,113 +0,0 @@
|
|||||||
# vim:syntax=dockerfile
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# Dockerfile for building and testing Solidity Compiler on CI
|
|
||||||
# Target: Ubuntu 19.04 (Disco Dingo) Clang variant
|
|
||||||
# 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 <http://www.gnu.org/licenses/>
|
|
||||||
#
|
|
||||||
# (c) 2016-2019 solidity contributors.
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
FROM buildpack-deps:disco AS base
|
|
||||||
|
|
||||||
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 llvm-8-dev \
|
|
||||||
libjsoncpp-dev \
|
|
||||||
libleveldb1d \
|
|
||||||
; \
|
|
||||||
apt-get install -qy python-pip python-sphinx; \
|
|
||||||
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-8 1; \
|
|
||||||
update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 1; \
|
|
||||||
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-8 1; \
|
|
||||||
pip install codecov; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
FROM base AS libraries
|
|
||||||
|
|
||||||
ENV CC clang
|
|
||||||
ENV CXX clang++
|
|
||||||
|
|
||||||
# Boost
|
|
||||||
RUN git clone -b boost-1.69.0 https://github.com/boostorg/boost.git \
|
|
||||||
/usr/src/boost; \
|
|
||||||
cd /usr/src/boost; \
|
|
||||||
git submodule update --init --recursive; \
|
|
||||||
./bootstrap.sh --with-toolset=clang --prefix=/usr; \
|
|
||||||
./b2 toolset=clang headers; \
|
|
||||||
./b2 toolset=clang variant=release \
|
|
||||||
system filesystem unit_test_framework program_options \
|
|
||||||
install -j $(($(nproc)/2)); \
|
|
||||||
rm -rf /usr/src/boost
|
|
||||||
|
|
||||||
# Z3
|
|
||||||
RUN git clone --depth 1 -b z3-4.8.7 https://github.com/Z3Prover/z3.git \
|
|
||||||
/usr/src/z3; \
|
|
||||||
cd /usr/src/z3; \
|
|
||||||
python scripts/mk_make.py --prefix=/usr ; \
|
|
||||||
cd build; \
|
|
||||||
make -j; \
|
|
||||||
make install; \
|
|
||||||
rm -rf /usr/src/z3;
|
|
||||||
|
|
||||||
# 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 3521f47a2828da9ace403e4ecc4aece1a84feb36; \
|
|
||||||
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
|
|
||||||
|
|
||||||
# EVMONE
|
|
||||||
RUN set -ex; \
|
|
||||||
cd /usr/src; \
|
|
||||||
git clone --branch="v0.4.0" --recurse-submodules https://github.com/ethereum/evmone.git; \
|
|
||||||
cd evmone; \
|
|
||||||
mkdir build; \
|
|
||||||
cd build; \
|
|
||||||
# isoltest links against the evmone shared library
|
|
||||||
cmake -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="/usr" ..; \
|
|
||||||
ninja; \
|
|
||||||
ninja install/strip; \
|
|
||||||
# abiv2_proto_ossfuzz links against the evmone standalone static library
|
|
||||||
cmake -G Ninja -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX="/usr" ..; \
|
|
||||||
ninja; \
|
|
||||||
ninja install/strip; \
|
|
||||||
rm -rf /usr/src/evmone
|
|
||||||
|
|
||||||
FROM base
|
|
||||||
COPY --from=libraries /usr/lib /usr/lib
|
|
||||||
COPY --from=libraries /usr/bin /usr/bin
|
|
||||||
COPY --from=libraries /usr/include /usr/include
|
|
@ -21,59 +21,26 @@
|
|||||||
#
|
#
|
||||||
# (c) 2016-2019 solidity contributors.
|
# (c) 2016-2019 solidity contributors.
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
FROM buildpack-deps:disco AS base
|
FROM buildpack-deps:focal AS base
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
RUN set -ex; \
|
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 update; \
|
||||||
apt-get install -qqy --no-install-recommends \
|
apt-get install -qqy --no-install-recommends \
|
||||||
build-essential \
|
build-essential \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
cmake ninja-build clang++-8 libc++-8-dev libc++abi-8-dev \
|
cmake ninja-build \
|
||||||
libboost-filesystem-dev libboost-test-dev libboost-system-dev \
|
libboost-filesystem-dev libboost-test-dev libboost-system-dev \
|
||||||
libboost-program-options-dev \
|
libboost-program-options-dev \
|
||||||
libjsoncpp-dev \
|
libcvc4-dev z3 libz3-dev \
|
||||||
llvm-8-dev libcvc4-dev libz3-static-dev libleveldb1d \
|
|
||||||
; \
|
; \
|
||||||
apt-get install -qy python-pip python-sphinx; \
|
apt-get install -qy python3-pip python3-sphinx; \
|
||||||
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer /usr/bin/llvm-symbolizer-8 1; \
|
pip3 install codecov; \
|
||||||
pip install codecov; \
|
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
FROM base AS libraries
|
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
|
# EVMONE
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
cd /usr/src; \
|
cd /usr/src; \
|
||||||
@ -81,7 +48,6 @@ RUN set -ex; \
|
|||||||
cd evmone; \
|
cd evmone; \
|
||||||
mkdir build; \
|
mkdir build; \
|
||||||
cd build; \
|
cd build; \
|
||||||
# isoltest links against the evmone shared library
|
|
||||||
cmake -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="/usr" ..; \
|
cmake -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="/usr" ..; \
|
||||||
ninja; \
|
ninja; \
|
||||||
ninja install/strip; \
|
ninja install/strip; \
|
61
.circleci/docker/Dockerfile.ubuntu2004.clang
Normal file
61
.circleci/docker/Dockerfile.ubuntu2004.clang
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# vim:syntax=dockerfile
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
# Dockerfile for building and testing Solidity Compiler on CI
|
||||||
|
# Target: Ubuntu 19.04 (Disco Dingo) Clang variant
|
||||||
|
# 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 <http://www.gnu.org/licenses/>
|
||||||
|
#
|
||||||
|
# (c) 2016-2019 solidity contributors.
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
FROM buildpack-deps:focal AS base
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN set -ex; \
|
||||||
|
apt-get update; \
|
||||||
|
apt-get install -qqy --no-install-recommends \
|
||||||
|
build-essential \
|
||||||
|
software-properties-common \
|
||||||
|
cmake ninja-build \
|
||||||
|
libboost-filesystem-dev libboost-test-dev libboost-system-dev \
|
||||||
|
libboost-program-options-dev \
|
||||||
|
clang llvm-dev \
|
||||||
|
z3 libz3-dev \
|
||||||
|
; \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
FROM base AS libraries
|
||||||
|
|
||||||
|
ENV CC clang
|
||||||
|
ENV CXX clang++
|
||||||
|
|
||||||
|
# EVMONE
|
||||||
|
RUN set -ex; \
|
||||||
|
cd /usr/src; \
|
||||||
|
git clone --branch="v0.4.0" --recurse-submodules https://github.com/ethereum/evmone.git; \
|
||||||
|
cd evmone; \
|
||||||
|
mkdir build; \
|
||||||
|
cd build; \
|
||||||
|
cmake -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="/usr" ..; \
|
||||||
|
ninja; \
|
||||||
|
ninja install/strip; \
|
||||||
|
rm -rf /usr/src/evmone
|
||||||
|
|
||||||
|
FROM base
|
||||||
|
COPY --from=libraries /usr/lib /usr/lib
|
||||||
|
COPY --from=libraries /usr/bin /usr/bin
|
||||||
|
COPY --from=libraries /usr/include /usr/include
|
@ -230,7 +230,7 @@ void ViewPureChecker::endVisit(InlineAssembly const& _inlineAssembly)
|
|||||||
{
|
{
|
||||||
AssemblyViewPureChecker{
|
AssemblyViewPureChecker{
|
||||||
_inlineAssembly.dialect(),
|
_inlineAssembly.dialect(),
|
||||||
[=](StateMutability _mutability, SourceLocation const& _location) { reportMutability(_mutability, _location); }
|
[&](StateMutability _mutability, SourceLocation const& _location) { reportMutability(_mutability, _location); }
|
||||||
}(_inlineAssembly.operations());
|
}(_inlineAssembly.operations());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -527,7 +527,7 @@ bool AsmAnalyzer::warnOnInstructions(evmasm::Instruction _instr, SourceLocation
|
|||||||
// Similarly we assume bitwise shifting and create2 go together.
|
// Similarly we assume bitwise shifting and create2 go together.
|
||||||
yulAssert(m_evmVersion.hasBitwiseShifting() == m_evmVersion.hasCreate2(), "");
|
yulAssert(m_evmVersion.hasBitwiseShifting() == m_evmVersion.hasCreate2(), "");
|
||||||
|
|
||||||
auto errorForVM = [=](string const& vmKindMessage) {
|
auto errorForVM = [&](string const& vmKindMessage) {
|
||||||
typeError(
|
typeError(
|
||||||
_location,
|
_location,
|
||||||
"The \"" +
|
"The \"" +
|
||||||
|
@ -85,11 +85,11 @@ void VariableReferenceCounter::operator()(Block const& _block)
|
|||||||
void VariableReferenceCounter::increaseRefIfFound(YulString _variableName)
|
void VariableReferenceCounter::increaseRefIfFound(YulString _variableName)
|
||||||
{
|
{
|
||||||
m_scope->lookup(_variableName, GenericVisitor{
|
m_scope->lookup(_variableName, GenericVisitor{
|
||||||
[=](Scope::Variable const& _var)
|
[&](Scope::Variable const& _var)
|
||||||
{
|
{
|
||||||
++m_context.variableReferences[&_var];
|
++m_context.variableReferences[&_var];
|
||||||
},
|
},
|
||||||
[=](Scope::Function const&) { }
|
[](Scope::Function const&) { }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,7 +272,7 @@ void CodeTransform::operator()(FunctionCall const& _call)
|
|||||||
|
|
||||||
Scope::Function* function = nullptr;
|
Scope::Function* function = nullptr;
|
||||||
yulAssert(m_scope->lookup(_call.functionName.name, GenericVisitor{
|
yulAssert(m_scope->lookup(_call.functionName.name, GenericVisitor{
|
||||||
[=](Scope::Variable&) { yulAssert(false, "Expected function name."); },
|
[](Scope::Variable&) { yulAssert(false, "Expected function name."); },
|
||||||
[&](Scope::Function& _function) { function = &_function; }
|
[&](Scope::Function& _function) { function = &_function; }
|
||||||
}), "Function name not found.");
|
}), "Function name not found.");
|
||||||
yulAssert(function, "");
|
yulAssert(function, "");
|
||||||
@ -296,7 +296,7 @@ void CodeTransform::operator()(Identifier const& _identifier)
|
|||||||
// First search internals, then externals.
|
// First search internals, then externals.
|
||||||
yulAssert(m_scope, "");
|
yulAssert(m_scope, "");
|
||||||
if (m_scope->lookup(_identifier.name, GenericVisitor{
|
if (m_scope->lookup(_identifier.name, GenericVisitor{
|
||||||
[=](Scope::Variable& _var)
|
[&](Scope::Variable& _var)
|
||||||
{
|
{
|
||||||
// TODO: opportunity for optimization: Do not DUP if this is the last reference
|
// TODO: opportunity for optimization: Do not DUP if this is the last reference
|
||||||
// to the top most element of the stack
|
// to the top most element of the stack
|
||||||
@ -307,7 +307,7 @@ void CodeTransform::operator()(Identifier const& _identifier)
|
|||||||
m_assembly.appendConstant(u256(0));
|
m_assembly.appendConstant(u256(0));
|
||||||
decreaseReference(_identifier.name, _var);
|
decreaseReference(_identifier.name, _var);
|
||||||
},
|
},
|
||||||
[=](Scope::Function&)
|
[](Scope::Function&)
|
||||||
{
|
{
|
||||||
yulAssert(false, "Function not removed during desugaring.");
|
yulAssert(false, "Function not removed during desugaring.");
|
||||||
}
|
}
|
||||||
|
@ -1232,7 +1232,7 @@ Object EVMToEwasmTranslator::run(Object const& _object)
|
|||||||
|
|
||||||
FunctionHoister::run(context, ast);
|
FunctionHoister::run(context, ast);
|
||||||
FunctionGrouper::run(context, ast);
|
FunctionGrouper::run(context, ast);
|
||||||
MainFunction{}(ast);
|
MainFunction::run(context, ast);
|
||||||
ForLoopConditionIntoBody::run(context, ast);
|
ForLoopConditionIntoBody::run(context, ast);
|
||||||
ExpressionSplitter::run(context, ast);
|
ExpressionSplitter::run(context, ast);
|
||||||
WordSizeTransform::run(m_dialect, WasmDialect::instance(), ast, nameDispenser);
|
WordSizeTransform::run(m_dialect, WasmDialect::instance(), ast, nameDispenser);
|
||||||
|
@ -306,7 +306,7 @@ void RedundantAssignEliminator::finalize(YulString _variable, RedundantAssignEli
|
|||||||
|
|
||||||
void AssignmentRemover::operator()(Block& _block)
|
void AssignmentRemover::operator()(Block& _block)
|
||||||
{
|
{
|
||||||
boost::range::remove_erase_if(_block.statements, [=](Statement const& _statement) -> bool {
|
boost::range::remove_erase_if(_block.statements, [&](Statement const& _statement) -> bool {
|
||||||
return holds_alternative<Assignment>(_statement) && m_toRemove.count(&std::get<Assignment>(_statement));
|
return holds_alternative<Assignment>(_statement) && m_toRemove.count(&std::get<Assignment>(_statement));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ void UnusedPruner::operator()(Block& _block)
|
|||||||
if (std::none_of(
|
if (std::none_of(
|
||||||
varDecl.variables.begin(),
|
varDecl.variables.begin(),
|
||||||
varDecl.variables.end(),
|
varDecl.variables.end(),
|
||||||
[=](TypedName const& _typedName) { return used(_typedName.name); }
|
[&](TypedName const& _typedName) { return used(_typedName.name); }
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
if (!varDecl.value)
|
if (!varDecl.value)
|
||||||
|
@ -28,6 +28,6 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
cd docs
|
cd docs
|
||||||
pip install -r requirements.txt
|
pip3 install -r requirements.txt
|
||||||
sphinx-build -nW -b html -d _build/doctrees . _build/html
|
sphinx-build -nW -b html -d _build/doctrees . _build/html
|
||||||
cd ..
|
cd ..
|
||||||
|
Loading…
Reference in New Issue
Block a user