I made this patch after noticing that John Goerzen's ldap-haskell package doesn't compile (with recent versions of OpenLDAP) because the hsc2hs call fails with a linking error. hsc2hs compiles and links a C program to generate the final .hs file. It turned out that the .c file was referencing not just constants from the ldap.h file but things which translated into linker symbols. So when it linked there were missing symbols. The solution is this case is to pass -L-lldap to hsc2hs.
So this patch does that in the general case, all extra-libaries are passed to hsc2hs (prefixed with --lflag=-l). Tue Jul 4 01:19:26 BST 2006 Duncan Coutts <[EMAIL PROTECTED]> * Change flags passed to hsc2hs The extra-libraries must be passed as -L-l${lib} or linking the C prog that hsc2hs generates may fail if any symbols are referenced. Also can't use cppOptions function since hsc2hs doesn't support -U. Need to do -U flags in ccOptions seperately. It's also arguable that we should pass all cc options and ld options using --cflag= and --lflag= . This is what the build system for Gtk2Hs does. Opinions? Duncan
New patches: [Change flags passed to hsc2hs Duncan Coutts <[EMAIL PROTECTED]>**20060704001926 The extra-libraries must be passed as -L-l${lib} or linking the C prog that hsc2hs generates may fail if any symbols are referenced. Also can't use cppOptions function since hsc2hs doesn't support -U. Need to do -U flags in ccOptions seperately. ] { hunk ./Distribution/PreProcess.hs 235 - where pp n = standardPP n (cppOptions bi lbi) + where pp n = standardPP n (hcDefines (compiler lbi) + ++ ["-I" ++ dir | dir <- includeDirs bi] + ++ [opt | opt@('-':c:_) <- ccOptions bi, c == 'D' || c == 'I'] + ++ ["--cflag=" ++ opt | opt@('-':'U':_) <- ccOptions bi] + ++ ["--lflag=-L" ++ dir | dir <- extraLibDirs bi] + ++ ["--lflag=-l" ++ lib | lib <- extraLibs bi]) } Context: [finish interaction with remote HTTP servers [EMAIL PROTECTED] [stage 2 patch: implement the "list" command [EMAIL PROTECTED] [it's now 00-latest not latest [EMAIL PROTECTED] [implement support for flat-file layout [EMAIL PROTECTED] [parsec is not a dependency Simon Marlow <[EMAIL PROTECTED]>**20060518131434 It is apparently required for the wash2hs test, however. ] [Merge "unrecognized long opt" fix from 6.4.2 Sven Panne <[EMAIL PROTECTED]>**20060506110640] [Cabal.xml: entity greencard was mixed up with haddock [EMAIL PROTECTED] [Hugs: copy paths module to the right place, this time Ross Paterson <[EMAIL PROTECTED]>**20060503132510] [pass correct -P flag to ffihugs Ross Paterson <[EMAIL PROTECTED]>**20060503122452 The -P flag wasn't superfluous, but it was wrong for executables. ] [Hugs: copy path module into package build dir Ross Paterson <[EMAIL PROTECTED]>**20060503122300] [add header file for GetModuleFileNameA Ross Paterson <[EMAIL PROTECTED]>**20060502141641] [remove superfluous ffihugs -P option Ross Paterson <[EMAIL PROTECTED]>**20060502104635] [fix for Hugs Ross Paterson <[EMAIL PROTECTED]>**20060502101054 Add explicit types for a couple of constants to work around Hugs's imperfect implementation of the monomorphism restriction. ] [Change calls to 'make' into '$(MAKE)' Duncan Coutts <[EMAIL PROTECTED]>**20060502174630 This is the portable thing to do and fixes things on FreeBSD where make/=gmake ] [TAG 1.1.4 [EMAIL PROTECTED] [TAG shipped in GHC 6.4.2 Simon Marlow <[EMAIL PROTECTED]>**20060424093133] [Hugs: also compile the paths module Ross Paterson <[EMAIL PROTECTED]>**20060501171206] [markup fix Ross Paterson <[EMAIL PROTECTED]>**20060501145015] [move cabal-install/etc-cabal-get to cabal-install/etc-cabal-install [EMAIL PROTECTED] [Complete move of cabal-get to cabal-install + some fixups [EMAIL PROTECTED] [basic information for installing [EMAIL PROTECTED] [build and install cabal-setup [EMAIL PROTECTED] [add etc-cabal-get as a data-file [EMAIL PROTECTED] [bumping cabal version number. 1.1.4 will be the one released with ghc 6.4.2. [EMAIL PROTECTED] [modify makefile for cabal-install [EMAIL PROTECTED] [cabal-get will become cabal-install [EMAIL PROTECTED] [getting rid of cabal-install in favor of cabal-get [EMAIL PROTECTED] [Remove erroneous exports... [EMAIL PROTECTED] [Patch to fix "-ixyz" being overwritten by "-i" and to remove Cabal's dependency on the Cabal package. [EMAIL PROTECTED] [Separate build into "make build" and "make install" [EMAIL PROTECTED] [Fixups to get cabal-get into Cabal [EMAIL PROTECTED] [Update Cabal with cabal-get [EMAIL PROTECTED] [Fix JHC command lines. Einar Karttunen <ekarttun@cs.helsinki.fi>**20060427005922] [document install-includes and register --inplace Simon Marlow <[EMAIL PROTECTED]>**20060428130542] [fix imports for Windows [EMAIL PROTECTED] [Better support for packages that need to install header files Simon Marlow <[EMAIL PROTECTED]>**20060426140627 There's a new field for .cabal files: install-includes: foo.h bar.h This means the same as 'includes', except that the files named therein will be installed into $libdir/include. 'includes' should only be used for headers already installed on the system. Directories listed in 'include-dirs' still turn into -I options for hsc2hs, cpphs, and C compilations. However, for installation purposes, relative directories in 'include-dirs' are now treated differently from absolute directories: - an absolute directory is copied to the include-dirs field of the installed package config - files names in install-includes are assumed to be found in one of the *relative* directories listed in include-dirs So the common pattern for providing a header file that you want to be available everywhere including to via-C compilations against this package: include-dirs: myincludes install-includes: foo.h will install the header file myincludes/foo.h in $libdir/include/foo.h. ] [merge from base: Simon Marlow <[EMAIL PROTECTED]>**20060426121408 Wed Apr 26 13:11:10 BST 2006 Simon Marlow <[EMAIL PROTECTED]> * RequireOrder: do not collect unrecognised options after a non-opt ] [pass unrecognised options before the command name to the command Simon Marlow <[EMAIL PROTECTED]>**20060426121321 Previously, options before the command name other than --help were just ignored, which is quite confusing behaviour. So now, ./setup --with-compiler=ghc-6.4.2 configure works as you expect, instead of ignoring the --with-compiler option. ] [First attempt at a cabal-setup command Simon Marlow <[EMAIL PROTECTED]>**20060303162233 cabal-setup is a replacement for 'runhaskell Setup.hs'. It accepts exactly the same commands. Additionally, the following new features are provided: * Setup.{hs,lhs} is optional. If omitted, cabal-setup behaves just like Distribution.Simple.defaultMain. * If the .cabal file contains a cabal-version field, then Setup.hs is built using an appropriate version of Cabal. This might entail creating Setup.hs if it doesn't exist. * cabal-setup interprets the options --with-compiler and --with-hc-pkg to determine the compiler used to compile Setup.hs. Later, we could add support for building multiple packages in dependency order, as per recent discussions on [EMAIL PROTECTED] ] [add new modules Ross Paterson <[EMAIL PROTECTED]>**20060425195548] [Implement "setup register --inplace", and a few other minor things Simon Marlow <[EMAIL PROTECTED]>**20060425144733 There are a few changes in this patch: - New flag to register, --inplace. "setup register --inplace" registers the package for use in the build tree, i.e. without installing. It works with GHC only, currently. - The parameters to RegisterCmd, UnregisterCmd and InstallCmd are a legacy from before the time of hooks (or something) and don't serve any purpose any more, AFAICT. So I removed them. - I don't think "setup register" worked propertly before if --user was given to configure. It does now. - New flag to register: --with-hc-pkg (just the same as when given to configure, but lets you override it at register-time) ] [Refactoring only: separate compiler-specific simple build implementation Simon Marlow <[EMAIL PROTECTED]>**20060425111957] [get LocalBuildInfo from Distribution.LocalBuildInfo Simon Marlow <[EMAIL PROTECTED]>**20060425111921] [warning cleanup Simon Marlow <[EMAIL PROTECTED]>**20060425102302] [Distribution.Compat.FilePath should be hidden Simon Marlow <[EMAIL PROTECTED]>**20060411141305 This also matches package.conf.in. ] [Hide Distribution.GetOpt; it just re-exports System.Console.GetOpt anyway Simon Marlow <[EMAIL PROTECTED]>**20060411141045 This also matches Cabal.cabal. ] [GHC FFI flag should be -fffi not -ffi, the latter merely happens to work. Duncan Coutts <[EMAIL PROTECTED]>**20060318022010] [Make ghc-6.2 packages be exposed by default. Duncan Coutts <[EMAIL PROTECTED]>**20060221135026 For ghc-6.4 when Cabal registers packages it exposes them by default. However it does not do the same fo ghc-6.2. This change corrects the discrepancy. This patch is already being used in Gentoo with Cabal 1.1.3. ] [test case for buildinfo with multiple executables [EMAIL PROTECTED] [It is no longer necessary to run 'configure' before 'clean' or 'sdist', addressing http://haskell.galois.com/trac/hackage/ticket/12. Nick Alexander <[EMAIL PROTECTED]>**20060404054127 In order to change this behaviour, it was necessary to modify the hook interface, specifically cleanHook, postClean, sDistHook, postSDist. They now take a Maybe LocalBuildInfo, since a LocalBuildInfo might not be available in .setup-config. ] [windows patch from [EMAIL PROTECTED] [EMAIL PROTECTED] [oops, don't enable -split-objs by default Simon Marlow <[EMAIL PROTECTED]>**20060314124358] [export configDependency Simon Marlow <[EMAIL PROTECTED]>**20060303155527] [comment fix Simon Marlow <[EMAIL PROTECTED]>**20060303155516] [don't check cabal-version during parsing, it doesn't work Simon Marlow <[EMAIL PROTECTED]>**20060303155500 because parsers are evaluated multiple times due to backtracking. ] [no need to use a verbatim copy of System.Console.GetOpt, omit if possible Simon Marlow <[EMAIL PROTECTED]>**20060303144025] [Support for -split-objs with GHC Simon Marlow <[EMAIL PROTECTED]>**20060302170907 New configure option: --enable-split-objs creates libraries using -split-objs with GHC (current HEAD or later only, the configure checks for version 6.5). Fixes ticket #19. ] [Initial support for JHC Einar Karttunen <ekarttun@cs.helsinki.fi>**20060206233543] [added some fields to test suite for duncan's mods [EMAIL PROTECTED] [fixup PackageDescription test code Duncan Coutts <[EMAIL PROTECTED]>**20060201183912 just ignore the extra ParseOk warnings field ] [ignore "x-" extension fields without a warning Duncan Coutts <[EMAIL PROTECTED]>**20060201183145] [Make unknown fields a warning rather than an error Duncan Coutts <[EMAIL PROTECTED]>**20060201182944 Add support for warnings to the ParseResult type. Change existing warnings from using Debug.Trace to use this new warning support. ] [fix conflict Simon Marlow <[EMAIL PROTECTED]>**20060206095833] [push and pull all [EMAIL PROTECTED] [combine GNUmakefile and Makefile Simon Marlow <[EMAIL PROTECTED]>**20060206095400] [now build Setup.lhs instead of using runghc on it. still uses runhugs. [EMAIL PROTECTED] [cabal-install uses defaultMain if it can't find Setup.lhs [EMAIL PROTECTED] [cleaned up suffix handler params to hooks [EMAIL PROTECTED] Summary if last few changes: I modified the hooks interface quite a bit, again. There's good news and bad news about this. The good news is that it's cleaned up and should be easier to maintain and to avoid future modifications. The bad news is that this change itself will break stuff, of course. If you have any trouble building your Setup scripts, please let me know. I really think that it was best to bite the bullet right now in one big go instead of down the road with lots of little changes. I have a lot more confidence in the hooks interface, and I don't actually expect that it'll change as often. I made the types more consistent, and made sure there are accessor functions on each of the Flags types so that if the flags types change in the future, it shouldn't break lots of code. Another piece of good / bad news is that I decided not to get rid of the pre & post hooks. They are nice for convenience and it wouldn't be nearly so easy to write hooks without them. That's bad because the interface to hooks is still pretty big, which means that there's more likelihood that it'll change in the future. Another weakness in the Hooks interface is that with command hooks (like sDistHook) it's tempting to add parameters to them; basically the stuff that we compute between the preSDist and sDist hook. I removed such params and have their values computed elsewhere. Cabal hackers, please avoid adding parameters to these command hooks if at all possible in order to keep the interface steady. If you need to compute a value to pass to these functions, compute it in the function and / or make it available as a function that someone crafting hooks can use as well, or consider whether it belongs in one of the parameters already being passed to the hooks, PackageDescription, LocalBuildInfo, UserHooks, Flags. ] [make the order of params to cmd hooks consistent [EMAIL PROTECTED] [remove some flags from sdist, some cleanup [EMAIL PROTECTED] [clarifying and making flags types consistent [EMAIL PROTECTED] [changing tuple types to records w/ fields [EMAIL PROTECTED] [moving TODO stuff to wiki [EMAIL PROTECTED] [fix version number in fptools makefile to match .cabal file [EMAIL PROTECTED] [Add extraGHCiLibraries to the InstalledPackageInfo and extend the parser. Duncan Coutts <[EMAIL PROTECTED]>**20060131163640] [re-add the GNUmakefiles Simon Marlow <[EMAIL PROTECTED]>*-20060123115236 These are now safe after we added "-f Makefile" to the make args when invoked from the GHC build system. This repo should now be useable as the main Cabal repo. ] [re-add the GNUmakefiles Simon Marlow <[EMAIL PROTECTED]>**20060123115236 These are now safe after we added "-f Makefile" to the make args when invoked from the GHC build system. This repo should now be useable as the main Cabal repo. ] [TAG checkpoint [EMAIL PROTECTED] Patch bundle hash: 1ce99cd237178adbb60029ec781b8649a0fc98c3
_______________________________________________ cabal-devel mailing list cabal-devel@haskell.org http://www.haskell.org//mailman/listinfo/cabal-devel