unix 2.8.3.0 → 2.8.4.0
raw patch · 9 files changed
+83/−22 lines, 9 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ System.Posix.Files: haveStatx :: Bool
+ System.Posix.Files.ByteString: haveStatx :: Bool
+ System.Posix.Files.PosixString: haveStatx :: Bool
- System.Posix.PosixString: data () => PosixString
+ System.Posix.PosixString: data PosixString
Files
- System/Posix/Files.hsc +1/−0
- System/Posix/Files/ByteString.hsc +1/−0
- System/Posix/Files/Common.hsc +12/−3
- System/Posix/Files/PosixString.hsc +1/−0
- changelog.md +5/−0
- configure +42/−18
- configure.ac +17/−0
- include/HsUnixConfig.h.in +3/−0
- unix.cabal +1/−1
System/Posix/Files.hsc view
@@ -66,6 +66,7 @@ -- * Extended file status ExtendedFileStatus(..), CAttributes(..),+ haveStatx, -- ** Obtaining extended file status getExtendedFileStatus, -- ** Flags
System/Posix/Files/ByteString.hsc view
@@ -66,6 +66,7 @@ -- * Extended file status ExtendedFileStatus(..), CAttributes(..),+ haveStatx, -- ** Obtaining extended file status getExtendedFileStatus, -- ** Flags
System/Posix/Files/Common.hsc view
@@ -122,6 +122,7 @@ isDirectoryX, isSymbolicLinkX, isSocketX,+ haveStatx, -- * Setting file sizes setFdSize,@@ -939,7 +940,7 @@ -- | Want @stx_mnt_id@. pattern StatxMntId :: StatxMask-#ifdef STATX_MNT_ID+#ifdef HAVE_STATX_MNT_ID pattern StatxMntId = StatxMask (#const STATX_MNT_ID) #else pattern StatxMntId = StatxMask 0@@ -1159,11 +1160,11 @@ {-# WARNING specialDeviceIDX "specialDeviceIDX: not available on this platform, will throw error (CPP guard: @#if HAVE_SYS_SYSMACROS_H@)" #-} specialDeviceIDX _ = error "specialDeviceIDX not available on this platform" #endif-#ifdef STATX_MNT_ID+#ifdef HAVE_STATX_MNT_ID mountIDX (ExtendedFileStatus statx) = unsafePerformIO $ withForeignPtr statx $ (#peek struct statx, stx_mnt_id) #else-{-# WARNING mountIDX "mountIDX: not available on this platform, will throw error (CPP guard: @#if STATX_MNT_ID@)" #-}+{-# WARNING mountIDX "mountIDX: not available on this platform, will throw error (CPP guard: @#if HAVE_STATX_MNT_ID@)" #-} mountIDX _ = error "mountIDX not available on this platform" #endif fileBlockSizeX (ExtendedFileStatus statx) = unsafePerformIO $ do@@ -1346,3 +1347,11 @@ getExtendedFileStatus_ _ _ _ _ = ioError (ioeSetLocation unsupportedOperation "getExtendedFileStatus") #endif +-- | Whether 'statx' is available on this platform and 'getExtendedFileStatus' and+-- related functions will work.+haveStatx :: Bool+#ifdef HAVE_STATX+haveStatx = True+#else+haveStatx = False+#endif
System/Posix/Files/PosixString.hsc view
@@ -62,6 +62,7 @@ -- * Extended file status ExtendedFileStatus(..), CAttributes(..),+ haveStatx, -- ** Obtaining extended file status getExtendedFileStatus, -- ** Flags
changelog.md view
@@ -1,5 +1,10 @@ # Changelog for [`unix` package](http://hackage.haskell.org/package/unix) +## 2.8.4.0 *Dec 2023*++ * add `haveStatx`+ * fix `statx.stx_mnt_id` detection on buggy glibc, see [GHC #24072](https://gitlab.haskell.org/ghc/ghc/-/issues/24072)+ ## 2.8.3.0 *Oct 2023* * add `getExtendedFileStatus` (based on `statx`) style functions
configure view
@@ -666,7 +666,6 @@ docdir oldincludedir includedir-runstatedir localstatedir sharedstatedir sysconfdir@@ -738,7 +737,6 @@ sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var'-runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'@@ -991,15 +989,6 @@ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \- | --runstate | --runstat | --runsta | --runst | --runs \- | --run | --ru | --r)- ac_prev=runstatedir ;;- -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \- | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \- | --run=* | --ru=* | --r=*)- runstatedir=$ac_optarg ;;- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \@@ -1137,7 +1126,7 @@ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \- libdir localedir mandir runstatedir+ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes.@@ -1290,7 +1279,6 @@ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var]- --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include]@@ -3824,7 +3812,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];@@ -3870,7 +3858,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];@@ -3894,7 +3882,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];@@ -3939,7 +3927,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];@@ -3963,7 +3951,7 @@ We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];@@ -4284,6 +4272,42 @@ $as_echo "#define HAVE_STRUCT_STATX 1" >>confdefs.h fi++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for statx.stx_mnt_id" >&5+$as_echo_n "checking for statx.stx_mnt_id... " >&6; }+cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h. */++#include <sys/stat.h>+int+main ()+{++struct statx statxbuf;+statx(0, "", 0, STATX_BASIC_STATS | STATX_MNT_ID, &statxbuf);+return statxbuf.stx_mnt_id;++ ;+ return 0;+}+_ACEOF+if ac_fn_c_try_link "$LINENO"; then :++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5+$as_echo "yes" >&6; }++$as_echo "#define HAVE_STATX_MNT_ID 1" >>confdefs.h+++else++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5+$as_echo "no" >&6; }+++fi+rm -f core conftest.err conftest.$ac_objext \+ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for F_GETLK from fcntl.h" >&5
configure.ac view
@@ -50,6 +50,23 @@ # check for statx AC_CHECK_FUNC([statx], [AC_DEFINE([HAVE_STATX_FUN],[1],[HAVE_STATX_FUN])],[],[#include <sys/stat.h>]) AC_CHECK_TYPE([struct statx],[AC_DEFINE([HAVE_STRUCT_STATX],[1],[HAVE_STRUCT_STATX])],[],[#include <sys/stat.h>])+AC_MSG_CHECKING(for statx.stx_mnt_id)+AC_LINK_IFELSE([+AC_LANG_PROGRAM([[#include <sys/stat.h>]],+[[+struct statx statxbuf;+statx(0, "", 0, STATX_BASIC_STATS | STATX_MNT_ID, &statxbuf);+return statxbuf.stx_mnt_id;+]])],+[+AC_MSG_RESULT(yes)+AC_DEFINE([HAVE_STATX_MNT_ID], [1], [Define to 1 if statx.stx_mnt_id is available.])+],+[+AC_MSG_RESULT(no)+]+)+ AC_MSG_CHECKING(for F_GETLK from fcntl.h) AC_EGREP_CPP(yes,
include/HsUnixConfig.h.in view
@@ -309,6 +309,9 @@ /* HAVE_STATX_FUN */ #undef HAVE_STATX_FUN +/* Define to 1 if statx.stx_mnt_id is available. */+#undef HAVE_STATX_MNT_ID+ /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H
unix.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: unix-version: 2.8.3.0+version: 2.8.4.0 -- NOTE: Don't forget to update ./changelog.md license: BSD3