9b2eb2 build-sys: Detect whether struct statx is defined in sys/stat.h

3 files Authored by Filipe Brandenburger 4 years ago, Committed by Packit Service 4 years ago,
    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
    
    patch_name: 0001-build-sys-Detect-whether-struct-statx-is-defined-in-.patch
    present_in_specfile: true
    location_in_specfile: 1
    squash_commits: true
    
        
file modified
+5 -0
file modified
+4 -1
file modified
+0 -1