From f74ed2ecb8dfad619c46f09a1011383c8d93f8d6 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sun, 20 Apr 2025 12:08:27 +0300 Subject: [PATCH 1/9] ci: replaced Ubuntu 20.04 GitHub actions runners with Ubuntu 22.04 runners due to deprecation of Ubuntu 20.04 runners (https://github.com/actions/runner-images/issues/11101). Signed-off-by: Marat Abrarov --- .github/workflows/pr-compile-check.yaml | 12 ++++++------ .github/workflows/unit-tests.yaml | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pr-compile-check.yaml b/.github/workflows/pr-compile-check.yaml index 56fbc192aef..5aae5b9a324 100644 --- a/.github/workflows/pr-compile-check.yaml +++ b/.github/workflows/pr-compile-check.yaml @@ -33,7 +33,7 @@ jobs: # Sanity check for compilation using system libraries pr-compile-system-libs: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 60 strategy: fail-fast: false @@ -51,9 +51,9 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install -y curl gcc-7 g++-7 clang-6.0 libsystemd-dev gcovr libyaml-dev libluajit-5.1-dev \ + sudo apt-get install -y curl gcc-9 g++-9 clang-12 libsystemd-dev gcovr libyaml-dev libluajit-5.1-dev \ libnghttp2-dev libjemalloc-dev - sudo ln -s /usr/bin/llvm-symbolizer-6.0 /usr/bin/llvm-symbolizer || true + sudo ln -s /usr/bin/llvm-symbolizer-12 /usr/bin/llvm-symbolizer || true mkdir -p /tmp/libbacktrace/build && \ curl -L https://github.com/ianlancetaylor/libbacktrace/archive/8602fda.tar.gz | \ tar --strip-components=1 -xzC /tmp/libbacktrace/ && \ @@ -66,9 +66,9 @@ jobs: run: | export nparallel=$(( $(getconf _NPROCESSORS_ONLN) > 8 ? 8 : $(getconf _NPROCESSORS_ONLN) )) echo "CC = $CC, CXX = $CXX, FLB_OPT = $FLB_OPT" - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 90 - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 90 - sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 90 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90 + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 90 cmake $GLOBAL_OPTS $FLB_OPT ../ make -j $nparallel working-directory: build diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 5b407d97270..9b0f7417d21 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -35,7 +35,7 @@ on: jobs: run-ubuntu-unit-tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 60 strategy: fail-fast: false @@ -69,8 +69,8 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install -y gcc-7 g++-7 clang-6.0 libsystemd-dev gcovr libyaml-dev libbpf-dev linux-tools-common - sudo ln -s /usr/bin/llvm-symbolizer-6.0 /usr/bin/llvm-symbolizer || true + sudo apt-get install -y gcc-9 g++-9 clang-12 libsystemd-dev gcovr libyaml-dev libbpf-dev linux-tools-common + sudo ln -s /usr/bin/llvm-symbolizer-12 /usr/bin/llvm-symbolizer || true - uses: actions/checkout@v4 @@ -82,9 +82,9 @@ jobs: - name: ${{ matrix.compiler.cc }} & ${{ matrix.compiler.cxx }} - ${{ matrix.flb_option }} run: | echo "CC = $CC, CXX = $CXX, FLB_OPT = $FLB_OPT" - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 90 - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 90 - sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 90 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 + sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90 + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 90 sudo usermod -a -G systemd-journal $(id -un) sudo -E su -p $(id -un) -c "PATH=$PATH ci/scripts/run-unit-tests.sh" env: @@ -182,7 +182,7 @@ jobs: # We chain this after Linux one as there are CPU time costs for QEMU emulation needs: - run-ubuntu-unit-tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 timeout-minutes: 60 strategy: fail-fast: false From ae336805aab2efdeaaddd13c8508d9dd8801bd57 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sun, 6 Apr 2025 14:57:07 +0300 Subject: [PATCH 2/9] ci: frozen version of CMake to avoid issues with third-party library CMake projects not compatible with CMake 4.0 (https://github.com/actions/runner-images/issues/11926). Signed-off-by: Marat Abrarov --- .github/workflows/call-build-macos.yaml | 7 ++++ .github/workflows/call-build-windows.yaml | 4 +++ .../workflows/call-windows-unit-tests.yaml | 3 ++ .github/workflows/pr-compile-check.yaml | 7 ++++ .github/workflows/unit-tests.yaml | 35 ++++++++++++++++++- 5 files changed, 55 insertions(+), 1 deletion(-) diff --git a/.github/workflows/call-build-macos.yaml b/.github/workflows/call-build-macos.yaml index 23cc9d79403..48d83b1d876 100644 --- a/.github/workflows/call-build-macos.yaml +++ b/.github/workflows/call-build-macos.yaml @@ -76,8 +76,10 @@ jobs: config: - name: "Apple Silicon macOS runner" runner: macos-14 + cmake_version: "3.31.6" - name: "Intel macOS runner" runner: macos-14-large + cmake_version: "3.31.6" steps: - name: Checkout repository @@ -90,6 +92,11 @@ jobs: brew update brew install bison flex libyaml openssl pkgconfig || true + - name: Install cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "${{ matrix.config.cmake_version }}" + - name: Build Fluent Bit packages run: | export LIBRARY_PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib:$LIBRARY_PATH diff --git a/.github/workflows/call-build-windows.yaml b/.github/workflows/call-build-windows.yaml index 3b501b3d8b1..1b33bb5113c 100644 --- a/.github/workflows/call-build-windows.yaml +++ b/.github/workflows/call-build-windows.yaml @@ -85,16 +85,19 @@ jobs: openssl_dir: C:\vcpkg\packages\openssl_x86-windows-static cmake_additional_opt: "" vcpkg_triplet: x86-windows-static + cmake_version: "3.31.6" - name: "Windows 64bit" arch: x64 openssl_dir: C:\vcpkg\packages\openssl_x64-windows-static cmake_additional_opt: "" vcpkg_triplet: x64-windows-static + cmake_version: "3.31.6" - name: "Windows 64bit (Arm64)" arch: amd64_arm64 openssl_dir: C:\vcpkg\packages\openssl_arm64-windows-static cmake_additional_opt: "-DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_SYSTEM_PROCESSOR=ARM64" vcpkg_triplet: arm64-windows-static + cmake_version: "3.31.6" permissions: contents: read # Default environment variables can be overridden below. To prevent library pollution - without this other random libraries may be found on the path leading to failures. @@ -113,6 +116,7 @@ jobs: Copy-Item -Path C:\WinFlexBison/win_bison.exe C:\WinFlexBison/bison.exe Copy-Item -Path C:\WinFlexBison/win_flex.exe C:\WinFlexBison/flex.exe echo "C:\WinFlexBison" | Out-File -FilePath $env:GITHUB_PATH -Append + choco install cmake --version "${{ matrix.config.cmake_version }}" --force env: WINFLEXBISON: https://github.com/lexxmark/winflexbison/releases/download/v2.5.22/win_flex_bison-2.5.22.zip shell: pwsh diff --git a/.github/workflows/call-windows-unit-tests.yaml b/.github/workflows/call-windows-unit-tests.yaml index c24fedc0861..1fdfd2481c1 100644 --- a/.github/workflows/call-windows-unit-tests.yaml +++ b/.github/workflows/call-windows-unit-tests.yaml @@ -39,11 +39,13 @@ jobs: openssl_dir: C:\vcpkg\packages\openssl_x86-windows-static cmake_additional_opt: "" vcpkg_triplet: x86-windows-static + cmake_version: "3.31.6" - name: "Windows 64bit" arch: x64 openssl_dir: C:\vcpkg\packages\openssl_x64-windows-static cmake_additional_opt: "" vcpkg_triplet: x64-windows-static + cmake_version: "3.31.6" permissions: contents: read # Default environment variables can be overridden below. To prevent library pollution - without this other random libraries may be found on the path leading to failures. @@ -62,6 +64,7 @@ jobs: Copy-Item -Path C:\WinFlexBison/win_bison.exe C:\WinFlexBison/bison.exe Copy-Item -Path C:\WinFlexBison/win_flex.exe C:\WinFlexBison/flex.exe echo "C:\WinFlexBison" | Out-File -FilePath $env:GITHUB_PATH -Append + choco install cmake --version "${{ matrix.config.cmake_version }}" --force env: WINFLEXBISON: https://github.com/lexxmark/winflexbison/releases/download/v2.5.22/win_flex_bison-2.5.22.zip shell: pwsh diff --git a/.github/workflows/pr-compile-check.yaml b/.github/workflows/pr-compile-check.yaml index 5aae5b9a324..fce4d507b98 100644 --- a/.github/workflows/pr-compile-check.yaml +++ b/.github/workflows/pr-compile-check.yaml @@ -40,6 +40,8 @@ jobs: matrix: flb_option: - "-DFLB_PREFER_SYSTEM_LIBS=On" + cmake_version: + - "3.31.6" compiler: - gcc: cc: gcc @@ -59,6 +61,11 @@ jobs: tar --strip-components=1 -xzC /tmp/libbacktrace/ && \ pushd /tmp/libbacktrace/build && ../configure && make && sudo make install && popd + - name: Install cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "${{ matrix.cmake_version }}" + - name: Checkout Fluent Bit code uses: actions/checkout@v4 diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 9b0f7417d21..36789adc1b1 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -51,6 +51,8 @@ jobs: - "-DFLB_SANITIZE_THREAD=On" - "-DFLB_SIMD=On" - "-DFLB_SIMD=Off" + cmake_version: + - "3.31.6" compiler: - gcc: cc: gcc @@ -72,6 +74,11 @@ jobs: sudo apt-get install -y gcc-9 g++-9 clang-12 libsystemd-dev gcovr libyaml-dev libbpf-dev linux-tools-common sudo ln -s /usr/bin/llvm-symbolizer-12 /usr/bin/llvm-symbolizer || true + - name: Install cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "${{ matrix.cmake_version }}" + - uses: actions/checkout@v4 - uses: actions/checkout@v4 @@ -106,9 +113,16 @@ jobs: - "-DFLB_JEMALLOC=Off" - "-DFLB_SANITIZE_MEMORY=On" - "-DFLB_SANITIZE_THREAD=On" + cmake_version: + - "3.31.6" permissions: contents: read steps: + - name: Install cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: "${{ matrix.cmake_version }}" + - uses: actions/checkout@v4 - uses: actions/checkout@v4 with: @@ -144,6 +158,9 @@ jobs: unit_test_option: "-DFLB_TESTS_INTERNAL=On" compiler_cc: gcc compiler_cxx: g++ + cmake_version: "3.31.6" + cmake_home: "/opt/cmake" + steps: - name: Checkout Fluent Bit code uses: actions/checkout@v4 @@ -151,8 +168,19 @@ jobs: - name: Setup environment run: | sudo apt-get update - sudo apt-get install -y gcc-9 g++-9 clang-12 cmake flex bison libsystemd-dev gcovr libyaml-dev libbpf-dev linux-tools-common + sudo apt-get install -y gcc-9 g++-9 clang-12 flex bison libsystemd-dev gcovr libyaml-dev libbpf-dev linux-tools-common curl tar gzip sudo ln -s /usr/bin/llvm-symbolizer-12 /usr/bin/llvm-symbolizer || true + sudo mkdir -p "${CMAKE_HOME}" + cmake_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" + cmake_dist="$(mktemp --suffix ".tar.gz")" + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_url} -> ${cmake_dist}" + curl -jksSL -o "${cmake_dist}" "${cmake_url}" + echo "Extracting CMake ${CMAKE_VERSION}: ${cmake_dist} -> ${CMAKE_HOME}" + sudo tar -xzf "${cmake_dist}" -C "${CMAKE_HOME}" --strip-components 1 + rm "${cmake_dist}" + env: + CMAKE_HOME: ${{ matrix.config.cmake_home }} + CMAKE_VERSION: ${{ matrix.config.cmake_version }} - name: Build and test with arm runners run: | @@ -169,6 +197,10 @@ jobs: echo "CC = ${{ matrix.config.compiler_cc }}, CXX = ${{ matrix.config.compiler_cxx }}, FLB_OPT = $FLB_OPT" + if [[ -n "${CMAKE_HOME}" ]]; then + export PATH="${CMAKE_HOME}/bin:${PATH}" + fi + cmake ${FLB_OPT} ../ make -j $nparallel ctest -j $nparallel --build-run-dir . --output-on-failure @@ -177,6 +209,7 @@ jobs: CC: ${{ matrix.config.compiler_cc }} CXX: ${{ matrix.config.compiler_cxx }} CALYPTIA_FLEET_TOKEN: ${{ secrets.CALYPTIA_FLEET_TOKEN }} + CMAKE_HOME: ${{ matrix.config.cmake_home }} run-qemu-ubuntu-unit-tests: # We chain this after Linux one as there are CPU time costs for QEMU emulation From 7759963d43a6b79212a9da15b3b66d63316e5a6e Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sun, 20 Apr 2025 13:48:41 +0300 Subject: [PATCH 3/9] ci: ensuring CMake version is not greater than the latest supported one for unit tests on s390x and riscv64. Signed-off-by: Marat Abrarov --- .github/workflows/unit-tests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 36789adc1b1..2fc7ee8844e 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -239,7 +239,8 @@ jobs: --volume "/etc/machine-id:/etc/machine-id" install: | apt-get update - apt-get install -y gcc-12 g++-12 libyaml-dev cmake flex bison libssl-dev libbpf-dev linux-tools-common + apt-get install -y gcc-12 g++-12 libyaml-dev flex bison libssl-dev libbpf-dev linux-tools-common + apt-get satisfy -y cmake "cmake (<< 4.0)" update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 90 update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 90 From 4b932be74a4beb117801cd8a1817d77d222ffde1 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sun, 6 Apr 2025 19:00:19 +0300 Subject: [PATCH 4/9] dockerfile: exact and configurable version of CMake in docker images to ensure no build issue due to incompatibility with new CMake versions. Signed-off-by: Marat Abrarov --- dockerfiles/Dockerfile | 28 +++- dockerfiles/Dockerfile.centos7 | 23 ++- dockerfiles/Dockerfile.windows | 182 +++++++++++++++++------ packaging/distros/amazonlinux/Dockerfile | 76 ++++++++-- packaging/distros/centos/Dockerfile | 111 +++++++++++--- packaging/distros/debian/Dockerfile | 114 +++++++++++--- packaging/distros/ubuntu/Dockerfile | 180 +++++++++++++++++----- 7 files changed, 557 insertions(+), 157 deletions(-) diff --git a/dockerfiles/Dockerfile b/dockerfiles/Dockerfile index 881dbd7c454..1da15f06847 100644 --- a/dockerfiles/Dockerfile +++ b/dockerfiles/Dockerfile @@ -41,7 +41,6 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/ build-essential \ curl \ ca-certificates \ - cmake \ git \ make \ tar \ @@ -56,9 +55,22 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/ flex \ bison \ libyaml-dev \ + gzip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* +ENV CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + +RUN mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" + # Must be run from root of repo WORKDIR /src/fluent-bit/ COPY . ./ @@ -254,11 +266,23 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/ net-tools mtr netcat-openbsd bridge-utils iperf ngrep \ openssl \ htop atop strace iotop sysstat ncdu logrotate hdparm pciutils psmisc tree pv \ - cmake make tar flex bison \ + make tar flex bison \ libssl-dev libsasl2-dev libsystemd-dev/bookworm-backports zlib1g-dev libpq-dev libyaml-dev postgresql-server-dev-all \ + gzip \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* +ENV CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" + +RUN mkdir -p "${CMAKE_HOME}" && \ + cmake_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" + RUN rm -f /usr/bin/qemu-*-static COPY --from=builder /fluent-bit /fluent-bit diff --git a/dockerfiles/Dockerfile.centos7 b/dockerfiles/Dockerfile.centos7 index 73aae0cde51..c099a154981 100644 --- a/dockerfiles/Dockerfile.centos7 +++ b/dockerfiles/Dockerfile.centos7 @@ -7,17 +7,28 @@ FROM centos:7 RUN sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo && \ sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo && \ yum -y update && \ - yum install -y rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ - cyrus-sasl-lib cyrus-sasl-devel openssl openss-libs openssl-devel libcurl-devel \ - postgresql-libs postgresql-devel postgresql-server postgresql libyaml-devel && \ - yum install -y epel-release && \ - yum install -y cmake3 + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ + postgresql-libs postgresql-devel postgresql-server postgresql libyaml-devel \ + tar gzip + +ENV CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + +RUN mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" COPY . /src/ WORKDIR /src/build -RUN cmake3 -DCMAKE_INSTALL_PREFIX=/opt/fluent-bit/ -DCMAKE_INSTALL_SYSCONFDIR=/etc/ \ +RUN cmake -DCMAKE_INSTALL_PREFIX=/opt/fluent-bit/ -DCMAKE_INSTALL_SYSCONFDIR=/etc/ \ -DFLB_RELEASE=On -DFLB_TRACE=On \ -DFLB_TESTS_INTERNAL=On -DFLB_TESTS_RUNTIME=On \ -DFLB_SQLDB=On -DFLB_HTTP_SERVER=On \ diff --git a/dockerfiles/Dockerfile.windows b/dockerfiles/Dockerfile.windows index e62e47f1b2f..0f2850553a6 100644 --- a/dockerfiles/Dockerfile.windows +++ b/dockerfiles/Dockerfile.windows @@ -16,59 +16,147 @@ ARG WINDOWS_VERSION=ltsc2019 # Builder Image - Windows Server Core FROM mcr.microsoft.com/windows/servercore:$WINDOWS_VERSION AS builder-base -RUN setx /M PATH "%PATH%;C:\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\WinFlexBison;C:\dev\vcpkg" - SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -WORKDIR /local - -# Install Visual Studio 2019 -ADD https://aka.ms/vs/16/release/vs_buildtools.exe /local/vs_buildtools.exe -ADD https://aka.ms/vs/16/release/channel /local/VisualStudio.chman - -RUN Start-Process /local/vs_buildtools.exe ` - -ArgumentList '--quiet ', '--wait ', '--norestart ', '--nocache', ` - '--installPath C:\BuildTools', ` - '--channelUri C:\local\VisualStudio.chman', ` - '--installChannelUri C:\local\VisualStudio.chman', ` - '--add Microsoft.VisualStudio.Workload.VCTools', ` - '--includeRecommended' -NoNewWindow -Wait; - -ADD https://github.com/lexxmark/winflexbison/releases/download/v2.5.22/win_flex_bison-2.5.22.zip /local/win_flex_bison.zip -RUN Expand-Archive /local/win_flex_bison.zip -Destination /WinFlexBison; ` - Copy-Item -Path /WinFlexBison/win_bison.exe /WinFlexBison/bison.exe; ` - Copy-Item -Path /WinFlexBison/win_flex.exe /WinFlexBison/flex.exe; - -# Technique from https://github.com/StefanScherer/dockerfiles-windows/blob/master/mongo/3.6/Dockerfile +# Install Visual Studio Build Tools 2019 WORKDIR /local -ADD https://aka.ms/vs/15/release/vc_redist.x64.exe /local/vc_redist.x64.exe - -WORKDIR /fluent-bit/bin/ -RUN Start-Process /local/vc_redist.x64.exe -ArgumentList '/install', '/quiet', '/norestart' -NoNewWindow -Wait; ` - Copy-Item -Path /Windows/System32/msvcp140.dll -Destination /fluent-bit/bin/; ` - Copy-Item -Path /Windows/System32/vccorlib140.dll -Destination /fluent-bit/bin/; ` - Copy-Item -Path /Windows/System32/vcruntime140.dll -Destination /fluent-bit/bin/; +ENV MSVS_BUILD_TOOLS_VERSION="16" ` + MSVS_BUILD_TOOLS_DOWNLOAD_URL="https://aka.ms/vs" ` + MSVS_HOME="C:\BuildTools" +RUN $msvs_build_tools_dist_name=\"vs_buildtools.exe\"; ` + $msvs_build_tools_dist=\"${env:TMP}\${msvs_build_tools_dist_name}\"; ` + $msvs_build_tools_channel=\"C:\local\VisualStudio.chman\"; ` + $msvs_build_tools_dist_url=\"${env:MSVS_BUILD_TOOLS_DOWNLOAD_URL}/${env:MSVS_BUILD_TOOLS_VERSION}/release/${msvs_build_tools_dist_name}\"; ` + $msvs_build_tools_channel_url=\"${env:MSVS_BUILD_TOOLS_DOWNLOAD_URL}/${env:MSVS_BUILD_TOOLS_VERSION}/release/channel\"; ` + Write-Host \"Downloading Visual Studio Build Tools...\"; ` + Write-Host \"${msvs_build_tools_dist_url} -> ${msvs_build_tools_dist}\"; ` + Write-Host \"${msvs_build_tools_channel_url} -> ${msvs_build_tools_channel}\"; ` + Invoke-WebRequest -OutFile \"${msvs_build_tools_dist}\" \"${msvs_build_tools_dist_url}\"; ` + Invoke-WebRequest -OutFile \"${msvs_build_tools_channel}\" \"${msvs_build_tools_channel_url}\"; ` + Write-Host \"Installing Visual Studio Build Tools into ${env:MSVS_HOME}...\"; ` + Start-Process \"${msvs_build_tools_dist}\" ` + -ArgumentList '--quiet ', '--wait ', '--norestart ', '--nocache', ` + \"--installPath ${env:MSVS_HOME}\", ` + \"--channelUri ${msvs_build_tools_channel}\", ` + \"--installChannelUri ${msvs_build_tools_channel}\", ` + '--add Microsoft.VisualStudio.Workload.VCTools', ` + '--includeRecommended' -NoNewWindow -Wait; ` + Remove-Item -Force \"${msvs_build_tools_dist}\"; + +ENV MSVC_RUNTIME_VERSION="15" ` + MSVC_RUNTIME_DOWNLOAD_URL="https://aka.ms/vs" +RUN $msvc_runtime_dist_name=\"vc_redist.x64.exe\"; ` + $msvc_runtime_dist=\"${env:TMP}\${msvc_runtime_dist_name}\"; ` + $msvc_runtime_url=\"${env:MSVC_RUNTIME_DOWNLOAD_URL}/${env:MSVC_RUNTIME_VERSION}/release/${msvc_runtime_dist_name}\"; ` + Write-Host \"Downloading Microsoft Visual C++ Redistributable...\"; ` + Write-Host \"${msvc_runtime_url} -> ${msvc_runtime_dist}\"; ` + Invoke-WebRequest -OutFile \"${msvc_runtime_dist}\" \"${msvc_runtime_url}\"; ` + Write-Host \"Installing Microsoft Visual C++ runtime libraries...\"; ` + Start-Process \"${msvc_runtime_dist}\" -ArgumentList '/install', '/quiet', '/norestart' -NoNewWindow -Wait; ` + Remove-Item -Force \"${msvc_runtime_dist}\"; + +ENV CMAKE_HOME="C:\cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + +RUN if ([System.Version] \"${env:CMAKE_VERSION}\" -ge [System.Version] \"3.20.0\") { ` + $cmake_dist_base_name=\"cmake-${env:CMAKE_VERSION}-windows-x86_64\" ` + } else { ` + if ([System.Version] \"${env:CMAKE_VERSION}\" -ge [System.Version] \"3.6.0\") { ` + $cmake_dist_base_name=\"cmake-${env:CMAKE_VERSION}-win64-x64\" ` + } else { ` + $cmake_dist_base_name=\"cmake-${env:CMAKE_VERSION}-win32-x86\" ` + } ` + }; ` + $cmake_dist_name=\"${cmake_dist_base_name}.zip\"; ` + $cmake_dist=\"${env:TMP}\${cmake_dist_name}\"; ` + $cmake_download_url=\"${env:CMAKE_URL}/v${env:CMAKE_VERSION}/${cmake_dist_name}\"; ` + Write-Host \"Downloading CMake...\"; ` + Write-Host \"${cmake_download_url} -> ${cmake_dist}\"; ` + Invoke-WebRequest -OutFile \"${cmake_dist}\" \"${cmake_download_url}\"; ` + $cmake_temp_dir=\"${env:TMP}\${cmake_dist_base_name}\"; ` + Write-Host \"Extracting CMake...\"; ` + Write-Host \"${cmake_dist} -> ${cmake_temp_dir}\"; ` + Expand-Archive \"${cmake_dist}\" -Destination \"${env:TMP}\"; ` + Remove-Item -Force \"${cmake_dist}\"; ` + Write-Host \"Moving CMake...\"; ` + Write-Host \"${cmake_temp_dir} -> ${env:CMAKE_HOME}\"; ` + [System.IO.Directory]::Move(\"${cmake_temp_dir}\", \"${env:CMAKE_HOME}\"); ` + $env:PATH=\"${env:PATH};${env:CMAKE_HOME}\bin\"; ` + Write-Host \"Setting PATH...\"; ` + Write-Host \"${env:PATH}\"; ` + [Environment]::SetEnvironmentVariable(\"PATH\", \"${env:PATH}\", [EnvironmentVariableTarget]::Machine); + +ENV WIN_FLEX_BISON_VERSION="2.5.22" ` + WIN_FLEX_BISON_HOME="C:\WinFlexBison" ` + WIN_FLEX_BISON_DOWNLOAD_URL="https://github.com/lexxmark/winflexbison/releases/download" + +RUN $win_flex_bison_dist_base_name=\"win_flex_bison-${env:WIN_FLEX_BISON_VERSION}\"; ` + $win_flex_bison_dist_name=\"${win_flex_bison_dist_base_name}.zip\"; ` + $win_flex_bison_dist=\"${env:TMP}\${win_flex_bison_dist_name}\"; ` + $win_flex_bison_url=\"${env:WIN_FLEX_BISON_DOWNLOAD_URL}/v${env:WIN_FLEX_BISON_VERSION}/${win_flex_bison_dist_name}\"; ` + Write-Host \"Downloading WinFlexBison...\"; ` + Write-Host \"${win_flex_bison_url} -> ${win_flex_bison_dist}\"; ` + Invoke-WebRequest -OutFile \"${win_flex_bison_dist}\" \"${win_flex_bison_url}\"; ` + Write-Host \"Extracting WinFlexBison...\"; ` + Write-Host \"${win_flex_bison_dist} -> ${env:WIN_FLEX_BISON_HOME}\"; ` + Expand-Archive \"${win_flex_bison_dist}\" -Destination \"${env:WIN_FLEX_BISON_HOME}\"; ` + Remove-Item -Force \"${win_flex_bison_dist}\"; ` + Write-Host \"Copying...\"; ` + Write-Host \"${env:WIN_FLEX_BISON_HOME}\win_bison.exe -> ${env:WIN_FLEX_BISON_HOME}\bison.exe\"; ` + Copy-Item -Path \"${env:WIN_FLEX_BISON_HOME}\win_bison.exe\" \"${env:WIN_FLEX_BISON_HOME}\bison.exe\"; ` + Write-Host \"Copying...\"; ` + Write-Host \"${env:WIN_FLEX_BISON_HOME}\win_flex.exe -> ${env:WIN_FLEX_BISON_HOME}\flex.exe\"; ` + Copy-Item -Path \"${env:WIN_FLEX_BISON_HOME}\win_flex.exe\" \"${env:WIN_FLEX_BISON_HOME}\flex.exe\"; ` + $env:PATH=\"${env:PATH}${env:WIN_FLEX_BISON_HOME}\"; ` + Write-Host \"Setting PATH...\"; ` + Write-Host \"${env:PATH}\"; ` + [Environment]::SetEnvironmentVariable(\"PATH\", \"${env:PATH}\", [EnvironmentVariableTarget]::Machine); -ENV VCPKG_VERSION=2024.05.24 # https://github.com/microsoft/vcpkg/blob/2024.05.24/scripts/bootstrap.ps1 -ENV VCPKG_ROOT=/dev/vcpkg +ENV VCPKG_VERSION=2024.05.24 ` + VCPKG_DOWNLOAD_URL="https://github.com/microsoft/vcpkg/archive/refs/tags" ` + VCPKG_DISABLE_METRICS="ON" ` + VCPKG_ROOT=/dev/vcpkg WORKDIR /dev -RUN ` - Invoke-WebRequest -OutFile /dev/vcpkg.zip https://github.com/microsoft/vcpkg/archive/refs/tags/${ENV:VCPKG_VERSION}.zip; ` - Expand-Archive /dev/vcpkg.zip -Destination /dev; ` - Remove-Item -Force /dev/vcpkg.zip; ` - Rename-Item -Path /dev/vcpkg-${ENV:VCPKG_VERSION} -NewName vcpkg; ` - /dev/vcpkg/bootstrap-vcpkg.bat; +RUN $vcpkg_dist_base_name=\"vcpkg-${env:VCPKG_VERSION}\"; ` + $vcpkg_dist=\"${env:TMP}\${vcpkg_dist_base_name}.zip\"; ` + $vcpkg_url=\"${env:VCPKG_DOWNLOAD_URL}/${env:VCPKG_VERSION}.zip\"; ` + Write-Host \"Downloading vcpkg...\"; ` + Write-Host \"${vcpkg_url} -> ${vcpkg_dist}\"; ` + Invoke-WebRequest -OutFile \"${vcpkg_dist}\" \"${vcpkg_url}\"; ` + $vcpkg_temp_dir=\"${env:TMP}\${vcpkg_dist_base_name}\"; ` + Write-Host \"Extracting vcpkg...\"; ` + Write-Host \"${vcpkg_dist} -> ${vcpkg_temp_dir}\"; ` + Expand-Archive \"${vcpkg_dist}\" -Destination \"${env:TMP}\"; ` + Remove-Item -Force \"${vcpkg_dist}\"; ` + $vcpkg_home_dir=\"${env:VCPKG_ROOT}\" -replace \"/\", \"\\\"; ` + $vcpkg_home_dir=\"C:${vcpkg_home_dir}\"; ` + Write-Host \"Moving vcpkg...\"; ` + Write-Host \"${vcpkg_temp_dir} -> ${vcpkg_home_dir}\"; ` + [System.IO.Directory]::Move(\"${vcpkg_temp_dir}\", \"${vcpkg_home_dir}\"); ` + $env:PATH=\"${env:PATH}${vcpkg_home_dir}\"; ` + Write-Host \"Setting PATH...\"; ` + Write-Host \"${env:PATH}\"; ` + [Environment]::SetEnvironmentVariable(\"PATH\", \"${env:PATH}\", [EnvironmentVariableTarget]::Machine); ` + Write-Host \"Bootstrapping vcpkg...\"; ` + & \"${vcpkg_home_dir}\bootstrap-vcpkg.bat\"; # Ensure we only attempt to build release and static linking -ENV VCPKG_BUILD_TYPE=release -ENV VCPKG_LIBRARY_LINKAGE=static +ENV VCPKG_BUILD_TYPE=release ` + VCPKG_LIBRARY_LINKAGE=static RUN vcpkg install --recurse openssl --triplet x64-windows-static; ` vcpkg install --recurse libyaml --triplet x64-windows-static; +# Technique from https://github.com/StefanScherer/dockerfiles-windows/blob/master/mongo/3.6/Dockerfile +WORKDIR /fluent-bit/bin +RUN Copy-Item -Path C:\Windows\System32\msvcp140.dll -Destination /fluent-bit/bin/; ` + Copy-Item -Path C:\Windows\System32\vccorlib140.dll -Destination /fluent-bit/bin/; ` + Copy-Item -Path C:\Windows\System32\vcruntime140.dll -Destination /fluent-bit/bin/; + FROM builder-base AS builder # Build Fluent Bit from source - context must be the root of the Git repo @@ -77,14 +165,14 @@ COPY . /src/ ARG BUILD_PARALLEL=1 RUN cmake -G "'Visual Studio 16 2019'" ` - -DOPENSSL_ROOT_DIR='C:\dev\vcpkg\packages\openssl_x64-windows-static' ` - -DFLB_LIBYAML_DIR='C:\dev\vcpkg\packages\libyaml_x64-windows-static' ` - -DCMAKE_BUILD_TYPE=Release ` - -DFLB_SHARED_LIB=Off ` - -DFLB_EXAMPLES=Off ` - -DFLB_DEBUG=Off ` - -DFLB_RELEASE=On ` - ../;` + -DOPENSSL_ROOT_DIR='C:\dev\vcpkg\packages\openssl_x64-windows-static' ` + -DFLB_LIBYAML_DIR='C:\dev\vcpkg\packages\libyaml_x64-windows-static' ` + -DCMAKE_BUILD_TYPE=Release ` + -DFLB_SHARED_LIB=Off ` + -DFLB_EXAMPLES=Off ` + -DFLB_DEBUG=Off ` + -DFLB_RELEASE=On ` + ../;` cmake --build . --config Release -j ${BUILD_PARALLEL}; # Set up config files and binaries in single /fluent-bit hierarchy for easy copy in later stage diff --git a/packaging/distros/amazonlinux/Dockerfile b/packaging/distros/amazonlinux/Dockerfile index 9f3a209f9e2..7de5e3c9efc 100644 --- a/packaging/distros/amazonlinux/Dockerfile +++ b/packaging/distros/amazonlinux/Dockerfile @@ -12,53 +12,97 @@ FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 # amazonlinux/2 base image FROM amazonlinux:2 as amazonlinux-2-base +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN yum -y update && \ - yum install -y rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ - cyrus-sasl-lib cyrus-sasl-devel openssl openss-libs openssl-devel \ + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel \ postgresql-devel postgresql-libs \ - cmake3 libyaml-devel zlib-devel libcurl-devel && \ - yum clean all + libyaml-devel zlib-devel libcurl-devel \ + tar gzip && \ + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # amazonlinux/2.arm64v8 base image FROM arm64v8/amazonlinux:2 as amazonlinux-2.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN yum -y update && \ - yum install -y rpm-build ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ - cyrus-sasl-lib cyrus-sasl-devel openssl openss-libs openssl-devel \ + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel \ postgresql-devel postgresql-libs \ - cmake3 libyaml-devel zlib-devel libcurl-devel && \ - yum clean all + libyaml-devel zlib-devel libcurl-devel \ + tar gzip && \ + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" FROM amazonlinux:2023 as amazonlinux-2023-base +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN yum -y update && \ - yum install -y rpm-build ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl-minimal ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel \ postgresql-devel postgresql-libs \ - cmake3 libyaml-devel zlib-devel libcurl-devel && \ - yum clean all + libyaml-devel zlib-devel libcurl-devel \ + tar gzip && \ + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # hadolint ignore=DL3029 FROM --platform=arm64 amazonlinux:2023 as amazonlinux-2023.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN yum -y update && \ - yum install -y rpm-build ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl-minimal ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel \ postgresql-devel postgresql-libs \ - cmake3 libyaml-devel zlib-devel libcurl-devel && \ - yum clean all + libyaml-devel zlib-devel libcurl-devel \ + tar gzip && \ + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # Common build for all distributions now # hadolint ignore=DL3006 @@ -86,7 +130,7 @@ ARG FLB_OUT_PGSQL=On ARG FLB_JEMALLOC=On ARG FLB_CHUNK_TRACE=On -RUN cmake3 -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ +RUN cmake -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ -DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \ -DFLB_RELEASE="$FLB_RELEASE" \ -DFLB_TRACE="$FLB_TRACE" \ @@ -100,4 +144,4 @@ RUN cmake3 -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ ../ VOLUME [ "/output" ] -CMD [ "/bin/bash", "-c", "make -j 4 && cpack3 -G RPM && cp *.rpm /output/" ] +CMD [ "/bin/bash", "-c", "make -j 4 && cpack -G RPM && cp *.rpm /output/" ] diff --git a/packaging/distros/centos/Dockerfile b/packaging/distros/centos/Dockerfile index a539deef0e4..74475ce3b90 100644 --- a/packaging/distros/centos/Dockerfile +++ b/packaging/distros/centos/Dockerfile @@ -12,17 +12,28 @@ FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 # centos/7 base image FROM centos:7 as centos-7-base +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo && \ sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo && \ yum -y update && \ - yum install -y rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ - cyrus-sasl-lib cyrus-sasl-devel openssl openss-libs openssl-devel libcurl-devel \ - postgresql-libs postgresql-devel postgresql-server postgresql libyaml-devel && \ + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ + postgresql-libs postgresql-devel postgresql-server postgresql libyaml-devel \ + tar gzip && \ yum install -y epel-release && \ yum install -y cmake3 && \ - yum clean all + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" ARG FLB_OUT_PGSQL=On ENV FLB_OUT_PGSQL=$FLB_OUT_PGSQL @@ -34,17 +45,28 @@ FROM arm64v8/centos:7 as centos-7.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo && \ sed -i -e "s/^#baseurl=http:\/\/mirror.centos.org/baseurl=http:\/\/vault.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo && \ yum -y update && \ - yum install -y rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ - cyrus-sasl-lib cyrus-sasl-devel openssl openss-libs openssl-devel libcurl-devel \ - postgresql-libs postgresql-devel postgresql-server postgresql libyaml-devel && \ + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ + postgresql-libs postgresql-devel postgresql-server postgresql libyaml-devel \ + tar gzip && \ yum install -y epel-release && \ yum install -y cmake3 && \ - yum clean all + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # There are no postgresql libraries available for this target ARG FLB_OUT_PGSQL=Off @@ -66,14 +88,25 @@ RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ # Add for the YAML development libraries RUN sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/CentOS-Linux-PowerTools.repo +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN yum -y update && \ - yum install -y rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ postgresql-libs postgresql-devel postgresql-server postgresql \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ - libyaml-devel zlib-devel && \ - yum clean all + libyaml-devel zlib-devel \ + tar gzip && \ + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" ARG FLB_OUT_PGSQL=On ENV FLB_OUT_PGSQL=$FLB_OUT_PGSQL @@ -92,14 +125,25 @@ RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ # Add for the YAML development libraries RUN sed -i 's/enabled=0/enabled=1/g' /etc/yum.repos.d/CentOS-Linux-PowerTools.repo +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3033 RUN yum -y update && \ - yum install -y rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ + yum install -y rpm-build curl ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ postgresql-libs postgresql-devel postgresql-server postgresql \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ - libyaml-devel zlib-devel && \ - yum clean all + libyaml-devel zlib-devel \ + tar gzip && \ + yum clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" ARG FLB_OUT_PGSQL=On ENV FLB_OUT_PGSQL=$FLB_OUT_PGSQL @@ -112,15 +156,26 @@ ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS FROM quay.io/centos/centos:stream9 as centos-9-base +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # Add for the YAML development libraries # hadolint ignore=DL3033,DL3041 RUN dnf -y install 'dnf-command(config-manager)' && dnf -y config-manager --set-enabled crb && \ - dnf -y install rpm-build ca-certificates gcc gcc-c++ cmake make bash \ + dnf -y install rpm-build ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ postgresql-libs postgresql-devel postgresql-server postgresql \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ - libyaml-devel zlib-devel && \ - dnf clean all + libyaml-devel zlib-devel \ + tar gzip && \ + dnf clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" ARG FLB_OUT_PGSQL=On ENV FLB_OUT_PGSQL=$FLB_OUT_PGSQL @@ -130,15 +185,26 @@ FROM --platform=arm64 quay.io/centos/centos:stream9 as centos-9.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ENV CMAKE_HOME="/opt/cmake" +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # Add for the YAML development libraries # hadolint ignore=DL3033,DL3041 RUN dnf -y install 'dnf-command(config-manager)' && dnf -y config-manager --set-enabled crb && \ - dnf -y install rpm-build ca-certificates gcc gcc-c++ cmake make bash \ + dnf -y install rpm-build ca-certificates gcc gcc-c++ make bash \ wget unzip systemd-devel wget flex bison \ postgresql-libs postgresql-devel postgresql-server postgresql \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libcurl-devel \ - libyaml-devel zlib-devel && \ - dnf clean all + libyaml-devel zlib-devel \ + tar gzip && \ + dnf clean all && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" ARG FLB_OUT_PGSQL=On ENV FLB_OUT_PGSQL=$FLB_OUT_PGSQL @@ -174,8 +240,7 @@ ARG FLB_OUT_KAFKA=On ARG FLB_JEMALLOC=On ARG FLB_CHUNK_TRACE=On -# cmake3 exists in every image - cmake references the older cmake2 in centos 7 -RUN cmake3 -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ +RUN cmake -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ -DCMAKE_INSTALL_SYSCONFDIR="$CMAKE_INSTALL_SYSCONFDIR" \ -DFLB_RELEASE="$FLB_RELEASE" \ -DFLB_TRACE="$FLB_TRACE" \ @@ -191,4 +256,4 @@ RUN cmake3 -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ ../ VOLUME [ "/output" ] -CMD [ "/bin/bash", "-c", "make -j 4 && cpack3 -G RPM && cp *.rpm /output/" ] +CMD [ "/bin/bash", "-c", "make -j 4 && cpack -G RPM && cp *.rpm /output/" ] diff --git a/packaging/distros/debian/Dockerfile b/packaging/distros/debian/Dockerfile index 2aa835642cb..729b78bd9ad 100644 --- a/packaging/distros/debian/Dockerfile +++ b/packaging/distros/debian/Dockerfile @@ -11,87 +11,153 @@ FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 # debian/buster base image FROM debian:buster-slim as debian-buster-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" # hadolint ignore=DL3008,DL3015 RUN apt-get -qq update && \ apt-get install -y curl ca-certificates build-essential \ - cmake make bash sudo wget unzip dh-make \ + make bash sudo wget unzip dh-make \ libsystemd-dev zlib1g-dev flex bison \ libssl1.1 libssl-dev libpq-dev postgresql-server-dev-all \ - libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config && \ - apt-get install -y --reinstall lsb-base lsb-release + libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/buster.arm64v8 base image FROM arm64v8/debian:buster-slim as debian-buster.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get -qq update && \ apt-get install -y curl ca-certificates build-essential \ - cmake make bash sudo wget unzip dh-make \ + make bash sudo wget unzip dh-make \ libsystemd-dev zlib1g-dev flex bison \ libssl1.1 libssl-dev libpq-dev postgresql-server-dev-all \ - libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config && \ - apt-get install -y --reinstall lsb-base lsb-release + libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bullseye base image FROM debian:bullseye-slim as debian-bullseye-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" # hadolint ignore=DL3008,DL3015 RUN apt-get -qq update && \ apt-get install -y curl ca-certificates build-essential \ - cmake make bash sudo wget unzip dh-make \ + make bash sudo wget unzip dh-make \ libsystemd-dev zlib1g-dev flex bison \ libssl1.1 libssl-dev libpq-dev postgresql-server-dev-all \ - libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config && \ - apt-get install -y --reinstall lsb-base lsb-release + libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bullseye.arm64v8 base image FROM arm64v8/debian:bullseye-slim as debian-bullseye.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get -qq update && \ apt-get install -y curl ca-certificates build-essential \ - cmake make bash sudo wget unzip dh-make \ + make bash sudo wget unzip dh-make \ libsystemd-dev zlib1g-dev flex bison \ libssl1.1 libssl-dev libpq-dev postgresql-server-dev-all \ - libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config && \ - apt-get install -y --reinstall lsb-base lsb-release + libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bookworm base image FROM debian:bookworm-slim as debian-bookworm-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" # hadolint ignore=DL3008,DL3015 RUN apt-get -qq update && \ apt-get install -y curl ca-certificates build-essential \ - cmake make bash sudo wget unzip dh-make \ + make bash sudo wget unzip dh-make \ libsystemd-dev zlib1g-dev flex bison \ libssl3 libssl-dev libpq-dev postgresql-server-dev-all \ - libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config && \ - apt-get install -y --reinstall lsb-base lsb-release + libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bookworm.arm64v8 base image FROM arm64v8/debian:bookworm-slim as debian-bookworm.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get -qq update && \ apt-get install -y curl ca-certificates build-essential \ - cmake make bash sudo wget unzip dh-make \ + make bash sudo wget unzip dh-make \ libsystemd-dev zlib1g-dev flex bison \ libssl3 libssl-dev libpq-dev postgresql-server-dev-all \ - libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config && \ - apt-get install -y --reinstall lsb-base lsb-release + libsasl2-2 libsasl2-dev libyaml-dev libcurl4-openssl-dev pkg-config \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # Common build for all distributions now # hadolint ignore=DL3006 diff --git a/packaging/distros/ubuntu/Dockerfile b/packaging/distros/ubuntu/Dockerfile index 3f59ef48d79..0a48e032855 100644 --- a/packaging/distros/ubuntu/Dockerfile +++ b/packaging/distros/ubuntu/Dockerfile @@ -11,149 +11,251 @@ FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 # ubuntu/16.04 base image FROM ubuntu:16.04 as ubuntu-16.04-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" # Using pipe below SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ - apt-get install -y curl ca-certificates build-essential libsystemd-dev cmake \ + apt-get install -y curl ca-certificates build-essential libsystemd-dev \ make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all software-properties-common \ software-properties-common libyaml-dev apt-transport-https \ pkg-config libsasl2-2 libsasl2-dev openssl libssl-dev libssl1.0 \ - libcurl4-openssl-dev zlib1g-dev && \ + libcurl4-openssl-dev zlib1g-dev \ + tar gzip && \ wget -q -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \ gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ apt-add-repository 'deb https://apt.kitware.com/ubuntu/ xenial main' && \ apt-get update && \ - apt-get install -y --reinstall lsb-base lsb-release cmake + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/18.04 base image FROM ubuntu:18.04 as ubuntu-18.04-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + SHELL ["/bin/bash", "-o", "pipefail", "-c"] +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates gcc-8 g++-8 libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl1.1 libcurl4-openssl-dev \ - software-properties-common libyaml-dev apt-transport-https pkg-config zlib1g-dev && \ + software-properties-common libyaml-dev apt-transport-https pkg-config zlib1g-dev \ + tar gzip && \ wget -q -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \ gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' && \ apt-get update && \ - apt-get install -y --reinstall lsb-base lsb-release cmake && \ + apt-get install -y --reinstall lsb-base lsb-release && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 1 && \ - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 1 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 1 && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/18.04.arm64v8 base image FROM arm64v8/ubuntu:18.04 as ubuntu-18.04.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + SHELL ["/bin/bash", "-o", "pipefail", "-c"] COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates gcc-8 g++-8 libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl1.1 libcurl4-openssl-dev \ - software-properties-common libyaml-dev apt-transport-https pkg-config zlib1g-dev && \ + software-properties-common libyaml-dev apt-transport-https pkg-config zlib1g-dev \ + tar gzip && \ wget -q -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | \ gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null && \ apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' && \ apt-get update && \ - apt-get install -y --reinstall lsb-base lsb-release cmake && \ + apt-get install -y --reinstall lsb-base lsb-release && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 1 && \ - update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 1 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 1 && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/20.04 base image FROM ubuntu:20.04 as ubuntu-20.04-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates build-essential libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl1.1 libcurl4-openssl-dev \ - libyaml-dev pkg-config zlib1g-dev && \ - apt-get install -y --reinstall lsb-base lsb-release + libyaml-dev pkg-config zlib1g-dev \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/20.04.arm64v8 base image FROM arm64v8/ubuntu:20.04 as ubuntu-20.04.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates build-essential libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl1.1 libcurl4-openssl-dev \ - libyaml-dev pkg-config zlib1g-dev && \ - apt-get install -y --reinstall lsb-base lsb-release + libyaml-dev pkg-config zlib1g-dev \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/22.04 base image FROM ubuntu:22.04 as ubuntu-22.04-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates build-essential libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all libpq5 \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl3 libcurl4-openssl-dev \ - libyaml-dev pkg-config zlib1g-dev && \ - apt-get install -y --reinstall lsb-base lsb-release + libyaml-dev pkg-config zlib1g-dev \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/22.04.arm64v8 base image FROM arm64v8/ubuntu:22.04 as ubuntu-22.04.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates build-essential libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all libpq5 \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl3 libcurl4-openssl-dev \ - libyaml-dev pkg-config zlib1g-dev && \ - apt-get install -y --reinstall lsb-base lsb-release + libyaml-dev pkg-config zlib1g-dev \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 - # ubuntu/24.04 base image +ENV PATH="${CMAKE_HOME}/bin:${PATH}" + +# ubuntu/24.04 base image FROM ubuntu:24.04 as ubuntu-24.04-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" + +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates build-essential libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all libpq5 \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl3 libcurl4-openssl-dev \ - libyaml-dev pkg-config zlib1g-dev && \ - apt-get install -y --reinstall lsb-base lsb-release + libyaml-dev pkg-config zlib1g-dev \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/24.04.arm64v8 base image FROM arm64v8/ubuntu:24.04 as ubuntu-24.04.arm64v8-base -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND="noninteractive" \ + CMAKE_HOME="/opt/cmake" COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static +ARG CMAKE_VERSION="3.31.6" +ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" + # hadolint ignore=DL3008,DL3015 RUN apt-get update && \ apt-get install -y curl ca-certificates build-essential libsystemd-dev \ - cmake make bash wget unzip nano vim valgrind dh-make flex bison \ + make bash wget unzip nano vim valgrind dh-make flex bison \ libpq-dev postgresql-server-dev-all libpq5 \ libsasl2-2 libsasl2-dev openssl libssl-dev libssl3 libcurl4-openssl-dev \ - libyaml-dev pkg-config zlib1g-dev && \ - apt-get install -y --reinstall lsb-base lsb-release + libyaml-dev pkg-config zlib1g-dev \ + tar gzip && \ + apt-get install -y --reinstall lsb-base lsb-release && \ + mkdir -p "${CMAKE_HOME}" && \ + cmake_download_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ + echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ + curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 + +ENV PATH="${CMAKE_HOME}/bin:${PATH}" # Common build for all distributions now # hadolint ignore=DL3006 From a87aa03af58916216aabfbbbfda8df9cac9378d2 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sat, 12 Apr 2025 10:00:20 +0300 Subject: [PATCH 5/9] dockerfile: ensuring CMake version is not greater than the latest supported one for Linux containers. Signed-off-by: Marat Abrarov --- dockerfiles/Dockerfile | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/dockerfiles/Dockerfile b/dockerfiles/Dockerfile index 1da15f06847..9a2e599f1eb 100644 --- a/dockerfiles/Dockerfile +++ b/dockerfiles/Dockerfile @@ -55,22 +55,10 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/ flex \ bison \ libyaml-dev \ - gzip \ + && apt-get satisfy -y cmake "cmake (<< 4.0)" \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -ENV CMAKE_HOME="/opt/cmake" - -ARG CMAKE_VERSION="3.31.6" -ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" - -RUN mkdir -p "${CMAKE_HOME}" && \ - cmake_download_url="${CMAKE_URL}/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ - echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_download_url} -> ${CMAKE_HOME}" && \ - curl -jksSL "${cmake_download_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 - -ENV PATH="${CMAKE_HOME}/bin:${PATH}" - # Must be run from root of repo WORKDIR /src/fluent-bit/ COPY . ./ @@ -268,21 +256,10 @@ RUN echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/ htop atop strace iotop sysstat ncdu logrotate hdparm pciutils psmisc tree pv \ make tar flex bison \ libssl-dev libsasl2-dev libsystemd-dev/bookworm-backports zlib1g-dev libpq-dev libyaml-dev postgresql-server-dev-all \ - gzip \ + && apt-get satisfy -y cmake "cmake (<< 4.0)" \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -ENV CMAKE_HOME="/opt/cmake" - -ARG CMAKE_VERSION="3.31.6" - -RUN mkdir -p "${CMAKE_HOME}" && \ - cmake_url="https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz" && \ - echo "Downloading CMake ${CMAKE_VERSION}: ${cmake_url} -> ${CMAKE_HOME}" && \ - curl -jksSL "${cmake_url}" | tar -xzf - -C "${CMAKE_HOME}" --strip-components 1 - -ENV PATH="${CMAKE_HOME}/bin:${PATH}" - RUN rm -f /usr/bin/qemu-*-static COPY --from=builder /fluent-bit /fluent-bit From 71cc8bcbf3908edf48033030164fc3239c93d6ab Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Sat, 19 Apr 2025 21:17:55 +0300 Subject: [PATCH 6/9] dockerfile: code style fix. Signed-off-by: Marat Abrarov --- packaging/distros/amazonlinux/Dockerfile | 12 ++++++------ packaging/distros/centos/Dockerfile | 16 ++++++++-------- packaging/distros/debian/Dockerfile | 16 ++++++++-------- packaging/distros/raspbian/Dockerfile | 8 ++++---- packaging/distros/ubuntu/Dockerfile | 22 +++++++++++----------- 5 files changed, 37 insertions(+), 37 deletions(-) diff --git a/packaging/distros/amazonlinux/Dockerfile b/packaging/distros/amazonlinux/Dockerfile index 7de5e3c9efc..8bf4b93c4f4 100644 --- a/packaging/distros/amazonlinux/Dockerfile +++ b/packaging/distros/amazonlinux/Dockerfile @@ -7,10 +7,10 @@ ARG BASE_BUILDER # Use buildkit to skip unused base images: DOCKER_BUILDKIT=1 # Multiarch support -FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 +FROM multiarch/qemu-user-static:x86_64-aarch64 AS multiarch-aarch64 # amazonlinux/2 base image -FROM amazonlinux:2 as amazonlinux-2-base +FROM amazonlinux:2 AS amazonlinux-2-base ENV CMAKE_HOME="/opt/cmake" ARG CMAKE_VERSION="3.31.6" @@ -33,7 +33,7 @@ RUN yum -y update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # amazonlinux/2.arm64v8 base image -FROM arm64v8/amazonlinux:2 as amazonlinux-2.arm64v8-base +FROM arm64v8/amazonlinux:2 AS amazonlinux-2.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static @@ -57,7 +57,7 @@ RUN yum -y update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" -FROM amazonlinux:2023 as amazonlinux-2023-base +FROM amazonlinux:2023 AS amazonlinux-2023-base ENV CMAKE_HOME="/opt/cmake" ARG CMAKE_VERSION="3.31.6" @@ -80,7 +80,7 @@ RUN yum -y update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # hadolint ignore=DL3029 -FROM --platform=arm64 amazonlinux:2023 as amazonlinux-2023.arm64v8-base +FROM --platform=arm64 amazonlinux:2023 AS amazonlinux-2023.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static @@ -106,7 +106,7 @@ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # Common build for all distributions now # hadolint ignore=DL3006 -FROM $BASE_BUILDER as builder +FROM $BASE_BUILDER AS builder ARG FLB_NIGHTLY_BUILD ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD diff --git a/packaging/distros/centos/Dockerfile b/packaging/distros/centos/Dockerfile index 74475ce3b90..02f967631a0 100644 --- a/packaging/distros/centos/Dockerfile +++ b/packaging/distros/centos/Dockerfile @@ -7,10 +7,10 @@ ARG BASE_BUILDER # Use buildkit to skip unused base images: DOCKER_BUILDKIT=1 # Multiarch support -FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 +FROM multiarch/qemu-user-static:x86_64-aarch64 AS multiarch-aarch64 # centos/7 base image -FROM centos:7 as centos-7-base +FROM centos:7 AS centos-7-base ENV CMAKE_HOME="/opt/cmake" ARG CMAKE_VERSION="3.31.6" @@ -41,7 +41,7 @@ ARG FLB_UNICODE_ENCODER=Off ENV FLB_UNICODE_ENCODER=$FLB_UNICODE_ENCODER # centos/7.arm64v8 base image -FROM arm64v8/centos:7 as centos-7.arm64v8-base +FROM arm64v8/centos:7 AS centos-7.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static @@ -79,7 +79,7 @@ ARG FLB_JEMALLOC_OPTIONS="--with-lg-page=16 --with-lg-quantum=3" ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS # centos/8 base image -FROM centos:8 as centos-8-base +FROM centos:8 AS centos-8-base # CentOS is now EOL so have to use the vault repos RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ @@ -114,7 +114,7 @@ ARG FLB_UNICODE_ENCODER=On ENV FLB_UNICODE_ENCODER=$FLB_UNICODE_ENCODER # centos/8.arm64v8 base image -FROM arm64v8/centos:8 as centos-8.arm64v8-base +FROM arm64v8/centos:8 AS centos-8.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static @@ -154,7 +154,7 @@ ENV FLB_UNICODE_ENCODER=$FLB_UNICODE_ENCODER ARG FLB_JEMALLOC_OPTIONS="--with-lg-page=16 --with-lg-quantum=3" ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS -FROM quay.io/centos/centos:stream9 as centos-9-base +FROM quay.io/centos/centos:stream9 AS centos-9-base ENV CMAKE_HOME="/opt/cmake" ARG CMAKE_VERSION="3.31.6" @@ -181,7 +181,7 @@ ARG FLB_OUT_PGSQL=On ENV FLB_OUT_PGSQL=$FLB_OUT_PGSQL # hadolint ignore=DL3029 -FROM --platform=arm64 quay.io/centos/centos:stream9 as centos-9.arm64v8-base +FROM --platform=arm64 quay.io/centos/centos:stream9 AS centos-9.arm64v8-base COPY --from=multiarch-aarch64 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static @@ -217,7 +217,7 @@ ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS # Common build for all distributions now # hadolint ignore=DL3006 -FROM $BASE_BUILDER as builder +FROM $BASE_BUILDER AS builder ARG FLB_NIGHTLY_BUILD ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD diff --git a/packaging/distros/debian/Dockerfile b/packaging/distros/debian/Dockerfile index 729b78bd9ad..7da29a80bf4 100644 --- a/packaging/distros/debian/Dockerfile +++ b/packaging/distros/debian/Dockerfile @@ -7,10 +7,10 @@ ARG BASE_BUILDER # Use buildkit to skip unused base images: DOCKER_BUILDKIT=1 # Multiarch support -FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 +FROM multiarch/qemu-user-static:x86_64-aarch64 AS multiarch-aarch64 # debian/buster base image -FROM debian:buster-slim as debian-buster-base +FROM debian:buster-slim AS debian-buster-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -34,7 +34,7 @@ RUN apt-get -qq update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/buster.arm64v8 base image -FROM arm64v8/debian:buster-slim as debian-buster.arm64v8-base +FROM arm64v8/debian:buster-slim AS debian-buster.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -60,7 +60,7 @@ RUN apt-get -qq update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bullseye base image -FROM debian:bullseye-slim as debian-bullseye-base +FROM debian:bullseye-slim AS debian-bullseye-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -84,7 +84,7 @@ RUN apt-get -qq update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bullseye.arm64v8 base image -FROM arm64v8/debian:bullseye-slim as debian-bullseye.arm64v8-base +FROM arm64v8/debian:bullseye-slim AS debian-bullseye.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -110,7 +110,7 @@ RUN apt-get -qq update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bookworm base image -FROM debian:bookworm-slim as debian-bookworm-base +FROM debian:bookworm-slim AS debian-bookworm-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -134,7 +134,7 @@ RUN apt-get -qq update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # debian/bookworm.arm64v8 base image -FROM arm64v8/debian:bookworm-slim as debian-bookworm.arm64v8-base +FROM arm64v8/debian:bookworm-slim AS debian-bookworm.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -161,7 +161,7 @@ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # Common build for all distributions now # hadolint ignore=DL3006 -FROM $BASE_BUILDER as builder +FROM $BASE_BUILDER AS builder ARG FLB_NIGHTLY_BUILD ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD diff --git a/packaging/distros/raspbian/Dockerfile b/packaging/distros/raspbian/Dockerfile index 64c55200a91..646e1f56e19 100644 --- a/packaging/distros/raspbian/Dockerfile +++ b/packaging/distros/raspbian/Dockerfile @@ -6,7 +6,7 @@ ARG BASE_BUILDER # Lookup the name to use below but should follow the '-base' convention with slashes replaced. # Use buildkit to skip unused base images: DOCKER_BUILDKIT=1 -FROM balenalib/rpi-raspbian:buster as raspbian-buster-base +FROM balenalib/rpi-raspbian:buster AS raspbian-buster-base ENV DEBIAN_FRONTEND noninteractive # Builder image so dependencies can be latest, recommended and no need to wipe @@ -22,7 +22,7 @@ RUN apt-get update && \ apt-get install -y --reinstall lsb-base lsb-release # raspbian/bullseye base image -FROM balenalib/rpi-raspbian:bullseye as raspbian-bullseye-base +FROM balenalib/rpi-raspbian:bullseye AS raspbian-bullseye-base ENV DEBIAN_FRONTEND noninteractive # hadolint ignore=DL3008,DL3015 @@ -35,7 +35,7 @@ RUN apt-get update && \ apt-get install -y --reinstall lsb-base lsb-release # raspbian/bookworm base image -FROM balenalib/rpi-raspbian:bookworm as raspbian-bookworm-base +FROM balenalib/rpi-raspbian:bookworm AS raspbian-bookworm-base ENV DEBIAN_FRONTEND noninteractive # hadolint ignore=DL3008,DL3015 @@ -49,7 +49,7 @@ RUN apt-get update && \ # Common build for all distributions now # hadolint ignore=DL3006 -FROM $BASE_BUILDER as builder +FROM $BASE_BUILDER AS builder ARG FLB_NIGHTLY_BUILD ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD diff --git a/packaging/distros/ubuntu/Dockerfile b/packaging/distros/ubuntu/Dockerfile index 0a48e032855..f343ff177c0 100644 --- a/packaging/distros/ubuntu/Dockerfile +++ b/packaging/distros/ubuntu/Dockerfile @@ -7,10 +7,10 @@ ARG BASE_BUILDER # Use buildkit to skip unused base images: DOCKER_BUILDKIT=1 # Multiarch support -FROM multiarch/qemu-user-static:x86_64-aarch64 as multiarch-aarch64 +FROM multiarch/qemu-user-static:x86_64-aarch64 AS multiarch-aarch64 # ubuntu/16.04 base image -FROM ubuntu:16.04 as ubuntu-16.04-base +FROM ubuntu:16.04 AS ubuntu-16.04-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -42,7 +42,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/18.04 base image -FROM ubuntu:18.04 as ubuntu-18.04-base +FROM ubuntu:18.04 AS ubuntu-18.04-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -74,7 +74,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/18.04.arm64v8 base image -FROM arm64v8/ubuntu:18.04 as ubuntu-18.04.arm64v8-base +FROM arm64v8/ubuntu:18.04 AS ubuntu-18.04.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -108,7 +108,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/20.04 base image -FROM ubuntu:20.04 as ubuntu-20.04-base +FROM ubuntu:20.04 AS ubuntu-20.04-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -132,7 +132,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/20.04.arm64v8 base image -FROM arm64v8/ubuntu:20.04 as ubuntu-20.04.arm64v8-base +FROM arm64v8/ubuntu:20.04 AS ubuntu-20.04.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -158,7 +158,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/22.04 base image -FROM ubuntu:22.04 as ubuntu-22.04-base +FROM ubuntu:22.04 AS ubuntu-22.04-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -182,7 +182,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/22.04.arm64v8 base image -FROM arm64v8/ubuntu:22.04 as ubuntu-22.04.arm64v8-base +FROM arm64v8/ubuntu:22.04 AS ubuntu-22.04.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -208,7 +208,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/24.04 base image -FROM ubuntu:24.04 as ubuntu-24.04-base +FROM ubuntu:24.04 AS ubuntu-24.04-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -232,7 +232,7 @@ RUN apt-get update && \ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # ubuntu/24.04.arm64v8 base image -FROM arm64v8/ubuntu:24.04 as ubuntu-24.04.arm64v8-base +FROM arm64v8/ubuntu:24.04 AS ubuntu-24.04.arm64v8-base ENV DEBIAN_FRONTEND="noninteractive" \ CMAKE_HOME="/opt/cmake" @@ -259,7 +259,7 @@ ENV PATH="${CMAKE_HOME}/bin:${PATH}" # Common build for all distributions now # hadolint ignore=DL3006 -FROM $BASE_BUILDER as builder +FROM $BASE_BUILDER AS builder ARG FLB_NIGHTLY_BUILD ENV FLB_NIGHTLY_BUILD=$FLB_NIGHTLY_BUILD From dd92473f404bb91d1d0994549a7b86f0c5019b38 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Mon, 7 Apr 2025 02:09:29 +0300 Subject: [PATCH 7/9] dockerfile: building with NMake in image for Windows Containers. Signed-off-by: Marat Abrarov --- dockerfiles/Dockerfile.windows | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/dockerfiles/Dockerfile.windows b/dockerfiles/Dockerfile.windows index 0f2850553a6..ced52b562d0 100644 --- a/dockerfiles/Dockerfile.windows +++ b/dockerfiles/Dockerfile.windows @@ -164,7 +164,9 @@ WORKDIR /src/build COPY . /src/ ARG BUILD_PARALLEL=1 -RUN cmake -G "'Visual Studio 16 2019'" ` +SHELL ["cmd", "/S", "/C"] +RUN call "%MSVS_HOME%\VC\Auxiliary\Build\vcvars64.bat" && ` + cmake -G "NMake Makefiles" ` -DOPENSSL_ROOT_DIR='C:\dev\vcpkg\packages\openssl_x64-windows-static' ` -DFLB_LIBYAML_DIR='C:\dev\vcpkg\packages\libyaml_x64-windows-static' ` -DCMAKE_BUILD_TYPE=Release ` @@ -172,8 +174,10 @@ RUN cmake -G "'Visual Studio 16 2019'" ` -DFLB_EXAMPLES=Off ` -DFLB_DEBUG=Off ` -DFLB_RELEASE=On ` - ../;` - cmake --build . --config Release -j ${BUILD_PARALLEL}; + ..\ && ` + cmake --build . --config Release -j "%BUILD_PARALLEL%" + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # Set up config files and binaries in single /fluent-bit hierarchy for easy copy in later stage RUN New-Item -Path /fluent-bit/etc/ -ItemType "directory"; ` @@ -185,7 +189,7 @@ RUN New-Item -Path /fluent-bit/etc/ -ItemType "directory"; ` Copy-Item -Path /src/conf/parsers_openstack.conf /fluent-bit/etc/; ` Copy-Item -Path /src/conf/parsers_cinder.conf /fluent-bit/etc/; ` Copy-Item -Path /src/conf/plugins.conf /fluent-bit/etc/; ` - Copy-Item -Path /src/build/bin/Release/fluent-bit.exe /fluent-bit/bin/; + Copy-Item -Path /src/build/bin/fluent-bit.exe /fluent-bit/bin/; # # Runtime Image - Windows Server Core From 18d22ffc9029829228b1309c902f40548e09f69d Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Tue, 8 Apr 2025 17:19:13 +0300 Subject: [PATCH 8/9] dockerfile: configurable version of MS Visual C++ used to build Fluent Bit within building of image for Windows Containers. Signed-off-by: Marat Abrarov --- dockerfiles/Dockerfile.windows | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dockerfiles/Dockerfile.windows b/dockerfiles/Dockerfile.windows index ced52b562d0..fd54ccf025d 100644 --- a/dockerfiles/Dockerfile.windows +++ b/dockerfiles/Dockerfile.windows @@ -18,9 +18,10 @@ FROM mcr.microsoft.com/windows/servercore:$WINDOWS_VERSION AS builder-base SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] -# Install Visual Studio Build Tools 2019 +# Install Visual Studio Build Tools 2019 (MSVS_VERSION=16) / 2022 (MSVS_VERSION=17, requires WINDOWS_VERSION=ltsc2022) WORKDIR /local -ENV MSVS_BUILD_TOOLS_VERSION="16" ` +ARG MSVS_VERSION="16" +ENV MSVS_BUILD_TOOLS_VERSION="$MSVS_VERSION" ` MSVS_BUILD_TOOLS_DOWNLOAD_URL="https://aka.ms/vs" ` MSVS_HOME="C:\BuildTools" RUN $msvs_build_tools_dist_name=\"vs_buildtools.exe\"; ` From df6afecfe79198117f839e6b3c40aa23c5f4e6f5 Mon Sep 17 00:00:00 2001 From: Marat Abrarov Date: Wed, 9 Apr 2025 02:25:09 +0300 Subject: [PATCH 9/9] dockerfile: removed unused DLLs from image for Windows Containers. Signed-off-by: Marat Abrarov --- dockerfiles/Dockerfile.windows | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/dockerfiles/Dockerfile.windows b/dockerfiles/Dockerfile.windows index fd54ccf025d..b338260cff7 100644 --- a/dockerfiles/Dockerfile.windows +++ b/dockerfiles/Dockerfile.windows @@ -44,18 +44,6 @@ RUN $msvs_build_tools_dist_name=\"vs_buildtools.exe\"; ` '--includeRecommended' -NoNewWindow -Wait; ` Remove-Item -Force \"${msvs_build_tools_dist}\"; -ENV MSVC_RUNTIME_VERSION="15" ` - MSVC_RUNTIME_DOWNLOAD_URL="https://aka.ms/vs" -RUN $msvc_runtime_dist_name=\"vc_redist.x64.exe\"; ` - $msvc_runtime_dist=\"${env:TMP}\${msvc_runtime_dist_name}\"; ` - $msvc_runtime_url=\"${env:MSVC_RUNTIME_DOWNLOAD_URL}/${env:MSVC_RUNTIME_VERSION}/release/${msvc_runtime_dist_name}\"; ` - Write-Host \"Downloading Microsoft Visual C++ Redistributable...\"; ` - Write-Host \"${msvc_runtime_url} -> ${msvc_runtime_dist}\"; ` - Invoke-WebRequest -OutFile \"${msvc_runtime_dist}\" \"${msvc_runtime_url}\"; ` - Write-Host \"Installing Microsoft Visual C++ runtime libraries...\"; ` - Start-Process \"${msvc_runtime_dist}\" -ArgumentList '/install', '/quiet', '/norestart' -NoNewWindow -Wait; ` - Remove-Item -Force \"${msvc_runtime_dist}\"; - ENV CMAKE_HOME="C:\cmake" ARG CMAKE_VERSION="3.31.6" ARG CMAKE_URL="https://github.com/Kitware/CMake/releases/download" @@ -152,12 +140,6 @@ ENV VCPKG_BUILD_TYPE=release ` RUN vcpkg install --recurse openssl --triplet x64-windows-static; ` vcpkg install --recurse libyaml --triplet x64-windows-static; -# Technique from https://github.com/StefanScherer/dockerfiles-windows/blob/master/mongo/3.6/Dockerfile -WORKDIR /fluent-bit/bin -RUN Copy-Item -Path C:\Windows\System32\msvcp140.dll -Destination /fluent-bit/bin/; ` - Copy-Item -Path C:\Windows\System32\vccorlib140.dll -Destination /fluent-bit/bin/; ` - Copy-Item -Path C:\Windows\System32\vcruntime140.dll -Destination /fluent-bit/bin/; - FROM builder-base AS builder # Build Fluent Bit from source - context must be the root of the Git repo @@ -180,6 +162,7 @@ RUN call "%MSVS_HOME%\VC\Auxiliary\Build\vcvars64.bat" && ` SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] +WORKDIR /fluent-bit/bin # Set up config files and binaries in single /fluent-bit hierarchy for easy copy in later stage RUN New-Item -Path /fluent-bit/etc/ -ItemType "directory"; ` Copy-Item -Path /src/conf/fluent-bit-win32.conf /fluent-bit/etc/fluent-bit.conf; `