Merge remote-tracking branch 'origin/develop' into breaking

This commit is contained in:
chriseth
2022-03-07 16:34:55 +01:00
259 changed files with 2810 additions and 1360 deletions
+6 -4
View File
@@ -1,10 +1,12 @@
#!/usr/bin/env bash
#------------------------------------------------------------------------------
# Script used for cross-platform comparison as part of the travis automation.
# Splits all test source code into multiple files, generates bytecode and
# uploads the bytecode into github.com/ethereum/solidity-test-bytecode where
# another travis job is triggered to do the actual comparison.
# Script used for cross-platform comparison of the bytecode generated by the compiler.
# Splits all test source code into multiple files, generates bytecode and metadata
# for each file and combines it into a single report.txt file.
#
# The script is meant to be executed in CI on all supported platforms. All generated
# reports must be identical for a given compiler version.
#
# ------------------------------------------------------------------------------
# This file is part of solidity.
+1 -1
View File
@@ -180,7 +180,7 @@ function diff_values
shift
shift
diff --color=auto --unified=0 <(echo "$value1") <(echo "$value2") "$@"
diff --unified=0 <(echo "$value1") <(echo "$value2") "$@"
}
function safe_kill
@@ -22,7 +22,7 @@
# (c) 2016-2021 solidity contributors.
#------------------------------------------------------------------------------
FROM gcr.io/oss-fuzz-base/base-clang:latest as base
LABEL version="15"
LABEL version="16"
ARG DEBIAN_FRONTEND=noninteractive
@@ -32,7 +32,7 @@ RUN apt-get update; \
software-properties-common \
ninja-build git wget \
libbz2-dev zlib1g-dev git curl uuid-dev \
pkg-config openjdk-8-jdk liblzma-dev unzip mlton m4; \
pkg-config openjdk-8-jdk liblzma-dev unzip mlton m4 jq; \
apt-get install -qy python3-pip;
# Install cmake 3.21.2 (minimum requirement is cmake 3.10)
@@ -22,7 +22,7 @@
# (c) 2016-2019 solidity contributors.
#------------------------------------------------------------------------------
FROM buildpack-deps:focal AS base
LABEL version="10"
LABEL version="11"
ARG DEBIAN_FRONTEND=noninteractive
@@ -37,7 +37,7 @@ RUN set -ex; \
cmake ninja-build \
libboost-filesystem-dev libboost-test-dev libboost-system-dev \
libboost-program-options-dev \
libcvc4-dev libz3-static-dev z3-static \
libcvc4-dev libz3-static-dev z3-static jq \
; \
apt-get install -qy python3-pip python3-sphinx; \
pip3 install codecov; \
@@ -22,7 +22,7 @@
# (c) 2016-2019 solidity contributors.
#------------------------------------------------------------------------------
FROM buildpack-deps:focal AS base
LABEL version="10"
LABEL version="11"
ARG DEBIAN_FRONTEND=noninteractive
@@ -38,7 +38,7 @@ RUN set -ex; \
libboost-filesystem-dev libboost-test-dev libboost-system-dev \
libboost-program-options-dev \
clang \
libz3-static-dev \
libz3-static-dev jq \
; \
rm -rf /var/lib/apt/lists/*
@@ -1,66 +0,0 @@
# ------------------------------------------------------------------------------
# This Python script is used within the OS X release process, to ensure
# that the standalone OS X ZIP files which we make are actually
# standalone, and not implicitly dependent on Homebrew installs for
# external libraries which we use.
#
# This implicit dependencies seem to show up only where we have
# external dependencies which are dependent on each other, and the
# path from one to another is an absolute path to "/usr/local/opt",
# the Homebrew install location. External dependencies which only
# depend on system libraries are fine. Our main applications seem
# to be fine.
#
# An example of a dependency which requires this fix-up at the time
# of writing is the following dependency edge:
#
# libjsonrpccpp-client.0.dylib
# -> /usr/local/opt/jsoncpp/lib/libjsoncpp.0.dylib
#
# See https://blogs.oracle.com/dipol/entry/dynamic_libraries_rpath_and_mac
# for a little overview of "install_name_tool" and "otool".
#
# ------------------------------------------------------------------------------
# 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 solidity contributors.
# -----------------------------------------------------------------------------
import os
import subprocess
import sys
def readDependencies(fname):
with subprocess.Popen(['otool', '-L', fname], stdout=subprocess.PIPE) as o:
for line in o.stdout:
if line[0] == '\t':
library = line.split(' ', 1)[0][1:]
if (library.startswith("/usr/local/lib") or
library.startswith("/usr/local/opt") or
library.startswith("/Users/")
):
if os.path.basename(library) != os.path.basename(fname):
command = "install_name_tool -change " + \
library + " @executable_path/./" + \
os.path.basename(library) + " " + fname
print(command)
os.system("chmod +w " + fname)
os.system(command)
root = sys.argv[1]
for (dirpath, dirnames, filenames) in os.walk(root):
for filename in filenames:
readDependencies(os.path.join(root, filename))
-38
View File
@@ -1,38 +0,0 @@
@ECHO OFF
REM ---------------------------------------------------------------------------
REM Batch file for implementing release flow for solidity for Windows.
REM
REM The documentation for solidity is hosted at:
REM
REM https://docs.soliditylang.org
REM
REM ---------------------------------------------------------------------------
REM This file is part of solidity.
REM
REM solidity is free software: you can redistribute it and/or modify
REM it under the terms of the GNU General Public License as published by
REM the Free Software Foundation, either version 3 of the License, or
REM (at your option) any later version.
REM
REM solidity is distributed in the hope that it will be useful,
REM but WITHOUT ANY WARRANTY; without even the implied warranty of
REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
REM GNU General Public License for more details.
REM
REM You should have received a copy of the GNU General Public License
REM along with solidity. If not, see <http://www.gnu.org/licenses/>
REM
REM Copyright (c) 2016 solidity contributors.
REM ---------------------------------------------------------------------------
set CONFIGURATION=%1
set VERSION=%2
set "DLLS=MSVC_DLLS_NOT_FOUND"
FOR /d %%d IN ("C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Redist\MSVC\*"
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\*") DO set "DLLS=%%d\x86\Microsoft.VC141.CRT\msvc*.dll"
7z a solidity-windows.zip ^
.\build\solc\%CONFIGURATION%\solc.exe .\build\test\%CONFIGURATION%\soltest.exe ^
"%DLLS%"
-56
View File
@@ -1,56 +0,0 @@
#!/usr/bin/env bash
#------------------------------------------------------------------------------
# Bash script implementing release flow for solidity for Linux and macOS.
#
# TODO - At the time of writing, we only have ZIPs working. Need to hook up
# support for Homebrew and PPAs.
#
# The documentation for solidity is hosted at:
#
# https://docs.soliditylang.org
#
# ------------------------------------------------------------------------------
# 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 solidity contributors.
#------------------------------------------------------------------------------
ZIP_SUFFIX="$1"
ZIP_TEMP_DIR="$(pwd)/build/zip/"
# There is an implicit assumption here that we HAVE to run from root directory.
REPO_ROOT=$(pwd)
mkdir -p "$ZIP_TEMP_DIR"
# Copy all the solidity executables into a temporary directory prior to ZIP creation
cp "$REPO_ROOT/build/solc/solc" "$ZIP_TEMP_DIR"
# For macOS, we run a fix-up script which alters all of the symbolic links within
# the executables and dynamic libraries such that the ZIP becomes self-contained, by
# revectoring all the dylib references to be relative to the directory containing the
# application, so that the ZIPs are self-contained, with the only external references
# being for kernel-level dylibs.
if [[ "$OSTYPE" == "darwin"* ]]; then
python3 "$REPO_ROOT/scripts/fix_homebrew_paths_in_standalone_zip.py" "$ZIP_TEMP_DIR"
fi
# And ZIP it all up, with a filename suffix passed in on the command-line.
mkdir -p "$REPO_ROOT/upload"
zip -j "$REPO_ROOT/upload/solidity-$ZIP_SUFFIX.zip" "$ZIP_TEMP_DIR/"*
+2 -2
View File
@@ -55,9 +55,9 @@ keyid=379F4801D622CDCF
email=builds@ethereum.org
packagename=solc
static_build_distribution=hirsute
static_build_distribution=impish
DISTRIBUTIONS="focal hirsute impish jammy"
DISTRIBUTIONS="focal impish jammy"
if is_release
then
@@ -45,7 +45,7 @@ set +e
if [ -e scripts/ci/build_emscripten.sh ]; then
scripts/ci/build_emscripten.sh
else
# The script used to be in scripts/ci/ in earlier versions.
# The script used to be in scripts/travis-emscripten/ in earlier versions.
scripts/travis-emscripten/build_emscripten.sh
fi
@@ -27,7 +27,7 @@ done
SOLIDITY_REPO_URL="https://github.com/ethereum/solidity"
SOLC_JS_REPO_URL="https://github.com/ethereum/solc-js"
SOLC_JS_BRANCH=wasmRebuildTests
RELEASE_URL="https://raw.githubusercontent.com/ethereum/solc-bin/gh-pages/bin"
RELEASE_URL="https://binaries.soliditylang.org/bin"
RELEASE_COMMIT_LIST_URL="$RELEASE_URL/list.txt"
SCRIPTDIR=$(dirname "$0")
@@ -196,6 +196,7 @@ cp scripts/bytecodecompare/storebytecode.sh /tmp
# shellcheck disable=SC2016
sed -i -e 's/rm -rf "\$TMPDIR"/cp "\$TMPDIR"\/report.txt \/tmp\/report.txt ; rm -rf "\$TMPDIR"/' /tmp/storebytecode.sh
sed -i -e 's/REPO_ROOT=.*/REPO_ROOT=\/src/' /tmp/storebytecode.sh
sed -i -e 's/git clone/git clone --branch '"${SOLC_JS_BRANCH}"'/' /tmp/storebytecode.sh
export SOLC_EMSCRIPTEN="On"
echo "Check out solc-js repository..."
@@ -213,7 +214,9 @@ ln -sf /emsdk_portable/emscripten/bin/* /usr/local/bin
rm -rf /src
ln -sf /root/project /src
echo "Install dependencies and upgrade system packages."
apt-get -qq update >/dev/null 2>&1
apt-get -qq upgrade >/dev/null 2>&1
apt-get -qq install cmake >/dev/null 2>&1
echo "Create output directories."
@@ -228,7 +231,6 @@ mkdir -p "${OUTPUTDIR}"/bin
echo "Prepare solc-js."
cd /root/solc-js
npm install >/dev/null 2>&1
npm run build >/dev/null 2>&1
echo "Install semver helper."
npm install -g semver >/dev/null 2>&1
@@ -238,6 +240,7 @@ wget -q "${RELEASE_COMMIT_LIST_URL}" -O /tmp/release_commit_list.txt
cd /src
TAGS=$(git tag --list "${TAG_FILTER}" | tac)
echo "Matching tags: ${TAGS}"
for TAG in ${TAGS}; do
process_tag "${TAG}"
done