mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #13581 from r0qs/ci-to-nightly
Let the nightlies call themselves 'nightly', the return.
This commit is contained in:
commit
10f81425a3
@ -28,10 +28,9 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if test -z "$1"; then
|
params=""
|
||||||
BUILD_DIR="emscripten_build"
|
if (( $# != 0 )); then
|
||||||
else
|
params="$(printf "%q " "${@}")"
|
||||||
BUILD_DIR="$1"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# solbuildpackpusher/solidity-buildpack-deps:emscripten-14
|
# solbuildpackpusher/solidity-buildpack-deps:emscripten-14
|
||||||
@ -39,4 +38,4 @@ fi
|
|||||||
# See https://github.blog/2022-04-12-git-security-vulnerability-announced/
|
# See https://github.blog/2022-04-12-git-security-vulnerability-announced/
|
||||||
docker run -v "$(pwd):/root/project" -w /root/project \
|
docker run -v "$(pwd):/root/project" -w /root/project \
|
||||||
solbuildpackpusher/solidity-buildpack-deps@sha256:f1c13f3450d1f2e53ea18ac1ac1a17e932573cb9a5ccd0fd9ef6dd44f6402fa9 \
|
solbuildpackpusher/solidity-buildpack-deps@sha256:f1c13f3450d1f2e53ea18ac1ac1a17e932573cb9a5ccd0fd9ef6dd44f6402fa9 \
|
||||||
/bin/bash -c "git config --global --add safe.directory /root/project && ./scripts/ci/build_emscripten.sh $BUILD_DIR"
|
/bin/bash -c "git config --global --add safe.directory /root/project && ./scripts/ci/build_emscripten.sh ${params}"
|
||||||
|
@ -2,17 +2,22 @@
|
|||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
ROOTDIR="$(dirname "$0")/../.."
|
ROOTDIR="$(dirname "$0")/../.."
|
||||||
|
# shellcheck source=scripts/common.sh
|
||||||
|
source "${ROOTDIR}/scripts/common.sh"
|
||||||
|
|
||||||
|
prerelease_source="${1:-ci}"
|
||||||
|
|
||||||
cd "${ROOTDIR}"
|
cd "${ROOTDIR}"
|
||||||
|
|
||||||
# shellcheck disable=SC2166
|
# shellcheck disable=SC2166
|
||||||
if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" -o -n "$FORCE_RELEASE" ]
|
if [ "$CIRCLE_BRANCH" = release -o -n "$CIRCLE_TAG" -o -n "$FORCE_RELEASE" ]
|
||||||
then
|
then
|
||||||
echo -n "" >prerelease.txt
|
echo -n >prerelease.txt
|
||||||
else
|
else
|
||||||
# Use last commit date rather than build date to avoid ending up with builds for
|
# Use last commit date rather than build date to avoid ending up with builds for
|
||||||
# different platforms having different version strings (and therefore producing different bytecode)
|
# different platforms having different version strings (and therefore producing different bytecode)
|
||||||
# if the CI is triggered just before midnight.
|
# if the CI is triggered just before midnight.
|
||||||
TZ=UTC git show --quiet --date="format-local:%Y.%-m.%-d" --format="ci.%cd" >prerelease.txt
|
TZ=UTC git show --quiet --date="format-local:%Y.%-m.%-d" --format="${prerelease_source}.%cd" >prerelease.txt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$CIRCLE_SHA1" ]
|
if [ -n "$CIRCLE_SHA1" ]
|
||||||
|
@ -34,55 +34,93 @@
|
|||||||
|
|
||||||
set -ev
|
set -ev
|
||||||
|
|
||||||
if test -z "$1"; then
|
SCRIPT_DIR="$(realpath "$(dirname "$0")/..")"
|
||||||
BUILD_DIR="emscripten_build"
|
# shellcheck source=scripts/common.sh
|
||||||
else
|
source "${SCRIPT_DIR}/common.sh"
|
||||||
BUILD_DIR="$1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
WORKSPACE=/root/project
|
function build() {
|
||||||
|
local build_dir="$1"
|
||||||
|
local prerelease_source="${2:-ci}"
|
||||||
|
|
||||||
cd "$WORKSPACE"
|
cd /root/project
|
||||||
|
|
||||||
# shellcheck disable=SC2166
|
# shellcheck disable=SC2166
|
||||||
if [[ "$CIRCLE_BRANCH" = release || -n "$CIRCLE_TAG" || -n "$FORCE_RELEASE" || "$(git tag --points-at HEAD 2>/dev/null)" == v* ]]
|
if [[ "$CIRCLE_BRANCH" = release || -n "$CIRCLE_TAG" || -n "$FORCE_RELEASE" || "$(git tag --points-at HEAD 2>/dev/null)" == v* ]]
|
||||||
then
|
then
|
||||||
echo -n >prerelease.txt
|
echo -n >prerelease.txt
|
||||||
else
|
else
|
||||||
# Use last commit date rather than build date to avoid ending up with builds for
|
# Use last commit date rather than build date to avoid ending up with builds for
|
||||||
# different platforms having different version strings (and therefore producing different bytecode)
|
# different platforms having different version strings (and therefore producing different bytecode)
|
||||||
# if the CI is triggered just before midnight.
|
# if the CI is triggered just before midnight.
|
||||||
TZ=UTC git show --quiet --date="format-local:%Y.%-m.%-d" --format="ci.%cd" >prerelease.txt
|
TZ=UTC git show --quiet --date="format-local:%Y.%-m.%-d" --format="${prerelease_source}.%cd" >prerelease.txt
|
||||||
fi
|
fi
|
||||||
if [ -n "$CIRCLE_SHA1" ]
|
if [ -n "$CIRCLE_SHA1" ]
|
||||||
then
|
then
|
||||||
echo -n "$CIRCLE_SHA1" >commit_hash.txt
|
echo -n "$CIRCLE_SHA1" >commit_hash.txt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Disable warnings for unqualified `move()` calls, introduced and enabled by
|
# Disable warnings for unqualified `move()` calls, introduced and enabled by
|
||||||
# default in clang-16 which is what the emscripten docker image uses.
|
# default in clang-16 which is what the emscripten docker image uses.
|
||||||
# Additionally, disable the warning for unknown warnings here, as this script is
|
# Additionally, disable the warning for unknown warnings here, as this script is
|
||||||
# also used with earlier clang versions.
|
# also used with earlier clang versions.
|
||||||
# TODO: This can be removed if and when all usages of `move()` in our codebase use the `std::` qualifier.
|
# TODO: This can be removed if and when all usages of `move()` in our codebase use the `std::` qualifier.
|
||||||
CMAKE_CXX_FLAGS="-Wno-unqualified-std-cast-call"
|
CMAKE_CXX_FLAGS="-Wno-unqualified-std-cast-call"
|
||||||
|
|
||||||
|
mkdir -p "$build_dir"
|
||||||
|
cd "$build_dir"
|
||||||
|
emcmake cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DBoost_USE_STATIC_LIBS=1 \
|
||||||
|
-DBoost_USE_STATIC_RUNTIME=1 \
|
||||||
|
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" \
|
||||||
|
-DTESTS=0 \
|
||||||
|
..
|
||||||
|
make soljson
|
||||||
|
|
||||||
mkdir -p "$BUILD_DIR"
|
cd ..
|
||||||
cd "$BUILD_DIR"
|
mkdir -p upload
|
||||||
emcmake cmake \
|
scripts/ci/pack_soljson.sh "$build_dir/libsolc/soljson.js" "$build_dir/libsolc/soljson.wasm" upload/soljson.js
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
cp upload/soljson.js ./
|
||||||
-DBoost_USE_STATIC_LIBS=1 \
|
|
||||||
-DBoost_USE_STATIC_RUNTIME=1 \
|
|
||||||
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}" \
|
|
||||||
-DTESTS=0 \
|
|
||||||
..
|
|
||||||
make soljson
|
|
||||||
|
|
||||||
cd ..
|
OUTPUT_SIZE=$(ls -la soljson.js)
|
||||||
mkdir -p upload
|
|
||||||
scripts/ci/pack_soljson.sh "$BUILD_DIR/libsolc/soljson.js" "$BUILD_DIR/libsolc/soljson.wasm" upload/soljson.js
|
|
||||||
cp upload/soljson.js ./
|
|
||||||
|
|
||||||
OUTPUT_SIZE=$(ls -la soljson.js)
|
echo "Emscripten output size: $OUTPUT_SIZE"
|
||||||
|
}
|
||||||
|
|
||||||
echo "Emscripten output size: $OUTPUT_SIZE"
|
function show_help() {
|
||||||
|
cat << EOF
|
||||||
|
Usage: ${0##*/} [-h|--help] [--build-dir DIR] [--prerelease-source prerelease_source]
|
||||||
|
Build Solidity emscripten binary
|
||||||
|
-h | --help Display this help message
|
||||||
|
--build-dir The emscripten build directory
|
||||||
|
--prerelease-source The prerelease source string. E.g. 'nightly' or 'ci'.
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
local build_dir="emscripten_build"
|
||||||
|
local prerelease_source=""
|
||||||
|
|
||||||
|
while (( $# > 0 )); do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--build-dir)
|
||||||
|
[[ -n "$2" ]] || fail "Option --build-dir cannot be empty"
|
||||||
|
build_dir="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--prerelease-source)
|
||||||
|
[[ -n "$2" ]] || fail "Option --prerelease-source cannot be empty"
|
||||||
|
prerelease_source="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*) fail "Invalid option: $1" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
build "$build_dir" "$prerelease_source"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
|
Loading…
Reference in New Issue
Block a user