dev-libs/unittest++: workaround broken .pc file

The 'Version' field of unittest++'s .pc file is blank for two reasons:
1) CMakeLists.txt doesn't define a version, and
2) if it did define a version, it doesn't try to substitute it

A new, yet-unpackaged version of app-text/enchant does a version check
on the unittest++ version which falls over on it being blank.

Bug: https://bugs.gentoo.org/863974
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2025-07-26 04:06:10 +01:00
parent cd48aac332
commit 75d2153d06
2 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
https://bugs.gentoo.org/863974
https://github.com/unittest-cpp/unittest-cpp/pull/188
https://github.com/msys2/MINGW-packages/issues/17297
From 91790b98e03654c72b0783cf8fbc66c5f56892f5 Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyich@gmail.com>
Date: Mon, 18 Dec 2023 19:05:55 +0000
Subject: [PATCH] CMakeLists.txt: fix PACKAGE_VERSION substitution in .pc file
Before the change project built using `cmake` had Version field empty:
Version:
After the change version is set as expected:
Version: 2.1.0
Noticed as as a build failure of `echant-2.6.4` which failed to find the
package using `pkg-config --exists --print-errors "UnitTest++ >= 1.6"`
expression.
---
CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b4c75c9..10ecf60 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -135,6 +135,7 @@ set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${CMAKE_INSTALL_PREFIX}/bin)
set(libdir ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})
set(includedir ${CMAKE_INSTALL_PREFIX}/include/UnitTest++)
+set(PACKAGE_VERSION ${CMAKE_PROJECT_VERSION})
configure_file("UnitTest++.pc.in" "UnitTest++.pc" @ONLY)
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set(pkgconfdir ${CMAKE_INSTALL_PREFIX}/libdata/pkgconfig)

View File

@@ -0,0 +1,59 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake dot-a
MY_PN="unittest-cpp"
MY_P="${MY_PN}-${PV}"
DESCRIPTION="A lightweight unit testing framework for C++"
HOMEPAGE="https://unittest-cpp.github.io/"
SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${MY_P}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test"
RESTRICT="!test? ( test )"
PATCHES=(
# https://github.com/unittest-cpp/unittest-cpp/commit/2423fcac7668aa9c331a2dcf024c3ca06742942d
"${FILESDIR}"/${P}-fix-tests-with-clang.patch
"${FILESDIR}"/${P}-cmake-fix-pkgconfig-dir-path-on-FreeBSD.patch
"${FILESDIR}"/${P}-Add-support-for-LIB_SUFFIX.patch
"${FILESDIR}"/${P}-cmake4.patch
)
src_prepare() {
cmake_src_prepare
# https://github.com/unittest-cpp/unittest-cpp/pull/163
sed -i '/run unit tests as post build step/,/Running unit tests/d' \
CMakeLists.txt || die
}
src_configure() {
lto-guarantee-fat
local mycmakeargs=(
# Don't build with -Werror: https://bugs.gentoo.org/747583
-DUTPP_AMPLIFY_WARNINGS=OFF
-DUTPP_INCLUDE_TESTS_IN_BUILD=$(usex test)
# Workaround for bug #863974 and broken .pc file
-DPACKAGE_VERSION=${PV}
)
cmake_src_configure
}
src_test() {
"${BUILD_DIR}/TestUnitTest++" || die "Tests failed"
}
src_install() {
cmake_src_install
strip-lto-bytecode
}