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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2020-12-03 11:12:59 +01:00
parent 6c822dc2d5
commit 91b79ba84e
7 changed files with 228 additions and 257 deletions

216
src/basic/build.c Normal file
View File

@ -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
;

View File

@ -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,

View File

@ -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

View File

@ -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;
}

View File

@ -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));

View File

@ -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;

View File

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