[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Need to do an install, any changes in the pipe line

From: Stephen Eilert
Subject: Re: [Chicken-users] Need to do an install, any changes in the pipe line I should wait for?
Date: Mon, 11 Nov 2013 12:31:03 -0200

On Sun, Nov 10, 2013 at 7:37 PM, Peter Bex <address@hidden> wrote:
On Sun, Nov 10, 2013 at 10:31:33PM +0000, Mario Domenech Goulart wrote:
> Eggs don't specify the exact version of dependencies they need.  You can
> specify a requirement like "at least <version>", but not "exactly <version>".
> So, as far as I can see, you always have a consistent set, unless eggs
> (or chicken-install) are broken.

Maybe I'm missing something (I haven't been paying very close attention
to this thread), but if you request an ancient version of spiffy it's
probably not going to work with the latest intarweb.  The meta files
can't express this, because that would be knowing what future versions
of an extension will break your code.

Bundler has fancy ways of specifying exactly what version of each egg
you want, but IIRC by default it just "nails down" the exact versions
you have installed right now.  This means you get an easy way to
reproduce the exact current situation.

I think a 'bundler'-like tool is a necessary evil, if one wishes to maintain an application for a few years - and it would be convenient as well in other cases. I took a stab at implementing one back in May, but as usual things came up and I never finished.

The idea was:

- User creates a 'hatchfile' listing all the eggs the application needs. At this point, versions are optional.

- Instead of calling chicken-install directly for each missing egg, the tool would read the file and ask chicken-install to fetch and install them.

- The tool would record the egg versions (somewhere!) in order to 'freeze' them. Further installs wouldn't fetch new versions, unless an upgrade was requested.

Note that, at the time, I didn't know about egg-pack-sources, so I didn't consider it. Indeed, 'vendoring' the eggs might be a better solution. It would really guarantee that they are available and that they work. I'll have to play with that.

Depending on how the environment is setup, there is still the possibility of egg version conflicts among different applications, if they are installed system-wide, in the default repository. Which is usually the case.

I'm not too fond of how tools like RVM handle that, convenient as they are. Thankfully, since Chicken reads the CHICKEN_REPOSITORY environment variable, it is an easy fix.

-- Stephen

reply via email to

[Prev in Thread] Current Thread [Next in Thread]