Am 05.02.2005 um 17:01 schrieb TheSin:

With the upcoming shlibs change, the packaging engine needs to be changed a little and this will break many packages.

first let me explain the shlibs change. Basically fink will beable to automatically insert all share library deps to the Depends line by using Depends: {SHLIB_DEPS}, curl | curl-ssl. This is an example and I added curl | curl-ssl to show that we will still need to add runtime depends by hand, but now dylib pkgs.

[...]

all pkgs such be able fink build foo with out the depends line so comment it out and add what is needed to builddep line.

This sounds like a problematic solution to me. While it is nice in that it means full backward compatibility (.info files which are changed this way would still work on older Fink versions), that advantage is lost again once {SHLIB_DEPS} is used.


The whole discussion is not new of course -- this was discussed years ago. My suggestion back then was to add an explicit "RuntimeDepends" field for this, and migrate over to that.

Another solution would be to change the Depends field semantics after all, but at the same time increase the version of the .info format. There was some discussion on this technique for the variants support, I am right now sure if that got implemented, but if not, I think it's still a good idea. To explain what I mean: Wrap the whole content of our .info files into a new multi-level field, which only new versions of fink would parse, while old fink's would ignore them completely. Inside that field, use all existing fields, but also add an InfoVersion field, which Fink could check to see if the format of that .info file is supported. Old .info files w/o this wrapper would be treated as "InfoVersion: 0". And then Fink could determine the semantics used for e.g. the Depends field based on this InfoVersion.

Advantage: future safe, we prevent new packages being accidentally used with old Fink versions. We also make it possible to introduce future major variations of our package format.
Drawback: packages treated this way wouldn't work with old Fink versions anymore. However, that's specifically our goal. Furthermore, we could still use the old format for most packages, as long as we want, making the transition easy.



It would have been nice if we had realized this problem years ago, of course, and changed the semantics of Depends while Fink was still small. But doing this now, out of the blue, seems like a bad idea to me, which opens a whole can of potential bugs and cause for irritation, not to forget about the hundreds of people who maintain .info package and who might miss this move, and/or be confused by it. If we really had to, I'd bite the rotten apple, but as it is, there are several working alternatives for doing so, hence why introduce breakage and problems if we can do it in a more elegant and safe fashion?


Finally, I wonder about the {SHLIB_DEPS} syntax -- yet another variation to our deps syntax? Hm, I wonder whether it might be better to simply add a new field for this:
AutomaticallyAddShlibsDeps: true
(gee, the field name is just a dummy, feel free to think of a better name :-)



Cheers,

Max



-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to