From 91b79ba84ef8fdd008b61581c32a7aa746a2b492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 3 Dec 2020 11:12:59 +0100 Subject: [PATCH] shared/build: make the version string definition less terrible The BLKID and ELFUTILS strings were present twice. Let's reaarange things so that each times requires definition in exactly one place. Also let's sort things a bit: the "heavy hitters" like PAM/MAC first, then crypto libs, then other libs, alphabetically, compressors, and external compat integrations. I think it's useful for users to group similar concepts together to some extent. For example, when checking what compression is available, it helps a lot to have them listed together. FDISK is renamed to LIBFDISK to make it clear that this is about he library and the executable. --- src/basic/build.c | 216 ++++++++++++++++++++++++++++++ src/basic/build.h | 250 +---------------------------------- src/basic/meson.build | 1 + src/basic/util.c | 4 +- src/core/dbus-manager.c | 2 +- src/core/main.c | 10 +- src/test/test-cgroup-setup.c | 2 +- 7 files changed, 228 insertions(+), 257 deletions(-) create mode 100644 src/basic/build.c diff --git a/src/basic/build.c b/src/basic/build.c new file mode 100644 index 0000000000..45074591a6 --- /dev/null +++ b/src/basic/build.c @@ -0,0 +1,216 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "build.h" + +const char* const systemd_features = + + /* PAM and MAC frameworks */ + +#if HAVE_PAM + "+PAM" +#else + "-PAM" +#endif + +#if HAVE_AUDIT + " +AUDIT" +#else + " -AUDIT" +#endif + +#if HAVE_SELINUX + " +SELINUX" +#else + " -SELINUX" +#endif + +#if HAVE_APPARMOR + " +APPARMOR" +#else + " -APPARMOR" +#endif + +#if ENABLE_IMA + " +IMA" +#else + " -IMA" +#endif + +#if ENABLE_SMACK + " +SMACK" +#else + " -SMACK" +#endif + +#if HAVE_SECCOMP + " +SECCOMP" +#else + " -SECCOMP" +#endif + + /* crypto libraries */ + +#if HAVE_GCRYPT + " +GCRYPT" +#else + " -GCRYPT" +#endif + +#if HAVE_GNUTLS + " +GNUTLS" +#else + " -GNUTLS" +#endif + +#if HAVE_OPENSSL + " +OPENSSL" +#else + " -OPENSSL" +#endif + + /* all other libraries, sorted alphabetically */ + +#if HAVE_ACL + " +ACL" +#else + " -ACL" +#endif + +#if HAVE_BLKID + " +BLKID" +#else + " -BLKID" +#endif + +#if HAVE_LIBCURL + " +CURL" +#else + " -CURL" +#endif + +#if HAVE_ELFUTILS + " +ELFUTILS" +#else + " -ELFUTILS" +#endif + +#if HAVE_LIBFIDO2 + " +FIDO2" +#else + " -FIDO2" +#endif + +#if HAVE_LIBIDN2 + " +IDN2" +#else + " -IDN2" +#endif + +#if HAVE_LIBIDN + " +IDN" +#else + " -IDN" +#endif + +#if HAVE_LIBIPTC + " +IPTC" +#else + " -IPTC" +#endif + +#if HAVE_KMOD + " +KMOD" +#else + " -KMOD" +#endif + +#if HAVE_LIBCRYPTSETUP + " +LIBCRYPTSETUP" +#else + " -LIBCRYPTSETUP" +#endif + +#if HAVE_LIBFDISK + " +LIBFDISK" +#else + " -LIBFDISK" +#endif + +#if HAVE_PCRE2 + " +PCRE2" +#else + " -PCRE2" +#endif + +#if HAVE_PWQUALITY + " +PWQUALITY" +#else + " -PWQUALITY" +#endif + +#if HAVE_P11KIT + " +P11KIT" +#else + " -P11KIT" +#endif + +#if HAVE_QRENCODE + " +QRENCODE" +#else + " -QRENCODE" +#endif + + /* compressors */ + +#if HAVE_BZIP2 + " +BZIP2" +#else + " -BZIP2" +#endif + +#if HAVE_LZ4 + " +LZ4" +#else + " -LZ4" +#endif + +#if HAVE_XZ + " +XZ" +#else + " -XZ" +#endif + +#if HAVE_ZLIB + " +ZLIB" +#else + " -ZLIB" +#endif + +#if HAVE_ZSTD + " +ZSTD" +#else + " -ZSTD" +#endif + + /* other stuff that doesn't fit above */ + +#if HAVE_XKBCOMMON + " +XKBCOMMON" +#else + " -XKBCOMMON" +#endif + +#if ENABLE_UTMP + " +UTMP" +#else + " -UTMP" +#endif + +#if HAVE_SYSV_COMPAT + " +SYSVINIT" +#else + " -SYSVINIT" +#endif + + " default-hierarchy=" DEFAULT_HIERARCHY_NAME + ; diff --git a/src/basic/build.h b/src/basic/build.h index 05f0ccd868..3de0d36cc9 100644 --- a/src/basic/build.h +++ b/src/basic/build.h @@ -3,255 +3,7 @@ #include "version.h" -#if HAVE_PAM -#define _PAM_FEATURE_ "+PAM" -#else -#define _PAM_FEATURE_ "-PAM" -#endif - -#if HAVE_AUDIT -#define _AUDIT_FEATURE_ "+AUDIT" -#else -#define _AUDIT_FEATURE_ "-AUDIT" -#endif - -#if HAVE_SELINUX -#define _SELINUX_FEATURE_ "+SELINUX" -#else -#define _SELINUX_FEATURE_ "-SELINUX" -#endif - -#if HAVE_APPARMOR -#define _APPARMOR_FEATURE_ "+APPARMOR" -#else -#define _APPARMOR_FEATURE_ "-APPARMOR" -#endif - -#if ENABLE_IMA -#define _IMA_FEATURE_ "+IMA" -#else -#define _IMA_FEATURE_ "-IMA" -#endif - -#if ENABLE_SMACK -#define _SMACK_FEATURE_ "+SMACK" -#else -#define _SMACK_FEATURE_ "-SMACK" -#endif - -#if HAVE_SYSV_COMPAT -#define _SYSVINIT_FEATURE_ "+SYSVINIT" -#else -#define _SYSVINIT_FEATURE_ "-SYSVINIT" -#endif - -#if ENABLE_UTMP -#define _UTMP_FEATURE_ "+UTMP" -#else -#define _UTMP_FEATURE_ "-UTMP" -#endif - -#if HAVE_LIBCRYPTSETUP -#define _LIBCRYPTSETUP_FEATURE_ "+LIBCRYPTSETUP" -#else -#define _LIBCRYPTSETUP_FEATURE_ "-LIBCRYPTSETUP" -#endif - -#if HAVE_GCRYPT -#define _GCRYPT_FEATURE_ "+GCRYPT" -#else -#define _GCRYPT_FEATURE_ "-GCRYPT" -#endif - -#if HAVE_GNUTLS -#define _GNUTLS_FEATURE_ "+GNUTLS" -#else -#define _GNUTLS_FEATURE_ "-GNUTLS" -#endif - -#if HAVE_OPENSSL -#define _OPENSSL_FEATURE_ "+OPENSSL" -#else -#define _OPENSSL_FEATURE_ "-OPENSSL" -#endif - -#if HAVE_ACL -#define _ACL_FEATURE_ "+ACL" -#else -#define _ACL_FEATURE_ "-ACL" -#endif - -#if HAVE_ZLIB -#define _ZLIB_FEATURE_ "+ZLIB" -#else -#define _ZLIB_FEATURE_ "-ZLIB" -#endif - -#if HAVE_XZ -#define _XZ_FEATURE_ "+XZ" -#else -#define _XZ_FEATURE_ "-XZ" -#endif - -#if HAVE_LZ4 -#define _LZ4_FEATURE_ "+LZ4" -#else -#define _LZ4_FEATURE_ "-LZ4" -#endif - -#if HAVE_ZSTD -#define _ZSTD_FEATURE_ "+ZSTD" -#else -#define _ZSTD_FEATURE_ "-ZSTD" -#endif - -#if HAVE_BZIP2 -#define _BZIP2_FEATURE_ "+BZIP2" -#else -#define _BZIP2_FEATURE_ "-BZIP2" -#endif - -#if HAVE_SECCOMP -#define _SECCOMP_FEATURE_ "+SECCOMP" -#else -#define _SECCOMP_FEATURE_ "-SECCOMP" -#endif - -#if HAVE_BLKID -#define _BLKID_FEATURE_ "+BLKID" -#else -#define _BLKID_FEATURE_ "-BLKID" -#endif - -#if HAVE_ELFUTILS -#define _ELFUTILS_FEATURE_ "+ELFUTILS" -#else -#define _ELFUTILS_FEATURE_ "-ELFUTILS" -#endif - -#if HAVE_KMOD -#define _KMOD_FEATURE_ "+KMOD" -#else -#define _KMOD_FEATURE_ "-KMOD" -#endif - -#if HAVE_LIBIDN2 -#define _IDN2_FEATURE_ "+IDN2" -#else -#define _IDN2_FEATURE_ "-IDN2" -#endif - -#if HAVE_LIBIDN -#define _IDN_FEATURE_ "+IDN" -#else -#define _IDN_FEATURE_ "-IDN" -#endif - -#if HAVE_PCRE2 -#define _PCRE2_FEATURE_ "+PCRE2" -#else -#define _PCRE2_FEATURE_ "-PCRE2" -#endif - -#if HAVE_PWQUALITY -#define _PWQUALITY_FEATURE_ "+PWQUALITY" -#else -#define _PWQUALITY_FEATURE_ "-PWQUALITY" -#endif - -#if HAVE_LIBFDISK -#define _FDISK_FEATURE_ "+FDISK" -#else -#define _FDISK_FEATURE_ "-FDISK" -#endif - -#if HAVE_P11KIT -#define _P11KIT_FEATURE_ "+P11KIT" -#else -#define _P11KIT_FEATURE_ "-P11KIT" -#endif - -#if HAVE_LIBFIDO2 -#define _FIDO2_FEATURE_ "+FIDO2" -#else -#define _FIDO2_FEATURE_ "-FIDO2" -#endif - -#if HAVE_QRENCODE -#define _QRENCODE_FEATURE_ "+QRENCODE" -#else -#define _QRENCODE_FEATURE_ "-QRENCODE" -#endif - -#if HAVE_LIBCURL -#define _CURL_FEATURE_ "+CURL" -#else -#define _CURL_FEATURE_ "-CURL" -#endif - -#if HAVE_LIBIPTC -#define _IPTC_FEATURE_ "+IPTC" -#else -#define _IPTC_FEATURE_ "-IPTC" -#endif - -#if HAVE_ELFUTILS -#define _ELFUTILS_FEATURE_ "+ELFUTILS" -#else -#define _ELFUTILS_FEATURE_ "-ELFUTILS" -#endif - -#if HAVE_XKBCOMMON -#define _XKBCOMMON_FEATURE_ "+XKBCOMMON" -#else -#define _XKBCOMMON_FEATURE_ "-XKBCOMMON" -#endif - -#if HAVE_BLKID -#define _BLKID_FEATURE_ "+BLKID" -#else -#define _BLKID_FEATURE_ "-BLKID" -#endif - -#define _CGROUP_HIERARCHY_ "default-hierarchy=" DEFAULT_HIERARCHY_NAME - -#define SYSTEMD_FEATURES \ - _PAM_FEATURE_ " " \ - _AUDIT_FEATURE_ " " \ - _SELINUX_FEATURE_ " " \ - _IMA_FEATURE_ " " \ - _APPARMOR_FEATURE_ " " \ - _SMACK_FEATURE_ " " \ - _SYSVINIT_FEATURE_ " " \ - _UTMP_FEATURE_ " " \ - _LIBCRYPTSETUP_FEATURE_ " " \ - _GCRYPT_FEATURE_ " " \ - _GNUTLS_FEATURE_ " " \ - _OPENSSL_FEATURE_ " " \ - _ACL_FEATURE_ " " \ - _ZLIB_FEATURE_ " " \ - _XZ_FEATURE_ " " \ - _LZ4_FEATURE_ " " \ - _ZSTD_FEATURE_ " " \ - _BZIP2_FEATURE_ " " \ - _SECCOMP_FEATURE_ " " \ - _BLKID_FEATURE_ " " \ - _ELFUTILS_FEATURE_ " " \ - _KMOD_FEATURE_ " " \ - _IDN2_FEATURE_ " " \ - _IDN_FEATURE_ " " \ - _PCRE2_FEATURE_ " " \ - _PWQUALITY_FEATURE_ " " \ - _FDISK_FEATURE_ " " \ - _P11KIT_FEATURE_ " " \ - _FIDO2_FEATURE_ " " \ - _QRENCODE_FEATURE_ " " \ - _CURL_FEATURE_ " " \ - _IPTC_FEATURE_ " " \ - _ELFUTILS_FEATURE_ " " \ - _XKBCOMMON_FEATURE_ " " \ - _BLKID_FEATURE_ " " \ - _CGROUP_HIERARCHY_ +extern const char* const systemd_features; enum { BUILD_MODE_DEVELOPER, diff --git a/src/basic/meson.build b/src/basic/meson.build index 1183ea83ad..a4f97c1fb5 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -19,6 +19,7 @@ basic_sources = files(''' blockdev-util.h btrfs-util.c btrfs-util.h + build.c build.h bus-label.c bus-label.h diff --git a/src/basic/util.c b/src/basic/util.c index f98ecf3858..b080ce4e96 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -193,8 +193,8 @@ int container_get_leader(const char *machine, pid_t *pid) { } int version(void) { - puts("systemd " STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")\n" - SYSTEMD_FEATURES); + printf("systemd " STRINGIFY(PROJECT_VERSION) " (" GIT_VERSION ")\n%s\n", + systemd_features); return 0; } diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index b37ed7c862..3e1d609aa3 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -49,7 +49,7 @@ static UnitFileFlags unit_file_bools_to_flags(bool runtime, bool force) { BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_oom_policy, oom_policy, OOMPolicy); static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_version, "s", GIT_VERSION); -static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_features, "s", SYSTEMD_FEATURES); +static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_features, "s", systemd_features); static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_architecture, "s", architecture_to_string(uname_architecture())); static BUS_DEFINE_PROPERTY_GET2(property_get_system_state, "s", Manager, manager_state, manager_state_to_string); static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_timer_slack_nsec, "t", (uint64_t) prctl(PR_GET_TIMERSLACK)); diff --git a/src/core/main.c b/src/core/main.c index a280b756ff..9cb6afcd82 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1987,8 +1987,9 @@ static void log_execution_mode(bool *ret_first_boot) { if (arg_system) { int v; - log_info("systemd " GIT_VERSION " running in %ssystem mode. (" SYSTEMD_FEATURES ")", - arg_action == ACTION_TEST ? "test " : "" ); + log_info("systemd " GIT_VERSION " running in %ssystem mode. (%s)", + arg_action == ACTION_TEST ? "test " : "", + systemd_features); v = detect_virtualization(); if (v > 0) @@ -2026,8 +2027,9 @@ static void log_execution_mode(bool *ret_first_boot) { _cleanup_free_ char *t; t = uid_to_name(getuid()); - log_debug("systemd " GIT_VERSION " running in %suser mode for user " UID_FMT "/%s. (" SYSTEMD_FEATURES ")", - arg_action == ACTION_TEST ? " test" : "", getuid(), strna(t)); + log_debug("systemd " GIT_VERSION " running in %suser mode for user " UID_FMT "/%s. (%s)", + arg_action == ACTION_TEST ? " test" : "", + getuid(), strna(t), systemd_features); } *ret_first_boot = false; diff --git a/src/test/test-cgroup-setup.c b/src/test/test-cgroup-setup.c index 72726ca595..4978a92e46 100644 --- a/src/test/test-cgroup-setup.c +++ b/src/test/test-cgroup-setup.c @@ -18,7 +18,7 @@ static void test_is_wanted_print(bool header) { assert_se(proc_cmdline(&cmdline) >= 0); log_info("cmdline: %s", cmdline); if (header) { - log_info(_CGROUP_HIERARCHY_); + log_info("default-hierarchy=" DEFAULT_HIERARCHY_NAME); (void) system("findmnt -n /sys/fs/cgroup"); }