[Nix-dev] Re: May I remove the old python code?

Peter Simons simons at cryp.to
Wed Jan 14 22:28:30 CET 2009


Hi Andres,

 > If there actually is a build process involved, you have to select the
 > compiler for which you want to build the library. If multiple
 > versions of a compiler are around, and you still want to install via
 > nix-env, you have to multiply all libraries for all compiler
 > versions.

you are right, these kind of "variant builds" are a very tricky problem.
If we'd come up with a powerful, generic solution to that, it would be
quite an achievement.

I believe, however, that wrappers like the one used in the new Python
expression are not it, because this approach is not flexible enough.

The problem of building variants applies not just to Python libraries or
Haskell libraries, it applies to all package that have some sort of
exchangeable dependency. For example, consider an application that
supports various regular expression libraries, say both libpcre and
libtre. In Nix, that application can easily be built with either
library, but how do you generalize the case of building *both*?

Similarly, a great many programs can be linked with glibc or dietlibc or
any other implementation of libc. In Nix, we can easily switch C
libraries by changing stdenv, but we cannot easily build all possible
permutations, i.e. we cannot easily build everything with every
available libc.

Maybe I'm just missing an obvious insight, but I don't understand how
the wrapper code found in the new Python expression improves that
situation, even if it's just for Python. Let's say I want to build
"cheetahTemplate" with both Python 2.5 and Python 2.6. How is that
supposed to be done?

My impression is that the recently added "override" feature is the way
to go in that area.

Just my 2 cents,
Peter




More information about the nix-dev mailing list