git: 22ae80be5506 - stable/15 - packages: Remove the tests-dev package

From: Lexi Winter <ivy_at_FreeBSD.org>
Date: Fri, 19 Sep 2025 01:20:02 UTC
The branch stable/15 has been updated by ivy:

URL: https://cgit.FreeBSD.org/src/commit/?id=22ae80be5506cf853dd9ad6e2958899ac3bae506

commit 22ae80be5506cf853dd9ad6e2958899ac3bae506
Author:     Lexi Winter <ivy@FreeBSD.org>
AuthorDate: 2025-09-18 09:13:41 +0000
Commit:     Lexi Winter <ivy@FreeBSD.org>
CommitDate: 2025-09-19 01:17:29 +0000

    packages: Remove the tests-dev package
    
    We don't want a tests-dev package, because this means set-devel depends
    on tests-dev, which transitively depends on tests, which means you can't
    install set-devel without also getting tests.
    
    The only real "dev" files in tests-dev are from ATF (libprivateatf),
    so move that to its own package and add a dependency from tests.
    
    Also move Kyua to its own package, since this might be useful for
    running tests even when the user doesn't want the whole set of base
    tests installed.
    
    Add a dependency from -tests to both -atf and -kyua, and a dependency
    on -set-base, since the tests won't work without the full base system
    installed.
    
    The remaining "dev" files in tests are actually test artifacts, not real
    development libraries.  Add a new NO_DEV_PACKAGE option to bsd.lib.mk,
    which causes dev files to be installed in the base package instead of
    creating a -dev package, and set this option for everything that
    installs test libraries.
    
    While here, add a slightly more informative description for the tests
    package.
    
    MFC after:      3 seconds
    Reviewed by:    bapt, emaste
    Differential Revision:  https://reviews.freebsd.org/D52597
    
    (cherry picked from commit 9065390ddc7b1ce2613777f6a947200950a5ac71)
---
 UPDATING                                |  8 ++++++++
 lib/atf/Makefile.inc                    |  2 ++
 lib/atf/libatf-c++/Makefile             |  1 -
 lib/atf/libatf-c++/tests/Makefile       |  2 --
 lib/atf/libatf-c/Makefile               |  1 -
 lib/atf/libatf-c/tests/Makefile         |  2 --
 lib/libc/tests/tls/dso/Makefile         |  1 +
 lib/libc/tests/tls_dso/Makefile         |  1 +
 lib/libxo/tests/encoder/Makefile        |  1 +
 libexec/atf/Makefile.inc                |  2 ++
 libexec/atf/atf-check/Makefile          |  1 -
 libexec/atf/atf-pytest-wrapper/Makefile |  1 -
 libexec/atf/atf-sh/Makefile             |  1 -
 libexec/rtld-elf/tests/Makefile.inc     |  1 +
 release/packages/ucl/atf-all.ucl        |  8 ++++++++
 release/packages/ucl/kyua-all.ucl       | 20 ++++++++++++++++++++
 release/packages/ucl/tests-all.ucl      | 27 +++++++++++++++++++++++++--
 share/mk/bsd.lib.mk                     | 11 +++++++++++
 share/mk/bsd.test.mk                    |  3 +++
 usr.bin/kyua/Makefile                   |  2 +-
 20 files changed, 84 insertions(+), 12 deletions(-)

diff --git a/UPDATING b/UPDATING
index fa8ef72082c1..6756e1ebb936 100644
--- a/UPDATING
+++ b/UPDATING
@@ -18,6 +18,14 @@ and/or ports.
 	be shipped in the packages they belong to.  If you want to continue
 	building split man packages, set WITH_MANSPLITPKG=1.
 
+20250918:
+	Kyua has been moved to the FreeBSD-kyua package, and ATF has been moved
+	to the FreeBSD-atf* packages.  If you have FreeBSD-tests installed,
+	these packages will be installed automatically, otherwise you should
+	manually install them if you need these tools.
+
+	This only affects pkgbase users.
+
 20250916:
 	If SRCCONF is unset and a file named src.conf is present at
 	the top of the source tree, it will now be used instead of
diff --git a/lib/atf/Makefile.inc b/lib/atf/Makefile.inc
index f8f329842eb4..bebed0280596 100644
--- a/lib/atf/Makefile.inc
+++ b/lib/atf/Makefile.inc
@@ -24,6 +24,8 @@
 # SUCH DAMAGE.
 #
 
+PACKAGE=	atf
+LIB_PACKAGE=
 CFLAGS+=	-DHAVE_CONFIG_H
 
 WARNS?=		3
diff --git a/lib/atf/libatf-c++/Makefile b/lib/atf/libatf-c++/Makefile
index 985a79b7dc03..4f4f7f12ec05 100644
--- a/lib/atf/libatf-c++/Makefile
+++ b/lib/atf/libatf-c++/Makefile
@@ -27,7 +27,6 @@
 .include <src.opts.mk>
 .include <bsd.init.mk>
 
-PACKAGE=	tests
 LIB_CXX=	atf-c++
 PRIVATELIB=	true
 SHLIB_MAJOR=	2
diff --git a/lib/atf/libatf-c++/tests/Makefile b/lib/atf/libatf-c++/tests/Makefile
index dc052c19df67..839c6902d6b1 100644
--- a/lib/atf/libatf-c++/tests/Makefile
+++ b/lib/atf/libatf-c++/tests/Makefile
@@ -1,7 +1,5 @@
 .include <bsd.init.mk>
 
-PACKAGE=	tests
-
 TESTS_SUBDIRS=	detail
 
 ATF=		${SRCTOP}/contrib/atf
diff --git a/lib/atf/libatf-c/Makefile b/lib/atf/libatf-c/Makefile
index 4cfee2ed824f..c0890abc7640 100644
--- a/lib/atf/libatf-c/Makefile
+++ b/lib/atf/libatf-c/Makefile
@@ -27,7 +27,6 @@
 .include <src.opts.mk>
 .include <bsd.init.mk>
 
-PACKAGE=	tests
 LIB=		atf-c
 PRIVATELIB=	true
 SHLIB_MAJOR=	1
diff --git a/lib/atf/libatf-c/tests/Makefile b/lib/atf/libatf-c/tests/Makefile
index c81c18a91f00..5647e7b9fcbe 100644
--- a/lib/atf/libatf-c/tests/Makefile
+++ b/lib/atf/libatf-c/tests/Makefile
@@ -1,7 +1,5 @@
 .include <bsd.init.mk>
 
-PACKAGE=	tests
-
 TESTS_SUBDIRS=	detail
 
 ATF=		${SRCTOP}/contrib/atf
diff --git a/lib/libc/tests/tls/dso/Makefile b/lib/libc/tests/tls/dso/Makefile
index 5efd8b29a6bd..783534ff7aae 100644
--- a/lib/libc/tests/tls/dso/Makefile
+++ b/lib/libc/tests/tls/dso/Makefile
@@ -6,6 +6,7 @@ SRCS=		h_tls_dlopen.c
 
 MAN=
 PACKAGE=	tests
+NO_DEV_PACKAGE=
 
 LIBDIR=		${TESTSBASE}/lib/libc/tls
 SHLIB_MAJOR=	1
diff --git a/lib/libc/tests/tls_dso/Makefile b/lib/libc/tests/tls_dso/Makefile
index 89296c643695..7cb8f98b431e 100644
--- a/lib/libc/tests/tls_dso/Makefile
+++ b/lib/libc/tests/tls_dso/Makefile
@@ -7,6 +7,7 @@ LIBDIR=		${TESTSBASE}/lib/libc/tls
 SHLIBDIR=	${TESTSBASE}/lib/libc/tls
 SHLIB_MAJOR=	1
 PACKAGE=	tests
+NO_DEV_PACKAGE=
 
 WITHOUT_STATIC=
 WITHOUT_PROFILE=
diff --git a/lib/libxo/tests/encoder/Makefile b/lib/libxo/tests/encoder/Makefile
index 7522328b0818..02634b971ace 100644
--- a/lib/libxo/tests/encoder/Makefile
+++ b/lib/libxo/tests/encoder/Makefile
@@ -1,4 +1,5 @@
 PACKAGE=	tests
+NO_DEV_PACKAGE=
 
 LIBXOSRC=	${SRCTOP}/contrib/libxo
 
diff --git a/libexec/atf/Makefile.inc b/libexec/atf/Makefile.inc
index 42c507a6f772..e40827fa0b69 100644
--- a/libexec/atf/Makefile.inc
+++ b/libexec/atf/Makefile.inc
@@ -24,6 +24,8 @@
 # SUCH DAMAGE.
 #
 
+PACKAGE=	atf
+LIB_PACKAGE=
 CFLAGS+=	-DHAVE_CONFIG_H
 
 WARNS?=		3
diff --git a/libexec/atf/atf-check/Makefile b/libexec/atf/atf-check/Makefile
index 87d7a7cfdada..cf598e384c86 100644
--- a/libexec/atf/atf-check/Makefile
+++ b/libexec/atf/atf-check/Makefile
@@ -30,7 +30,6 @@
 ATF=		${SRCTOP}/contrib/atf
 .PATH:		${ATF}/atf-sh
 
-PACKAGE=	tests
 PROG_CXX=	atf-check
 SRCS=		atf-check.cpp
 MAN=		atf-check.1
diff --git a/libexec/atf/atf-pytest-wrapper/Makefile b/libexec/atf/atf-pytest-wrapper/Makefile
index 80b5e411ec4e..75b1bc3e1004 100644
--- a/libexec/atf/atf-pytest-wrapper/Makefile
+++ b/libexec/atf/atf-pytest-wrapper/Makefile
@@ -1,7 +1,6 @@
 .include <src.opts.mk>
 .include <bsd.init.mk>
 
-PACKAGE=	tests
 PROG_CXX=	atf_pytest_wrapper
 SRCS=		atf_pytest_wrapper.cpp
 MAN=
diff --git a/libexec/atf/atf-sh/Makefile b/libexec/atf/atf-sh/Makefile
index 2e821684d8a8..afd848581f36 100644
--- a/libexec/atf/atf-sh/Makefile
+++ b/libexec/atf/atf-sh/Makefile
@@ -30,7 +30,6 @@
 ATF=		${SRCTOP}/contrib/atf
 .PATH:		${ATF}/atf-sh
 
-PACKAGE=	tests
 PROG_CXX=	atf-sh
 SRCS=		atf-sh.cpp
 MAN=		atf-sh.1 atf-sh.3
diff --git a/libexec/rtld-elf/tests/Makefile.inc b/libexec/rtld-elf/tests/Makefile.inc
index 01cf83634239..3bd0b8590cdc 100644
--- a/libexec/rtld-elf/tests/Makefile.inc
+++ b/libexec/rtld-elf/tests/Makefile.inc
@@ -1,2 +1,3 @@
 PACKAGE?=	tests
+NO_DEV_PACKAGE=
 TESTSDIR?=	${TESTSBASE}/libexec/rtld-elf
diff --git a/release/packages/ucl/atf-all.ucl b/release/packages/ucl/atf-all.ucl
new file mode 100644
index 000000000000..de8cd55eeb9f
--- /dev/null
+++ b/release/packages/ucl/atf-all.ucl
@@ -0,0 +1,8 @@
+comment = "Automated Testing Framework"
+
+desc = <<EOD
+The Automated Testing Framework (ATF) is a collection of libraries to implement
+test programs in a variety of languages.  These libraries all offer similar
+functionality and any test program written with them exposes a consistent user
+interface.
+EOD
diff --git a/release/packages/ucl/kyua-all.ucl b/release/packages/ucl/kyua-all.ucl
new file mode 100644
index 000000000000..4a669041f7e9
--- /dev/null
+++ b/release/packages/ucl/kyua-all.ucl
@@ -0,0 +1,20 @@
+comment = "Testing framework for infrastructure software"
+
+desc = <<EOD
+Kyua is a testing framework for infrastructure software, originally designed
+to equip BSD-based operating systems with a test suite.  This means that Kyua
+is lightweight and simple, and that Kyua integrates well with various build
+systems and continuous integration frameworks.
+
+Kyua features an expressive test suite definition language, a safe runtime
+engine for test suites and a powerful report generation engine.
+
+Kyua is for both developers and users, from the developer applying a simple
+fix to a library to the system administrator deploying a new release on a
+production machine.
+
+Kyua is able to execute test programs written with a plethora of testing
+libraries and languages.  The test program library of choice is ATF, which
+kyua's design originated from.  However, framework-less test programs and
+TAP-compliant test programs can also be executed through kyua.
+EOD
diff --git a/release/packages/ucl/tests-all.ucl b/release/packages/ucl/tests-all.ucl
index 42d4ea160ec7..9aefbd0205f6 100644
--- a/release/packages/ucl/tests-all.ucl
+++ b/release/packages/ucl/tests-all.ucl
@@ -1,8 +1,31 @@
-comment = "Test Suite"
+comment = "Test suite"
+
 desc = <<EOD
-Test Suite
+The test suite, installed in /usr/tests, allows the functionality of the
+installed system to be verified.
 EOD
 
+deps {
+	# Nearly all the tests require atf to run.
+	"atf": {
+		version = "${VERSION}"
+		origin = "base"
+	},
+
+	# The test framework requires Kyua.
+	"kyua": {
+		version = "${VERSION}"
+		origin = "base"
+	},
+
+	# Since the purpose of the tests is to test the base system, the base
+	# system must be installed.
+	"set-base": {
+		version = "${VERSION}"
+		origin = "base"
+	}
+}
+
 annotations {
 	set = tests
 }
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 6caad8956c14..065e635ed43d 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -74,7 +74,14 @@ LIB_TAG_ARGS=	${TAG_ARGS}
 TAG_ARGS=	-T ${TAGS:ts,:[*]}
 
 DBG_TAG_ARGS=	${TAG_ARGS},dbg
+# Usually we want to put development files (e.g., static libraries) into a
+# separate -dev packages but for a few cases, like tests, that's not wanted,
+# so allow the caller to disable it by setting NO_DEV_PACKAGE.
+.if !defined(NO_DEV_PACKAGE)
 DEV_TAG_ARGS=	${TAG_ARGS},dev
+.else
+DEV_TAG_ARGS=	${TAG_ARGS}
+.endif
 .endif	# !defined(NO_ROOT)
 
 # ELF hardening knobs
@@ -450,7 +457,11 @@ LINKGRP?=	${LIBGRP}
 LINKMODE?=	${LIBMODE}
 SYMLINKOWN?=	${LIBOWN}
 SYMLINKGRP?=	${LIBGRP}
+.if !defined(NO_DEV_PACKAGE)
 LINKTAGS=	dev${_COMPAT_TAG}
+.else
+LINKTAGS=	${_COMPAT_TAG}
+.endif
 .include <bsd.links.mk>
 
 .if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY)
diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk
index a2e15c840e02..9f20e5835369 100644
--- a/share/mk/bsd.test.mk
+++ b/share/mk/bsd.test.mk
@@ -16,6 +16,9 @@ LOCALBASE?=	/usr/local
 TESTSDIR?=	${TESTSBASE}/${RELDIR:H}
 
 PACKAGE?=	tests
+# Prevent creating a -dev package for tests.  Sometimes tests include static
+# libraries or other artifacts which are not actually "development" files.
+NO_DEV_PACKAGE=
 
 FILESGROUPS+=	${PACKAGE}FILES
 ${PACKAGE}FILESPACKAGE=	${PACKAGE}
diff --git a/usr.bin/kyua/Makefile b/usr.bin/kyua/Makefile
index daefedbf8bca..178a1d083b79 100644
--- a/usr.bin/kyua/Makefile
+++ b/usr.bin/kyua/Makefile
@@ -10,7 +10,7 @@ KYUA_VERSION=	0.13
 KYUA_SRCDIR=	${SRCTOP}/contrib/kyua
 .PATH: ${KYUA_SRCDIR}
 
-PACKAGE=	tests
+PACKAGE=	kyua
 PROG_CXX=	kyua
 SRCS=		main.cpp
 LIBADD=		lutok sqlite3 util