diff options
Diffstat (limited to '.gitlab/ci/docker/fedora37')
-rw-r--r-- | .gitlab/ci/docker/fedora37/Dockerfile | 73 | ||||
-rw-r--r-- | .gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst | 4 | ||||
-rw-r--r-- | .gitlab/ci/docker/fedora37/deps_packages.lst | 110 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh | 20 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_deps.sh | 31 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_iwyu.sh | 42 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora37/install_rvm.sh | 25 | ||||
-rw-r--r-- | .gitlab/ci/docker/fedora37/iwyu_packages.lst | 7 | ||||
-rw-r--r-- | .gitlab/ci/docker/fedora37/rvm_packages.lst | 18 |
9 files changed, 330 insertions, 0 deletions
diff --git a/.gitlab/ci/docker/fedora37/Dockerfile b/.gitlab/ci/docker/fedora37/Dockerfile new file mode 100644 index 0000000000..b36a17ed24 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/Dockerfile @@ -0,0 +1,73 @@ +# syntax=docker/dockerfile:1 + +ARG BASE_IMAGE=fedora:37 + +FROM ${BASE_IMAGE} AS dnf-cache +# Populate DNF cache w/ the fresh metadata and prefetch packages. +RUN --mount=type=bind,source=clang_tidy_headers_packages.lst,target=/root/clang_tidy_headers_packages.lst \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=bind,source=iwyu_packages.lst,target=/root/iwyu_packages.lst \ + --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + --downloadonly \ + -y \ + $(grep -h '^[^#]\+$' /root/*.lst) + + +FROM ${BASE_IMAGE} AS rvm-build +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" + +RUN --mount=type=bind,source=install_rvm.sh,target=/root/install_rvm.sh \ + --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_rvm.sh + + +FROM ${BASE_IMAGE} AS clang-tidy-headers +LABEL maintainer="Kyle Edwards <kyle.edwards@kitware.com>" + +RUN --mount=type=bind,source=install_clang_tidy_headers.sh,target=/root/install_clang_tidy_headers.sh \ + --mount=type=bind,source=clang_tidy_headers_packages.lst,target=/root/clang_tidy_headers_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_clang_tidy_headers.sh + + +FROM ${BASE_IMAGE} AS iwyu-build +LABEL maintainer="Kyle Edwards <kyle.edwards@kitware.com>" + +RUN --mount=type=bind,source=install_iwyu.sh,target=/root/install_iwyu.sh \ + --mount=type=bind,source=iwyu_packages.lst,target=/root/iwyu_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_iwyu.sh + + +FROM ${BASE_IMAGE} +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" + +RUN --mount=type=bind,source=install_deps.sh,target=/root/install_deps.sh \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=cache,target=/var/cache/pip \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_deps.sh + +RUN --mount=type=bind,from=rvm-build,source=/root,target=/root \ + tar -C /usr/local -xf /root/rvm.tar + +RUN --mount=type=bind,from=clang-tidy-headers,source=/root,target=/root \ + tar -C /usr/include -xf /root/clang-tidy-headers.tar + +RUN --mount=type=bind,from=iwyu-build,source=/root,target=/root \ + tar -C / -xf /root/iwyu.tar diff --git a/.gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst b/.gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst new file mode 100644 index 0000000000..fe86105942 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst @@ -0,0 +1,4 @@ +dnf-command(download) +rpm-build +python3-devel +clang-tools-extra diff --git a/.gitlab/ci/docker/fedora37/deps_packages.lst b/.gitlab/ci/docker/fedora37/deps_packages.lst new file mode 100644 index 0000000000..9ce80075ec --- /dev/null +++ b/.gitlab/ci/docker/fedora37/deps_packages.lst @@ -0,0 +1,110 @@ +# Install build requirements. +ncurses-devel +openssl-devel +qt5-qtbase-devel +qt6-qtbase-devel + +# Install development tools. +clang +clang-tools-extra +compiler-rt +flang +flang-devel +gcc-c++ +git-core +make + +# Install optional external build dependencies. +bzip2-devel +expat-devel +jsoncpp-devel +libarchive-devel +libcurl-devel +libuv-devel +libuv-devel +libzstd-devel +rhash-devel +xz-devel +zlib-devel + +# Install documentation tools. +python3-sphinx +texinfo +qt5-qttools-devel +qt6-qttools-devel + +# Install lint tools. +clang-analyzer +codespell + +# Tools needed for the test suite. +findutils +file +jq +which + +# Packages needed to test CTest. +breezy +subversion +mercurial + +# Packages needed to test CPack. +rpm-build + +# Packages needed to test find modules. +alsa-lib-devel +blas-devel +boost-devel boost-python3-devel +bzip2-devel +cups-devel +DevIL-devel +doxygen +expat-devel +fontconfig-devel +freeglut-devel +freetype-devel +gdal-devel +gettext +giflib-devel +glew-devel +gmock +gnutls-devel +grpc-devel grpc-plugins +gsl-devel +gtest-devel +gtk2-devel +ImageMagick-c++-devel +java-11-openjdk-devel +jsoncpp-devel +lapack-devel +libarchive-devel +libcurl-devel +libicu-devel +libinput-devel systemd-devel +libjpeg-turbo-devel +libpng-devel +opensp-devel +postgresql-server-devel +libtiff-devel +libuv-devel +libxml2-devel +libxslt-devel +mpich-devel +openal-soft-devel +openmpi-devel +patch +perl +protobuf-devel protobuf-c-devel protobuf-lite-devel +pypy2 pypy2-devel +pypy3 pypy3-devel +python2 python2-devel +python3 python3-devel python3-numpy +python3-jsmin python3-jsonschema +ruby rubygems ruby-devel +SDL-devel +sqlite-devel +swig +unixODBC-devel +xalan-c-devel +xerces-c-devel +xz-devel diff --git a/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh new file mode 100755 index 0000000000..200fa1e501 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +set -e + +# Packages for building the clang-tidy plugin. +# TODO: Upstream this as a proper Fedora package. +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/clang_tidy_headers_packages.lst) + +clang_source_rpm=$(rpm -q --queryformat '%{SOURCERPM}' clang-tools-extra) +clang_version=$(rpm -q --queryformat '%{VERSION}' clang-tools-extra) +dnf download --source -y clang +rpm -i "$clang_source_rpm" +rpmbuild -bp /root/rpmbuild/SPECS/clang.spec +cd "/root/rpmbuild/BUILD/clang-tools-extra-$clang_version.src" +find clang-tidy -name '*.h' | tar -cf /root/clang-tidy-headers.tar -T - diff --git a/.gitlab/ci/docker/fedora37/install_deps.sh b/.gitlab/ci/docker/fedora37/install_deps.sh new file mode 100755 index 0000000000..cd2701ebee --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_deps.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +set -e + +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/deps_packages.lst) + +# Fedora no longer packages python2 numpy. +curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o - | python2 +pip2.7 install --disable-pip-version-check --no-input --no-compile --cache-dir /var/cache/pip numpy + +# Remove demos and Python2 tests +for p in Demo test; do + rm -rf /usr/lib64/python2.7/${p} +done + +# Remove tests for numpy +for v in 2.7 3.11; do + find /usr/lib64/python${v}/site-packages/numpy -type d -a -name tests -exec rm -rf {} + +done + +# Remove some other packages tests +find /usr/lib64/python3.11/site-packages/breezy -type d -a -name tests -exec rm -rf {} + + +# Perforce +curl -L https://www.perforce.com/downloads/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz -o - \ + | tar -C /usr/local/bin -xvzf - -- p4 p4d diff --git a/.gitlab/ci/docker/fedora37/install_iwyu.sh b/.gitlab/ci/docker/fedora37/install_iwyu.sh new file mode 100755 index 0000000000..684e355058 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_iwyu.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +set -e + +# Install development tools. +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/iwyu_packages.lst) + +cd /root +git clone "https://github.com/include-what-you-use/include-what-you-use.git" +cd include-what-you-use +readonly llvm_full_version="$( clang --version | head -n1 | cut -d' ' -f3 )" +readonly llvm_version="$( echo "$llvm_full_version" | cut -d. -f-1 )" +git checkout "clang_$llvm_version" +git apply <<EOF +diff --git a/iwyu_driver.cc b/iwyu_driver.cc +index 42fea35..fbb77a9 100644 +--- a/iwyu_driver.cc ++++ b/iwyu_driver.cc +@@ -167,6 +167,7 @@ CompilerInstance* CreateCompilerInstance(int argc, const char **argv) { + DiagnosticsEngine diagnostics(diagnostic_id, &*diagnostic_options, + diagnostic_client); + Driver driver(path, getDefaultTargetTriple(), diagnostics); ++ driver.ResourceDir = "/usr/lib64/clang/$llvm_full_version"; + driver.setTitle("include what you use"); + + // Expand out any response files passed on the command line +EOF +mkdir build +cd build + +cmake -GNinja \ + -DCMAKE_BUILD_TYPE=Release \ + "-DCMAKE_INSTALL_PREFIX=/usr/local/lib64/llvm-$llvm_version" \ + .. +ninja +DESTDIR=/root/iwyu-destdir ninja install +tar -C /root/iwyu-destdir -cf /root/iwyu.tar . diff --git a/.gitlab/ci/docker/fedora37/install_rvm.sh b/.gitlab/ci/docker/fedora37/install_rvm.sh new file mode 100755 index 0000000000..10e7545cf5 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_rvm.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/rvm_packages.lst) + +gpg2 --keyserver hkps://keyserver.ubuntu.com \ + --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \ + 7D2BAF1CF37B13E2069D6956105BD0E739499BDB + +curl -sSL https://get.rvm.io | bash -s stable + +# keep version in sync with `env_fedora*_makefiles.cmake` +/usr/local/rvm/bin/rvm install ruby-3.0.4 + +for p in archives examples gem-cache log src; do + touch /usr/local/rvm/${p}/.tar_exclude +done + +tar -C /usr/local --exclude-tag-under=.tar_exclude -cf /root/rvm.tar rvm diff --git a/.gitlab/ci/docker/fedora37/iwyu_packages.lst b/.gitlab/ci/docker/fedora37/iwyu_packages.lst new file mode 100644 index 0000000000..e3551bd315 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/iwyu_packages.lst @@ -0,0 +1,7 @@ +clang-devel +llvm-devel +zlib-devel +g++ +cmake +ninja-build +git diff --git a/.gitlab/ci/docker/fedora37/rvm_packages.lst b/.gitlab/ci/docker/fedora37/rvm_packages.lst new file mode 100644 index 0000000000..1dc852e147 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/rvm_packages.lst @@ -0,0 +1,18 @@ +autoconf +automake +bison +bzip2 +findutils +gcc-c++ +glibc-devel +libffi-devel +libtool +libyaml-devel +make +openssl-devel +patch +procps +readline-devel +sqlite-devel +which +zlib-devel |