shared/cryptsetup-util: build problematic code only in developer mode

This code doesn't link when gcc+lld is used:

$ LDFLAGS=-fuse-ld=lld meson setup build-lld && ninja -C build-lld udevadm
...
ld.lld: error: src/shared/libsystemd-shared-255.a(libsystemd-shared-255.a.p/cryptsetup-util.c.o):
  symbol crypt_token_external_path@@ has undefined version
collect2: error: ld returned 1 exit status

As a work-around, restrict it to developer mode.

Closes https://github.com/systemd/systemd/issues/30218.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-11-28 17:28:06 +01:00
committed by Luca Boccassi
parent 51219be992
commit 25757715fe
2 changed files with 3 additions and 4 deletions

View File

@@ -472,7 +472,8 @@ disk images with `--image=` or similar:
* `$SYSTEMD_CRYPTSETUP_TOKEN_PATH` takes a path to a directory in the file
system. If specified overrides where libcryptsetup will look for token
modules (.so). This is useful for debugging token modules: set this
environment variable to the build directory and you are set.
environment variable to the build directory and you are set. This variable
is only supported when systemd is compiled in developer mode.
Various tools that read passwords from the TTY, such as `systemd-cryptenroll`
and `homectl`:

View File

@@ -72,8 +72,7 @@ int (*sym_crypt_volume_key_keyring)(struct crypt_device *cd, int enable);
/* Do this only on new enough compilers that actually support the "symver" attribute. Given this is a debug
* feature, let's simply not bother on older compilers */
#if defined __has_attribute
#if __has_attribute(symver)
#if BUILD_MODE_DEVELOPER && defined(__has_attribute) && __has_attribute(symver)
const char *my_crypt_token_external_path(void); /* prototype for our own implementation */
/* We use the "symver" attribute to mark this implementation as the default implementation, and drop the
@@ -97,7 +96,6 @@ _public_ const char *my_crypt_token_external_path(void) {
return NULL;
}
#endif
#endif
static void cryptsetup_log_glue(int level, const char *msg, void *usrptr) {