[arch-haskell] Starting to help

Peter Simons simons at cryp.to
Sat Oct 12 07:39:26 UTC 2013

Hi Fabio,

 > yesterday I submitted a patch to HABS repository just because I met
 > some out-of-date packages in AUR. Then I read the "story" of this
 > group in this mailing list and thought that I can give some help. I
 > think I can take responsibility for a bunch of packages and care for
 > updates, but I need some hints.

your pull request has been merged. Thank you very much for the

 > 1) In order to test for broken packages, do I really need to use the
 > makeworld script? I think it would take too much time!

Unfortunately, distributing Haskell packages is a fairly complicated
affair, mostly because these packages interact with each other in
complex ways. Some problems can be caught without running a test build,
but not all of them. My experience is that running 'makeworld' is the
only way to be sure that the repository is in a consistent state. The
procedure looks intimidating at first, but it's not that complicated,
actually. Initially, the script runs for quite a while, because it needs
to set-up the chroot build environment, but once that's been
accomplished, builds are fairly quick. Note that the script does not
build everything from scratch -- rather, it builds only those packages
that need to be re-built. So, if at all possible, I'd encourage you to
use 'makeworld'. If you don't want to (or can't, for some reason), then
it's fine too, though, because others do run it and will catch problems

 > 2) Past discussions suggest me that the group is centred on a small
 > number of packages to put in a binary repository. It's wonderful to
 > have this, but it takes a very long time. What do you think if some
 > people concentrate in the simplest and fastest task of preparing
 > PKGBUILDs and put them in a place (i.e. AUR) where the core group
 > decide witch package worth an inclusion in the repo?

It is possible to update packages on AUR without building them first.
So, yes, we could split this effort into one that updates AUR and one
that maintains the binary repository. Past experience suggests, though,
that packages that are being published without being built first tend to
be very unreliable. This means that users will run into build problems,
and then they'll complain on AUR or on this list -- and rightfully so!
Dealing with those issues, however, is a lot of effort. I'm not sure
whether publishing untested PKGBUILDs is going to be very helpful for
the general user base.

 > Anyway I'd prefer the mainter to be the group, not a single. That's
 > only my opinion, of course.

Yes, I very much agree. This is a community-driven effort that is
intended to allow everyone to contribute and to have an immediate impact
on the result.

 > 3) For Peter: could you please give some help information on how to
 > use the scripts in
 > https://github.com/peti/arch-haskell/tree/master/scripts ?

I'll try to describe my work-flow briefly:

 1) Clone the 'peti/arch-haskell' repository.

 2) Run "git submodules init" to set-up the HABS tree.

 3) Run "cabal update" to download the latest database from hackage.

 4) Run "make" to re-build all files in HABS based on the configuration
    that's described in the PKGLIST file. The format of that file is:

    | haskell-aes       AES             0.2.8           1
      ^^^^^^^^^^^       ^^^             ^^^^^           ^
      $pkgname          $_hkgname       $pkgver         $pkgrel

 5) Run "git diff" in the habs/ sub-directory to verify the changes.
    Then commit those changes in habs/.

 6) Run "make world" to build the latest version of the binary

 7) If all went well, push the updated version of habs/ to Github.

Furthermore, you can run ...

 * "make updates" to get a list of all updates available on Hackage.
   Edit PKGLIST to pull in those updates that you want, then run "make
   all" to verify that all version constraints can be fulfilled. This is
   usually an iterative process, in which one package after another is
   updated until all updates that can be performed have been found.

 * If habs/ has been changed by another committer, you can run
   "scripts/extract-pkglist habs/habs/* >PKGLIST" to synchronize the
   PKGLIST file with the current state of the repository.

 * If you have updated packages "foo" and "bar" in habs, then run:

     make scripts/reverse-dependencies
     cd habs/habs
     ../../scripts/reverse-dependencies . foo bar

   This will show you the list of packages that need to be re-built
   after that update. If that looks okay, run

     ../../scripts/bump $(../../scripts/reverse-dependencies . foo bar)

   to bump the $pkgrel of all those packages. Commit those changes in
   habs/. Then run

     scripts/extract-pkglist habs/habs/* >PKGLIST

   to synchronize the PKGLIST file, and do the usual "make all && make
   world" routine to verify that everything is okay before pushing the
   changes to Github.

It's a bit of a mess, but it works okay. :-)

 > 4) Why haskell packages in extra depends on ghc-7.0.3 (still in testing)?

There is an update of GHC available in [testing], and unfortunately some
packages have been published that were built with that newer GHC version
before GHC itself is available. In short, Haskell support is currently
broken in ArchLinux. Unfortunately, these things happen, but it's most
probably going to be remedied soon.

Take care,

More information about the arch-haskell mailing list