> Will ghc change interface format with each version? This is the biggest problem (and, interestingly, the least addressed :-)). Especially for binary distribution builders, it's quite inconvenient to rebuild every GHC-library on the system to match with the latest compiler version :-( I thought about a scheme similar to the TeX font-generation (if the font has already been "compiled" for a particular resolution (dpi), it's re-used; if not, it is created). But here we're talking about binary libraries, and this may rise some security issues. I had something like the following in mind: * Create a new group `ghc' on the system * The library sources are installed under <sourcedir>/<package>/ (readonly). sourcedir:=`<prefix>/share/ghc-libsrc/' * Create spooldir:=`/var/spool/haskell/<compiler>/<version>/' for all installed compilers. owner: root.ghc, mode: 3777 (for all dirs below <spooldir>) hi-files go into <spooldir>/<package>/imports/, libs to <spooldir>/<package>/ * Make those GHC programs, which write to <spooldir>, setgid `ghc'. This would ideally be one single program called `ghc-recompile', which has one parameter, <package>, and handles all the stuff to recompile a library to let it match the compiler version. Of course, ghc-recompile must be designed carefully wrt. to security, i.e. environment cleanup, maybe some protections mechanisms to let programs,scripts,etc. called from within ghc-recompile write exclusively to <spooldir>/<package>, logging, limit uids to 100+, etc... ghc-recompile has to be compiled statically to prevent possible misuse by playing tricks with library preloads, etc... * If a needed interface file/library is not found at the appropriate directory in <spooldir>, and if the sources are available under <sourcedir>, the library is recompiled. This implies, that there must be some kind of "instruction" (Makefile,script,...) in <sourcedir>/<package>/ to rebuild a library version. This script is called by ghc-recompile. So, the admin just has to install the lib sources and the compiler, and if someone wants to use an already installed library, he just _can_! (if s/he's so unfortunate to be the first user, compilation just takes longer this time). Comments? Cheers, Michael -- Of course, we all know that debian/rules... -- Joey Hess