diff options
author | Filipe Brandenburger <filbranden@google.com> | 2018-07-15 22:43:35 -0700 |
---|---|---|
committer | Sven Eden <sven.eden@prydeworx.com> | 2018-10-29 10:18:21 +0100 |
commit | e644f2ca294b161b65b95d924aa35d2ffcb28abe (patch) | |
tree | b248ba00aee47bba8c469f0cc72ccd9ad9bc6615 /meson.build | |
parent | 2e2fcdca834119eaf45336a959327d94e989b29e (diff) |
build-sys: Detect whether struct statx is defined in sys/stat.h
Starting with glibc 2.27.9000-36.fc29, include file sys/stat.h will have a
definition for struct statx, in which case include file linux/stat.h should be
avoided, in order to prevent a duplicate definition.
In file included from ../src/basic/missing.h:18,
from ../src/basic/util.h:28,
from ../src/basic/hashmap.h:10,
from ../src/shared/bus-util.h:12,
from ../src/libsystemd/sd-bus/bus-creds.c:11:
/usr/include/linux/stat.h:99:8: error: redefinition of ‘struct statx’
struct statx {
^~~~~
In file included from /usr/include/sys/stat.h:446,
from ../src/basic/util.h:19,
from ../src/basic/hashmap.h:10,
from ../src/shared/bus-util.h:12,
from ../src/libsystemd/sd-bus/bus-creds.c:11:
/usr/include/bits/statx.h:36:8: note: originally defined here
struct statx
^~~~~
Extend our meson.build to look for struct statx when only sys/stat.h is
included and, in that case, do not include linux/stat.h anymore.
Tested that systemd builds correctly when using a glibc version that includes a
definition for struct statx.
glibc Fedora RPM update:
https://src.fedoraproject.org/rpms/glibc/c/28cb5d31fc1e5887912283c889689c47076278ae
glibc upstream commit:
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=fd70af45528d59a00eb3190ef6706cb299488fcd
(cherry picked from commit 75720bff62a84896e9a0654afc7cf9408cf89a38)
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/meson.build b/meson.build index dea50842a..f1975db8b 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1+ project('elogind', 'c', - version : '239.1', + version : '239', license : 'LGPLv2+', default_options: [ 'c_std=gnu99', @@ -209,7 +209,6 @@ varrunissymllink = run_command('test', '-L', '/var/run').returncode() == 0 message('Setting VARRUN_IS_SYMLINK to: @0@'.format(varrunissymllink)) conf.set10('VARRUN_IS_SYMLINK', varrunissymllink) #endif // 1 - pamlibdir = get_option('pamlibdir') if pamlibdir == '' pamlibdir = join_paths(rootlibdir, 'security') @@ -501,6 +500,7 @@ decl_headers = ''' #include <sys/stat.h> ''' # FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail +# FIXME: these should use -D_GNU_SOURCE, since that is defined at build time foreach decl : ['char16_t', 'char32_t', @@ -515,6 +515,10 @@ foreach decl : ['char16_t', conf.set10('HAVE_' + decl.underscorify().to_upper(), have) endforeach +conf.set10('HAVE_STRUCT_STATX_IN_SYS_STAT_H', cc.sizeof('struct statx', prefix : ''' +//#include <sys/stat.h> +''', args : '-D_GNU_SOURCE') > 0) + foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'], ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'], ['IFLA_VRF_TABLE', 'linux/if_link.h'], @@ -910,7 +914,7 @@ enable_debug_mmap_cache = false #if 1 /// additional elogind debug mode enable_debug_elogind = false #endif // 1 -foreach name : get_option('debug-extra') +foreach name : get_option('debug') if name == 'hashmap' enable_debug_hashmap = true elif name == 'mmap-cache' @@ -1476,7 +1480,6 @@ conf.set_quoted('USER_GENERATOR_PATH', '/dev/null') ##################################################################### #endif // 1 - config_h = configure_file( output : 'config.h', configuration : conf) @@ -1602,10 +1605,10 @@ install_libelogind_static = static_library( libselinux, #if 0 /// No grypt with elogind # libgcrypt], +# c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC'])) #else ], #endif // 0 - c_args : libelogind_c_args + (static_libelogind_pic ? [] : ['-fno-PIC'])) ############################################################ @@ -3215,14 +3218,14 @@ status = [ 'rootexeclib dir: @0@'.format(rootlibexecdir), #endif // 1 #if 0 /// UNNEEDED by elogind -# 'SysV init scripts: @0@'.format(sysvinit_path), -# 'SysV rc?.d directories: @0@'.format(sysvrcnd_path), #endif // 0 + 'SysV init scripts: @0@'.format(sysvinit_path), + 'SysV rc?.d directories: @0@'.format(sysvrcnd_path), 'PAM modules directory: @0@'.format(pamlibdir), 'PAM configuration directory: @0@'.format(pamconfdir), #if 0 /// UNNEEDED by elogind -# 'RPM macros directory: @0@'.format(rpmmacrosdir), #endif // 0 + 'RPM macros directory: @0@'.format(rpmmacrosdir), 'modprobe.d directory: @0@'.format(modprobedir), 'D-Bus policy directory: @0@'.format(dbuspolicydir), 'D-Bus session directory: @0@'.format(dbussessionservicedir), @@ -3388,12 +3391,12 @@ foreach tuple : [ # ['wheel group', get_option('wheel-group')], # ['gshadow'], #endif // 0 - ['valgrind', conf.get('VALGRIND') == 1], #if 1 /// Extra debugging for elogind ['debug elogind'], #endif // 1 ['debug hashmap'], ['debug mmap cache'], + ['valgrind', conf.get('VALGRIND') == 1], ] if tuple.length() >= 2 |