1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-27 10:25:37 +03:00

meson: use a single constant for default compression setting

Suggested by Daniele Nicolodi:
https://github.com/systemd/systemd/pull/23160#discussion_r855853716

This is possible only if the macro is never used in #if, but only in C code.
This means that all places that use #if have to be refactored into C, but we
reduce the duplication a bit, and C is nicer to read than preprocessor
conditionals.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2022-04-22 13:10:07 +02:00
parent 1d997b8114
commit ee00684c50
4 changed files with 43 additions and 38 deletions

View File

@ -1470,9 +1470,9 @@ elif compression == 'lz4' and not have_lz4
elif compression == 'xz' and not have_xz elif compression == 'xz' and not have_xz
error('default-compression=xz requires xz') error('default-compression=xz requires xz')
endif endif
conf.set10('DEFAULT_COMPRESSION_ZSTD', compression == 'zstd') conf.set('DEFAULT_COMPRESSION',
conf.set10('DEFAULT_COMPRESSION_LZ4', compression == 'lz4') compression == 'none' ? 0 :
conf.set10('DEFAULT_COMPRESSION_XZ', compression == 'xz') 'OBJECT_COMPRESSED_@0@'.format(compression.to_upper()))
want_xkbcommon = get_option('xkbcommon') want_xkbcommon = get_option('xkbcommon')
if want_xkbcommon != 'false' and not skip_deps if want_xkbcommon != 'false' and not skip_deps

View File

@ -462,7 +462,7 @@ static int save_external_coredump(
if (lseek(fd, 0, SEEK_SET) == (off_t) -1) if (lseek(fd, 0, SEEK_SET) == (off_t) -1)
return log_error_errno(errno, "Failed to seek on coredump %s: %m", fn); return log_error_errno(errno, "Failed to seek on coredump %s: %m", fn);
fn_compressed = strjoin(fn, COMPRESSED_EXT); fn_compressed = strjoin(fn, default_compression_extension());
if (!fn_compressed) if (!fn_compressed)
return log_oom(); return log_oom();

View File

@ -53,37 +53,42 @@ int decompress_stream_zstd(int fdf, int fdt, uint64_t max_size);
static inline int compress_blob(const void *src, uint64_t src_size, static inline int compress_blob(const void *src, uint64_t src_size,
void *dst, size_t dst_alloc_size, size_t *dst_size) { void *dst, size_t dst_alloc_size, size_t *dst_size) {
#if DEFAULT_COMPRESSION_ZSTD switch (DEFAULT_COMPRESSION) {
return compress_blob_zstd(src, src_size, dst, dst_alloc_size, dst_size); case OBJECT_COMPRESSED_ZSTD:
#elif DEFAULT_COMPRESSION_LZ4 return compress_blob_zstd(src, src_size, dst, dst_alloc_size, dst_size);
return compress_blob_lz4(src, src_size, dst, dst_alloc_size, dst_size); case OBJECT_COMPRESSED_LZ4:
#elif DEFAULT_COMPRESSION_XZ return compress_blob_lz4(src, src_size, dst, dst_alloc_size, dst_size);
return compress_blob_xz(src, src_size, dst, dst_alloc_size, dst_size); case OBJECT_COMPRESSED_XZ:
#else return compress_blob_xz(src, src_size, dst, dst_alloc_size, dst_size);
return -EOPNOTSUPP; default:
#endif return -EOPNOTSUPP;
}
} }
static inline int compress_stream(int fdf, int fdt, uint64_t max_bytes, uint64_t *ret_uncompressed_size) { static inline int compress_stream(int fdf, int fdt, uint64_t max_bytes, uint64_t *ret_uncompressed_size) {
#if DEFAULT_COMPRESSION_ZSTD switch (DEFAULT_COMPRESSION) {
return compress_stream_zstd(fdf, fdt, max_bytes, ret_uncompressed_size); case OBJECT_COMPRESSED_ZSTD:
#elif DEFAULT_COMPRESSION_LZ4 return compress_stream_zstd(fdf, fdt, max_bytes, ret_uncompressed_size);
return compress_stream_lz4(fdf, fdt, max_bytes, ret_uncompressed_size); case OBJECT_COMPRESSED_LZ4:
#elif DEFAULT_COMPRESSION_XZ return compress_stream_lz4(fdf, fdt, max_bytes, ret_uncompressed_size);
return compress_stream_xz(fdf, fdt, max_bytes, ret_uncompressed_size); case OBJECT_COMPRESSED_XZ:
#else return compress_stream_xz(fdf, fdt, max_bytes, ret_uncompressed_size);
return -EOPNOTSUPP; default:
#endif return -EOPNOTSUPP;
}
} }
#if DEFAULT_COMPRESSION_ZSTD static inline const char* default_compression_extension(void) {
# define COMPRESSED_EXT ".zst" switch (DEFAULT_COMPRESSION) {
#elif DEFAULT_COMPRESSION_LZ4 case OBJECT_COMPRESSED_ZSTD:
# define COMPRESSED_EXT ".lz4" return ".zst";
#elif DEFAULT_COMPRESSION_XZ case OBJECT_COMPRESSED_LZ4:
# define COMPRESSED_EXT ".xz" return ".lz4";
#else case OBJECT_COMPRESSED_XZ:
# define COMPRESSED_EXT "" return ".xz";
#endif default:
return "";
}
}
int decompress_stream(const char *filename, int fdf, int fdt, uint64_t max_bytes); int decompress_stream(const char *filename, int fdf, int fdt, uint64_t max_bytes);

View File

@ -3359,13 +3359,6 @@ int journal_file_open(
.open_flags = open_flags, .open_flags = open_flags,
.writable = (open_flags & O_ACCMODE) != O_RDONLY, .writable = (open_flags & O_ACCMODE) != O_RDONLY,
#if DEFAULT_COMPRESSION_ZSTD
.compress_zstd = FLAGS_SET(file_flags, JOURNAL_COMPRESS),
#elif DEFAULT_COMPRESSION_LZ4
.compress_lz4 = FLAGS_SET(file_flags, JOURNAL_COMPRESS),
#elif DEFAULT_COMPRESSION_XZ
.compress_xz = FLAGS_SET(file_flags, JOURNAL_COMPRESS),
#endif
.compress_threshold_bytes = compress_threshold_bytes == UINT64_MAX ? .compress_threshold_bytes = compress_threshold_bytes == UINT64_MAX ?
DEFAULT_COMPRESS_THRESHOLD : DEFAULT_COMPRESS_THRESHOLD :
MAX(MIN_COMPRESS_THRESHOLD, compress_threshold_bytes), MAX(MIN_COMPRESS_THRESHOLD, compress_threshold_bytes),
@ -3374,6 +3367,13 @@ int journal_file_open(
#endif #endif
}; };
if (DEFAULT_COMPRESSION == OBJECT_COMPRESSED_ZSTD)
f->compress_zstd = FLAGS_SET(file_flags, JOURNAL_COMPRESS);
else if (DEFAULT_COMPRESSION == OBJECT_COMPRESSED_LZ4)
f->compress_lz4 = FLAGS_SET(file_flags, JOURNAL_COMPRESS);
else if (DEFAULT_COMPRESSION == OBJECT_COMPRESSED_XZ)
f->compress_xz = FLAGS_SET(file_flags, JOURNAL_COMPRESS);
/* We turn on keyed hashes by default, but provide an environment variable to turn them off, if /* We turn on keyed hashes by default, but provide an environment variable to turn them off, if
* people really want that */ * people really want that */
r = getenv_bool("SYSTEMD_JOURNAL_KEYED_HASH"); r = getenv_bool("SYSTEMD_JOURNAL_KEYED_HASH");