diff --git a/.appveyor.yml b/.appveyor.yml index 8f2fa65dc..d9ebf748e 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -8,21 +8,60 @@ environment: COMMAND: rmdir -v deps/rocksdb && ln -sv /usr/src/rocksdb deps && ./autogen.sh && ./configure --enable-assert && make install && construct -smoketest localhost matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 - DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-gcc-8 +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-gcc-8 # - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 # DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-gcc-9 - - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 - DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-clang-9 +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-gcc-10 - - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 - DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-gcc-10 +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-clang-9 # - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 # DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-clang-10 +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-clang-11 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-20.04-clang-12 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-gcc-8 + + - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 + DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-gcc-9 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-gcc-10 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-gcc-11 + + - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 + DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-gcc-12 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-clang-10 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-clang-11 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-clang-12 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-clang-13 + +# - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 +# DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-base-clang-14 + + - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804 + DOCKER_IMAGE: jevolk/construct:ubuntu-22.04-full-clang-14 + for: - build_script: diff --git a/docker/build-and-push-images.sh b/docker/build-and-push-images.sh index cfb3a970b..af200dd4c 100755 --- a/docker/build-and-push-images.sh +++ b/docker/build-and-push-images.sh @@ -1,15 +1,50 @@ #!/bin/sh BASEDIR=$(dirname "$0") +ACCT=jevolk +REPO=construct +#ARGS="--build-arg skiprocks=1" -docker build -t jevolk/construct:ubuntu-20.04 $BASEDIR/ubuntu/base -docker build -t jevolk/construct:ubuntu-20.04-clang-9 $BASEDIR/ubuntu/clang-9 -docker build -t jevolk/construct:ubuntu-20.04-clang-10 $BASEDIR/ubuntu/clang-10 -docker build -t jevolk/construct:ubuntu-20.04-gcc-8 $BASEDIR/ubuntu/gcc-8 -docker build -t jevolk/construct:ubuntu-20.04-gcc-9 $BASEDIR/ubuntu/gcc-9 -docker build -t jevolk/construct:ubuntu-20.04-gcc-10 $BASEDIR/ubuntu/gcc-10 +#docker build -t $ACCT/$REPO:ubuntu-20.04 $BASEDIR/ubuntu/20.04/base +#docker build -t $ACCT/$REPO:ubuntu-20.04-gcc-8 $BASEDIR/ubuntu/20.04/gcc-8 +#docker build -t $ACCT/$REPO:ubuntu-20.04-gcc-9 $BASEDIR/ubuntu/20.04/gcc-9 +#docker build -t $ACCT/$REPO:ubuntu-20.04-gcc-10 $BASEDIR/ubuntu/20.04/gcc-10 +#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-9 $BASEDIR/ubuntu/20.04/clang-9 +#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-10 $BASEDIR/ubuntu/20.04/clang-10 +#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-11 $BASEDIR/ubuntu/20.04/clang-11 +#docker build -t $ACCT/$REPO:ubuntu-20.04-clang-12 $BASEDIR/ubuntu/20.04/clang-12 -docker push jevolk/construct:ubuntu-20.04-clang-9 -docker push jevolk/construct:ubuntu-20.04-clang-10 -docker push jevolk/construct:ubuntu-20.04-gcc-8 -docker push jevolk/construct:ubuntu-20.04-gcc-9 -docker push jevolk/construct:ubuntu-20.04-gcc-10 +#docker push $ACCT/$REPO:ubuntu-20.04-gcc-8 +#docker push $ACCT/$REPO:ubuntu-20.04-gcc-9 +#docker push $ACCT/$REPO:ubuntu-20.04-gcc-10 +#docker push $ACCT/$REPO:ubuntu-20.04-clang-9 +#docker push $ACCT/$REPO:ubuntu-20.04-clang-10 +#docker push $ACCT/$REPO:ubuntu-20.04-clang-11 +#docker push $ACCT/$REPO:ubuntu-20.04-clang-12 + +docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base $BASEDIR/ubuntu/22.04/base +docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full $BASEDIR/ubuntu/22.04/full +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-gcc-8 $BASEDIR/ubuntu/22.04/base-gcc-8 +docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-gcc-9 $BASEDIR/ubuntu/22.04/base-gcc-9 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-gcc-10 $BASEDIR/ubuntu/22.04/base-gcc-10 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-gcc-11 $BASEDIR/ubuntu/22.04/base-gcc-11 +docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-gcc-12 $BASEDIR/ubuntu/22.04/base-gcc-12 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-clang-10 $BASEDIR/ubuntu/22.04/base-clang-10 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-clang-11 $BASEDIR/ubuntu/22.04/base-clang-11 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-clang-12 $BASEDIR/ubuntu/22.04/base-clang-12 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-clang-13 $BASEDIR/ubuntu/22.04/base-clang-13 +#docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-clang-14 $BASEDIR/ubuntu/22.04/base-clang-14 +docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-clang-14 $BASEDIR/ubuntu/22.04/full-clang-14 + +docker push $ACCT/$REPO:ubuntu-22.04-base +docker push $ACCT/$REPO:ubuntu-22.04-full +#docker push $ACCT/$REPO:ubuntu-22.04-base-gcc-8 +docker push $ACCT/$REPO:ubuntu-22.04-base-gcc-9 +#docker push $ACCT/$REPO:ubuntu-22.04-base-gcc-10 +#docker push $ACCT/$REPO:ubuntu-22.04-base-gcc-11 +docker push $ACCT/$REPO:ubuntu-22.04-base-gcc-12 +#docker push $ACCT/$REPO:ubuntu-22.04-base-clang-10 +#docker push $ACCT/$REPO:ubuntu-22.04-base-clang-11 +#docker push $ACCT/$REPO:ubuntu-22.04-base-clang-12 +#docker push $ACCT/$REPO:ubuntu-22.04-base-clang-13 +#docker push $ACCT/$REPO:ubuntu-22.04-base-clang-14 +docker push $ACCT/$REPO:ubuntu-22.04-full-clang-14 diff --git a/docker/ubuntu/base/Dockerfile b/docker/ubuntu/20.04/base/Dockerfile similarity index 98% rename from docker/ubuntu/base/Dockerfile rename to docker/ubuntu/20.04/base/Dockerfile index 78558d613..466d74a92 100644 --- a/docker/ubuntu/base/Dockerfile +++ b/docker/ubuntu/20.04/base/Dockerfile @@ -18,6 +18,7 @@ RUN \ curl \ git \ libbz2-dev \ + liblz4-dev \ libgraphicsmagick1-dev \ libicu-dev \ libjemalloc-dev \ diff --git a/docker/ubuntu/clang-10/Dockerfile b/docker/ubuntu/20.04/clang-10/Dockerfile similarity index 100% rename from docker/ubuntu/clang-10/Dockerfile rename to docker/ubuntu/20.04/clang-10/Dockerfile diff --git a/docker/ubuntu/20.04/clang-11/Dockerfile b/docker/ubuntu/20.04/clang-11/Dockerfile new file mode 100644 index 000000000..6b0fdb97c --- /dev/null +++ b/docker/ubuntu/20.04/clang-11/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-20.04 + +ENV CC clang-11 +ENV CXX clang++-11 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-11 llvm-11-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/20.04/clang-12/Dockerfile b/docker/ubuntu/20.04/clang-12/Dockerfile new file mode 100644 index 000000000..f1ff9f6ae --- /dev/null +++ b/docker/ubuntu/20.04/clang-12/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-20.04 + +ENV CC clang-12 +ENV CXX clang++-12 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-12 llvm-12-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/clang-9/Dockerfile b/docker/ubuntu/20.04/clang-9/Dockerfile similarity index 100% rename from docker/ubuntu/clang-9/Dockerfile rename to docker/ubuntu/20.04/clang-9/Dockerfile diff --git a/docker/ubuntu/gcc-10/Dockerfile b/docker/ubuntu/20.04/gcc-10/Dockerfile similarity index 100% rename from docker/ubuntu/gcc-10/Dockerfile rename to docker/ubuntu/20.04/gcc-10/Dockerfile diff --git a/docker/ubuntu/gcc-8/Dockerfile b/docker/ubuntu/20.04/gcc-8/Dockerfile similarity index 100% rename from docker/ubuntu/gcc-8/Dockerfile rename to docker/ubuntu/20.04/gcc-8/Dockerfile diff --git a/docker/ubuntu/gcc-9/Dockerfile b/docker/ubuntu/20.04/gcc-9/Dockerfile similarity index 100% rename from docker/ubuntu/gcc-9/Dockerfile rename to docker/ubuntu/20.04/gcc-9/Dockerfile diff --git a/docker/ubuntu/22.04/base-clang-10/Dockerfile b/docker/ubuntu/22.04/base-clang-10/Dockerfile new file mode 100644 index 000000000..b2d61ec6b --- /dev/null +++ b/docker/ubuntu/22.04/base-clang-10/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CC clang-10 +ENV CXX clang++-10 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-10 llvm-10-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/22.04/base-clang-11/Dockerfile b/docker/ubuntu/22.04/base-clang-11/Dockerfile new file mode 100644 index 000000000..4cea74478 --- /dev/null +++ b/docker/ubuntu/22.04/base-clang-11/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CC clang-11 +ENV CXX clang++-11 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-11 llvm-11-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/22.04/base-clang-12/Dockerfile b/docker/ubuntu/22.04/base-clang-12/Dockerfile new file mode 100644 index 000000000..2563037ad --- /dev/null +++ b/docker/ubuntu/22.04/base-clang-12/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CC clang-12 +ENV CXX clang++-12 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-12 llvm-12-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/22.04/base-clang-13/Dockerfile b/docker/ubuntu/22.04/base-clang-13/Dockerfile new file mode 100644 index 000000000..8b000a440 --- /dev/null +++ b/docker/ubuntu/22.04/base-clang-13/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CC clang-13 +ENV CXX clang++-13 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-13 llvm-13-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/22.04/base-clang-14/Dockerfile b/docker/ubuntu/22.04/base-clang-14/Dockerfile new file mode 100644 index 000000000..12c474ca8 --- /dev/null +++ b/docker/ubuntu/22.04/base-clang-14/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CC clang-14 +ENV CXX clang++-14 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-14 llvm-14-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/22.04/base-gcc-10/Dockerfile b/docker/ubuntu/22.04/base-gcc-10/Dockerfile new file mode 100644 index 000000000..49db991f8 --- /dev/null +++ b/docker/ubuntu/22.04/base-gcc-10/Dockerfile @@ -0,0 +1,9 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CXX g++-10 +ENV CC gcc-10 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y g++-10 gcc-10 \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/ubuntu/22.04/base-gcc-11/Dockerfile b/docker/ubuntu/22.04/base-gcc-11/Dockerfile new file mode 100644 index 000000000..43ec7aeab --- /dev/null +++ b/docker/ubuntu/22.04/base-gcc-11/Dockerfile @@ -0,0 +1,9 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CXX g++-11 +ENV CC gcc-11 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y g++-11 gcc-11 \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/ubuntu/22.04/base-gcc-12/Dockerfile b/docker/ubuntu/22.04/base-gcc-12/Dockerfile new file mode 100644 index 000000000..b62ee3481 --- /dev/null +++ b/docker/ubuntu/22.04/base-gcc-12/Dockerfile @@ -0,0 +1,9 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CXX g++-12 +ENV CC gcc-12 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y g++-12 gcc-12 \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/ubuntu/22.04/base-gcc-8/Dockerfile b/docker/ubuntu/22.04/base-gcc-8/Dockerfile new file mode 100644 index 000000000..f964c0d63 --- /dev/null +++ b/docker/ubuntu/22.04/base-gcc-8/Dockerfile @@ -0,0 +1,9 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CXX g++-8 +ENV CC gcc-8 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y g++-8 gcc-8 \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/ubuntu/22.04/base-gcc-9/Dockerfile b/docker/ubuntu/22.04/base-gcc-9/Dockerfile new file mode 100644 index 000000000..bed0f840e --- /dev/null +++ b/docker/ubuntu/22.04/base-gcc-9/Dockerfile @@ -0,0 +1,9 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV CXX g++-9 +ENV CC gcc-9 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y g++-9 gcc-9 \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/docker/ubuntu/22.04/base/Dockerfile b/docker/ubuntu/22.04/base/Dockerfile new file mode 100644 index 000000000..d8bcbc3e2 --- /dev/null +++ b/docker/ubuntu/22.04/base/Dockerfile @@ -0,0 +1,67 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + autoconf \ + autoconf-archive \ + autoconf2.13 \ + automake \ + autotools-dev \ + boost1.74 \ + build-essential \ + ca-certificates \ + cmake \ + curl \ + git \ + liblz4-dev \ + libnss-db \ + libmagic-dev \ + libsodium-dev \ + libssl-dev \ + libtool \ + libzstd-dev \ + shtool \ + xz-utils && \ + update-ca-certificates && \ + apt-get clean && \ + apt-get autoremove --purge -y && \ + rm -rf /var/lib/apt/lists/* + +ENV ROCKSDB_VERSION=6.11.4 +ARG skiprocks + +RUN \ + if test -n "$skiprocks"; then \ + exit 0; \ + fi && \ + cd /usr/src && \ + curl -sL https://codeload.github.com/facebook/rocksdb/tar.gz/refs/tags/v${ROCKSDB_VERSION} -o rocksdb-${ROCKSDB_VERSION}.tar.gz && \ + tar xfvz rocksdb-${ROCKSDB_VERSION}.tar.gz && \ + rm rocksdb-${ROCKSDB_VERSION}.tar.gz && \ + ln -s /usr/src/rocksdb-${ROCKSDB_VERSION} /usr/src/rocksdb && \ + cd /usr/src/rocksdb-${ROCKSDB_VERSION} && \ + CFLAGS="-g0" \ + LDFLAGS="-Wl,--strip-all" \ + cmake -H. -Bbuild \ + -DCMAKE_RULE_MESSAGES:BOOL=OFF \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ + -DWITH_JNI=0 \ + -DWITH_TESTS=0 \ + -DWITH_BENCHMARK_TOOLS=0 \ + -DWITH_CORE_TOOLS=0 \ + -DFAIL_ON_WARNINGS=0 \ + -DCMAKE_BUILD_TYPE=Release \ + -DWITH_GFLAGS=0 \ + -DWITH_LIBURING=0 \ + -DWITH_LZ4=1 \ + -DWITH_ZSTD=1 \ + -DUSE_RTTI=1 \ + -DBUILD_SHARED_LIBS=1 && \ + cmake --build build --target install && \ + rm -rf build + +RUN mkdir /build +WORKDIR /build diff --git a/docker/ubuntu/22.04/full-clang-14/Dockerfile b/docker/ubuntu/22.04/full-clang-14/Dockerfile new file mode 100644 index 000000000..26f421147 --- /dev/null +++ b/docker/ubuntu/22.04/full-clang-14/Dockerfile @@ -0,0 +1,10 @@ +FROM jevolk/construct:ubuntu-22.04-full + +ENV CC clang-14 +ENV CXX clang++-14 + +RUN apt-get update \ + && apt-get install --no-install-recommends -y clang-14 llvm-14-dev \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + diff --git a/docker/ubuntu/22.04/full/Dockerfile b/docker/ubuntu/22.04/full/Dockerfile new file mode 100644 index 000000000..36df66265 --- /dev/null +++ b/docker/ubuntu/22.04/full/Dockerfile @@ -0,0 +1,16 @@ +FROM jevolk/construct:ubuntu-22.04-base + +ENV DEBIAN_FRONTEND=noninteractive + +RUN \ + apt-get update && \ + apt-get install --no-install-recommends -y \ + opencl-headers \ + libgraphicsmagick1-dev \ + libicu-dev \ + libjemalloc-dev \ + libopencl-clang-dev \ + libpng-dev && \ + apt-get clean && \ + apt-get autoremove --purge -y && \ + rm -rf /var/lib/apt/lists/*