build: Add test for HAVE_BROKEN_POSIX_FALLOCATE to waf build
authorAndrew Bartlett <abartlet@samba.org>
Tue, 5 Jun 2012 04:35:15 +0000 (14:35 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 5 Jun 2012 07:48:05 +0000 (09:48 +0200)
This was previously only in the autoconf build, added in 3264a98f.

Andrew Bartlett

source3/wscript

index 7136c477141f73c0516984375782a6bae8e9ed98..397718496aefed25cb971b1431234dfbd804d54c 100755 (executable)
@@ -803,6 +803,19 @@ int i; i = PAM_RADIO_TYPE;
                 execute=True,
                 msg='Checking whether fcntl locking is available')
 
                 execute=True,
                 msg='Checking whether fcntl locking is available')
 
+# glibc up to 2.3.6 had dangerously broken posix_fallocate(). DON'T USE IT.
+    if not conf.CHECK_CODE('''
+#define _XOPEN_SOURCE 600
+#include <stdlib.h>
+#if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 4))
+#error probably broken posix_fallocate
+#endif
+''',
+                           '_HAVE_UNBROKEN_POSIX_FALLOCATE',
+                           msg='for broken posix_fallocate'):
+        conf.DEFINE('HAVE_BROKEN_POSIX_FALLOCATE', '1')
+
+
     conf.CHECK_STRUCTURE_MEMBER('struct stat', 'st_mtim.tv_nsec',
                                 define='HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC') # Linux, Solaris
     conf.CHECK_STRUCTURE_MEMBER('struct stat', 'st_mtimensec',
     conf.CHECK_STRUCTURE_MEMBER('struct stat', 'st_mtim.tv_nsec',
                                 define='HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC') # Linux, Solaris
     conf.CHECK_STRUCTURE_MEMBER('struct stat', 'st_mtimensec',