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"); }