Skip to content

Commit ebaf98d

Browse files
committed
produce output for linux, don't overwrite docker images between distros
1 parent 1c3206a commit ebaf98d

7 files changed

+110
-59
lines changed

README.batfish

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
To generate zips on your local machine, do:
2+
3+
## Ubuntu 14,04 (USES DOCKER)
4+
LINUX_BASE=ubuntu_14.04 TRAVIS_OS_NAME=linux contrib/ci/scripts/travis_ci_entry_point.sh
5+
6+
## Ubuntu 16,04 (USES DOCKER)
7+
LINUX_BASE=ubuntu_16.04 TRAVIS_OS_NAME=linux contrib/ci/scripts/travis_ci_entry_point.sh
8+
9+
## OSX with OpenMP (RECOMMENDED, MUST BE RUN ON OSX, DOES NOT USE DOCKER)
10+
./package_z3_osx_openmp.sh
11+
12+
## OSX without OpenMP (NOT RECOMMENDED, MUST BE RUN ON OSX, DOES NOT USE DOCKER)
13+
./package_z3_osx.sh
14+
15+
16+
Output zips are placed in build/generated-packages/

common.sh

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
z3_git_version() {
4+
if [ -n "${Z3_GIT_VERSION}" ]; then
5+
echo "${Z3_GIT_VERSION}"
6+
else
7+
COMMIT_HASH="$(git rev-parse HEAD)"
8+
if [ -z "${COMMIT_HASH}" ]; then
9+
echo "Not a git repository" 1>&2
10+
exit 1
11+
fi
12+
COMMIT_DATE="$(git show -s --format=%ci | awk '{ print $1 }')"
13+
echo "${COMMIT_DATE}-${COMMIT_HASH}"
14+
fi
15+
}
16+

contrib/ci/Dockerfiles/z3_build.Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ ARG ASAN_BUILD
77
ARG ASAN_DSO
88
ARG BUILD_DOCS
99
ARG CC
10-
ARG COMMIT_HASH
1110
ARG CXX
1211
ARG DOTNET_BINDINGS
1312
ARG JAVA_BINDINGS
@@ -27,6 +26,7 @@ ARG USE_OPENMP
2726
ARG Z3_SRC_DIR=/home/user/z3_src
2827
ARG Z3_BUILD_TYPE
2928
ARG Z3_CMAKE_GENERATOR
29+
ARG Z3_GIT_VERSION
3030
ARG Z3_INSTALL_PREFIX
3131
ARG Z3_STATIC_BUILD
3232
ARG Z3_SYSTEM_TEST_GIT_REVISION
@@ -35,7 +35,7 @@ ARG Z3_VERBOSE_BUILD_OUTPUT
3535

3636
ENV \
3737
CC=${CC} \
38-
COMMIT_HASH=${COMMIT_HASH} \
38+
Z3_GIT_VERSION=${Z3_GIT_VERSION} \
3939
CXX=${CXX} \
4040
Z3_SRC_DIR=${Z3_SRC_DIR} \
4141
Z3_BUILD_DIR=/home/user/z3_build \
@@ -49,6 +49,8 @@ ADD --chown=user /examples ${Z3_SRC_DIR}/examples/
4949
ADD --chown=user /scripts ${Z3_SRC_DIR}/scripts/
5050
ADD --chown=user /src ${Z3_SRC_DIR}/src/
5151
ADD --chown=user *.txt *.md RELEASE_NOTES ${Z3_SRC_DIR}/
52+
ADD --chown=user /linux_common.sh ${Z3_SRC_DIR}/
53+
ADD --chown=user /common.sh ${Z3_SRC_DIR}/
5254
ADD --chown=user /package_z3_linux.sh ${Z3_SRC_DIR}/
5355
RUN ${Z3_SRC_DIR}/package_z3_linux.sh
5456

contrib/ci/scripts/travis_ci_linux_entry_point.sh

+13-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ set -x
66
set -e
77
set -o pipefail
88

9+
REPO_ROOT="${SCRIPT_DIR}/../../.."
10+
. "${REPO_ROOT}/common.sh"
11+
Z3_GIT_VERSION="$(z3_git_version)"
12+
PACKAGE_OUTPUT_DIR="${REPO_ROOT}/build/generated-packages"
13+
mkdir -p "${PACKAGE_OUTPUT_DIR}"
14+
915
DOCKER_FILE_DIR="$(cd ${SCRIPT_DIR}/../Dockerfiles; echo $PWD)"
1016

1117
: ${LINUX_BASE?"LINUX_BASE must be specified"}
@@ -71,7 +77,7 @@ if [ -n "${C_COMPILER}" ]; then
7177
BUILD_OPTS+=("--build-arg" "CC=${C_COMPILER}")
7278
fi
7379

74-
BUILD_OPTS+=("--build-arg" "COMMIT_HASH=$(git rev-parse HEAD)")
80+
BUILD_OPTS+=("--build-arg" "Z3_GIT_VERSION=${Z3_GIT_VERSION}")
7581

7682
# TravisCI reserves CXX for itself so use a different name
7783
if [ -n "${CXX_COMPILER}" ]; then
@@ -224,7 +230,13 @@ else
224230
fi
225231

226232
# Now build Z3 and test it using the created base image
233+
export POSTBUILD_IMAGE="batfish/z3-docker-postbuild-$(echo "${LINUX_BASE}" | tr -d '.')"
227234
docker build \
235+
-t "${POSTBUILD_IMAGE}" \
228236
-f "${DOCKER_BUILD_FILE}" \
229237
"${BUILD_OPTS[@]}" \
230238
.
239+
DOCKER_REPO_ROOT="/home/user/z3_src"
240+
Z3_ZIP="$(docker run "${POSTBUILD_IMAGE}" /bin/bash -c ". ${DOCKER_REPO_ROOT}/linux_common.sh && linux_zip_name")"
241+
docker cp "$(docker create "${POSTBUILD_IMAGE}"):${DOCKER_REPO_ROOT}/build/generated-packages/${Z3_ZIP}" "${PACKAGE_OUTPUT_DIR}/"
242+

linux_common.sh

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#!/usr/bin/env bash
2+
3+
REPO_ROOT="$( cd ${BASH_SOURCE[0]%/*} ; echo $PWD )"
4+
. "${REPO_ROOT}/common.sh"
5+
6+
z3_version() {
7+
local UBUNTU_VERSION_STRING="x64-ubuntu-$(lsb_release -rs)"
8+
echo "z3-${Z3_GIT_VERSION}-${UBUNTU_VERSION_STRING}"
9+
}
10+
11+
ubuntu_zip_name() {
12+
echo "$(z3_version).zip"
13+
}
14+
15+
linux_zip_name() {
16+
Z3_GIT_VERSION="$(z3_git_version)"
17+
PLATFORM_STRING="$(python -mplatform)"
18+
if [[ "${PLATFORM_STRING}" = *"Ubuntu"* ]]; then
19+
ubuntu_zip_name
20+
else
21+
echo "Unsupported platform: ${PLATFORM_STRING}" 1>&2
22+
exit 1
23+
fi
24+
}
25+

package_z3_linux.sh

+28-46
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,5 @@
11
#!/usr/bin/env bash
2-
3-
build_z3() {
4-
cd "${REPO_ROOT}"
5-
rm -rf build
6-
python scripts/mk_make.py --java
7-
cd build
8-
BUILD_DIR="${PWD}"
9-
make -j$(grep -i processor /proc/cpuinfo | wc -l)
10-
WORKING="$(mktemp -d)"
11-
cd "${WORKING}"
12-
umask 0022
13-
mkdir -p "${Z3_VERSION}/bin" "${Z3_VERSION}/lib"
14-
cp "${BUILD_DIR}/z3" "${Z3_VERSION}/bin/z3"
15-
chmod 0755 "${Z3_VERSION}/bin/z3"
16-
cp "${BUILD_DIR}/libz3.so" "${Z3_VERSION}/lib/libz3.so"
17-
chmod 0644 "${Z3_VERSION}/lib/libz3.so"
18-
cp "${BUILD_DIR}/libz3java.so" "${Z3_VERSION}/lib/libz3java.so"
19-
chmod 0644 "${Z3_VERSION}/lib/libz3java.so"
20-
cp "${BUILD_DIR}/../LICENSE.txt" "${Z3_VERSION}/LICENSE"
21-
chmod 0644 "${Z3_VERSION}/LICENSE"
22-
zip -r "${BUILD_DIR}/${Z3_ZIP}" "${Z3_VERSION}"
23-
cd "${BUILD_DIR}"
24-
rm -rf "${WORKING}"
25-
}
26-
27-
package_z3_ubuntu() {
28-
UBUNTU_VERSION_STRING="x64-ubuntu-$(lsb_release -rs)"
29-
Z3_VERSION="z3-${VERSION}-${UBUNTU_VERSION_STRING}"
30-
Z3_ZIP="${Z3_VERSION}.zip"
31-
build_z3
32-
}
33-
342
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE}")" && pwd)"
35-
if [ -z "${COMMIT_HASH}" ]; then
36-
COMMIT_HASH="$(git rev-parse HEAD)"
37-
fi
38-
if [ -z "${COMMIT_HASH}" ]; then
39-
echo "Not a git repository" 1>&2
40-
exit 1
41-
fi
423
if ! which python2.7; then
434
echo Missing python2.7 1>&2
445
exit 1
@@ -55,12 +16,33 @@ OLD_PWD="${PWD}"
5516
OLD_UMASK="$(umask)"
5617
set -x
5718
set -e
58-
VERSION="$(date "+%Y-%m-%d")-${COMMIT_HASH}"
59-
PLATFORM_STRING="$(python -mplatform)"
60-
if [[ "${PLATFORM_STRING}" = *"Ubuntu"* ]]; then
61-
package_z3_ubuntu
62-
else
63-
echo "Unsupported platform: ${PLATFORM_STRING}" 1>&2
64-
exit 1
19+
. "${REPO_ROOT}/linux_common.sh"
20+
Z3_ZIP="$(linux_zip_name)"
21+
if [ -z "${Z3_ZIP}" ]; then
22+
echo "Could not determine name of output zip" 1>&2
23+
exit 1
6524
fi
25+
cd "${REPO_ROOT}"
26+
rm -rf build
27+
python scripts/mk_make.py --java
28+
cd build
29+
BUILD_DIR="${PWD}"
30+
make -j$(grep -i processor /proc/cpuinfo | wc -l)
31+
WORKING="$(mktemp -d)"
32+
cd "${WORKING}"
33+
umask 0022
34+
Z3_VERSION="$(z3_version)"
35+
mkdir -p "${Z3_VERSION}/bin" "${Z3_VERSION}/lib"
36+
cp "${BUILD_DIR}/z3" "${Z3_VERSION}/bin/z3"
37+
chmod 0755 "${Z3_VERSION}/bin/z3"
38+
cp "${BUILD_DIR}/libz3.so" "${Z3_VERSION}/lib/libz3.so"
39+
chmod 0644 "${Z3_VERSION}/lib/libz3.so"
40+
cp "${BUILD_DIR}/libz3java.so" "${Z3_VERSION}/lib/libz3java.so"
41+
chmod 0644 "${Z3_VERSION}/lib/libz3java.so"
42+
cp "${BUILD_DIR}/../LICENSE.txt" "${Z3_VERSION}/LICENSE"
43+
chmod 0644 "${Z3_VERSION}/LICENSE"
44+
mkdir -p "${BUILD_DIR}/generated-packages"
45+
zip -r "${BUILD_DIR}/generated-packages/${Z3_ZIP}" "${Z3_VERSION}"
46+
cd "${BUILD_DIR}"
47+
rm -rf "${WORKING}"
6648

package_z3_osx.sh

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#!/usr/bin/env bash
22
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE}")" && pwd)"
3-
COMMIT_HASH="$(git rev-parse HEAD)"
4-
if [ -z "${COMMIT_HASH}" ]; then
5-
echo "Not a git repository" 1>&2
6-
exit 1
7-
fi
3+
set -x
4+
set -e
5+
. "${REPO_ROOT}/common.sh"
6+
Z3_GIT_VERSION="$(z3_git_version)"
87
if ! which python2.7; then
98
echo Missing python2.7 1>&2
109
exit 1
@@ -19,17 +18,15 @@ if ! which javac; then
1918
fi
2019
OLD_PWD="${PWD}"
2120
OLD_UMASK="$(umask)"
22-
VERSION="$(date "+%Y-%m-%d")-${COMMIT_HASH}"
21+
VERSION="${COMMIT_DATE}-${COMMIT_HASH}"
2322
OSX_VERSION="$(sw_vers | grep ProductVersion | awk '{ print $2; }')"
2423
if [ -z "${BREW_LLVM_PREFIX}" ]; then
2524
NO_OPENMP_SUFFIX="-without-openmp"
2625
else
2726
NO_OPENMP_SUFFIX=
2827
fi
29-
Z3_VERSION="z3-${VERSION}-x64-osx-${OSX_VERSION}${NO_OPENMP_SUFFIX}"
28+
Z3_VERSION="z3-${Z3_GIT_VERSION}-x64-osx-${OSX_VERSION}${NO_OPENMP_SUFFIX}"
3029
Z3_ZIP="${Z3_VERSION}.zip"
31-
set -x
32-
set -e
3330
cd "${REPO_ROOT}"
3431
rm -rf build
3532
python scripts/mk_make.py --java USE_OPENMP=1
@@ -58,7 +55,8 @@ if [ -n "${BREW_LLVM_PREFIX}" ]; then
5855
cp "${BREW_LLVM_PREFIX}/lib/libomp.dylib" "${Z3_VERSION}/lib/libomp.dylib"
5956
chmod 0644 "${Z3_VERSION}/lib/libomp.dylib"
6057
fi
61-
zip -r "${BUILD_DIR}/${Z3_ZIP}" "${Z3_VERSION}"
58+
mkdir -p "${BUILD_DIR}/generated-packages"
59+
zip -r "${BUILD_DIR}/generated-packages/${Z3_ZIP}" "${Z3_VERSION}"
6260
cd "${BUILD_DIR}"
6361
rm -rf "${WORKING}"
6462

0 commit comments

Comments
 (0)