DPDK CI discussions
 help / color / mirror / Atom feed
From: Adam Hassick <ahassick@iol.unh.edu>
To: Aaron Conole <aconole@redhat.com>
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, 4 Aug 2023 15:34:58 -0400	[thread overview]
Message-ID: <CAC-YWqip1n2UM-uJ7Hi5FgZfzHAsrZgvfBcf0V6kjFoewTbgDw@mail.gmail.com> (raw)
In-Reply-To: <f7tpm426h3w.fsf@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 38080 bytes --]

Using a Git URL as a parameter for an ADD directive is only supported by
Docker. This comment is a remnant from when we were developing with Docker,
prior to switching over to Podman.
I will update the copyright dates.

On Fri, Aug 4, 2023 at 10:02 AM Aaron Conole <aconole@redhat.com> wrote:

> 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
>
>

-- 
*Adam Hassick*
Senior Developer
UNH InterOperability Lab
ahassick@iol.unh.edu
iol.unh.edu <https://www.iol.unh.edu/>
+1 (603) 475-8248

[-- Attachment #2: Type: text/html, Size: 46188 bytes --]

  reply	other threads:[~2023-08-04 19:35 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
2023-08-04 19:34     ` Adam Hassick [this message]
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=CAC-YWqip1n2UM-uJ7Hi5FgZfzHAsrZgvfBcf0V6kjFoewTbgDw@mail.gmail.com \
    --to=ahassick@iol.unh.edu \
    --cc=aconole@redhat.com \
    --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).