Missing headers from SharedMem.hsc

Simon Marlow marlowsd at gmail.com
Tue Jan 13 06:13:23 EST 2009

Don Stewart wrote:
> It was also missing HsUnix.h, so the #defines weren't propagating
> anyway.
> Mon Jan 12 15:07:58 PST 2009  Don Stewart <dons at galois.com>
>   * Add check for -lrt to get the shm* functions. Subst. in buildinfo
> Mon Jan 12 15:47:17 PST 2009  Don Stewart <dons at galois.com>
>   * SharedMem.hsc wasn't including HsUnixConfig.h, so no #defines were propagating

I can't apply these here:

$ darcs apply ~/sharedmem.patch
darcs: Cannot apply this patch bundle, since we're missing:
Thu Nov 10 12:58:32 GMT 2005  simonmar
   * [project @ 2005-11-10 12:58:32 by simonmar]
   Some docs for System.Posix, from Bj�rn Bringert

this looks like an encoding issue, since in the history I have:

Thu Nov 10 12:58:32 GMT 2005  simonmar
   * [project @ 2005-11-10 12:58:32 by simonmar]
   Some docs for System.Posix, from Bj[_\f6_]rn Bringert

I tried with darcs 2.2.0rc1 and 1.0.9, same result.

Anyone know what's going on here?  (for the darcs-users folks, the repo to 
apply to is http://darcs.haskell.org/packages/unix).

-------------- next part --------------
Mon Jan 12 15:07:58 PST 2009  Don Stewart <dons at galois.com>
  * Add check for -lrt to get the shm* functions. Subst. in buildinfo

Mon Jan 12 15:47:17 PST 2009  Don Stewart <dons at galois.com>
  * SharedMem.hsc wasn't including HsUnixConfig.h, so no #defines were propagating

New patches:

[Add check for -lrt to get the shm* functions. Subst. in buildinfo
Don Stewart <dons at galois.com>**20090112230758] hunk ./configure.ac 30
+# Avoid adding rt if absent or unneeded
+AC_CHECK_LIB(rt, shm_open, [EXTRA_LIBS="$EXTRA_LIBS rt" CFLAGS="$CFLAGS -lrt"])
+# needs -lrt on linux
 AC_CHECK_FUNCS([shm_open shm_unlink])
[SharedMem.hsc wasn't including HsUnixConfig.h, so no #defines were propagating
Don Stewart <dons at galois.com>**20090112234717] hunk ./System/Posix/SharedMem.hsc 26
 #include <sys/mman.h>
 #include <sys/fcntl.h>
+#include "HsUnix.h"
 import System.Posix.Types
 import System.Posix.Error
 import Foreign.C


[Avoid using IOError internals
Ian Lynagh <igloo at earth.li>**20090104173221] 
[fix pthread linkage problem for openbsd
Matthias Kilian <kili at outback.escape.de>**20081129000638
 This should make my openbsd build slave happy when SplitObjs=NO.
 May be useful for other BSDs and even Linux, regardless wether you
 need -pthread or -lpthread. Time will tell...
[catch up with exception changes
Simon Marlow <marlowsd at gmail.com>**20080927135428] 
[Bump version number to
Ian Lynagh <igloo at earth.li>**20080920160248] 
[TAG 6.10 branch has been forked
Ian Lynagh <igloo at earth.li>**20080919123439] 
[follow library changes
Ian Lynagh <igloo at earth.li>**20080903223616] 
[add category field
Ross Paterson <ross at soi.city.ac.uk>**20080824003014] 
[We now depend on concurrent (split off from base)
Ian Lynagh <igloo at earth.li>**20080824135158] 
[Fix the build when CONST_SIGPOLL == -1
Ian Lynagh <igloo at earth.li>**20080823160346
 We were defining, but not using, sigPOLL
[Fix warnings in the unix package
Ian Lynagh <igloo at earth.li>**20080821120138] 
[move some stuff here from System.Directory, now the dependencies are reversed
Simon Marlow <marlowsd at gmail.com>**20080821144754] 
[Follow extensible exceptions changes
Ian Lynagh <igloo at earth.li>**20080623193152] 
[Allow C's unsetenv to return either void or int
Ian Lynagh <igloo at earth.li>**20080703190603
 Fixes, and patch from donn in, trac #2352.
[Avoid using deprecated flags
Ian Lynagh <igloo at earth.li>**20080616145425] 
[move __hscore_{mkstemp,getrlimit,setrlimit} here from base
Ross Paterson <ross at soi.city.ac.uk>**20080615224248] 
[TAG 2008-05-28
Ian Lynagh <igloo at earth.li>**20080528004441] 
[Add a test for #2038 (resourceLimit)
Ian Lynagh <igloo at earth.li>**20080520163012] 
[Use the C wrappers for [gs]etrlimit
Ian Lynagh <igloo at earth.li>**20080520162048
 This is for #2038: macros are used in the Linux .h includes to redirect
 to a 64-bit version when large file support is enabled.
[Use the __hscore_mkstemp wrapper from the base package
Ian Lynagh <igloo at earth.li>**20080520162039
 This is for #2038: macros are used in the Linux .h includes to redirect
 to a 64-bit version when large file support is enabled.
[small doc tweak
Simon Marlow <simonmar at microsoft.com>**20080508114348] 
[add AC_SYS_LARGEFILE check to configure.ac
jeremy.shaw at linspireinc.com**20080213223619
 As explained in this thread:
 getSymbolicLinkStatus (and possibly other functions) return completely
 bogus results. This is because hsc2hs returns the offsets for stat64,
 but the library is built such that it calls the 32 bit lstat call.
 I copied the AC_SYS_LARGEFILE from ghc's configure.ac. So, I believe
 the library should now properly autodetect whether your system has
 large file support and do the right thing more often. I suspect that
 this would still be buggy if ghc was built without large file support,
 but the library was built with it enabled. However, as long as
 AC_SYS_LARGEFILE returns the same results for 'ghc' and 'unix', things
 should be ok ?
[Throw a proper exception if getUserEntryForName fails to find an entry
Ian Lynagh <igloo at earth.li>**20080115020547
 Fixes trac #2033.
[Add a test getUserEntryForName for trac #1976
Ian Lynagh <igloo at earth.li>**20080115020540] 
[protect against concurrent access to the signal handlers (#1922)
Simon Marlow <simonmar at microsoft.com>**20071204110839
[Fix some haddock links
Ian Lynagh <igloo at earth.li>**20071126184521] 
[Throw a proper exception if getGroupEntryForName fails to find an entry
Ian Lynagh <igloo at earth.li>**20071110235805
 We used to get
  *** Exception: getGroupEntryForName: failed (Success)
 Fixes trac #1655
[fix framework failures
Simon Marlow <simonmar at microsoft.com>**20071029114606] 
[Remove incorrect comment
Ian Lynagh <igloo at earth.li>**20071014101756] 
[Specify build-type: Configure
Duncan Coutts <duncan at haskell.org>**20071018125127] 
[Bump version number
Ian Lynagh <igloo at earth.li>**20071014101806] 
[Support for 57600 and 115200 baudrates
pweaver at galois.com**20071016191631] 
[Also guard the foreign declaration of __hsunix(grant|unlock)pt by HAVE_PTSNAME
Clemens Fruhwirth <clemens at endorphin.org>**20071016143846] 
[Add basic pseudoterminal support.
Bryan O'Sullivan <bos at serpentine.com>**20070925113330] 
[check for shm_open/shm_unlink (for archs like OpenBSD without them)
Don Stewart <dons at galois.com>**20070916025218] 
[Add more entries to boring file
Ian Lynagh <igloo at earth.li>**20070913210721] 
[Add a boring file
Ian Lynagh <igloo at earth.li>**20070913204658] 
[in pPrPr_disableITimers (who made up that name?) call the RTS to disable the timer
Simon Marlow <simonmar at microsoft.com>**20070912145647
 Since we switched to using timer_create() in the RTS, this function
 has been failing to disables the timer interrupts.  This turns out to
 be the cause of the random framework failures in the test suite.
 Invoking the RTS to turn off the timer signal is the right thing.
[TAG ghc-6.8 branched 2007-09-03
Ian Lynagh <igloo at earth.li>**20070903155840] 
[Suppress some warnings
Ian Lynagh <igloo at earth.li>**20070902194033] 
[Remove redundant include/Makefile
Ian Lynagh <igloo at earth.li>**20070828205715] 
[add cross-referencing between posix and process modules
ijones at syntaxpolice.org**20070819073930] 
[get the SIG constants for ourselves, rather than relying on HsBaseConfig.h
Ross Paterson <ross at soi.city.ac.uk>**20070819233142] 
[FIX BUILD on OS X: Check for setitimer
Roman Leshchinskiy <rl at cse.unsw.edu.au>**20070814020033
 Fix suggested by Ian Lynagh
[Remove bits left over from the old build system
Ian Lynagh <igloo at earth.li>**20070811135134] 
[Move System.Posix.Signals from base
Ian Lynagh <igloo at earth.li>**20070729215617
 Also adds System.Posix.Process.Internals in order to make the deps work out.
[Move throwErrnoPath* functions to base:Foreign.C.Error
Ian Lynagh <igloo at earth.li>**20070722002956] 
[GHC.Handle no longer exports openFd
Ian Lynagh <igloo at earth.li>**20070722000926] 
[disable the getLoginName test, see #1487
Simon Marlow <simonmar at microsoft.com>**20070703105224] 
[Don't do "< /dev/null" when running the user001 test
Ian Lynagh <igloo at earth.li>**20070623205408
 It can cause the test to fail.
[--configure-option and --ghc-option are now provided by Cabal
Ross Paterson <ross at soi.city.ac.uk>**20070604115617] 
[Add support for named semaphores and shared memory objects
Daniel Franke <df at dfranke.us>**20070503220003] 
[Remove Makefile and package.conf.in (used in the old build system)
Ian Lynagh <igloo at earth.li>**20070524142637] 
[We now depend on process
Ian Lynagh <igloo at earth.li>**20070523181544] 
[We now depend on directory
Ian Lynagh <igloo at earth.li>**20070519160513] 
[add includes: field
Simon Marlow <simonmar at microsoft.com>**20070517095025] 
[Fix calling getAllUserEntries twice (trac #1279).
Ian Lynagh <igloo at earth.li>**20070504104956
 It used to return [] on all but the first call.
 Patch from an unidentified guest.
[Make it more obvious that the forkprocess01 test is really working
Ian Lynagh <igloo at earth.li>**20070418114542] 
[Follow Cabal changes in Setup.hs
Ian Lynagh <igloo at earth.li>**20070418114510] 
[Handle sysconf(3) return value -1 when checking _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX.
bjorn at bringert.net**20070416214837
 sysconf(3) returns -1 on failure, but this was not handled when checking _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX in System.Posix.User. This made getUserEntryForID, getUserEntryForName, getGroupEntryForID and getGroupEntryForName fail on OS X 10.4.9 on i386. Just checking that unistd.h defines _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX as was done before does not guarantee that sysconf(3) will succeed.
 sysconf(3) failure is now handled by using the same default values as were already used when sysconf(3) is not available, or the parameter names are not defined.
[Added tests/user001.hs which tests all the get* functions in System.Posix.User.
bjorn at bringert.net**20070416220012
 I added this since I noticed that getUserEntryForID, getUserEntryForName,
 getGroupEntryForID and getGroupEntryForName failed on OS X 10.4.9 on i386.
[Fix -Wall warnings
Ian Lynagh <igloo at earth.li>**20070411005028] 
[Add missing case in removePrefix
Ian Lynagh <igloo at earth.li>**20070411002604] 
[parse (but don't pass on) options for ./configure
Ian Lynagh <igloo at earth.li>**20070406153756] 
[make Setup suitable for building the libraries with GHC
Ian Lynagh <igloo at earth.li>**20061112214741] 
[Don't use Fd/FD in foreign decls
Ian Lynagh <igloo at earth.li>**20070404155930
 Using CInt makes it much easier to verify that it is right, and we won't
 get caught out by possible newtype switches between CInt/Int.
[Fix C/Haskell type mismatches
Ian Lynagh <igloo at earth.li>**20070404003625] 
[Follow type changes in base
Ian Lynagh <igloo at earth.li>**20070403195237
 (of the dubiously exported c_access and c_fcntl_write)
[fix cut-and-pasto in error message
Simon Marlow <simonmar at microsoft.com>**20070308134418] 
[add tests from GHC testsuite
Simon Marlow <simonmar at microsoft.com>**20070305145258] 
[export the file-type modes, so that createDevice can be used
Simon Marlow <simonmar at microsoft.com>**20070305113316] 
[Provide nanosleep if we have it, and use it to implement usleep
Simon Marlow <simonmar at microsoft.com>**20070302132818
 Fixes #1156
[don't retry usleep() on EINTR (see #850/#1156)
Simon Marlow <simonmar at microsoft.com>**20070302114118] 
[expand docs for forkProcess
Simon Marlow <simonmar at microsoft.com>**20070301151220] 
[add C wrappers for lstat() and mknod().  Fixes #1086.
Simon Marlow <simonmar at microsoft.com>**20070226110311] 
[README about building from darcs
Ross Paterson <ross at soi.city.ac.uk>**20070218110201] 
[TAG 6.6 release
Ian Lynagh <igloo at earth.li>**20061011124740] 
[fix haddock syntax
Simon Marlow <simonmar at microsoft.com>**20060908111858] 
[Derive Show, Read, and Eq for UserEntry and GroupEntry
John Goerzen <jgoerzen at complete.org>**20060831145022] 
[bump version to 2.0
Simon Marlow <simonmar at microsoft.com>**20060831140257] 
[Fix compilation issues with new getgrent/getpwent code
John Goerzen <jgoerzen at complete.org>**20060830134517] 
[Added support for getpwent/getgrent
John Goerzen <jgoerzen at complete.org>**20060830132550] 
[Added some Haddock docs for UserEntry and GroupEntry
John Goerzen <jgoerzen at complete.org>**20060829185932] 
[Add missing field gr_passwd to GroupEntry
John Goerzen <jgoerzen at complete.org>**20060829185536] 
[Whitespace changes for better alignment in unpackUserEntry
John Goerzen <jgoerzen at complete.org>**20060829185300] 
[Added pw_passwd and pw_gecos fields to UserEntry structure
John Goerzen <jgoerzen at complete.org>**20060829185051
 System.Posix.User was missing pw_gecos and pw_passwd in UserEntry.
 I have added them, so now the full struct passwd is represented.
[includes -> install-includes
Ross Paterson <ross at soi.city.ac.uk>**20060829123744] 
[exclude Setup.hs from build
Ross Paterson <ross at soi.city.ac.uk>**20060824183535] 
[add boilerplate Setup.hs
Ross Paterson <ross at soi.city.ac.uk>**20060824115019] 
[Added more documentation to System.Posix.Files
Johan Tibell <johan.tibell at gmail.com>**20060813102350] 
[fix markup (#854)
Ross Paterson <ross at soi.city.ac.uk>**20060820002322] 
[change test for buildability
Ross Paterson <ross at soi.city.ac.uk>**20060819144834
 Checking for dlfcn.h instead of creat() should make the Cabal build fail
 more gracefully under MinGW.
[document args to executeFile
Simon Marlow <simonmar at microsoft.com>**20060809104559] 
[fix bogosity in getEnvironmentPrim
Simon Marlow <simonmar at microsoft.com>**20060531144640] 
[Track the GHC source tree reoganisation
Simon Marlow <simonmar at microsoft.com>**20060407041758] 
[TAG Initial conversion from CVS complete
John Goerzen <jgoerzen at complete.org>**20060112154138] 
[[project @ 2005-11-10 13:00:55 by simonmar]
 some Haddock docs, from Isaac Jones.
[[project @ 2005-11-10 12:58:32 by simonmar]
 Some docs for System.Posix, from Bj�rn Bringert
[TAG cmm-merge2
Unknown tagger**20060112152636] 
[[project @ 2005-09-20 22:54:33 by ross]
 make the unix package independent.
[[project @ 2005-09-20 16:35:26 by ross]
 move RTLD_* tests down to unix package
[[project @ 2005-09-19 23:24:31 by ross]
 For compilers other than MSVC and GCC, assume inline has the C99 semantics.
[[project @ 2005-08-10 10:07:22 by simonmar]
 Fix queryFdOption
[[project @ 2005-08-04 02:09:36 by wolfgang]
 Check for RTLD_DEFAULT in dlfcn.h and use it if it is available.
 (On Mac OS X its value is -2, and using NULL instead does not work.)
[[project @ 2005-07-21 12:54:33 by simonmar]
 Hack Makefiles so that 'make distclean' works even if the tree has not
 been configured, or 'make distclean' has already been run.
 This is to solve problems caused by 'make distclean' removing files
 that it needs itself - previously we were arranging to remove certain
 files right at the end of cleaning, but this is fragile.  So now we
 assume that e.g. the X11 library is always enabled when we're
[[project @ 2005-05-10 10:40:12 by simonmar]
 PATH_MAX fixes from Thomas Schwinge.
[TAG arity-anal-branch-point
Unknown tagger**20060112152625] 
[TAG ghc-assoc-branch-point
Unknown tagger**20060112152625] 
[[project @ 2005-03-23 14:34:21 by ross]
 add license files for individual packages
[TAG nhc98-1-18-release
Unknown tagger**20060112152623] 
[[project @ 2005-03-08 16:22:05 by simonmar]
 Undo previous commit: it breaks when RLIM_INFINITY is defined to an
 expression that CPP doesn't understand.
[[project @ 2005-03-08 04:45:38 by wolfgang]
 Mac OS X:
 Kill HaskellSupport.framework.
 Instead, look for GMP.framework (a framework-version of libgmp), else look
 for a normal -lgmp as usual.
 The other part of HaskellSupport.framework, dlcompat, is no longer needed
 (as of Mac OS X 10.3, it's included in libSystem).
 It's enough to just use the normal configure tests for -ldl.
[[project @ 2005-03-05 14:32:09 by panne]
 Warning police (for platforms where all resource limits can be
[[project @ 2005-03-02 16:39:57 by ross]
 *Config.h files are in include/ (MERGE to STABLE)
[[project @ 2005-03-02 14:46:16 by simonmar]
 distcleaning of things generated by configure
[[project @ 2005-02-24 09:58:27 by simonmar]
 nDoc fixes from Sven Panne.  Generally fixing of Haddock links, adding
 some signatures, and in some cases exporting type constructors that
 are mentioned in the types of exported identifiers.
[[project @ 2005-02-18 18:30:40 by ross]
 Rename package description fields as in InstalledPackageInfo:
 	options-ghc -> ghc-options
 	options-hugs -> hugs-options
 	options-nhc -> nhc-options
 	extra-libs -> extra-libraries
[[project @ 2005-02-18 15:06:47 by simonmar]
 Rename fields in InstalledPackageInfo for consistency with
 PackageDescription & buildInfo:
  extra-libs (extraLibraries) --> extra-libraries (extraLibraries)
  extra-cc-opts (extraCcOpts) --> cc-options (ccOptions)
  extra-ld-opts (extraLdOpts) --> ld-options (ldOptions)
  extra-hugs-opts (extraHugsOpts) --> hugs-options (hugsOptions)
  extra-frameworks (extraFrameworks) --> frameworks (frameworks)
[[project @ 2005-02-11 01:55:58 by ross]
 track syntax changes:
 * add License-File and Synopsis fields
 * rename Hidden-Fields as Other-Fields
 These files are used only by Hugs, but are also useful as examples.
[[project @ 2005-02-07 12:03:44 by simonmar]
 Doc for handleToFd and fdToHandle
[TAG ghc-6-4-branch-point
Unknown tagger**20060112152610] 
[[project @ 2005-01-28 13:36:36 by simonmar]
 Catch up with updates to platform #defines.
 Generally: use _HOST_ rather than _TARGET_ (except in Cabal where we
 have to retain compatibility with previous GHC versions).
[[project @ 2005-01-25 17:06:40 by ross]
 add Cabal package descriptions
[[project @ 2005-01-21 12:35:38 by simonmar]
 update the haddock fields (this one somehow got missed)
[[project @ 2005-01-20 14:22:28 by simonmar]
 Fill in the haddock-interfaces and haddock-html fields in the
 package.conf files.
 To do this I had to make some changes:
   - haddock-interfaces requires the value of $(datadir).  We can't
     just plug this in, because $(datadir) might change at install-time
     (eg. a Windows installer can be placed anywhere, as can a Unix
     binary .tar.gz distribution).  The current trick is for the
     compiler to splice in the value of $libdir in package.conf at
     runtime.  So we could extend this mechanism and tell the compiler
     the value of $datadir via a command-line option, but that seems
     On Windows, $datadir==$libdir, so we don't need any changes:
     package.conf still uses $libdir, and a Windows installation is
     independent of its absolute location.  Even 'make install' on
     Windows should have this property.
     On Unix:
 	- for 'make install' and in-place execution, we just use
           absolute paths in package.conf
 	- for a binary dist, we generate a package.conf that refers
 	  to $libdir and $datadir, and splice in the values at
 	  install-time (distrib/Makefile-bin.in).
   - Also, I renamed $libdir to $topdir to more closely reflect its
     actual meaning.  This is somewhat malicious in that it will flush
     out all those clients using $libdir when they really shouldn't
     be :-)
[[project @ 2005-01-06 11:27:48 by ross]
 c_ftruncate is now in System.Posix.Internals
[TAG pluggable-1-branch-point
Unknown tagger**20060112152603] 
[[project @ 2004-12-02 15:57:06 by ross]
 Hugs only: replace the CBITS pragma (files relative to cbits) with
 CFILES (files relative to the root of the package).
[[project @ 2004-11-26 16:22:12 by simonmar]
 Further integration with the new package story.  GHC now supports
 pretty much everything in the package proposal.
   - GHC now works in terms of PackageIds (<pkg>-<version>) rather than
     just package names.  You can still specify package names without
     versions on the command line, as long as the name is unambiguous.
   - GHC understands hidden/exposed modules in a package, and will refuse
     to import a hidden module.  Also, the hidden/eposed status of packages
     is taken into account.
   - I had to remove the old package syntax from ghc-pkg, backwards
     compatibility isn't really practical.
   - All the package.conf.in files have been rewritten in the new syntax,
     and contain a complete list of modules in the package.  I've set all
     the versions to 1.0 for now - please check your package(s) and fix the
     version number & other info appropriately.
   - New options:
 	-hide-package P    sets the expose flag on package P to False
 	-ignore-package P  unregisters P for this compilation
 	For comparison, -package P sets the expose flag on package P
         to True, and also causes P to be linked in eagerly.
         -package-name is no longer officially supported.  Unofficially, it's
 	a synonym for -ignore-package, which has more or less the same effect
 	as -package-name used to.
 	Note that a package may be hidden and yet still be linked into
 	the program, by virtue of being a dependency of some other package.
 	To completely remove a package from the compiler's internal database,
         use -ignore-package.
 	The compiler will complain if any two packages in the
         transitive closure of exposed packages contain the same
 	You *must* use -ignore-package P when compiling modules for
         package P, if package P (or an older version of P) is already
         registered.  The compiler will helpfully complain if you don't.
 	The fptools build system does this.
    - Note: the Cabal library won't work yet.  It still thinks GHC uses
      the old package config syntax.
 Internal changes/cleanups:
    - The ModuleName type has gone away.  Modules are now just (a
      newtype of) FastStrings, and don't contain any package information.
      All the package-related knowledge is in DynFlags, which is passed
      down to where it is needed.
    - DynFlags manipulation has been cleaned up somewhat: there are no
      global variables holding DynFlags any more, instead the DynFlags
      are passed around properly.
    - There are a few less global variables in GHC.  Lots more are
      scheduled for removal.
    - -i is now a dynamic flag, as are all the package-related flags (but
      using them in {-# OPTIONS #-} is Officially Not Recommended).
    - make -j now appears to work under fptools/libraries/.  Probably
      wouldn't take much to get it working for a whole build.
[[project @ 2004-11-18 16:39:54 by stolz]
 Push down more feature-tests
[[project @ 2004-11-12 17:08:58 by stolz]
 Fix FFI-funniness, cf.
 Noticed by: George Russell (again)
[[project @ 2004-11-12 14:56:13 by stolz]
 Fix previous commit:
 Don't handle Solaris2-flag _POSIX_PTHREAD_SEMANTICS in configure at all
 but simply #ifdef solaris2_TARGET_OS #define ... it in the header-file.
[[project @ 2004-11-12 13:22:56 by stolz]
 More getpw*_r result checks
[[project @ 2004-11-12 12:12:53 by stolz]
 Push some unixisms from toplvl into package:
 usleep, SunOS-handling, getpw*
[[project @ 2004-11-05 14:59:33 by stolz]
 Fix getpwnam_r-handling: getpwnam_r returns (always?) 0, you have
 to check result* (pppw[0])!
 Truss-log from querying first "root", then "" on SunOS 5.9:
 <- libc:__posix_getpwnam_r() = 0
 -> libc:__posix_getpwnam_r(0xff1bf8a8, 0xff1bf460, 0xff1bf490, 0x400)
 <- libc:__posix_getpwnam_r() = 0
 Yes, that's 0 in both cases.  (I wasn't even able to elicit an ERANGE btw.)
 Reported by: Peter Simons
[[project @ 2004-10-27 10:51:15 by simonmar]
 Fix bug in forkProcess: we weren't wrapping the forked IO action in
 the default exception handler, so exitFailure wasn't working properly.
[[project @ 2004-10-15 09:42:02 by simonmar]
 - sleep, usleep: make thread-safe
 - add Haddock comments
[[project @ 2004-10-09 07:51:07 by panne]
 Unbreak Hugs by moving pPrPr_disableITimers and execvpe to System.Posix.Internals
 (base package) and use it from System.Posix.Process (unix package).
[[project @ 2004-10-08 18:35:50 by panne]
 Unbreak Hugs, 2nd try...
[[project @ 2004-10-08 17:48:57 by panne]
 Unbreak Hugs: execvpe.c has gone
[[project @ 2004-10-08 12:04:49 by ross]
 revert previous change, so now these includes don't define PACKAGE_*
[[project @ 2004-10-08 08:42:53 by dons]
 Tweak the PACKAGE_* #undefs in a couple of other places, too.
[[project @ 2004-10-06 10:13:08 by ross]
 make the evil PACKAGE_* hacks consistent
[[project @ 2004-09-30 03:13:23 by dons]
 Implement System.Posix.User.getUserEntryFor{ID,Name} on platforms
 without reentrant versions of getpw{uid,nam}. This includes all the BSDs.
 While I'm here, close getGroupEntryFor* "Result too large" bug on
 OpenBSD, mentioned last year:
 grBufSize was too small, apparently.
 Thanks to Ian Lynagh for hint to do the locking.
[[project @ 2004-09-29 15:50:54 by simonmar]
 Process reorganisation: the System.Process library moves into base,
 and System.Cmd is re-implemented in terms of it.
 Thanks to Krasimir Angelov, we have a version of System.Process that
 doesn't rely on the unix or Win32 libraries.  Normally using
 unix/Win32 would be the right thing, but since we want to implement
 System.Cmd on top of this, and GHC uses System.Cmd, we can't introduce
 a bunch of .hsc dependencies into GHC's bootstrap libraries.
 So, the new version is larger, but has fewer dependencies.  I imagine
 it shouldn't be too hard to port to other compilers.
[[project @ 2004-09-22 09:14:23 by panne]
 As a temporary measure, use an ultra-evil sledgehammer method to silence the
 PACKAGE_FOO clashes. The correct way of doing this would be splitting up
 HsPACKAGE.h and ghcconfig.h into two parts each: One part would be generated by
 autoheader and would contain the defines which are needed during package build
 time only. The other part would contain all kinds of stuff which is needed for
 using the given package (no PACKAGE_FOO defines here). For an example of this,
 see the OpenAL package. As an additional benefit, this would keep the namespace
 much cleaner, because 2nd kind of headers is typically smaller.
 No time for the real thing currently, hope the current workaround works...
[[project @ 2004-09-18 12:50:00 by panne]
 Make autoupdate 2.52 happy, mainly by using the new formats of AC_INIT and
 AC_OUTPUT. This has the nice side effect that all "packages" have now a name, a
 version, a bug-report address, and a tar name, yielding better output with
 "configure --help=recursive". Nuked an unused AC_STRUCT_ST_BLKSIZE test on the
[[project @ 2004-09-15 15:55:45 by stolz]
 Add System.Posix.Signals.Exts which re-exports S.P.Signals and adds the
 two signals SIGINFO on (*BSD) and SIGWINCH (most Unices) which are not
 in POSIX.
 You should use cpp to test if those are defined before using them. This is
 encouraged by not providing dummy-definitions on platforms which do not
 offer that particular flavour.
[[project @ 2004-09-09 06:55:47 by panne]
 Unified the comments in (almost) empty aclocal.m4 files
[[project @ 2004-09-03 07:46:56 by ross]
 add empty aclocal.m4's (so we don't need aclocal)
[[project @ 2004-09-02 15:18:10 by ross]
 devolve some library-specific configuration
[[project @ 2004-08-19 11:15:51 by simonmar]
 Add filenames to all errors where it makes sense.  I've added
 System.Posix.Error with a new family of error-throwing functions,
 throwErrnoPath*.  This seemed to make the most sense: they don't
 belong in Foreign.C.Error (C by itself has no notion of paths).
 Fixes: [ 954378 ] getFileStatus does not include the file name in IO-Error
[[project @ 2004-08-13 13:29:11 by simonmar]
 Changes required be merge of backend-hacking-branch.  Mostly config.h
 ==> ghcconfig.h.
[[project @ 2004-05-13 09:55:59 by stolz]
 Inverted logic would call dlerror() after a successful dlclose() and
 cause a segfault.
 Noticed by: abe.egnor At gmail.com
[[project @ 2004-03-09 11:37:14 by simonmar]
 change the foreign import of waitpid to "safe", so that we can use it
 in a non-blocking way with the threaded RTS.
[[project @ 2004-02-19 16:29:28 by stolz]
 Remove redundant _POSIX_PTHREAD_SEMANTICS. It's defined on the command line
 and also set too late/in the wrong place (after including system prototypes),
[[project @ 2004-02-05 11:46:00 by ross]
 Hugs only: use the configure-set variable INLINE_ONLY instead of
 `extern inline' (which works for gcc but not C99 compilers).
[[project @ 2003-12-15 16:57:30 by ross]
 include dirent.h to avoid warnings when compiling System.Posix.Directory
[[project @ 2003-12-05 10:20:25 by ross]
 solaris_TARGET_OS -> solaris2_TARGET_OS
 (and tweak the #define while I'm here)
 Works for Hugs, still untested for GHC, but presumably needed for STABLE.
[[project @ 2003-11-15 22:31:18 by panne]
 Decouple packages a bit more again: The prologue of the combined index is now
 generated via shell magic from the package prologues. As a nice side effect,
 some autoconf magic is gone, so configure.ac is effectively empty now (but not
 for long... :-)
[[project @ 2003-11-10 15:32:45 by simonmar]
 Change the documentation title from "Haskell Core Libraries" to "Haskell Hierarchical Libraries".
[[project @ 2003-10-27 11:58:28 by stolz]
 - fix typo in error message
 - a bit of manual CSE for fcntl-flags
 - use Data.Bits instead of brains
 - make (unexported) function names a bit more consistent
[[project @ 2003-10-24 14:46:13 by sof]
 drop cygwin #ifdef; not an issue with current versions.
 merge to stable
[[project @ 2003-10-24 14:38:27 by sof]
 code tidyup
 merge to stable
[[project @ 2003-10-23 23:32:43 by sof]
 fdRead: drop superfluous array copying
 merge to stable
[[project @ 2003-10-18 00:35:26 by ross]
 Hugs only: add handleToFd
[[project @ 2003-10-17 16:48:44 by ross]
 Hugs only: add most of the rest of System.Posix
 (I wonder why SIG_UNBLOCK and SIG_SETMASK are switched in HsBase.h)
[[project @ 2003-10-01 10:57:44 by wolfgang]
 New implementation & changed type signature of forkProcess
 forkProcess now has the following type:
 forkProcess :: IO () -> IO ProcessID
 forkProcessAll has been removed as it is unimplementable in the threaded RTS.
 forkProcess using the old type (IO (Maybe ProcessID)) was impossible to
 implement correctly in the non-threaded RTS and very hard to implement
 in the threaded RTS.
 The new type signature allows a clean and simple implementation.
[[project @ 2003-09-24 13:42:15 by simonmar]
 No reason we can't support sys/mman.h: move it to the ToDo section.
[[project @ 2003-09-22 10:57:45 by simonmar]
 Untested fix for Solaris to get the right versions of getgrnam_r and
 I'd appreciate it if someone with a Solaris build could test this.
[[project @ 2003-09-19 09:27:35 by simonmar]
 Kill mktemp: it causes link warnings whenever someone uses -package
 unix on Linux & FreeBSD at least, and is bogus anyway.
 mktemp is still used to implement mkstemp when !GLASGOW_HASKELL and
 !HUGS.  Why is this?
[[project @ 2003-09-16 13:45:02 by simonmar]
 fileExist should not throw an exception if the file does not exist.
[[project @ 2003-09-15 20:59:07 by dons]
 #ifdef's for the _PC_SYNC_IO, _PC_ASYNC_IO, _PC_FILESIZEBITS,
 These 4 symbols are not universal: FreeBSD and Linux and the only
 OS's that appear to have them at the moment.
[[project @ 2003-09-12 13:05:20 by simonmar]
 Implement pathconf()/fpathconf() wrappers.
[TAG ghc-6-2-branch-point
Unknown tagger**20060112152454] 
[[project @ 2003-08-04 14:08:27 by panne]
 Export TerminalAttributes abstractly
[[project @ 2003-08-04 13:26:12 by panne]
 More import tweaking for Haddock
[[project @ 2003-08-04 13:22:05 by panne]
 Export Module (abstractly), otherwise the user is unable to write
 signatures involving this type. Improves Haddock hyperlinks, too.
[TAG ghc-6-0-OpenGL-merge3
Unknown tagger**20060112152446] 
[[project @ 2003-07-22 09:55:07 by ross]
 jiggle to make System.Posix.Directory work for Hugs
[[project @ 2003-07-16 13:04:55 by ross]
 Sendfile is gone
[[project @ 2003-06-22 09:02:15 by wolfgang]
 Revert last commit (remove "network" dependency again),
 as it was already fixed in a different way and I forgot to update... :-(
[[project @ 2003-06-21 09:14:51 by wolfgang]
 Add package "network" to the list of dependencies, as it is needed by Sendfile.
 Fixes a link error when starting "ghci -package unix".
[[project @ 2003-06-19 10:47:25 by simonmar]
 Remove Network.Sendfile at request of Volker Stolz.  We currently have
 some build problems with it (it depends on both unix and network
 packages).  It might come back at some point in the future.
[[project @ 2003-06-10 12:07:40 by simonmar]
 - Use the right fdToHandle
 - some minor -Wall cleaning
[[project @ 2003-06-10 10:58:06 by simonmar]
 Move Network.Sendfile into the unix package to fix the build.
[[project @ 2003-06-06 12:49:00 by stolz]
 Move System.Sendfile to Network.Sendfile:
  - Linux can sendfile() to a fd, but BSD couldn't
  - sendfile() on Linux is probably now disabled on most builds because of
      the LARGEFILE issue
  => Change API to use type Socket
[[project @ 2003-06-06 12:41:12 by stolz]
[[project @ 2003-06-06 10:45:43 by stolz]
 Haddock: Add link to 'handleToFd'
[[project @ 2003-06-03 14:01:38 by simonmar]
 Hook up System.Posix.Temp.
[[project @ 2003-06-03 11:31:45 by stolz]
 waitpid() may return EINTR, so use throwErrnoifMinus1Retry
[[project @ 2003-06-03 08:55:13 by reid]
 cvs ignorance for splits and way=p
[[project @ 2003-05-28 12:36:29 by stolz]
 Can't use sendfile() with LARGEFILES on Linux
[[project @ 2003-05-28 12:01:50 by stolz]
 No longer pertinent
[[project @ 2003-05-27 12:59:54 by stolz]
 /me slaps haddock with a large piece of trout.
 Someone please remind me of running 'make html' before committing.
[[project @ 2003-05-27 12:54:18 by stolz]
 Throw in mktemp() as well, as the non-GHC/Hugs case
 was essentially that. Advantage: At least on FreeBSD
 the linker will print out a warning whenever you use
[[project @ 2003-05-27 10:18:58 by ross]
 Hugs only: use fdToHandle (like GHC)
[[project @ 2003-05-27 10:18:16 by ross]
 Hugs only: make fdToHandle available
[[project @ 2003-05-27 08:59:21 by stolz]
 Return file name as well
 Suggested by: Martin Norb�ck
[[project @ 2003-05-27 08:20:42 by stolz]
 Add mkstemp() wrapper, including (unsafe) fallback for non-GHCs
 (fdToHandle required).
 Suggested by: Martin Sj�gren
[[project @ 2003-05-23 18:35:55 by stolz]
 Need flags here as well.
[[project @ 2003-05-23 16:36:48 by ross]
 fix type error
[[project @ 2003-05-23 14:31:46 by stolz]
 No (un)setenv until SUSv3 (e.g. Solaris 2.9). (fallback untested)
[[project @ 2003-05-21 16:02:44 by stolz]
 Solaris2 needs _POSIX_PTHREAD_SEMANTICS for the getpw*_r() prototypes.
 Make libraries/unix/Makefile use a new variable unix_SRC_HSC2HS_OPTS
 which we configure in mk/config.mk.
[TAG ghc-6-0-branch-point
Unknown tagger**20060112152412] 
[[project @ 2003-05-21 15:07:55 by simonmar]
 Revert previous commit, I've fixed Haddock instead.
[[project @ 2003-05-21 14:58:36 by simonmar]
 Flatten the doc structure a bit.
[[project @ 2003-05-19 18:24:25 by reid]
 cvs ignorance is bliss
[[project @ 2003-05-18 06:47:42 by stolz]
 - My fault, so take ownership
 - Strip unnecessary #include while here
[[project @ 2003-05-17 00:11:30 by ross]
 Rename per-package configuration files from $(PACKAGE).conf.* to
 package.conf.*, making them easier to find (since each package is
 in a separate directory anyway).
[[project @ 2003-05-16 12:03:55 by stolz]
 Look for 'bracket' in the right place
[[project @ 2003-05-16 10:14:23 by simonmar]
 Now that we have auto packages, it makes sense to keep all the
 interfaces for hierarchical libraries in the same directory tree.  So
 now, instead of putting interfaces for package P in $libdir/imports/P,
 we put them all in $libdir/imports.
 Interfaces for old non-auto non-hierarchical packages now go in
 $libdir/hslibs-imports/P for package P.
[[project @ 2003-05-16 08:25:30 by simonmar]
 Move dlfcn.h to the "supported" list.
[[project @ 2003-05-16 06:41:25 by stolz]
 - move System.DL to System.Posix.DynamicLinker
 - take ownership
 There's a compiler warning when passing the 'const char*' result from
 dlerror() to peekCString (discarded qualifier). Does an FFI-expert know
 how to get rid of this warning?
[[project @ 2003-05-15 13:35:12 by ross]
 add the DL modules (or whatever they're called) to Hugs
[[project @ 2003-05-12 13:19:49 by wolfgang]
 Add #ifdefs for RLIMIT_AS and RLIM_SAVED_*, which are not defined on Mac OS X.
[[project @ 2003-05-08 16:00:20 by ross]
 extra #include's
[[project @ 2003-04-11 23:42:54 by ross]
 list modules that don't yet work with Hugs.
[[project @ 2003-04-11 23:37:03 by ross]
 replace Word with CTcflag
[[project @ 2003-04-11 10:17:13 by ross]
 use System.Posix.Internals
[[project @ 2003-04-11 10:11:23 by ross]
 rename GHC.Posix as System.Posix.Internals
[[project @ 2003-04-11 10:00:07 by ross]
 move environ from C to Haskell
[[project @ 2003-04-11 09:43:38 by ross]
 add some standard #includes
[TAG galois-hbm-head
Unknown tagger**20060112152340] 
[[project @ 2003-03-26 12:35:34 by simonmar]
 Add getrlimit()/setrlimit() suppport
[[project @ 2003-03-26 12:34:53 by simonmar]
 wibble: add a newline at the end of the file
[TAG before-galois-hbm
Unknown tagger**20060112152337] 
[[project @ 2003-03-17 07:52:02 by stolz]
 Do not export c_sendfile (might not exist)
[[project @ 2003-03-16 15:07:37 by stolz]
 (Hopefully) Fix #ifdef'ed branch
 Noticed by: Kirsten Chevalier
[[project @ 2003-03-09 20:19:28 by panne]
 Fixed markup confusion ("" vs. '')
[[project @ 2003-03-07 16:22:49 by stolz]
 - Change Handle to Fd, so it's everybodies own fault if they forget
     to call hDuplicate
 - Revert size/offset to Int as lowest common denominator
 - Add sendfileByName
[[project @ 2003-03-06 14:23:09 by stolz]
[[project @ 2003-03-06 08:33:16 by stolz]
 - Haddockify documentation for parameters
 - Fix 'case vs. if' braino
[[project @ 2003-03-05 18:38:09 by stolz]
 Steal 'squirt' from Haskell Web Server as fallback
[[project @ 2003-03-05 18:14:05 by stolz]
 Pick up Maybe & Monad from new libraries
[[project @ 2003-03-03 01:51:58 by stolz]
 Import System/DL*
[[project @ 2003-03-01 16:34:12 by stolz]
[[project @ 2003-02-28 16:46:49 by stolz]
 Update comments to reflect new module System.Posix.Env
[[project @ 2003-02-28 16:09:16 by stolz]
 Add System.Posix.Env
[[project @ 2003-02-28 12:44:54 by stolz]
 Fix 'nice': -1 is a permissible return value in a successful situation
[[project @ 2003-02-28 12:34:45 by stolz]
 - Rename System.Posix.Process.forkProcess to forkProcessAll
 - Move GHC.Conc.forkProcess to System.Posix with type 'Maybe ProcessID'
 Prompted by: George Russel
[[project @ 2003-02-27 15:46:57 by stolz]
 - Add documentation for fd{Read,Write} & createPipe
 - Unbreak setFdOption which didn't set any options at all
[[project @ 2003-02-27 13:27:50 by stolz]
 Move fd{Read,Write} to new layout. Use of memcpy() should bring a large
 performance increase compared to the old version.
[[project @ 2003-02-17 11:43:55 by simonmar]
 Comment wibbles
[TAG before-speceval_2
Unknown tagger**20060112152311] 
[[project @ 2003-01-17 17:01:14 by stolz]
 - Add sendfile-API for pumping out data via sendfile(2)
   Currently supported are Linux (tested) & FreeBSD (not tested yet), others
   will throw a runtime error until I get around to implement a fallback.
[[project @ 2002-12-26 21:01:46 by panne]
 Once again: Make Haddock happy.
 Running Haddock in addition to ghc (i.e. use 'make all html' instead
 of plain 'make') before a commit would be nice, especially as buglets
 like this break a 3 hour RPM build just before it can finish...  :-(
[[project @ 2002-12-26 17:52:35 by wolfgang]
 Mac OS X doesn't have the sysconfig constants _SC_GETPW_R_SIZE_MAX and _SC_GETGR_R_SIZE_MAX, so add a configure check
[[project @ 2002-12-19 13:52:55 by simonmar]
 Fill in some more bits in the new Unix library: specifically the
 contents of PosixTTY and PosixDB (now System.Posix.Terminal and
 System.Posix.User respectively).
 We're now about 95% complete w.r.t. the old posix library.  I've
 identified the reminaing bits to do in System/Posix.hs.
[[project @ 2002-12-18 16:29:26 by simonmar]
 "Auto" packages.
 The big change here is that it is no longer necessary to explicitly
 say '-package X' on the command line if X is a package containing
 hierarchical Haskell modules.  All packages marked "auto" contribute
 to the import path, so their modules are always available.  At link
 time, the compiler knows which packages are actually used by the
 program, and it links in only those libraries needed.
 There's one exception: one-shot linking.  If you link a program using
     ghc -o prog A.o B.o ...
 then you need to explicitly add -package flags for each package
 required (except base & haskell98) because the compiler has no
 information about the package dependencies in this case.
 Package configs have a new field: auto, which is either True or False.
 Non-auto packages must be mentioned on the command-line as usual.
 Non-auto packages are still required for:
   - non-hierarchical libraries (to avoid polluting the module namespace)
   - packages with no Haskell content
   - if you want more than one version of a package, or packages
     providing overlapping functionality where the user must decide
     which one to use.
 Doc changes to follow...
[[project @ 2002-12-12 13:42:48 by ross]
 Changes to the exception interface, as discussed on the libraries list.
 1) Move bracket and bracket_ from GHC.Exception (and hence System.IO)
    to haskell98/IO.hs.  These two should now never be used (except in
    all-H98 programs), and this will save users of the new libraries from
    having to hide them.  Use the ones in Control.Exception instead.
 2) Define
         type IOError = IOException      -- was Exception
    leaving the type of Prelude.ioError as IOError -> IO a,
    but adding to Control.Exception
         throwIO :: Exception -> IO a
 The result is a type distinction between the variants of catch and try:
 	Prelude.catch           :: IO a -> (IOError -> IO a) -> IO a
 	Control.Exception.catch :: IO a -> (Exception -> IO a) -> IO a
 	System.IO.Error.try     :: IO a -> IO (Either IOError a)
 	Control.Exception.try   :: IO a -> IO (Either Exception a)
 These are breaking changes: the first one affects only import lists,
 but the second will bite in the following situations:
 - using ioError on general Exceptions: use throwIO instead.
 - using throw on IOErrors: if in the IO monad, use ioError instead.
   Otherwise, use throw (IOException e), but why are you throwing
   IO exceptions outside of the IO monad?
 Minor changes:
 - System.IO.Error now exports catch and try
 - moved try from GHC.Exception to System.IO.Error, because it's
   portable and can be shared by Hugs.
[[project @ 2002-11-18 08:37:35 by stolz]
 readlink(2) does not append a NUL character to buffer.
 Noticed by: John Meacham <john at repetae.net>
[[project @ 2002-10-11 14:25:25 by stolz]
 'usleep' nightmare: Sometimes return type is void, sometimes int.
[[project @ 2002-10-08 08:03:02 by wolfgang]
 Make the new Posix bindings compile on Mac OS X.
 Most notable, Mac OS X lacks
 *) lchown
 I don't know of a replacement of either, so they are just left out when
 they are not detected by configure.
[[project @ 2002-10-05 22:35:45 by panne]
 Warning police #14: Help gcc a bit with variables which are not
 obviously always used.
[[project @ 2002-09-14 09:35:00 by panne]
 4th attempt to get a working RPM, but again: Make Haddock happy. Is
 doing a "make html" that hard before committing...?  :-]
[[project @ 2002-09-13 09:12:12 by simonmar]
 - #include <sys/resource.h> to get at get/setpriority.
 - #include "config.h", and protect other includes according to the
   configure results.
[[project @ 2002-09-12 16:38:21 by simonmar]
 More POSIX bits... we're getting there.
[[project @ 2002-09-10 20:54:33 by panne]
 No prologue.txt, no -p...
[[project @ 2002-09-06 14:34:15 by simonmar]
 Partial rewrite of the POSIX library.
 The main purpose of this sweep is to remove the last dependencies of
 the compiler on hslibs.  When I've committed the associated compiler
 changes, only the 'base' package will be required to bootstrap the
 compiler.  Additionally to build GHCi, the 'readline' and 'unix'
 packages will be required.
 The new POSIX library lives mostly in libraries/unix, with a few bits
 required for compiler bootstrapping in libraries/base.  The 'base'
 package is mostly free of hsc2hs code to make bootstrapping from HC
 files easier, but the 'unix' package will use hsc2hs liberally.
 The old POSIX library continues to provide more-or-less the same
 interface as before, although some of the types are more correct now
 (previously lots of POSIX types were just mapped to Int).  The new
 interface is largely the same as the old, except that some new
 functionality from the latest POSIX spec has been added (eg. symbolic
 So far, the new POSIX library has signal support, directory/file
 operations and lots of stuff from unistd.h.  The module names are:
 	The main dude, exports everything
 	All the POSIX types, using the same naming scheme as
         Foreign.C.Types, Eg. CUid, COff, etc.  Many of these types
         were previously exported by GHC.Posix.
         Additionally exports the "nicer" names used by the old POSIX
 	library for compatibility (eg. ProcessID == CPid, FileMode ==
 	CMode, etc.)
 	All reasonable instances are derived for these types.
 	Signal support, contains most of which was in PosixProcPrim before.
 	The RTS interface to the signal handling support has been
 	rationalised slightly.
  	Directory support, most were in PosixFiles before.
 	File operations, most were in PosixFiles before.
 	(for want of a better name) Miscellaneous bits that mostly come
 	from the unistd.h header file.  PosixProcEnv before.
 The rest of the library should pan out like so:
   System.Posix.Error   (maybe)
 (I've no doubt broken Win32 support, but I'm checking the build at the moment).
Patch bundle hash:

More information about the Libraries mailing list