[PATCH v5 07/11] containers/inventory: Add ABI rev and coverity attribute

Adam Hassick ahassick at iol.unh.edu
Tue May 23 19:04:09 CEST 2023


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



More information about the ci mailing list