From f5b49afdc444905cd27a18db1c9709ec437eb4a3 Mon Sep 17 00:00:00 2001
From: Pavel Zhukov <pavel.zhukov@huawei.com>
Date: Mon, 23 May 2022 09:51:02 +0200
Subject: [PATCH] .oniro-ci: Add abi-checker to CI

ABI checker implementation is meta-binaryaudit. Adding it for CI only
to not shrink support surface of the project.

Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
---
 .oniro-ci/build-generic.yaml         | 17 +++++++++++++++++
 .oniro-ci/machines-and-flavours.yaml |  6 +++---
 manifests/ci.xml                     | 10 ++++++++++
 3 files changed, 30 insertions(+), 3 deletions(-)
 create mode 100644 manifests/ci.xml

diff --git a/.oniro-ci/build-generic.yaml b/.oniro-ci/build-generic.yaml
index 67abc4ad..ff8d83f8 100644
--- a/.oniro-ci/build-generic.yaml
+++ b/.oniro-ci/build-generic.yaml
@@ -162,6 +162,13 @@
           | sed -e 's/^CI_ONIRO_BB_LOCAL_CONF_plus_equals_//g' -e 's/"/\\"/g' -e 's/=/ += "/g' -e 's/$/"/g' \
           | sort \
           | tee -a conf/local.conf )
+    - |
+      ( set +o pipefail;
+        env \
+          | grep -E '^CI_ONIRO_BB_BBLAYERS_CONF_plus_equals_[A-Z_0-9]+=' \
+          | sed -e 's/^CI_ONIRO_BB_BBLAYERS_CONF_plus_equals_//g' -e 's/"/\\"/g' -e 's/=/ += "/g' -e 's/$/"/g' \
+          | sort \
+          | tee -a conf/bblayers.conf )
 
     # Sanity check: disallow using public build cache with a specific setting
     # in local.conf. The list of settings may grow over time.
@@ -291,6 +298,9 @@
           done
         )
       fi
+      if test -n "$CI_ONIRO_ABICHECK_TOPDIR" && test -d "$BITBAKE_TMPDIR"/"$CI_ONIRO_ABICHECK_TOPDIR"; then
+            tar -cJvf "$CI_PROJECT_DIR"/artifacts/abicheck.tar.xz "$BITBAKE_TMPDIR"/"CI_ONIRO_ABICHECK_TOPDIR"/*/*/binaryaudit ## TODO: Uniqid into file
+      fi
       set +x
   artifacts:
     paths:
@@ -407,6 +417,13 @@
 .build:
  extends: .build-recipe
 
+.check-abi:
+  variables:
+    CI_ONIRO_BB_LOCAL_CONF_plus_equals_INHERIT: abicheck
+    CI_ONIRO_MANIFEST_NAME: manifests/ci.xml
+    CI_ONIRO_BB_BBLAYERS_CONF_plus_equals_BBLAYERS: "../meta-binaryaudit"
+    CI_ONIRO_ABICHECK_TOPDIR: "/tmp/buildhistoy/packages"
+
 # This job is documented in docs/ci/hidden-jobs/build-docs.rst
 .build-docs:
   interruptible: true
diff --git a/.oniro-ci/machines-and-flavours.yaml b/.oniro-ci/machines-and-flavours.yaml
index 19addc37..58e9d4e3 100644
--- a/.oniro-ci/machines-and-flavours.yaml
+++ b/.oniro-ci/machines-and-flavours.yaml
@@ -32,7 +32,7 @@
       allow_failure: true
 
 .linux-qemu-x86:
-  extends: .build-wic-image
+  extends: [.build-wic-image, .check-abi]
   variables:
     MACHINE: qemux86
     CI_ONIRO_BUILD_FLAVOUR: linux
@@ -51,7 +51,7 @@ linux-qemu-x86-clang:
  extends: [.linux-qemu-x86, .toolchain-clang]
 
 .linux-qemu-x86_64:
-  extends: .build-wic-image
+  extends: [.build-wic-image, .check-abi]
   variables:
     MACHINE: qemux86-64
     CI_ONIRO_BUILD_FLAVOUR: linux
@@ -129,7 +129,7 @@ linux-seco-imx8mm-c61-4gb-extra-clang:
   extends: [.linux-seco-imx8mm-c61-4gb-extra, .toolchain-clang, .broken]
 
 .linux-raspberrypi4-64:
-  extends: .build-wic-image
+  extends: [.build-wic-image, .check-abi]
   variables:
     MACHINE: raspberrypi4-64
     CI_ONIRO_BUILD_FLAVOUR: linux
diff --git a/manifests/ci.xml b/manifests/ci.xml
new file mode 100644
index 00000000..5768d945
--- /dev/null
+++ b/manifests/ci.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+SPDX-License-Identifier: Apache-2.0
+SPDX-FileCopyrightText: Huawei Inc.
+-->
+<manifest>
+  <include name="manifests/default.xml" />
+  <project name="oniro-core/meta-binaryaudit" remote="eclipse" revision="oniro/kirkstone" path="meta-binaryaudit" />
+</manifest>
+
-- 
GitLab