From: Aaron Conole <aconole@redhat.com>
To: Adam Hassick <ahassick@iol.unh.edu>
Cc: ci@dpdk.org, alialnu@nvidia.com, Owen Hilyard <ohilyard@iol.unh.edu>
Subject: Re: [PATCH v8 4/6] containers/templates: Templates for Dockerfiles
Date: Fri, 04 Aug 2023 10:02:11 -0400 [thread overview]
Message-ID: <f7tpm426h3w.fsf@redhat.com> (raw)
In-Reply-To: <20230717210815.29737-5-ahassick@iol.unh.edu> (Adam Hassick's message of "Mon, 17 Jul 2023 17:08:13 -0400")
Adam Hassick <ahassick@iol.unh.edu> writes:
> From: Owen Hilyard <ohilyard@iol.unh.edu>
>
> Adds a variety of extensible templates used to create the Dockerfiles
> for each target. All templates inherit from base, and most distros and
> distro families have their own templates that are used to define common
> functionality. Multiple versions of a distro may use a single template
> if they are similar enough (ex: fedora).
>
> Signed-off-by: Owen Hilyard <ohilyard@iol.unh.edu>
> Signed-off-by: Adam Hassick <ahassick@iol.unh.edu>
> ---
> .../templates/containers.makefile.j2 | 73 +++++++++++
> .../templates/containers/alpine.dockerfile.j2 | 3 +
> .../templates/containers/arch.dockerfile.j2 | 39 ++++++
> .../templates/containers/base.dockerfile.j2 | 120 ++++++++++++++++++
> .../containers/centos8.dockerfile.j2 | 21 +++
> .../containers/centos9.dockerfile.j2 | 17 +++
> .../templates/containers/debian.dockerfile.j2 | 7 +
> .../containers/debian10.dockerfile.j2 | 3 +
> .../containers/debian11.dockerfile.j2 | 3 +
> .../debian11_arm_ipsec.dockerfile.j2 | 16 +++
> .../containers/debian_bullseye.dockerfile.j2 | 3 +
> .../containers/debian_buster.dockerfile.j2 | 3 +
> .../templates/containers/fedora.dockerfile.j2 | 11 ++
> .../containers/fedora36_clang.dockerfile.j2 | 7 +
> .../containers/fedora_clang.dockerfile.j2 | 8 ++
> .../containers/fedora_coverity.dockerfile.j2 | 10 ++
> .../containers/opensuse.dockerfile.j2 | 10 ++
> .../containers/redhat_family.dockerfile.j2 | 5 +
> .../templates/containers/rhel.dockerfile.j2 | 16 +++
> .../templates/containers/rhel7.dockerfile.j2 | 15 +++
> .../templates/containers/rhel8.dockerfile.j2 | 15 +++
> .../templates/containers/rhel9.dockerfile.j2 | 19 +++
> .../templates/containers/rpm.dockerfile.j2 | 3 +
> .../templates/containers/ubuntu.dockerfile.j2 | 3 +
> .../containers/ubuntu20.04.dockerfile.j2 | 12 ++
> .../containers/ubuntu22.04.dockerfile.j2 | 3 +
> .../containers/ubuntu_cross.dockerfile.j2 | 11 ++
> .../containers/ubuntu_sve.dockerfile.j2 | 12 ++
> 28 files changed, 468 insertions(+)
> create mode 100644 containers/template_engine/templates/containers.makefile.j2
> create mode 100644 containers/template_engine/templates/containers/alpine.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/arch.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/base.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/centos8.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/centos9.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/debian.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/debian10.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/debian11.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/debian11_arm_ipsec.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/debian_bullseye.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/debian_buster.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/fedora.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/fedora36_clang.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/fedora_clang.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/fedora_coverity.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/opensuse.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/redhat_family.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/rhel.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/rhel7.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/rhel8.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/rhel9.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/rpm.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/ubuntu.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/ubuntu20.04.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/ubuntu22.04.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/ubuntu_cross.dockerfile.j2
> create mode 100644 containers/template_engine/templates/containers/ubuntu_sve.dockerfile.j2
>
> diff --git a/containers/template_engine/templates/containers.makefile.j2 b/containers/template_engine/templates/containers.makefile.j2
> new file mode 100644
> index 0000000..900bfc8
> --- /dev/null
> +++ b/containers/template_engine/templates/containers.makefile.j2
> @@ -0,0 +1,73 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
2023? This is everywhere set to 2022, but I guess it should really be
2023, or 2022,2023
> +#################### START VARS #################
> +DPDK_CI_CONTAINER_BUILDER_PROGRAM?=podman
> +DPDK_CI_CONTAINERS_EXTRA_PUSH_ARGS?=
> +DPDK_CI_CONTAINERS_REGISTRY_HOSTNAME?={{ registry_hostname }}
> +
> +#################### END VARS #################
> +
> +.PHONY: build_all
> +build_all:{% for container in dockerfiles.targets %} build_{{ container.name }}{% endfor %}
> +
> +.PHONY: push_image_all
> +push_image_all:{% for container in dockerfiles.targets %} push_image_{{ container.name }}{% endfor %}
> +
> +.PHONY: push_manifest_all
> +push_manifest_all:
> +{%- if is_builder %}
> + echo "Disabled: Builder mode was enabled."
> +{%- else -%}
> + {% for container in dockerfiles.targets %} push_manifest_{{ container.name }}{% endfor %}
> +{%- endif %}
> +
> +{%- macro push_indx(container, is_docker) %}
> + {%- for tag in container.tags -%}
> + {%- set formatted_tag = tag | replace('$R', registry_hostname) | replace('$T', timestamp) | replace('$N', container.name) | replace(':', '\\:') -%}
> + {%- set trunk_tag = formatted_tag.split('/')[1] -%}
> + {%- if is_docker -%}
> + {%- set ref_tag = formatted_tag -%}
> + {%- set push_xargs = '' -%}
> + {%- else -%}
> + {%- set ref_tag = trunk_tag -%}
> + {%- set push_xargs = ' docker\://%s' | format(formatted_tag) -%}
> + {%- endif -%}
> + $(DPDK_CI_CONTAINER_BUILDER_PROGRAM) manifest rm {{ ref_tag }} || echo "Image {{ ref_tag }} did not exist initially."
> + $(DPDK_CI_CONTAINER_BUILDER_PROGRAM) manifest create {{ ref_tag }}
> + {%- for platform in container.platforms -%}
> + {%- set plat_tag = "%s/%s\:image-%s-%s" | format(registry_hostname, container.name, platform.replace('/', ''), timestamp) %} \
> + {{ plat_tag -}} {% endfor %}
> + $(DPDK_CI_CONTAINER_BUILDER_PROGRAM) manifest push $(DPDK_CI_CONTAINERS_EXTRA_PUSH_ARGS) {{ ref_tag }} {{- push_xargs }}
> + {% endfor -%}
> +{% endmacro %}
> +
> +{% for container in dockerfiles.targets %}
> +#################### START {{ container.name }} #####################
> + {% set container_id = container.name %}
> +.PHONY: build_{{ container_id }}
> +
> +build_{{ container_id }}:
> + {%- for platform in container.platforms -%}
> + {%- set plat_tag = "%s/%s\:image-%s-%s" | format(registry_hostname, container_id, platform.replace('/', ''), timestamp) %}
> + $(DPDK_CI_CONTAINER_BUILDER_PROGRAM) build --target {{container.name}} --platform {{ platform }} \
> + -t {{ plat_tag }} -f {{ container_id }}.dockerfile $(CURDIR) {%- endfor %}
> +
> +.PHONY: push_image_{{ container_id }}
> +push_image_{{ container_id }}: build_{{ container_id }}
> + {%- for platform in container.platforms -%}
> + {%- set plat_tag = "%s/%s\:image-%s-%s" | format(registry_hostname, container_id, platform.replace('/', ''), timestamp) %}
> + $(DPDK_CI_CONTAINER_BUILDER_PROGRAM) push $(DPDK_CI_CONTAINERS_EXTRA_PUSH_ARGS) {{ plat_tag }}
> + {%- endfor %}
> +{% if not is_builder %}
> +.PHONY: push_manifest_{{ container_id }}
> +push_manifest_{{ container_id }}:
> +{%- if host_arch_only and not is_builder %} push_image_{{ container_id }}{% endif %}
> +ifeq ($(DPDK_CI_CONTAINER_BUILDER_PROGRAM), docker)
> + {{ push_indx(container, true) }}
> +else
> + {{ push_indx(container, false) }}
> +endif
> +{% endif %}
> +
> +#################### END {{ container.name }} #####################
> +{% endfor %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/alpine.dockerfile.j2 b/containers/template_engine/templates/containers/alpine.dockerfile.j2
> new file mode 100644
> index 0000000..f386b42
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/alpine.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/base.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/arch.dockerfile.j2 b/containers/template_engine/templates/containers/arch.dockerfile.j2
> new file mode 100644
> index 0000000..edfa6d4
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/arch.dockerfile.j2
> @@ -0,0 +1,39 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/base.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +RUN pacman-key --init
> +RUN pacman -Sy --noconfirm archlinux-keyring && pacman -Su --noconfirm
> +{% endblock %}
> +
> +
> +{% block pip_installs %}
> +RUN mkdir -p ~/.config/pip \
> + && printf '[global]\nbreak-system-packages = true\n' >> ~/.config/pip/pip.conf \
> + && python3 -m pip install ninja pyelftools
> +{% endblock %}
> +
> +{% block before_meson_after_pip %}
> +# add user for building aur packages
> +RUN useradd builder && \
> + mkdir /home/builder && \
> + chown builder:builder /home/builder
> +
> +# switch user to make packages from aur
> +USER builder
> +
> +# clone and make rdma-core packages
> +RUN cd /home/builder && git clone https://aur.archlinux.org/rdma-core.git
> +RUN cd /home/builder/rdma-core && makepkg
> +
> +USER root
> +
> +RUN cd /home/builder/rdma-core && pacman --noconfirm -U rdma-core-*.pkg.tar.*
> +
> +RUN rm -rf /home/builder
> +{% endblock %}
> +
> +{% block install_libabigail %}
> +{# Installed via package manager #}
> +{% endblock install_libabigail %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/base.dockerfile.j2 b/containers/template_engine/templates/containers/base.dockerfile.j2
> new file mode 100644
> index 0000000..92f5cb5
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/base.dockerfile.j2
> @@ -0,0 +1,120 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +# ------------------------ Begin {{ target.name }} ------------------------------------------------
> +
> +{%- set build_base_img = target.name + "_base" %}
> +FROM {{ target.base_image }} as {% if build_abi and not target.force_disable_abi -%}
> +{{ build_base_img }}
> +{%- else -%}
> +{{ target.name }}
> +{%- endif %}
> +
> +ENV CCACHE_DIR=/ccache/
> +ENV CCACHE_COMPILERCHECK=content
> +ENV CCACHE_NAMESPACE="{{ target.name }}-{{ build_timestamp }}"
> +ENV BUILD_TIMESTAMP="{{ build_timestamp }}"
> +
> +{% block extra_env_vars -%}{%- endblock extra_env_vars %}
> +
> +{% block pre_package_manager -%}{%- endblock pre_package_manager %}
> +
> +# Install packages
> +RUN {{ target.package_manager_command }} {{ target.packages | join(" ") }}
> +
> +# Installs from pip
> +{% block pip_installs -%}{%- endblock pip_installs %}
> +
> +# Extra setup after python libs are installed
> +{% block before_meson_after_pip -%}{%- endblock %}
> +
> +# install libabigail
> +{% block install_libabigail %}
> +{% if build_libabigail and build_abi and (not "force_disable_abi" in target or not target.force_disable_abi) %}
> +COPY libabigail /libabigail
> +RUN --mount=type=cache,target=/ccache,z cd /libabigail
> +{%- if "libabigail_revision" in target %} && git checkout {{ target.libabigail_revision }} {%- endif %} && mkdir build && autoreconf -i && cd build && ../configure --prefix=/usr/local && make all install && \
> + ldconfig && cd / && rm -rf /libabigail
> +{% else %}
> +# libabigail build is disabled
> +{% endif %}
> +{% endblock install_libabigail %}
> +
> +# cross compilation setup
> +{% block cross_compilation_setup %}
> +{% endblock cross_compilation_setup %}
> +
> +# Copy externally pulled DPDK into the container
> +RUN mkdir /dpdk
> +COPY dpdk-stable /dpdk-stable
> +
> +# Install meson
> +{% block install_meson %}
> +# Install meson from dpdk main
> +# Writes to the mount are discarded once the container is built and is not shared with other containers or the host
> +COPY dpdk /dpdk
> +RUN --mount=type=cache,target=/ccache,z cd /dpdk && chown -R root /dpdk && git checkout main && sh .ci/linux-setup.sh
> +RUN rm -rf /dpdk
> +{% endblock install_meson %}
> +
> +ENV RTE_KERNELDIR CHANGE_ME
> +
> +RUN mkdir /references
> +WORKDIR /references
> +RUN touch abi_versions
> +# build the abi
> +{% if build_abi and not target.force_disable_abi %}
> + {% block build_abi %}
> + {% for version in abi.versions %}
> + {%- set abi_version_str = (version.abi_version.major|string) + "." + (version.abi_version.minor|string) -%}
> + {%- set abi_stage_name = target.name + "_" + abi_version_str -%}
> + {%- set abi_folder = "/references/" + abi_version_str + "_reference" %}
> + {%- set meets_version_requirements = "minimum_dpdk_version" in target and version.dpdk_version.major >= target.minimum_dpdk_version.major and version.dpdk_version.minor >= target.minimum_dpdk_version.minor and version.dpdk_version.revision >= target.minimum_dpdk_version.revision -%}
> + {% if meets_version_requirements %}
> +
> +FROM {{ build_base_img }} AS {{ abi_stage_name }}
> +RUN echo '{{ abi_version_str }}' >> abi_versions
> +RUN mkdir -p {{ abi_folder }}
> +# compile DPDK
> +RUN --mount=type=cache,target=/ccache,z \
> + mkdir -p /dpdk-stable/build && rm -rf /dpdk-stable/build && cd /dpdk-stable && git clean -xfd && git fetch --tags && git checkout {{ version.dpdk_version.git_tag }} && cd /references && \
> + meson /dpdk-stable /dpdk-stable/build {% if "cross_file" in target -%}
> + --cross-file=/dpdk-stable/{{ target.cross_file }}
> + {%- endif %} -Dexamples=all --buildtype=debugoptimized && DESTDIR={{ abi_folder }} ninja {% if ninja_workers -%}
> + -j {{ ninja_workers }} {% endif -%} -C /dpdk-stable/build install && \
> + {%- if (abi_version_str == '22.0' or abi_version_str == '23.10') %}
> + bash /dpdk-stable/devtools/gen-abi.sh {{ abi_folder }} && mv {{ abi_folder }}/usr/local/include {{ abi_folder }} && \
> + rm -rf {{ abi_folder }}/usr
> + {%- else %}
> + find {{ abi_folder }}/usr/local -name '*.a' -delete && rm -rf {{ abi_folder }}/usr/local/bin && rm -rf {{ abi_folder }}/usr/local/share
> + {%- endif %} && rm -rf /dpdk-stable/build
> + {% endif %}
> + {% endfor %}
> +
> +FROM {{ build_base_img }} AS {{ target.name }}
> + {% for version in abi.versions %}
> + {%- set abi_version_str = (version.abi_version.major|string) + "." + (version.abi_version.minor|string) -%}
> + {%- set abi_stage_name = target.name + "_" + abi_version_str -%}
> + {%- set abi_folder = "/references/" + abi_version_str + "_reference" %}
> + {%- set meets_version_requirements = "minimum_dpdk_version" in target and version.dpdk_version.major >= target.minimum_dpdk_version.major and version.dpdk_version.minor >= target.minimum_dpdk_version.minor and version.dpdk_version.revision >= target.minimum_dpdk_version.revision -%}
> + {% if meets_version_requirements %}
> +RUN mkdir -p {{ abi_folder }}
> +COPY --from={{ abi_stage_name }} {{ abi_folder }} {{ abi_folder }}
> + {%- endif %}
> + {%- endfor %}
> + {% endblock build_abi %}
> +RUN chmod -R 777 .
> +{% else %}
> +{% endif %}
> +
> +# Embed extra target information into the container
> +{% if 'extra_information' in target %}
> +RUN echo '{{ target.extra_information | tojson }}' > /container_info.json
> +{% endif %}
> +
> +WORKDIR /
> +
> +{% block copy_extras -%}
> +COPY scripts scripts
> +{%- endblock copy_extras %}
> +
> +# ------------------------ End {{ target.name }} ------------------------------------------------
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/centos8.dockerfile.j2 b/containers/template_engine/templates/containers/centos8.dockerfile.j2
> new file mode 100644
> index 0000000..bda024a
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/centos8.dockerfile.j2
> @@ -0,0 +1,21 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/redhat_family.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +# For ninja-build, meson, libmnl-devel, nasm, and CUnit-devel
> +RUN dnf install -y dnf-command\(config-manager\) dnf-plugins-core
> +# Install EPEL repository for ccache
> +RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
> +# Enable powertools repository for libpcap-devel
> +RUN dnf config-manager --set-enabled powertools
> +{% endblock %}
> +
> +{% block pip_installs %}
> +RUN python3 -m pip install --upgrade pip
> +RUN python3 -m pip install pyelftools ninja
> +{% endblock %}
> +
> +{% block install_libabigail %}
> +{# Install via package manager #}
> +{% endblock install_libabigail %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/centos9.dockerfile.j2 b/containers/template_engine/templates/containers/centos9.dockerfile.j2
> new file mode 100644
> index 0000000..8cacb99
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/centos9.dockerfile.j2
> @@ -0,0 +1,17 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/redhat_family.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +# For ninja-build, meson, libmnl-devel, nasm, and CUnit-devel
> +RUN dnf install -y dnf-command\(config-manager\) dnf-plugins-core
> +# Install EPEL repository for ccache
> +RUN dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
> +# Enable powertools repository for libpcap-devel
> +RUN dnf config-manager --set-enabled crb
> +{% endblock %}
> +
> +{% block pip_installs %}
> +RUN python3 -m pip install --upgrade pip
> +RUN python3 -m pip install pyelftools ninja
> +{% endblock %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/debian.dockerfile.j2 b/containers/template_engine/templates/containers/debian.dockerfile.j2
> new file mode 100644
> index 0000000..74b56b6
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/debian.dockerfile.j2
> @@ -0,0 +1,7 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/base.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +ENV DEBIAN_FRONTEND=noninteractive
> +{% endblock %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/debian10.dockerfile.j2 b/containers/template_engine/templates/containers/debian10.dockerfile.j2
> new file mode 100644
> index 0000000..c52f866
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/debian10.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/debian.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/debian11.dockerfile.j2 b/containers/template_engine/templates/containers/debian11.dockerfile.j2
> new file mode 100644
> index 0000000..c52f866
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/debian11.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/debian.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/debian11_arm_ipsec.dockerfile.j2 b/containers/template_engine/templates/containers/debian11_arm_ipsec.dockerfile.j2
> new file mode 100644
> index 0000000..32fad51
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/debian11_arm_ipsec.dockerfile.j2
> @@ -0,0 +1,16 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/debian11.dockerfile.j2' %}
> +
> +{% block before_meson_after_pip %}
> +WORKDIR /opt
> +
> +# I would use ADD on a git repo, but the support for this was added so recently it doesn't run on my machine.
What is the minimum supported version for that?
> +RUN git clone --depth 1 --branch SECLIB-IPSEC-2022.05.25 https://git.gitlab.arm.com/arm-reference-solutions/ipsec-mb.git
> +
> +WORKDIR /opt/ipsec-mb
> +RUN make -j $(nproc) && make install
> +
> +WORKDIR /
> +
> +{% endblock before_meson_after_pip %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/debian_bullseye.dockerfile.j2 b/containers/template_engine/templates/containers/debian_bullseye.dockerfile.j2
> new file mode 100644
> index 0000000..c52f866
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/debian_bullseye.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/debian.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/debian_buster.dockerfile.j2 b/containers/template_engine/templates/containers/debian_buster.dockerfile.j2
> new file mode 100644
> index 0000000..c52f866
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/debian_buster.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/debian.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/fedora.dockerfile.j2 b/containers/template_engine/templates/containers/fedora.dockerfile.j2
> new file mode 100644
> index 0000000..97e438e
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/fedora.dockerfile.j2
> @@ -0,0 +1,11 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/redhat_family.dockerfile.j2' %}
> +
> +{%- block pip_installs -%}
> +RUN python3 -m pip install ninja
> +{%- endblock -%}
> +
> +{% block install_libabigail %}
> +# installed by package manager
> +{% endblock install_libabigail %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/fedora36_clang.dockerfile.j2 b/containers/template_engine/templates/containers/fedora36_clang.dockerfile.j2
> new file mode 100644
> index 0000000..bc104ba
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/fedora36_clang.dockerfile.j2
> @@ -0,0 +1,7 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/fedora.dockerfile.j2' %}
> +
> +{% block extra_env_vars -%}
> +ENV CC=clang
> +{%- endblock extra_env_vars %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/fedora_clang.dockerfile.j2 b/containers/template_engine/templates/containers/fedora_clang.dockerfile.j2
> new file mode 100644
> index 0000000..18ea757
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/fedora_clang.dockerfile.j2
> @@ -0,0 +1,8 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/fedora.dockerfile.j2' %}
> +
> +{% block extra_env_vars -%}
> +#ENV CCACHE_CC=clang
> +ENV CC=clang
> +{%- endblock extra_env_vars %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/fedora_coverity.dockerfile.j2 b/containers/template_engine/templates/containers/fedora_coverity.dockerfile.j2
> new file mode 100644
> index 0000000..f17eb7a
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/fedora_coverity.dockerfile.j2
> @@ -0,0 +1,10 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2023 University of New Hampshire -#}
> +{% extends 'containers/fedora.dockerfile.j2' %}
> +
> +{% block copy_extras -%}
> +COPY scripts scripts
> +COPY coverity coverity
> +
> +ENTRYPOINT /scripts/coverity.sh
> +{%- endblock copy_extras %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/opensuse.dockerfile.j2 b/containers/template_engine/templates/containers/opensuse.dockerfile.j2
> new file mode 100644
> index 0000000..48d2502
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/opensuse.dockerfile.j2
> @@ -0,0 +1,10 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/rpm.dockerfile.j2' %}
> +
> +{% block pip_installs %}
> +{% endblock %}
> +
> +{% block install_libabigail %}
> +{# Install via package manager #}
> +{% endblock install_libabigail %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/redhat_family.dockerfile.j2 b/containers/template_engine/templates/containers/redhat_family.dockerfile.j2
> new file mode 100644
> index 0000000..9ae6577
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/redhat_family.dockerfile.j2
> @@ -0,0 +1,5 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/rpm.dockerfile.j2' %}
> +
> +{# All of the distros in the Redhat Linux Lineage, ex: RHEL, Fedora, CentOS #}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/rhel.dockerfile.j2 b/containers/template_engine/templates/containers/rhel.dockerfile.j2
> new file mode 100644
> index 0000000..b50b2e9
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/rhel.dockerfile.j2
> @@ -0,0 +1,16 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/redhat_family.dockerfile.j2' %}
> +
> +{% block pip_installs %}
> +RUN python3 -m pip install pyelftools
> +{% endblock %}
> +
> +
> +{% block before_meson_after_pip %}
> +RUN yum clean all
> +{% endblock %}
> +
> +{% block install_libabigail %}
> +{# Install via package manager #}
> +{% endblock install_libabigail %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/rhel7.dockerfile.j2 b/containers/template_engine/templates/containers/rhel7.dockerfile.j2
> new file mode 100644
> index 0000000..7045b99
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/rhel7.dockerfile.j2
> @@ -0,0 +1,15 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/rhel.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +# repolist is needed to refresh the RHEL repos from the host this is being built on
> +RUN yum repolist
> +# Yes this next step is gross, there is no better way to enable the repos in the UBI containers.
> +RUN sed -i '/\[rhel-7-server-extras-rpms\]/,/^ *\[/ s/enabled\ =\ 0/enabled\ =\ 1/' /etc/yum.repos.d/redhat.repo \
> + && sed -i '/\[rhel-7-server-optional-rpms\]/,/^ *\[/ s/enabled\ =\ 0/enabled\ =\ 1/' /etc/yum.repos.d/redhat.repo
> +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
> +RUN yum update -y
> +
> +RUN yum groupinstall -y 'Development Tools'
> +{% endblock %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/rhel8.dockerfile.j2 b/containers/template_engine/templates/containers/rhel8.dockerfile.j2
> new file mode 100644
> index 0000000..2824bfd
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/rhel8.dockerfile.j2
> @@ -0,0 +1,15 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/rhel.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +# repolist is needed to refresh the RHEL repos from the host this is being built on
> +RUN yum repolist
> +RUN yum update -y
> +RUN yum config-manager --set-enable codeready-builder-for-rhel-8-$(uname -i)-rpms
> +
> +# Required to install ccache
> +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm && yum upgrade -y
> +
> +RUN yum groupinstall -y 'Development Tools'
> +{% endblock %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/rhel9.dockerfile.j2 b/containers/template_engine/templates/containers/rhel9.dockerfile.j2
> new file mode 100644
> index 0000000..695f573
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/rhel9.dockerfile.j2
> @@ -0,0 +1,19 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/rhel.dockerfile.j2' %}
> +
> +{% block pre_package_manager %}
> +# repolist is needed to refresh the RHEL repos from the host this is being built on
> +RUN yum repolist
> +RUN yum config-manager --set-enable codeready-builder-for-rhel-9-$(uname -i)-rpms
> +RUN yum update -y
> +
> +# Required to install ccache
> +RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && yum upgrade -y
> +
> +RUN yum groupinstall -y 'Development Tools'
> +{% endblock %}
> +
> +{% block pip_installs %}
> +RUN python3 -m pip install pyelftools ninja
> +{% endblock %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/rpm.dockerfile.j2 b/containers/template_engine/templates/containers/rpm.dockerfile.j2
> new file mode 100644
> index 0000000..f386b42
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/rpm.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/base.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/ubuntu.dockerfile.j2 b/containers/template_engine/templates/containers/ubuntu.dockerfile.j2
> new file mode 100644
> index 0000000..c52f866
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/ubuntu.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/debian.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/ubuntu20.04.dockerfile.j2 b/containers/template_engine/templates/containers/ubuntu20.04.dockerfile.j2
> new file mode 100644
> index 0000000..59d2c28
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/ubuntu20.04.dockerfile.j2
> @@ -0,0 +1,12 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/ubuntu.dockerfile.j2' %}
> +
> +{% block pip_installs -%}
> +RUN python3 -m pip install --no-cache-dir requests
> +{%- endblock pip_installs %}
> +
> +{% block before_meson_after_pip -%}
> +ADD https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip /
> +ADD https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip /
> +{%- endblock %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/ubuntu22.04.dockerfile.j2 b/containers/template_engine/templates/containers/ubuntu22.04.dockerfile.j2
> new file mode 100644
> index 0000000..ba22471
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/ubuntu22.04.dockerfile.j2
> @@ -0,0 +1,3 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/ubuntu.dockerfile.j2' %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/ubuntu_cross.dockerfile.j2 b/containers/template_engine/templates/containers/ubuntu_cross.dockerfile.j2
> new file mode 100644
> index 0000000..236efbc
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/ubuntu_cross.dockerfile.j2
> @@ -0,0 +1,11 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/ubuntu20.04.dockerfile.j2' %}
> +
> +{% block cross_compilation_setup %}
> +# Link ccache to different compilers
> + # aarch64 -> ccache
> +RUN ln -s $(which ccache) /usr/local/bin/aarch64-linux-gnu-gcc && \
> + # aarch32 -> ccache
> + ln -s $(which ccache) /usr/local/bin/arm-linux-gnueabihf-gcc
> +{% endblock cross_compilation_setup %}
> \ No newline at end of file
> diff --git a/containers/template_engine/templates/containers/ubuntu_sve.dockerfile.j2 b/containers/template_engine/templates/containers/ubuntu_sve.dockerfile.j2
> new file mode 100644
> index 0000000..5e940bf
> --- /dev/null
> +++ b/containers/template_engine/templates/containers/ubuntu_sve.dockerfile.j2
> @@ -0,0 +1,12 @@
> +{#- SPDX-License-Identifier: BSD-3-Clause -#}
> +{#- Copyright (c) 2022 University of New Hampshire -#}
> +{% extends 'containers/ubuntu20.04.dockerfile.j2' %}
> +{% block cross_compilation_setup %}
> +RUN ln -s $(which ccache) /usr/local/bin/gcc-10
> +{% endblock cross_compilation_setup %}
> +
> +{% block build_abi %}
> +# ABI is disabled for this container
> +
> +FROM {{ build_base_img }} AS {{ target.name }}
> +{% endblock build_abi %}
> \ No newline at end of file
next prev parent reply other threads:[~2023-08-04 14:02 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-17 21:08 [PATCH v8 0/6] Community Lab Containers and Builder Engine Adam Hassick
2023-07-17 21:08 ` [PATCH v8 1/6] containers/docs: Add container builder start Adam Hassick
2023-07-17 21:08 ` [PATCH v8 2/6] containers/inventory: Add inventory for container builder Adam Hassick
2023-08-04 13:58 ` Aaron Conole
2023-08-04 19:30 ` Adam Hassick
2023-07-17 21:08 ` [PATCH v8 3/6] containers/builder: Dockerfile creation script Adam Hassick
2023-08-04 13:59 ` Aaron Conole
2023-07-17 21:08 ` [PATCH v8 4/6] containers/templates: Templates for Dockerfiles Adam Hassick
2023-08-04 14:02 ` Aaron Conole [this message]
2023-08-04 19:34 ` Adam Hassick
2023-07-17 21:08 ` [PATCH v8 5/6] containers/container_builder: Container for python scripts Adam Hassick
2023-08-04 14:03 ` Aaron Conole
2023-07-17 21:08 ` [PATCH v8 6/6] containers/Makefile: Makefile to automate builds Adam Hassick
2023-08-04 14:06 ` Aaron Conole
2023-07-28 20:38 ` [PATCH v8 0/6] Community Lab Containers and Builder Engine Aaron Conole
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f7tpm426h3w.fsf@redhat.com \
--to=aconole@redhat.com \
--cc=ahassick@iol.unh.edu \
--cc=alialnu@nvidia.com \
--cc=ci@dpdk.org \
--cc=ohilyard@iol.unh.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).