From 10ff4174f423b245c07a3b7c5708b56b003c8c8c Mon Sep 17 00:00:00 2001 From: Bill Roberts Date: Mon, 25 Mar 2024 08:52:47 -0500 Subject: [PATCH] tests: add a test for pkg-config files Add a test that does some basic validation of the pkg-config files. Example run: ./tests/scripts/all.sh test_cmake_as_package ****************************************************************** * test_cmake_as_package: build: cmake 'as-package' build * Wed Sep 11 16:17:41 UTC 2024 ****************************************************************** cmake . make Built against Mbed TLS 3.6.0 testing package config file: mbedtls ... passed testing package config file: mbedx509 ... passed testing package config file: mbedcrypto ... passed make clean Signed-off-by: Bill Roberts --- tests/scripts/components-build-system.sh | 5 ++++ tests/scripts/pkgconfig.sh | 37 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 tests/scripts/pkgconfig.sh diff --git a/tests/scripts/components-build-system.sh b/tests/scripts/components-build-system.sh index 4bb41aebe5..a086d5ecce 100644 --- a/tests/scripts/components-build-system.sh +++ b/tests/scripts/components-build-system.sh @@ -108,10 +108,15 @@ component_test_cmake_as_package () { make neat msg "build: cmake 'as-package' build" + root_dir="$(pwd)" cd programs/test/cmake_package + build_variant_dir="$(pwd)" cmake . make ./cmake_package + if [[ "$OSTYPE" == linux* ]]; then + PKG_CONFIG_PATH="${build_variant_dir}/mbedtls/pkgconfig" ${root_dir}/tests/scripts/pkgconfig.sh + fi } support_test_cmake_as_package () { diff --git a/tests/scripts/pkgconfig.sh b/tests/scripts/pkgconfig.sh new file mode 100755 index 0000000000..2702bfa134 --- /dev/null +++ b/tests/scripts/pkgconfig.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Copyright The Mbed TLS Contributors +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Purpose +# +# Test pkgconfig files. +# +# For each of the build pkg-config files, .pc files, check that +# they validate and do some basic sanity testing on the output, +# i.e. that the strings are non-empty. +# +# NOTE: This requires the built pc files to be on the pkg-config +# search path, this can be controlled with env variable +# PKG_CONFIG_PATH. See man(1) pkg-config for details. +# + +set -e -u + +# These are the EXPECTED package names. Renaming these could break +# consumers of pkg-config, consider carefully. +all_pcs="mbedtls mbedx509 mbedcrypto" + +for pc in $all_pcs; do + printf "testing package config file: ${pc} ... " + pkg-config --validate "${pc}" + version="$(pkg-config --modversion "${pc}")" + test -n "$version" + cflags="$(pkg-config --cflags "${pc}")" + test -n "$cflags" + libs="$(pkg-config --libs "${pc}")" + test -n "$libs" + printf "passed\n" +done + +exit 0