Twitter Weekly Updates for 2011-02-07

  • Mandatory listening before listening to #newspeak episode on #flossweekly #
  • RT @gildor478: just uploaded my first test package to oasis-db through command line — OASIS-DB has a new feature #ocaml #oasis #
  • Dear #outlook developers, please make invitations contain the time in UTC, just using the sender's TZ just caused me to miss a meeting! #
  • I wish there was a single #wiki #markup to rule them all! #
  • How irritating, it's not possible to satisfy all dependencies for #yi in #arch at the moment :( #
  • Time to move desks… again! #work #
  • Done with the part of the move I'll do myself… the drawers will have been transported on Monday I'm told. #work #
  • So, have moved all the baseX encodings in #dataenc to the new API for decoding, only 6 more encodings to go. #haskell #
  • So, done re-writing the decoding using the new API, now for a bit of clean-up. #haskell #dataenc #
  • So, the changed encoding API is taking form as well. #dataenc #haskell #

Twitter Weekly Updates for 2011-01-30


On maintaining Haskell packages for a Linux distro

When trying to maintain set of binary packages of Haskell libraries for a Linux distribution there are a few issues that come up:

  1. The set of packages must be compilable at all times, and
  2. Updating one package requires all packages that depend on it, in one or more steps, to be re-compiled.

The first requires keeping track of all dependencies of the packages in the set and making sure that they are satisfiable at all times. For a while I was doing this by simple attempting to compile all updated packages and check for breakages. Which was both time-consuming and a painful when build-failures had to be resolved.

The second requires bumping the package release number for all packages that are reachable when following the dependencies in the reverse direction. Doing this manually is tedious and very error prone in my experience.

Of course it ought to be possible to make this a lot easier with the help of a tool. The last few days I’ve been writing such a tool. This is how I’ve been using it so far.

Building the initial database

GHC in ArchLinux ships with a few Haskell libraries and ArchLinux also has a few Haskell packages in its base repositories. Since I don’t need to maintain any of those packages I decided to treat these as a sort of base. Adding those is as simple as this:

% head base-pkgs
% cblrepo addbasepkg $(cat base-pkgs)

Then I need to add the packages of the binary repo provided by ArchHaskell. I wrote a little script that extracts the package name and version from the ArchHaskell HABS tree (get-ah-cabals):

#! /bin/bash
for d in ${habsdir}/habs/*; do
    . ${d}/PKGBUILD
    case $_hkgname in
            echo ${_hkgname},${pkgver}

Since haskell-platform isn’t on Hackage it requires special handling. The reason why datetime is excluded is slightly different. It’s the only package that requires old base (version <4). GHC in Arch does whip with both old and new base so datetime can be built, but cblrepo can’t deal with two versions of the same package. This is a limitation, but I’m not sure it’s worth fixing it since base is the only library that comes in two versions, and datetime is the only package that hasn’t been updated to use new base.

Knowing this it’s easy to add all the ArchHaskell packages to the database:

% cblrepo idxupdate
% cblrepo add $(get-ah-cabals path/to/habs)

Attempting an update

Now it’s possible to attempt to attempt an update:

% cblrepo add neither,0.2.0
Failed to satisfy the following dependencies for neither:
  monad-peel >=0.1 && <0.2
Adding neither 0.2.0 would break:
  yesod : neither >=0.1.0 && <0.2
  persistent : neither >=0.1 && <0.2

The way to read this is that there first of all is a missing dependency to satisfy for neither itself, and second there are two packages, yesod and persistent, that wouldn’t be buildable if neither were updated.

Now if it were possible to update neither, what packages would require a bump?

% cblrepo bump neither     

Twitter Weekly Updates for 2011-01-24

  • Compiling #haskell packages like crazy for #archlinux again :( #
  • Just happy that the code I worked on last week saved me from attempting the update of a few packages with unsatisfiable dependencies. #
  • %s/begs the question/raises the question/g #
  • My implementation of #yEnc in #haskell may come in handy for someone; #
  • At work: why is this purchase order valid without a signature? because it has been created electronically by an authorised representative! #
  • Hmm, I wanted to have a look at #cmdlib for #haskell but can't find more than one (trivial) example so I'll go back to #cmdargs #
  • Yay, returning to living after a half-day meeting #
  • #trac on is painfully slow, I wonder why. #haskell #
  • Download on #hackage doesn't have proper dependencies, but it's fixed upstream… not having it on hackage is a pain though. #haskell #
  • ? @abuiles: RT @pendrift: Do not piss off your web developer. #

Twitter Weekly Updates for 2011-01-16


Twitter Weekly Updates for 2011-01-10

  • 6370 emails received over the holidays, oh joy! #
  • First interaction with SAP for the year, it resulted in a call to helpdesk. #
  • Time to try Jivamukti for the first time. #yoga #
  • Good #jivamukti session this morning. My first. #yoga #
  • Re-building about 87 haskell packages for archlinux, unfortunately not in a very efficient way :-( #
  • ? @abratland: Sick of wasting time in meetings? Then boycott one on January 19th: #
  • Been compiling #haskell packages like crazy today, just to update a few packages for #archlinux #aur. #

Twitter Weekly Updates for 2010-12-05


Dent Weekly Updates for 2010-11-21

Powered by Twitter Tools