On Sun, Nov 10, 2013 at 7:37 PM, Peter Bex <[email protected]> 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
_______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
