Re: GHCi can't see 'atexit', can't load module

2009-08-26 Thread Maurí­cio CA

 I just checked it seems not to be possible to load any module in
 GHCi that uses FFI to wrap the standard C function 'atexit'. (...)

 A simple workaround is to just compile the module. (...)

If I build a package (using cabal etc.) and try to load such
package with 'ghci -package name' the problem persists. But, of course,
there are many workarounds.

Since I don't see this problem with other functions, and I see no
reason for this to happen, I imagine this is a small bug. If it's
not, I'll just remove 'atexit' from packages I have on hackage.

Thanks,
Maurício

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Plans for GHC 6.12.1: release candidate 14 September 2009

2009-08-26 Thread Ian Lynagh
On Fri, Aug 21, 2009 at 04:34:24PM -0400, Ravi Nanavati wrote:
 Hypothetically speaking (since I haven't made the call yet), if  I
 wanted to be an early adopter of 6.12.1 when it is released, would
 now would be the time to start grabbing HEAD and playing with it

There are currently some known problems with make install, so I would
recommend waiting for the RC to be announced.


Thanks
Ian

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Libraries in the repo

2009-08-26 Thread Simon Marlow
Simon and I have been chatting about how we accommodate libraries in the 
GHC repository.  After previous discussion on this list, GHC has been 
gradually migrating towards having snapshots of libraries kept as 
tarballs in the repo (currently only time falls into this category), 
but I don't think we really evaluated the alternatives properly.  Here's 
an attempt to do that, and to my mind the outcome is different: we 
really want to stick to having all libraries as separate repositories.


Background:
 * Scope: libraries that are needed to build GHC itself (aka boot
   libraries)

 * Boot libraries are of several kinds:
   - INDEPENDENT: Independently maintained (e.g. time, haskeline)
   - COUPLED: Tightly coupled to GHC, but used by others (base)
   - SPECIFIC: Totally specific to GHC (e.g. template-haskell, DPH)

 * Most boot libraries are INDEPENDENT.  INDEPENDENT libraries have a
   master repository somewhere separate from the GHC repositories.

 * We need a branch of INDEPENDENT libraries, so that GHC builds don't
   break when the upstream package is modified.

 * Sometimes we want to make local modifications to INDEPENDENT
   libraries:
 - when GHC adds a new warning, we need to fix instances of the
   warning in the library to keep the GHC build warning-free.
 - to check that the changes work, before pushing upstream


Choices for how we deal with libraries in the GHC repository: (+) is a
pro, (-) is a con.

  (1) Check out the library from a separate repo, using the darcs-all
  script.  The repo may either be a GHC-specific branch
  [INDEPENDENT], or the master copy of the package
  [SPECIFIC/COUPLED].

  (+) we can treat every library this way, which gives a
  consistent story.  Consistency is good for developers.
  (+) [INDEPENDENT] makes it easy to push changes upstream and sync
  with the upstream repo (unless upstream is using a different
  VCS).

  (-) [INDEPENDENT] we have to be careful not to let our branches
  get too far out of sync with upstream, and we must
  sync before releasing GHC.

  (2) Put a snapshot tarball of the library in libraries/tarballs,
  but allow you to checkout the darcs repo instead.

  (-) [SPECIFIC/COUPLED] this approach doesn't really make sense,
  because we expect to be modifying the library often.
  (-) updating the snapshot is awkward
  (-) workflow for making a change to the library is awkward:
  - checkout the darcs repo
  - make the change, validate it
  - push the change upstream (bump version?)
  - make a new snapshot tarball
  - commit the new snapshot to the GHC repo.
  (-) having tarballs in the repository is ugly
  (-) we have no revision history of the library

  (3) The GHC repo *itself* contains every library unpacked in the
  tree.  You are allowed to check out the darcs repo instead.

  (+) atomic commits to both the library and GHC.
  (+) doing this consistently would allow us to remove darcs-all,
  giving a nice easy development workflow

  (-) [INDEPENDENT/COUPLED] still need a separate darcs repo.
  (-) [INDEPENDENT/COUPLED] pushing changes upstream is hard
  (-) [INDEPENDENT/COUPLED] manual syncing with upstream
  (-) [COUPLED] (particularly base) syncing with
  upstream would be painful.


(3) works best for SPECIFIC libraries, whereas (1) works best for
INDEPENDENT/COUPLED libraries.  If we want to treat all libraries the
same, then the only real option is (1).

Experience with Cabal and bytestring has shown that (1) can work for
INDPENDENT libraries, but only if we're careful not to get too
out-of-sync (as we did with bytestring).  In the case of Cabal, we never 
have local changes in our branch that aren't in Cabal HEAD, and that 
works well.


Comments/thoughts?

Cheers,
Simon
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Libraries in the repo

2009-08-26 Thread Judah Jacobson
On Wed, Aug 26, 2009 at 9:15 AM, Simon Marlowmarlo...@gmail.com wrote:
 Simon and I have been chatting about how we accommodate libraries in the GHC
 repository.  After previous discussion on this list, GHC has been gradually
 migrating towards having snapshots of libraries kept as tarballs in the repo
 (currently only time falls into this category), but I don't think we
 really evaluated the alternatives properly.  Here's an attempt to do that,
 and to my mind the outcome is different: we really want to stick to having
 all libraries as separate repositories.

 Background:
  * Scope: libraries that are needed to build GHC itself (aka boot
   libraries)

  * Boot libraries are of several kinds:
   - INDEPENDENT: Independently maintained (e.g. time, haskeline)
   - COUPLED: Tightly coupled to GHC, but used by others (base)
   - SPECIFIC: Totally specific to GHC (e.g. template-haskell, DPH)

 Choices for how we deal with libraries in the GHC repository: (+) is a
 pro, (-) is a con.

  (1) Check out the library from a separate repo, using the darcs-all
      script.  The repo may either be a GHC-specific branch
      [INDEPENDENT], or the master copy of the package
      [SPECIFIC/COUPLED].

  (2) Put a snapshot tarball of the library in libraries/tarballs,
      but allow you to checkout the darcs repo instead.

  (3) The GHC repo *itself* contains every library unpacked in the
      tree.  You are allowed to check out the darcs repo instead.


 (3) works best for SPECIFIC libraries, whereas (1) works best for
 INDEPENDENT/COUPLED libraries.  If we want to treat all libraries the
 same, then the only real option is (1).

Agreed.  Also, it seems odd to have template-haskell be built-in yet
something so fundamental as base be a separate repo.

 Experience with Cabal and bytestring has shown that (1) can work for
 INDPENDENT libraries, but only if we're careful not to get too
 out-of-sync (as we did with bytestring).  In the case of Cabal, we never
 have local changes in our branch that aren't in Cabal HEAD, and that works
 well.

 Comments/thoughts?

I also would rather stay with (1).  Although using a DVCS allows
greater freedom for developers, it also creates the need for more
explicit rules of process.  So I propose codifying on the wiki that
for certain libraries, the local ghc repo

 - Never has patches which are not in the library's HEAD
 - Pulls patches sparingly, and usually only after a tagged release of
the library.

(the darcs-all script could help double-check that the former is being obeyed.)

We package admins would need to agree to be responsive to patch
submissions from GHC devels (or grant push access to them).

Thanks for your very helpful analysis,
-Judah
___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Libraries in the repo

2009-08-26 Thread Duncan Coutts
On Wed, 2009-08-26 at 17:15 +0100, Simon Marlow wrote:

   * Sometimes we want to make local modifications to INDEPENDENT
 libraries:
   - when GHC adds a new warning, we need to fix instances of the
 warning in the library to keep the GHC build warning-free.

I have to say I think this one is rather dubious. What is wrong with
just allowing warnings in these independent libs until they get fixed
upstream? I know ghc's build system sets -Werror on them, but I don't
see that as essential, especially for new warnings added in ghc head.


 Experience with Cabal and bytestring has shown that (1) can work for
 INDPENDENT libraries, but only if we're careful not to get too
 out-of-sync (as we did with bytestring).  In the case of Cabal, we never 
 have local changes in our branch that aren't in Cabal HEAD, and that 
 works well.

It requires an attentive maintainer to notice when people forget to push
upstream (as they inevitably do on occasion). If it goes unnoticed for
too long then ghc ends up with a forked repo that cannot sanely be
synced from the upstream repo (like bytestring).

I suggest if we stick with the independent repo approach that we have
some automation to check that changes are indeed getting pushed
upstream.

Duncan

___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


Re: Libraries in the repo

2009-08-26 Thread Don Stewart
marlowsd:
 Simon and I have been chatting about how we accommodate libraries in the  
 GHC repository.  After previous discussion on this list, GHC has been  
 gradually migrating towards having snapshots of libraries kept as  
 tarballs in the repo (currently only time falls into this category),  
 but I don't think we really evaluated the alternatives properly.  Here's  
 an attempt to do that, and to my mind the outcome is different: we  
 really want to stick to having all libraries as separate repositories.

 Background:
  * Scope: libraries that are needed to build GHC itself (aka boot
libraries)

  * Boot libraries are of several kinds:
- INDEPENDENT: Independently maintained (e.g. time, haskeline)
- COUPLED: Tightly coupled to GHC, but used by others (base)
- SPECIFIC: Totally specific to GHC (e.g. template-haskell, DPH)

  * Most boot libraries are INDEPENDENT.  INDEPENDENT libraries have a
master repository somewhere separate from the GHC repositories.

  * We need a branch of INDEPENDENT libraries, so that GHC builds don't
break when the upstream package is modified.

  * Sometimes we want to make local modifications to INDEPENDENT
libraries:
  - when GHC adds a new warning, we need to fix instances of the
warning in the library to keep the GHC build warning-free.
  - to check that the changes work, before pushing upstream


 Choices for how we deal with libraries in the GHC repository: (+) is a
 pro, (-) is a con.

   (1) Check out the library from a separate repo, using the darcs-all
   script.  The repo may either be a GHC-specific branch
   [INDEPENDENT], or the master copy of the package
   [SPECIFIC/COUPLED].

   (+) we can treat every library this way, which gives a
   consistent story.  Consistency is good for developers.
   (+) [INDEPENDENT] makes it easy to push changes upstream and sync
   with the upstream repo (unless upstream is using a different
   VCS).

   (-) [INDEPENDENT] we have to be careful not to let our branches
   get too far out of sync with upstream, and we must
   sync before releasing GHC.

   (2) Put a snapshot tarball of the library in libraries/tarballs,
   but allow you to checkout the darcs repo instead.

   (-) [SPECIFIC/COUPLED] this approach doesn't really make sense,
   because we expect to be modifying the library often.
   (-) updating the snapshot is awkward
   (-) workflow for making a change to the library is awkward:
   - checkout the darcs repo
   - make the change, validate it
   - push the change upstream (bump version?)
   - make a new snapshot tarball
   - commit the new snapshot to the GHC repo.
   (-) having tarballs in the repository is ugly
   (-) we have no revision history of the library

   (3) The GHC repo *itself* contains every library unpacked in the
   tree.  You are allowed to check out the darcs repo instead.

   (+) atomic commits to both the library and GHC.
   (+) doing this consistently would allow us to remove darcs-all,
   giving a nice easy development workflow

   (-) [INDEPENDENT/COUPLED] still need a separate darcs repo.
   (-) [INDEPENDENT/COUPLED] pushing changes upstream is hard
   (-) [INDEPENDENT/COUPLED] manual syncing with upstream
   (-) [COUPLED] (particularly base) syncing with
   upstream would be painful.


 (3) works best for SPECIFIC libraries, whereas (1) works best for
 INDEPENDENT/COUPLED libraries.  If we want to treat all libraries the
 same, then the only real option is (1).

 Experience with Cabal and bytestring has shown that (1) can work for
 INDPENDENT libraries, but only if we're careful not to get too
 out-of-sync (as we did with bytestring).  In the case of Cabal, we never  
 have local changes in our branch that aren't in Cabal HEAD, and that  
 works well.

 Comments/thoughts?


As author of bytestring, I'd prefer it if GHC used a released version
direct from Hackage. I.e. GHC could snapshot a Hackage release, and get
out of the business of cloning repos. Same for other INDPENDENTs.

-- Don


___
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users