mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Create bytecode for all tests and push to remote repo.
This commit is contained in:
parent
b18aea315d
commit
bbe3557a2f
@ -44,6 +44,7 @@ env:
|
||||
- SOLC_INSTALL_DEPS_TRAVIS=On
|
||||
- SOLC_RELEASE=On
|
||||
- SOLC_TESTS=On
|
||||
- SOLC_STOREBYTECODE=Off
|
||||
- SOLC_DOCKER=Off
|
||||
|
||||
matrix:
|
||||
@ -61,6 +62,7 @@ matrix:
|
||||
compiler: gcc
|
||||
env:
|
||||
- ZIP_SUFFIX=ubuntu-trusty
|
||||
- SOLC_STOREBYTECODE=On
|
||||
|
||||
- os: linux
|
||||
dist: trusty
|
||||
@ -68,6 +70,7 @@ matrix:
|
||||
compiler: clang
|
||||
env:
|
||||
- ZIP_SUFFIX=ubuntu-trusty-clang
|
||||
- SOLC_STOREBYTECODE=On
|
||||
|
||||
# Documentation target, which generates documentation using Phoenix / ReadTheDocs.
|
||||
- os: linux
|
||||
@ -114,6 +117,7 @@ matrix:
|
||||
- SOLC_RELEASE=Off
|
||||
- SOLC_TESTS=Off
|
||||
- ZIP_SUFFIX=emscripten
|
||||
- SOLC_STOREBYTECODE=On
|
||||
|
||||
# OS X Mavericks (10.9)
|
||||
# https://en.wikipedia.org/wiki/OS_X_Mavericks
|
||||
@ -189,6 +193,7 @@ before_script:
|
||||
script:
|
||||
- test $SOLC_DOCS != On || (scripts/docs.sh)
|
||||
- test $SOLC_TESTS != On || (cd $TRAVIS_BUILD_DIR && scripts/tests.sh)
|
||||
- test $SOLC_STOREBYTECODE != On || (cd $TRAVIS_BUILD_DIR && scripts/bytecodecompare/storebytecode.sh)
|
||||
|
||||
deploy:
|
||||
# This is the deploy target for the Emscripten build.
|
||||
|
12
appveyor.yml
12
appveyor.yml
@ -34,6 +34,10 @@ branches:
|
||||
os: Visual Studio 2015
|
||||
configuration:
|
||||
- RelWithDebInfo
|
||||
environment:
|
||||
# This is used for pushing to solidity-test-bytecodes
|
||||
priv_key:
|
||||
secure: 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
|
||||
# NB: Appveyor cache is disabled, because it is proving very unreliable.
|
||||
# We can re-enable it when we find a way to mitigate the unreliability
|
||||
# issues. Have automated builds be reliable is the more important thing.
|
||||
@ -43,7 +47,14 @@ configuration:
|
||||
#init:
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
install:
|
||||
- ps: $fileContent = "-----BEGIN RSA PRIVATE KEY-----`n"
|
||||
- ps: $fileContent += $env:priv_key.Replace(' ', "`n")
|
||||
- ps: $fileContent += "`n-----END RSA PRIVATE KEY-----`n"
|
||||
- ps: Set-Content c:\users\appveyor\.ssh\id_rsa $fileContent
|
||||
- git submodule update --init --recursive
|
||||
- ps: $prerelease = "nightly."
|
||||
- ps: $prerelease += Get-Date -format "yyyy.M.d"
|
||||
- ps: Set-Content prerelease.txt $prerelease
|
||||
- scripts/install_deps.bat
|
||||
- set ETHEREUM_DEPS_PATH=%APPVEYOR_BUILD_FOLDER%\deps\install
|
||||
before_build:
|
||||
@ -54,6 +65,7 @@ build_script:
|
||||
- msbuild solidity.sln /p:Configuration=%CONFIGURATION% /m:%NUMBER_OF_PROCESSORS% /v:minimal
|
||||
- cd %APPVEYOR_BUILD_FOLDER%
|
||||
- scripts\release.bat %CONFIGURATION%
|
||||
- scripts\bytecodecompare\storebytecode.bat %CONFIGURATION% %APPVEYOR_REPO_COMMIT%
|
||||
|
||||
test_script:
|
||||
- cd %APPVEYOR_BUILD_FOLDER%
|
||||
|
BIN
scripts/bytecodecompare/deploy_key.enc
Normal file
BIN
scripts/bytecodecompare/deploy_key.enc
Normal file
Binary file not shown.
20
scripts/bytecodecompare/prepare_report.py
Executable file
20
scripts/bytecodecompare/prepare_report.py
Executable file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import glob
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
solc = sys.argv[1]
|
||||
report = open("report.txt", "w")
|
||||
|
||||
for f in sorted(glob.glob("*.sol")):
|
||||
proc = subprocess.Popen([solc, '--combined-json', 'bin,metadata', f], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
(out, err) = proc.communicate()
|
||||
try:
|
||||
result = json.loads(out.strip())
|
||||
for contractName in sorted(result['contracts'].keys()):
|
||||
report.write(contractName + ' ' + result['contracts'][contractName]['bin'] + '\n')
|
||||
report.write(contractName + ' ' + result['contracts'][contractName]['metadata'] + '\n')
|
||||
except:
|
||||
report.write(f + ": ERROR\n")
|
41
scripts/bytecodecompare/storebytecode.bat
Normal file
41
scripts/bytecodecompare/storebytecode.bat
Normal file
@ -0,0 +1,41 @@
|
||||
@ECHO OFF
|
||||
|
||||
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) 2017 solidity contributors.
|
||||
REM ---------------------------------------------------------------------------
|
||||
|
||||
set CONFIGURATION=%1
|
||||
set COMMIT=%2
|
||||
|
||||
mkdir bytecode
|
||||
cd bytecode
|
||||
..\scripts\isolate_tests.py ..\test\
|
||||
..\scripts\bytecodecompare\prepare_report.py ..\build\solc\%CONFIGURATION%\solc.exe
|
||||
|
||||
git clone --depth 2 git@github.com:ethereum/solidity-test-bytecode.git
|
||||
cd solidity-test-bytecode
|
||||
git config user.name "travis"
|
||||
git config user.email "chris@ethereum.org"
|
||||
git clean -f -d -x
|
||||
|
||||
mkdir %COMMIT%
|
||||
set REPORT=%COMMIT%/windows.txt
|
||||
cp ../report.txt %REPORT%
|
||||
git add %REPORT%
|
||||
git commit -a -m "Added report."
|
||||
git push origin
|
98
scripts/bytecodecompare/storebytecode.sh
Executable file
98
scripts/bytecodecompare/storebytecode.sh
Executable file
@ -0,0 +1,98 @@
|
||||
#!/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.
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
# 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) 2017 solidity contributors.
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
set -e
|
||||
|
||||
REPO_ROOT="$(dirname "$0")"/../..
|
||||
|
||||
echo "Compiling all test contracts into bytecode..."
|
||||
TMPDIR=$(mktemp -d)
|
||||
(
|
||||
cd "$REPO_ROOT"
|
||||
REPO_ROOT=$(pwd) # make it absolute
|
||||
cd "$TMPDIR"
|
||||
|
||||
"$REPO_ROOT"/scripts/isolate_tests.py "$REPO_ROOT"/test/
|
||||
|
||||
if [[ "$SOLC_EMSCRIPTEN" = "On" ]]
|
||||
then
|
||||
cp "$REPO_ROOT/build/solc/soljson.js" .
|
||||
npm install solc
|
||||
cat > solc <<EOF
|
||||
#!/usr/bin/env node
|
||||
var process = require('process')
|
||||
var fs = require('fs')
|
||||
|
||||
var compiler = require('solc/wrapper.js')(require('./soljson.js'))
|
||||
|
||||
for (var filename of process.argv.slice(2))
|
||||
{
|
||||
if (filename !== undefined)
|
||||
{
|
||||
var inputs = {}
|
||||
inputs[filename] = fs.readFileSync(filename).toString()
|
||||
var result = compiler.compile({sources: inputs})
|
||||
if (!('contracts' in result) || Object.keys(result['contracts']).length === 0)
|
||||
{
|
||||
console.log(filename + ': ERROR')
|
||||
}
|
||||
else
|
||||
{
|
||||
for (var contractName in result['contracts'])
|
||||
{
|
||||
console.log(contractName + ' ' + result['contracts'][contractName].bytecode)
|
||||
console.log(contractName + ' ' + result['contracts'][contractName].metadata)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
chmod +x solc
|
||||
./solc *.sol > report.txt
|
||||
else
|
||||
$REPO_ROOT/scripts/bytecodecompare/prepare_report.py $REPO_ROOT/build/solc/solc
|
||||
fi
|
||||
|
||||
openssl aes-256-cbc -K $encrypted_60701c962b9c_key -iv $encrypted_60701c962b9c_iv -in "$REPO_ROOT"/scripts/bytecodecompare/deploy_key.enc -out deploy_key -d
|
||||
chmod 600 deploy_key
|
||||
eval `ssh-agent -s`
|
||||
ssh-add deploy_key
|
||||
|
||||
git clone --depth 2 git@github.com:ethereum/solidity-test-bytecode.git
|
||||
cd solidity-test-bytecode
|
||||
git config user.name "travis"
|
||||
git config user.email "chris@ethereum.org"
|
||||
git clean -f -d -x
|
||||
|
||||
mkdir -p "$TRAVIS_COMMIT"
|
||||
REPORT="$TRAVIS_COMMIT/$ZIP_SUFFIX.txt"
|
||||
cp ../report.txt "$REPORT"
|
||||
git add "$REPORT"
|
||||
git commit -a -m "Added report $REPORT"
|
||||
git push origin
|
||||
)
|
||||
rm -rf "$TMPDIR"
|
Loading…
Reference in New Issue
Block a user