DPDK CI discussions
 help / color / mirror / Atom feed
From: Adam Hassick <ahassick@iol.unh.edu>
To: ci@dpdk.org
Cc: Adam Hassick <ahassick@iol.unh.edu>,
	aconole@redhat.com, alialnu@nvidia.com
Subject: [PATCH v5 07/11] containers/inventory: Add ABI rev and coverity attribute
Date: Tue, 23 May 2023 13:04:09 -0400	[thread overview]
Message-ID: <20230523170413.812922-8-ahassick@iol.unh.edu> (raw)
In-Reply-To: <20230523170413.812922-1-ahassick@iol.unh.edu>

Adds a new attribute that allows the version of libabigail to
be checked out to a specific revision. This was needed because
libabigail 2.3.0 does not build on Debian 10 or 11 at the time
of writing.

Adds another ABI "version" to the inventory to represent the
XML comparison reference.

Adds another new attribute to specify if a container requires
Coverity Scan binaries.

Updates the versions of Fedora in the inventory.

Adds a new target for building the Coverity Scan container.

Signed-off-by: Adam Hassick <ahassick@iol.unh.edu>
---
 containers/template_engine/inventory.yaml     | 240 ++++++++++++------
 .../template_engine/inventory_schema.json     | 100 ++++++--
 2 files changed, 247 insertions(+), 93 deletions(-)

diff --git a/containers/template_engine/inventory.yaml b/containers/template_engine/inventory.yaml
index eb299c0..2eb371b 100644
--- a/containers/template_engine/inventory.yaml
+++ b/containers/template_engine/inventory.yaml
@@ -4,15 +4,38 @@
 abi:
   # versions should also include the abi versions for all stable ABIs.
   versions:
-    - major: 20 # oldest supported lts
-      minor: 11
-      git_tag: v20.11
-    - major: 21 # most recent lts
-      minor: 11
-      git_tag: v21.11
-    # - major: 22 # current abi
-    #   minor: 07
-    #   git_tag: v22.07
+    # - dpdk_version: # LTS - 3
+    #     major: 20 
+    #     minor: 11
+    #     revision: 0
+    #     git_tag: "20.11"
+    #   abi_version:
+    #     major: 21
+    #     minor: 0
+    - dpdk_version: # LTS - 2
+        major: 21
+        minor: 11
+        revision: 0
+        git_tag: "21.11"
+      abi_version:
+        major: 22
+        minor: 0
+    - dpdk_version: 
+        major: 22 # LTS - 1
+        minor: 11
+        revision: 1
+        git_tag: "tags/v22.11.1"
+      abi_version:
+        major: 23
+        minor: 10 # .xml comparison
+    - dpdk_version: 
+        major: 22 # LTS
+        minor: 11
+        revision: 1
+        git_tag: "tags/v22.11.1"
+      abi_version:
+        major: 23
+        minor: 11 # .so comparison
 
 dockerfiles:
   groups:
@@ -44,6 +67,7 @@ dockerfiles:
         - ccache
         - zip
         - autoconf
+        - libbpf-devel
     redhat_family:
       parent: "rpm"
       packages: []
@@ -64,6 +88,13 @@ dockerfiles:
         - elfutils-devel
         - libxml2-devel
         - libabigail
+        - openssl-devel
+    fedora_coverity:
+      parent: fedora
+      packages: []
+    fedora_clang:
+      parent: fedora
+      packages: []
     centos8:
       parent: "redhat_family"
       packages:
@@ -73,6 +104,7 @@ dockerfiles:
         - libpcap-devel
         - numactl-devel
         - libabigail
+        - openssl-devel
     centos9:
       parent: "redhat_family"
       package_manager_command: "yum install --allowerasing -y"
@@ -86,30 +118,31 @@ dockerfiles:
         - g++
         - elfutils-devel
         - libxml2-devel
+        - openssl-devel
     rhel:
       parent: "redhat_family"
-      package_manager_command: "yum --disableplugin=subscription-manager install -y"
+      package_manager_command: "yum install -y"
       packages:
         - elfutils-libelf-devel
         - jansson-devel
         - libatomic
         - libpcap-devel
         - numactl-devel
+        - openssl-devel
+        - libabigail
     rhel7:
       parent: "rhel"
       packages:
-        - libabigail
         - ninja-build
     rhel8:
       parent: "rhel"
-      package_manager_command: "yum --allowerasing --disableplugin=subscription-manager install -y"
+      package_manager_command: "yum --allowerasing install -y"
       packages:
-        - libabigail
         - ninja-build
         - libxml2-devel
     rhel9:
       parent: "rhel"
-      package_manager_command: "yum --allowerasing --disableplugin=subscription-manager install -y"
+      package_manager_command: "yum --allowerasing install -y"
       packages:
         - libxml2-devel
     opensuse:
@@ -126,34 +159,34 @@ dockerfiles:
         - libnuma-devel
         - libabigail-tools
         - tar
+        - openssl-devel
     alpine:
-      parent: 'all'
-      package_manager_command: 'apk add'
+      parent: "all"
+      package_manager_command: "apk add"
       packages:
-        - python3
-        - py3-pip
-        - alpine-sdk
+        - bsd-compat-headers
         - ccache
-        - cmake
-        - bash
-        - autoconf
-        - automake
-        - libtool
-        - elfutils-dev
-        - libxml2-dev
-        - fts-dev
-        - fts
-        - numactl-dev
+        - jansson-dev
+        - libarchive-dev
+        - libbpf-dev
         - libc-dev
-        - bsd-compat-headers
-        - libexecinfo-dev
+        - libpcap-dev
         - linux-headers
-        - libatomic
+        - ninja
+        - numactl-dev
+        - openssl-dev
+        - py3-pip
+        - py3-elftools
+        - py3-setuptools
+        - py3-wheel
+        - zlib-dev
+        - python3
+        - bash
         - zip
-        - pkgconfig
+        - meson
     arch:
-      parent: 'all'
-      package_manager_command: 'pacman -Syu --noconfirm'
+      parent: "all"
+      package_manager_command: "pacman -Syu --noconfirm"
       packages:
         - glibc
         - cmake
@@ -171,9 +204,11 @@ dockerfiles:
         - diffutils
         - python-pip
         - libabigail
+        - openssl
+        - libbpf
     debian:
-      parent: 'all'
-      package_manager_command: 'apt-get update && apt-get install --no-install-recommends -y'
+      parent: "all"
+      package_manager_command: "apt-get update && apt-get install --no-install-recommends -y"
       packages:
         - libnuma-dev
         - zip
@@ -203,20 +238,26 @@ dockerfiles:
         - parallel
         - python3-grpcio
         - lcov
+        - libbpf-dev
+        - libssl-dev
     debian10:
-      parent: 'debian'
+      parent: "debian"
       packages: []
     debian11:
-      parent: 'debian'
+      parent: "debian"
+      packages:
+        - nasm
+    debian11_arm_ipsec:
+      parent: "debian11"
       packages: []
     ubuntu:
       parent: 'debian'
       packages: []
     ubuntu18.04:
-      parent: 'ubuntu'
+      parent: "ubuntu"
       packages: []
     ubuntu20.04:
-      parent: 'ubuntu'
+      parent: "ubuntu"
       packages:
         - python3-grpcio
         - lcov
@@ -224,14 +265,14 @@ dockerfiles:
         - default-jre
         - nodejs
     ubuntu22.04:
-      parent: 'ubuntu'
+      parent: "ubuntu"
       packages:
         - python3-grpcio
         - lcov
         - abigail-tools
         - jq
     ubuntu_cross: # x86 -> ARM
-      parent: 'ubuntu20.04'
+      parent: "ubuntu20.04"
       packages:
         - clang
         - llvm
@@ -248,26 +289,30 @@ dockerfiles:
         - libc6-dev-armhf-cross
         - pkg-config-arm-linux-gnueabihf
     ubuntu_sve:
-      parent: 'ubuntu20.04'
+      parent: "ubuntu20.04"
       packages:
         - gcc-10
   targets:
-
-# Alpine
+    # Alpine
     - name: alpine_compile
-      group: 'alpine'
+      group: "alpine"
       base_image: alpine
-      platforms: [linux/amd64]
+      platforms: [linux/amd64, linux/arm64]
+      force_disable_abi: true
+      minimum_dpdk_version:
+        major: 22
+        minor: 0
+        revision: 0
       extra_information:
         environment_id: 45
 
-# Arch
+    # Arch
     - name: arch_compile
-      group: 'arch'
+      group: "arch"
       base_image: archlinux:base
       platforms: [linux/amd64]
 
-# Fedora
+    # Fedora
     - name: fedora35_compile
       group: "fedora"
       base_image: fedora:35
@@ -275,13 +320,36 @@ dockerfiles:
     - name: fedora36_compile
       group: "fedora"
       base_image: fedora:36
-      platforms: [linux/amd64]
-    - name: fedora36_clang
+      platforms: [linux/amd64, linux/arm64]
+    - name: fedora37_compile
       group: "fedora"
-      base_image: fedora:36
+      base_image: fedora:37
+      platforms: [linux/amd64, linux/arm64]
+    - name: fedora38_compile
+      group: "fedora"
+      base_image: fedora:38
+      platforms: [linux/amd64, linux/arm64]
+
+    - name: fedora38_clang
+      group: "fedora_clang"
+      base_image: fedora:38
+      platforms: [linux/amd64, linux/arm64]
+
+    - name: fedora37_coverity
+      group: "fedora_coverity"
+      base_image: fedora:37
+      force_disable_abi: true
+      requires_coverity: true
       platforms: [linux/amd64]
 
-# CentOs
+    - name: fedora37_coverity
+      group: "fedora_coverity"
+      base_image: fedora:37
+      force_disable_abi: true
+      requires_coverity: true
+      platforms: [linux/amd64]
+
+    # CentOs
     - name: centosstream8_compile
       group: "centos8"
       base_image: quay.io/centos/centos:stream8
@@ -290,9 +358,9 @@ dockerfiles:
     - name: centosstream9_compile
       group: "centos9"
       base_image: quay.io/centos/centos:stream9
-      platforms: [linux/amd64]
+      platforms: [linux/amd64, linux/arm64]
 
-# RHEL
+    # RHEL
     - name: rhel7_compile
       group: "rhel7"
       base_image: registry.access.redhat.com/ubi7/ubi
@@ -306,30 +374,34 @@ dockerfiles:
     - name: rhel9_compile
       group: "rhel9"
       base_image: registry.access.redhat.com/ubi9/ubi
-      platforms: [linux/amd64]
+      platforms: [linux/amd64, linux/arm64]
 
-# OpenSuse
+    # OpenSuse
     - name: opensuse-leap15_compile
       group: "opensuse"
       base_image: opensuse/leap:15
-      platforms: [linux/amd64]
+      platforms: [linux/amd64, linux/arm64]
 
-# Debian
+    # Debian
     - name: debian10_compile # debian 10
-      group: 'debian10'
-      base_image: 'debian:buster'
+      group: "debian10"
+      base_image: "debian:buster"
+      libabigail_revision: libabigail-2.2
       platforms: [linux/amd64]
 
     - name: debian11_compile # debian 11
-      group: 'debian11'
-      base_image: 'debian:bullseye'
-      platforms: [linux/amd64]
+      group: "debian11"
+      base_image: "debian:bullseye"
+      libabigail_revision: libabigail-2.2
+      platforms:
+        - linux/amd64
+        - linux/arm64
 
-# Ubuntu
+    # Ubuntu
     - name: ubuntu20.04_compile
-      group: 'ubuntu20.04'
-      base_image: 'ubuntu:20.04'
-      platforms: [linux/amd64]
+      group: "ubuntu20.04"
+      base_image: "ubuntu:20.04"
+      platforms: [linux/amd64, linux/arm64]
       extra_tags:
         - $R/ubuntu20.04_libabigail:latest
         - $R/ubuntu20.04_libabigail:$T
@@ -340,17 +412,31 @@ dockerfiles:
 
     # x86 -> ARM cross compile
     - name: ubuntu20.04_cross
-      group: 'ubuntu_cross'
-      base_image: 'ubuntu:20.04'
+      group: "ubuntu_cross"
+      base_image: "ubuntu:20.04"
       platforms: [linux/amd64]
       cross_file: "config/arm/arm64_armv8_linux_gcc"
 
+    # Also, x86 -> ARM cross compile (for SVE test)
     - name: ubuntu20.04_sve_compile
-      group: 'ubuntu_sve'
-      base_image: 'arm64v8/ubuntu:20.04'
+      group: "ubuntu_sve"
+      base_image: "arm64v8/ubuntu:20.04"
       platforms: [linux/arm64]
 
+    # TEMPORARY: This has the forked IPsec lib developed by ARM. This causes issues on older LTS versions of DPDK.
+    # Once all supported and tested LTS versions no longer break when this lib is installed, recombine with debian11_compile.
+    - name: debian11_arm_ipsec
+      group: "debian11_arm_ipsec"
+      base_image: "debian:bullseye"
+      platforms: [linux/arm64]
+      force_disable_abi: true
+      extra_tags:
+        - $R/debian11_zuc_compile:latest
+        - $R/debian11_snow3g_compile:latest
+        - $R/debian11_zuc_compile:$T
+        - $R/debian11_snow3g_compile:$T
+
     - name: ubuntu22.04_compile
-      group: 'ubuntu22.04'
-      base_image: 'ubuntu:22.04'
-      platforms: [linux/amd64]
\ No newline at end of file
+      group: "ubuntu22.04"
+      base_image: "ubuntu:22.04"
+      platforms: [linux/amd64]
diff --git a/containers/template_engine/inventory_schema.json b/containers/template_engine/inventory_schema.json
index 0e641b7..7b79e44 100644
--- a/containers/template_engine/inventory_schema.json
+++ b/containers/template_engine/inventory_schema.json
@@ -2,7 +2,6 @@
     "$schema": "https://json-schema.org/draft-07/schema",
     "title": "dpdklab-ci container inventory schema",
     "$comment": "SPDX-License-Identifier: BSD-3-Clause\nCopyright (c) 2022 University of New Hampshire",
-    "definitions": {},
     "type": "object",
     "properties": {
         "abi": {
@@ -13,25 +12,57 @@
                     "items": {
                         "type": "object",
                         "properties": {
-                            "major": {
-                                "type": "integer",
-                                "description": "The major version number (usually the year of release)"
-                            },
-                            "minor": {
-                                "type": "integer",
-                                "description": "The minor version number (usually the month of release)"
+                            "dpdk_version": {
+                                "type": "object",
+                                "properties": {
+                                    "major": {
+                                        "type": "integer",
+                                        "description": "The major version number (usually the year of release)"
+                                    },
+                                    "minor": {
+                                        "type": "integer",
+                                        "description": "The minor version number (usually the month of release)"
+                                    },
+                                    "revision": {
+                                        "type": "integer",
+                                        "description": "The revision version number. Starts at 0."
+                                    },
+                                    "git_tag": {
+                                        "type": "string",
+                                        "description": "The git tag to check out to get this ABI version"
+                                    }
+                                },
+                                "required": [
+                                    "major",
+                                    "minor",
+                                    "revision",
+                                    "git_tag"
+                                ],
+                                "additionalProperties": false
                             },
-                            "git_tag": {
-                                "type": "string",
-                                "description": "The git tag to check out to get this ABI version"
+                            "abi_version": {
+                                "type": "object",
+                                "properties": {
+                                    "major": {
+                                        "type": "integer",
+                                        "description": "The major version number (usually the year of release)"
+                                    },
+                                    "minor": {
+                                        "type": "integer",
+                                        "description": "The minor version number (usually the month of release)"
+                                    }
+                                },
+                                "required": [
+                                    "major",
+                                    "minor"
+                                ],
+                                "additionalProperties": false
                             }
                         },
                         "required": [
-                            "major",
-                            "minor",
-                            "git_tag"
-                        ],
-                        "additionalProperties": false
+                            "dpdk_version",
+                            "abi_version"
+                        ]
                     },
                     "minItems": 0
                 }
@@ -113,6 +144,43 @@
                                 "type": "string",
                                 "description": "A cross file to compile meson with. If not present, meson's automatic behavior will be used."
                             },
+                            "libabigail_revision": {
+                                "type": "string",
+                                "description": "A revision or branch of libabigail to check out before building for a given target."
+                            },
+                            "force_disable_abi": {
+                                "type": "boolean",
+                                "description": "Whether to forcibly disable ABI for this target. This should be used as a temporary measure until a fix can be created.",
+                                "default": "false"
+                            },
+                            "requires_coverity": {
+                                "type": "boolean",
+                                "description": "Whether this target requires the Coverity Scan binaries.",
+                                "default": "false"
+                            },
+                            "minimum_dpdk_version": {
+                                "type": "object",
+                                "properties": {
+                                    "major": {
+                                        "type": "integer",
+                                        "description": "The major version number (usually the year of release)"
+                                    },
+                                    "minor": {
+                                        "type": "integer",
+                                        "description": "The minor version number (usually the month of release)"
+                                    },
+                                    "revision": {
+                                        "type": "integer",
+                                        "description": "The revision version number. Starts at 0."
+                                    }
+                                },
+                                "required": [
+                                    "major",
+                                    "minor",
+                                    "revision"
+                                ],
+                                "additionalProperties": false
+                            },
                             "extra_tags": {
                                 "type": "array",
                                 "description": "Tags to apply to this image",
-- 
2.34.1


  parent reply	other threads:[~2023-05-23 17:04 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-23 17:04 [PATCH v5 00/11] Community Lab Containers and Builder Engine Adam Hassick
2023-05-23 17:04 ` [PATCH v5 01/11] containers/docs: Add container builder start Adam Hassick
2023-05-25 13:48   ` Aaron Conole
2023-05-23 17:04 ` [PATCH v5 02/11] containers/inventory: Add inventory for container builder Adam Hassick
2023-05-23 17:04 ` [PATCH v5 03/11] containers/builder: Dockerfile creation script Adam Hassick
2023-05-23 17:04 ` [PATCH v5 04/11] containers/templates: Templates for Dockerfiles Adam Hassick
2023-05-23 17:04 ` [PATCH v5 05/11] containers/container_builder: Container for python scripts Adam Hassick
2023-05-23 17:04 ` [PATCH v5 06/11] containers/Makefile: Makefile to automate builds Adam Hassick
2023-05-23 17:04 ` Adam Hassick [this message]
2023-05-23 17:04 ` [PATCH v5 08/11] containers/builder: Add arguments to templating script Adam Hassick
2023-05-23 17:04 ` [PATCH v5 09/11] containers/templates: Update templates Adam Hassick
2023-05-23 17:04 ` [PATCH v5 10/11] containers/Makefile: Add new variables and target changes Adam Hassick
2023-05-23 17:04 ` [PATCH v5 11/11] containers/docs: Update README Adam Hassick
2023-05-25 13:45   ` Aaron Conole
2023-06-05 20:09     ` Adam Hassick

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=20230523170413.812922-8-ahassick@iol.unh.edu \
    --to=ahassick@iol.unh.edu \
    --cc=aconole@redhat.com \
    --cc=alialnu@nvidia.com \
    --cc=ci@dpdk.org \
    /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).