mirror of
https://github.com/matrix-construct/construct
synced 2025-02-18 01:30:12 +01:00
docker: Refactor into build matrix. [ci skip]
This commit is contained in:
parent
1b67a12a5f
commit
7929733978
20 changed files with 365 additions and 314 deletions
|
@ -1,4 +1,7 @@
|
|||
FROM --platform=$TARGETPLATFORM alpine:3.16.1
|
||||
ARG dist_name alpine
|
||||
ARG dist_version 3.16
|
||||
|
||||
FROM --platform=$TARGETPLATFORM ${dist_name}:${dist_version}
|
||||
|
||||
ENV packages="\
|
||||
boost-chrono \
|
|
@ -1,8 +1,11 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG dist_name
|
||||
ARG dist_version
|
||||
ARG feature
|
||||
ARG machine
|
||||
|
||||
FROM ${acct}/${repo}:alpine-3.16-${feature}-${TARGETARCH}
|
||||
FROM ${acct}/${repo}:${dist_name}-${dist_version}-${feature}-${machine}
|
||||
|
||||
ARG cc
|
||||
ARG cxx
|
||||
|
@ -12,6 +15,7 @@ ARG extra_packages_dev2
|
|||
ARG rocksdb_version 7.4.3
|
||||
ARG rocksdb_url
|
||||
ARG ctor_url https://github.com/matrix-construct/construct
|
||||
ARG machine_spec
|
||||
|
||||
ENV CC ${cc}
|
||||
ENV CXX ${cxx}
|
||||
|
@ -20,12 +24,12 @@ ENV CONFIG_SHELL bash
|
|||
ENV rocksdb_version ${rocksdb_version}
|
||||
ENV rocksdb_url https://codeload.github.com/facebook/rocksdb/tar.gz/refs/tags/v${rocksdb_version}
|
||||
ENV ctor_url ${ctor_url}
|
||||
ENV machine_spec ${machine_spec}
|
||||
|
||||
ENV packages_dev="\
|
||||
${packages_dev} \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
autoconf2.13 \
|
||||
automake \
|
||||
bash \
|
||||
binutils-gold \
|
||||
|
@ -50,7 +54,7 @@ RUN true \
|
|||
&& ln -sv /usr/src/rocksdb construct/deps/rocksdb \
|
||||
&& cd /usr/src/construct \
|
||||
&& ./autogen.sh \
|
||||
&& (./configure --disable-iou || (cat config.log; exit 1)) \
|
||||
&& (./configure --disable-iou --enable-generic --with-machine="${machine_spec}" || (cat config.log; exit 1)) \
|
||||
&& make -j `nproc` EXTRA_LDFLAGS="-Wl,--strip-all" install \
|
||||
&& rm -rf /usr/src/rocksdb \
|
||||
&& rm -rf /usr/src/construct \
|
|
@ -1,7 +1,10 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG dist_name
|
||||
ARG dist_version
|
||||
ARG machine
|
||||
|
||||
FROM ${acct}/${repo}:alpine-3.16-base-${TARGETARCH}
|
||||
FROM ${acct}/${repo}:${dist_name}-${dist_version}-base-${machine}
|
||||
|
||||
ENV packages="\
|
||||
freetype \
|
|
@ -1,9 +1,12 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG dist_name
|
||||
ARG dist_version
|
||||
ARG feature
|
||||
ARG cc
|
||||
ARG machine
|
||||
|
||||
FROM ${acct}/${repo}:alpine-3.16-${feature}-built-${cc}-${TARGETARCH}
|
||||
FROM ${acct}/${repo}:${dist_name}-${dist_version}-${feature}-built-${cc}-${machine}
|
||||
|
||||
ENV ircd_mods_unload_check=false
|
||||
WORKDIR /root
|
|
@ -3,144 +3,195 @@
|
|||
BASEDIR=$(dirname "$0")
|
||||
ACCT=jevolk
|
||||
REPO=construct
|
||||
ctor_url="https://github.com/matrix-construct/construct"
|
||||
rocksdb_version=7.4.3
|
||||
|
||||
ARGS_=""
|
||||
ARGS_="$ARGS_ --compress=true"
|
||||
ARGS_="$ARGS_ --build-arg acct=$ACCT"
|
||||
ARGS_="$ARGS_ --build-arg repo=$REPO"
|
||||
ARGS_="$ARGS_ --build-arg ctor_url=$ctor_url"
|
||||
ARGS_="$ARGS_ --build-arg rocksdb_version=$rocksdb_version"
|
||||
CTOR_URL="https://github.com/matrix-construct/construct"
|
||||
|
||||
export DOCKER_BUILDKIT=1
|
||||
#export BUILDKIT_PROGRESS=plain
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Alpine 3.16
|
||||
#
|
||||
features="base full"
|
||||
distros="ubuntu-22.04 ubuntu-22.10 alpine-3.16 alpine-3.17"
|
||||
machines="arm64 amd64 amd64-avx amd64-avx2 amd64-avx512"
|
||||
toolchains="gcc-10 gcc-11 gcc-12 clang-14 clang-15"
|
||||
stages="built test"
|
||||
|
||||
#
|
||||
# L0 - Base featured image
|
||||
#
|
||||
matrix()
|
||||
{
|
||||
for feature_ in $features; do
|
||||
for distro_ in $distros; do
|
||||
for machine_ in $machines; do
|
||||
for toolchain_ in $toolchains; do
|
||||
for stage_ in $stages; do
|
||||
build $feature_ $distro_ $machine_ $toolchain_ $stage_
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
}
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-amd64 $BASEDIR/alpine/3.16/base
|
||||
build()
|
||||
{
|
||||
feature=$1
|
||||
distro=$2
|
||||
machine=$3
|
||||
toolchain=$4
|
||||
stage=$5
|
||||
|
||||
#
|
||||
# L1 - Fully featured image
|
||||
#
|
||||
dist_name=$(echo $distro | cut -d"-" -f1)
|
||||
dist_version=$(echo $distro | cut -d"-" -f2)
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-amd64 $BASEDIR/alpine/3.16/full
|
||||
args=""
|
||||
args="$args --compress=true"
|
||||
args="$args --build-arg acct=$ACCT"
|
||||
args="$args --build-arg repo=$REPO"
|
||||
args="$args --build-arg ctor_url=$CTOR_URL"
|
||||
args="$args --build-arg dist_name=${dist_name}"
|
||||
args="$args --build-arg dist_version=${dist_version}"
|
||||
args="$args --build-arg feature=${feature}"
|
||||
args="$args --build-arg machine=${machine}"
|
||||
|
||||
#
|
||||
# L2/L3 - Built/Test images
|
||||
#
|
||||
args_dist $dist_name $dist_version
|
||||
if test $? -ne 0; then return 1; fi
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=base"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=gcc"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=g++"
|
||||
ARGS="$ARGS --build-arg cc=gcc --build-arg cxx=g++"
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64 $BASEDIR/alpine/3.16/built
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-test-gcc-amd64 $BASEDIR/alpine/3.16/test
|
||||
docker push $ACCT/$REPO:alpine-3.16-base-built-gcc-amd64
|
||||
args_toolchain $toolchain $dist_name $dist_version
|
||||
if test $? -ne 0; then return 1; fi
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=base"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=clang"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=llvm"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev2=llvm-dev"
|
||||
ARGS="$ARGS --build-arg cc=clang --build-arg cxx=clang++"
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-built-clang-amd64 $BASEDIR/alpine/3.16/built
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-base-test-clang-amd64 $BASEDIR/alpine/3.16/test
|
||||
docker push $ACCT/$REPO:alpine-3.16-base-built-clang-amd64
|
||||
args_machine $machine
|
||||
if test $? -ne 0; then return 1; fi
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=full"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=gcc"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=g++"
|
||||
ARGS="$ARGS --build-arg cc=gcc --build-arg cxx=g++"
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64 $BASEDIR/alpine/3.16/built
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-test-gcc-amd64 $BASEDIR/alpine/3.16/test
|
||||
docker push $ACCT/$REPO:alpine-3.16-full-built-gcc-amd64
|
||||
args_platform $machine
|
||||
if test $? -ne 0; then return 1; fi
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=full"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=clang"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=llvm"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev2=llvm-dev"
|
||||
ARGS="$ARGS --build-arg cc=clang --build-arg cxx=clang++"
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-built-clang-amd64 $BASEDIR/alpine/3.16/built
|
||||
docker build $ARGS -t $ACCT/$REPO:alpine-3.16-full-test-clang-amd64 $BASEDIR/alpine/3.16/test
|
||||
docker push $ACCT/$REPO:alpine-3.16-full-built-clang-amd64
|
||||
# Intermediate stage build; usually cached from prior iteration.
|
||||
tag="$ACCT/$REPO:${distro}-${feature}-${machine}"
|
||||
cmd="$args -t $tag $BASEDIR/${dist_name}/${feature}"
|
||||
docker build $cmd
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# Ubuntu 22.04
|
||||
#
|
||||
# Leaf stage build; unique to each iteration.
|
||||
tag="$ACCT/$REPO:${distro}-${feature}-${stage}-${toolchain}-${machine}"
|
||||
cmd="$args -t $tag $BASEDIR/${dist_name}/${stage}"
|
||||
docker build $cmd
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# L0 - Base featured image
|
||||
#
|
||||
args_dist()
|
||||
{
|
||||
case $1 in
|
||||
alpine)
|
||||
case $2 in
|
||||
3.16)
|
||||
args="$args --build-arg rocksdb_version=7.2.2"
|
||||
return 0
|
||||
;;
|
||||
3.17)
|
||||
args="$args --build-arg rocksdb_version=7.7.3"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ubuntu)
|
||||
case $2 in
|
||||
22.04)
|
||||
args="$args --build-arg rocksdb_version=7.4.3"
|
||||
args="$args --build-arg boost_version=1.74"
|
||||
args="$args --build-arg icu_version=70"
|
||||
return 0
|
||||
;;
|
||||
22.10)
|
||||
args="$args --build-arg rocksdb_version=7.10.2"
|
||||
args="$args --build-arg boost_version=1.74"
|
||||
args="$args --build-arg icu_version=71"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-amd64 $BASEDIR/ubuntu/22.04/base
|
||||
args_toolchain()
|
||||
{
|
||||
_name=$(echo $1 | cut -d"-" -f1)
|
||||
_version=$(echo $1 | cut -d"-" -f2)
|
||||
|
||||
#
|
||||
# L1 - Fully featured image
|
||||
#
|
||||
case $2 in
|
||||
alpine)
|
||||
toolchain=$_name
|
||||
case $1 in
|
||||
gcc*)
|
||||
args="$args --build-arg extra_packages_dev=gcc"
|
||||
args="$args --build-arg extra_packages_dev1=g++"
|
||||
args="$args --build-arg cc=gcc --build-arg cxx=g++"
|
||||
return 0
|
||||
;;
|
||||
clang*)
|
||||
args="$args --build-arg extra_packages_dev=clang"
|
||||
args="$args --build-arg extra_packages_dev1=llvm"
|
||||
args="$args --build-arg extra_packages_dev2=llvm-dev"
|
||||
args="$args --build-arg cc=clang --build-arg cxx=clang++"
|
||||
test $3 != "3.16"
|
||||
return $?
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ubuntu)
|
||||
case $1 in
|
||||
gcc*)
|
||||
args="$args --build-arg extra_packages_dev=gcc-${_version}"
|
||||
args="$args --build-arg extra_packages_dev1=g++-${_version}"
|
||||
args="$args --build-arg cc=gcc-${_version} --build-arg cxx=g++-${_version}"
|
||||
return 0
|
||||
;;
|
||||
clang*)
|
||||
args="$args --build-arg extra_packages_dev=clang-${_version}"
|
||||
args="$args --build-arg extra_packages_dev1=llvm-${_version}-dev"
|
||||
args="$args --build-arg extra_packages_dev2=llvm-spirv-${_version}"
|
||||
args="$args --build-arg cc=clang-${_version} --build-arg cxx=clang++-${_version}"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-amd64 $BASEDIR/ubuntu/22.04/full
|
||||
args_machine()
|
||||
{
|
||||
case $1 in
|
||||
amd64)
|
||||
args="$args --build-arg machine_spec=arch=amdfam10"
|
||||
;;
|
||||
amd64-avx)
|
||||
args="$args --build-arg machine_spec=arch=sandybridge"
|
||||
args="$args --build-arg rocksdb_avx=1"
|
||||
;;
|
||||
amd64-avx2)
|
||||
args="$args --build-arg machine_spec=arch=haswell"
|
||||
args="$args --build-arg rocksdb_avx2=1"
|
||||
;;
|
||||
amd64-avx512)
|
||||
args="$args --build-arg machine_spec=arch=skylake-avx512"
|
||||
args="$args --build-arg rocksdb_avx2=1"
|
||||
;;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# L2/L3 - Build/Built/Test
|
||||
#
|
||||
args_platform()
|
||||
{
|
||||
case $1 in
|
||||
amd64*)
|
||||
args="$args --platform linux/amd64"
|
||||
test $(uname -m) = "x86_64"
|
||||
return $?
|
||||
;;
|
||||
arm64*)
|
||||
args="$args --platform linux/arm64"
|
||||
test $(uname -m) = "aarch64"
|
||||
return $?
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
}
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=base"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=gcc-10"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=g++-10"
|
||||
ARGS="$ARGS --build-arg cc=gcc-10 --build-arg cxx=g++-10"
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-build-gcc-10-amd64 $BASEDIR/ubuntu/22.04/build
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-built-gcc-10-amd64 $BASEDIR/ubuntu/22.04/built
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-test-gcc-10-amd64 $BASEDIR/ubuntu/22.04/test
|
||||
docker push $ACCT/$REPO:ubuntu-22.04-base-build-gcc-10-amd64
|
||||
docker push $ACCT/$REPO:ubuntu-22.04-base-built-gcc-10-amd64
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=base"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=gcc-12"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=g++-12"
|
||||
ARGS="$ARGS --build-arg cc=gcc-12 --build-arg cxx=g++-12"
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-build-gcc-12-amd64 $BASEDIR/ubuntu/22.04/build
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-built-gcc-12-amd64 $BASEDIR/ubuntu/22.04/built
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-base-test-gcc-12-amd64 $BASEDIR/ubuntu/22.04/test
|
||||
docker push $ACCT/$REPO:ubuntu-22.04-base-build-gcc-12-amd64
|
||||
docker push $ACCT/$REPO:ubuntu-22.04-base-built-gcc-12-amd64
|
||||
|
||||
ARGS="$ARGS_"
|
||||
ARGS="$ARGS --platform linux/amd64"
|
||||
ARGS="$ARGS --build-arg feature=full"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev=clang-15"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev1=llvm-15-dev"
|
||||
ARGS="$ARGS --build-arg extra_packages_dev2=llvm-spirv-15"
|
||||
ARGS="$ARGS --build-arg cc=clang-15 --build-arg cxx=clang++-15"
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-build-clang-15-amd64 $BASEDIR/ubuntu/22.04/build
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-built-clang-15-amd64 $BASEDIR/ubuntu/22.04/built
|
||||
docker build $ARGS -t $ACCT/$REPO:ubuntu-22.04-full-test-clang-15-amd64 $BASEDIR/ubuntu/22.04/test
|
||||
docker push $ACCT/$REPO:ubuntu-22.04-full-build-clang-15-amd64
|
||||
docker push $ACCT/$REPO:ubuntu-22.04-full-built-clang-15-amd64
|
||||
matrix
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
FROM ubuntu:20.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN \
|
||||
apt-get update && \
|
||||
apt-get install --no-install-recommends -y software-properties-common && \
|
||||
apt-get update && \
|
||||
apt-get install --no-install-recommends -y \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
autoconf2.13 \
|
||||
automake \
|
||||
autotools-dev \
|
||||
boost1.71 \
|
||||
build-essential \
|
||||
cmake \
|
||||
curl \
|
||||
git \
|
||||
libbz2-dev \
|
||||
liblz4-dev \
|
||||
libgraphicsmagick1-dev \
|
||||
libicu-dev \
|
||||
libjemalloc-dev \
|
||||
libmagic-dev \
|
||||
libnss-db \
|
||||
libsodium-dev \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libzstd-dev \
|
||||
shtool \
|
||||
xz-utils && \
|
||||
apt-get purge -y software-properties-common && \
|
||||
apt-get clean && \
|
||||
apt-get autoremove --purge -y && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV ROCKSDB_VERSION=6.6.4
|
||||
|
||||
RUN \
|
||||
cd /usr/src && \
|
||||
curl -sL https://github.com/facebook/rocksdb/archive/v${ROCKSDB_VERSION}.tar.gz -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" \
|
||||
cmake -H. -Bbuild \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DWITH_TESTS=0 \
|
||||
-DWITH_TOOLS=0 \
|
||||
-DUSE_RTTI=1 \
|
||||
-DWITH_LZ4=1 \
|
||||
-DWITH_GFLAGS=0 \
|
||||
-DBUILD_SHARED_LIBS=1 && \
|
||||
cmake --build build --target install && \
|
||||
rm -rf build
|
||||
|
||||
RUN mkdir /build
|
||||
WORKDIR /build
|
|
@ -1,10 +0,0 @@
|
|||
FROM jevolk/construct:ubuntu-20.04
|
||||
|
||||
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/*
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
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/*
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
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/*
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
FROM jevolk/construct:ubuntu-20.04
|
||||
|
||||
ENV CC clang-9
|
||||
ENV CXX clang++-9
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install --no-install-recommends -y clang-9 llvm-9-dev \
|
||||
&& apt-get clean -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
FROM jevolk/construct:ubuntu-20.04
|
||||
|
||||
ENV CXX g++-10
|
||||
ENV CC gcc-10
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install --no-install-recommends -y software-properties-common \
|
||||
&& apt-get update \
|
||||
&& apt-get install --no-install-recommends -y g++-10 gcc-10 \
|
||||
&& apt-get clean -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
|
@ -1,9 +0,0 @@
|
|||
FROM jevolk/construct:ubuntu-20.04
|
||||
|
||||
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/*
|
|
@ -1,11 +0,0 @@
|
|||
FROM jevolk/construct:ubuntu-20.04
|
||||
|
||||
ENV CXX g++-9
|
||||
ENV CC gcc-9
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install --no-install-recommends -y software-properties-common \
|
||||
&& apt-get update \
|
||||
&& apt-get install --no-install-recommends -y g++-9 gcc-9 \
|
||||
&& apt-get clean -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
|
@ -1,37 +0,0 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG feature
|
||||
|
||||
FROM ${acct}/${repo}:ubuntu-22.04-${feature}-${TARGETARCH}
|
||||
|
||||
ARG cc
|
||||
ARG cxx
|
||||
ARG extra_packages_dev
|
||||
ARG extra_packages_dev1
|
||||
ARG extra_packages_dev2
|
||||
ARG ctor_url https://github.com/matrix-construct/construct
|
||||
|
||||
ENV CC ${cc}
|
||||
ENV CXX ${cxx}
|
||||
ENV ctor_url ${ctor_url}
|
||||
|
||||
ENV packages_dev="\
|
||||
${packages_dev} \
|
||||
autoconf \
|
||||
autoconf-archive \
|
||||
autoconf2.13 \
|
||||
automake \
|
||||
autotools-dev \
|
||||
git \
|
||||
libtool \
|
||||
shtool \
|
||||
${extra_packages_dev} \
|
||||
${extra_packages_dev1} \
|
||||
${extra_packages_dev2} \
|
||||
"
|
||||
|
||||
RUN true \
|
||||
&& eval ${do_install} ${packages_dev} \
|
||||
&& eval ${do_fetch_rocksdb} \
|
||||
&& eval ${do_clean} \
|
||||
&& true
|
|
@ -1,11 +0,0 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG feature
|
||||
ARG cc
|
||||
|
||||
FROM ${acct}/${repo}:ubuntu-22.04-${feature}-built-${cc}-${TARGETARCH}
|
||||
|
||||
WORKDIR /root
|
||||
RUN true \
|
||||
&& construct -debug -smoketest localhost \
|
||||
&& true
|
133
docker/ubuntu/base/Dockerfile
Normal file
133
docker/ubuntu/base/Dockerfile
Normal file
|
@ -0,0 +1,133 @@
|
|||
ARG dist_name ubuntu
|
||||
ARG dist_version 22.04
|
||||
|
||||
FROM --platform=$TARGETPLATFORM ${dist_name}:${dist_version}
|
||||
|
||||
ARG skiprocks
|
||||
ARG rocksdb_version 7.4.5
|
||||
ARG rocksdb_url
|
||||
ARG rocksdb_avx 0
|
||||
ARG rocksdb_avx2 0
|
||||
ARG boost_version 1.74
|
||||
ARG icu_version 70
|
||||
|
||||
ENV rocksdb_version ${rocksdb_version}
|
||||
ENV rocksdb_url https://codeload.github.com/facebook/rocksdb/tar.gz/refs/tags/v${rocksdb_version}
|
||||
ENV rocksdb_avx ${rocksdb_avx}
|
||||
ENV rocksdb_avx2 ${rocksdb_avx2}
|
||||
ENV boost_version ${boost_version}
|
||||
ENV icu_version ${icu_version}
|
||||
|
||||
ENV packages="\
|
||||
ca-certificates \
|
||||
libatomic1 \
|
||||
libjemalloc2 \
|
||||
libboost-chrono${boost_version}.0 \
|
||||
libboost-context${boost_version}.0 \
|
||||
libboost-coroutine${boost_version}.0 \
|
||||
libboost-system${boost_version}.0 \
|
||||
libboost-thread${boost_version}.0 \
|
||||
libicu${icu_version} \
|
||||
libnss-db \
|
||||
libsodium23 \
|
||||
libssl3 \
|
||||
liblz4-1 \
|
||||
libmagic1 \
|
||||
libzstd1 \
|
||||
"
|
||||
|
||||
ENV packages_rocksdb_dev="\
|
||||
build-essential \
|
||||
cmake \
|
||||
libjemalloc-dev \
|
||||
liblz4-dev \
|
||||
libzstd-dev \
|
||||
xz-utils \
|
||||
"
|
||||
|
||||
ENV packages_dev="\
|
||||
${packages_rocksdb_dev} \
|
||||
libboost-chrono${boost_version}-dev \
|
||||
libboost-context${boost_version}-dev \
|
||||
libboost-coroutine${boost_version}-dev \
|
||||
libboost-system${boost_version}-dev \
|
||||
libboost-thread${boost_version}-dev \
|
||||
libicu-dev \
|
||||
libmagic-dev \
|
||||
libsodium-dev \
|
||||
libssl-dev \
|
||||
"
|
||||
|
||||
ENV rocksdb_cmake="\
|
||||
-DCMAKE_RULE_MESSAGES:BOOL=OFF \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
-DFAIL_ON_WARNINGS=0 \
|
||||
-DUSE_RTTI=1 \
|
||||
-DPORTABLE=1 \
|
||||
-DFORCE_AVX=${rocksdb_avx} \
|
||||
-DFORCE_AVX2=${rocksdb_avx2} \
|
||||
-DWITH_JNI=0 \
|
||||
-DWITH_TESTS=0 \
|
||||
-DWITH_BENCHMARK_TOOLS=0 \
|
||||
-DWITH_CORE_TOOLS=0 \
|
||||
-DWITH_GFLAGS=0 \
|
||||
-DWITH_LIBURING=0 \
|
||||
-DWITH_JEMALLOC=1 \
|
||||
-DWITH_LZ4=1 \
|
||||
-DWITH_ZSTD=1 \
|
||||
"
|
||||
|
||||
ENV do_install true \
|
||||
&& export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get update \
|
||||
&& apt-get install --no-install-recommends -y -f
|
||||
|
||||
ENV do_purge true \
|
||||
&& export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get purge -y
|
||||
|
||||
ENV do_clean true \
|
||||
&& export DEBIAN_FRONTEND=noninteractive \
|
||||
&& apt-get clean \
|
||||
&& apt-get autoremove --purge -y \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& true
|
||||
|
||||
ENV do_fetch_rocksdb true \
|
||||
&& eval ${do_install} curl \
|
||||
&& cd /usr/src \
|
||||
&& curl -sL ${rocksdb_url} -o rocksdb-${rocksdb_version}.tar.gz \
|
||||
&& tar xfvz rocksdb-${rocksdb_version}.tar.gz \
|
||||
&& rm rocksdb-${rocksdb_version}.tar.gz \
|
||||
&& mv /usr/src/rocksdb-${rocksdb_version} /usr/src/rocksdb \
|
||||
&& cd - \
|
||||
&& eval ${do_purge} curl \
|
||||
&& true
|
||||
|
||||
RUN true \
|
||||
&& eval ${do_install} ${packages} \
|
||||
&& update-ca-certificates \
|
||||
&& eval ${do_clean} \
|
||||
&& mkdir /build \
|
||||
&& true
|
||||
|
||||
WORKDIR /build
|
||||
RUN true \
|
||||
&& if test -n "$skiprocks"; then \
|
||||
exit 0; \
|
||||
fi \
|
||||
&& eval ${do_install} ${packages_rocksdb_dev} \
|
||||
&& eval ${do_fetch_rocksdb} \
|
||||
&& cd /usr/src/rocksdb \
|
||||
&& \
|
||||
CFLAGS="-g0 -ftls-model=initial-exec" \
|
||||
LDFLAGS="-Wl,--strip-all" \
|
||||
cmake -H. -Bbuild ${rocksdb_cmake} \
|
||||
&& cmake --build build --target install --parallel `nproc` \
|
||||
&& rm -rf /usr/lib/$(uname -m)-linux-gnu/librocksdb.a \
|
||||
&& rm -rf /usr/src/rocksdb \
|
||||
&& eval ${do_purge} ${packages_rocksdb_dev} \
|
||||
&& eval ${do_clean} \
|
||||
&& true
|
|
@ -1,11 +1,19 @@
|
|||
FROM ubuntu:22.04
|
||||
ARG distribution
|
||||
|
||||
FROM --platform=$TARGETPLATFORM $distribution
|
||||
|
||||
ARG skiprocks
|
||||
ARG rocksdb_version 7.4.5
|
||||
ARG rocksdb_url
|
||||
ARG rocksdb_portable 1
|
||||
ARG rocksdb_avx 0
|
||||
ARG rocksdb_avx2 0
|
||||
|
||||
ENV rocksdb_version ${rocksdb_version}
|
||||
ENV rocksdb_url https://codeload.github.com/facebook/rocksdb/tar.gz/refs/tags/v${rocksdb_version}
|
||||
ENV rocksdb_portable ${rocksdb_portable}
|
||||
ENV rocksdb_avx ${rocksdb_avx}
|
||||
ENV rocksdb_avx2 ${rocksdb_avx2}
|
||||
|
||||
ENV packages="\
|
||||
ca-certificates \
|
||||
|
@ -50,19 +58,22 @@ libssl-dev \
|
|||
ENV rocksdb_cmake="\
|
||||
-DCMAKE_RULE_MESSAGES:BOOL=OFF \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
-DFAIL_ON_WARNINGS=0 \
|
||||
-DUSE_RTTI=1 \
|
||||
-DPORTABLE=${rocksdb_portable} \
|
||||
-DFORCE_AVX=${rocksdb_avx} \
|
||||
-DFORCE_AVX2=${rocksdb_avx2} \
|
||||
-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_JEMALLOC=1 \
|
||||
-DWITH_LZ4=1 \
|
||||
-DWITH_ZSTD=1 \
|
||||
-DUSE_RTTI=1 \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
"
|
||||
|
||||
ENV do_install true \
|
|
@ -1,8 +1,11 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG dist_name
|
||||
ARG dist_version
|
||||
ARG feature
|
||||
ARG machine
|
||||
|
||||
FROM ${acct}/${repo}:ubuntu-22.04-${feature}-${TARGETARCH}
|
||||
FROM ${acct}/${repo}:${dist_name}-${dist_version}-${feature}-${machine}
|
||||
|
||||
ARG cc
|
||||
ARG cxx
|
||||
|
@ -10,10 +13,12 @@ ARG extra_packages_dev
|
|||
ARG extra_packages_dev1
|
||||
ARG extra_packages_dev2
|
||||
ARG ctor_url https://github.com/matrix-construct/construct
|
||||
ARG machine_spec
|
||||
|
||||
ENV CC ${cc}
|
||||
ENV CXX ${cxx}
|
||||
ENV ctor_url ${ctor_url}
|
||||
ENV machine_spec ${machine_spec}
|
||||
|
||||
ENV packages_dev="\
|
||||
${packages_dev} \
|
||||
|
@ -38,7 +43,7 @@ RUN true \
|
|||
&& rmdir -v deps/rocksdb \
|
||||
&& ln -sv /usr/src/rocksdb deps \
|
||||
&& ./autogen.sh \
|
||||
&& ./configure \
|
||||
&& ./configure --enable-generic --with-machine="${machine_spec}" \
|
||||
&& make -j `nproc` \
|
||||
&& make install \
|
||||
&& cd .. \
|
|
@ -1,7 +1,10 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG dist_name
|
||||
ARG dist_version
|
||||
ARG machine
|
||||
|
||||
FROM ${acct}/${repo}:ubuntu-22.04-base-${TARGETARCH}
|
||||
FROM ${acct}/${repo}:${dist_name}-${dist_version}-base-${machine}
|
||||
|
||||
ENV packages="\
|
||||
libgraphicsmagick-q16-3 \
|
14
docker/ubuntu/test/Dockerfile
Normal file
14
docker/ubuntu/test/Dockerfile
Normal file
|
@ -0,0 +1,14 @@
|
|||
ARG acct
|
||||
ARG repo
|
||||
ARG dist_name
|
||||
ARG dist_version
|
||||
ARG feature
|
||||
ARG cc
|
||||
ARG machine
|
||||
|
||||
FROM ${acct}/${repo}:${dist_name}-${dist_version}-${feature}-built-${cc}-${machine}
|
||||
|
||||
WORKDIR /root
|
||||
RUN true \
|
||||
&& construct -debug -smoketest localhost \
|
||||
&& true
|
Loading…
Add table
Reference in a new issue