So, regardless which format we choose, we want to support package variants. The question is, how to do it best.
There are multiple ways to go at it: 1) Have variants like we have now, with explicit names: * a "default" variant * a "ssl" variant * a "nox" variant * a "ssl-nox" variant 2) Allow "options" that can be combined at will: * the base settings, no options * "ssl" - will enable ssl support * "nox" - will build without X11 * "nognome" - will build wihtout 1) obviously has the drawback that if you have 4 options to toggle, you have to list 16 varianst - ouch 2) is far more flexible, but what if we have options that contradict each other somehow? We'd need a way to specify that a certain option can't go with another one. Also, for 2), I don#t like to much the "nox" and "nognome" thingy, that's sort of double negation - no I do not want no X-Window support, ouch. So for 2, I'd imagine that we also provide a default set of options, so that could be a list like "DefaultOptions: x, gnome" or so. In either case, I also imagine the whole thing to use, to speak in OOP terms, inheritance. What do I mean with this? Let's look at this example (in pseudo code): Package: foo Version: 1.0 Revision: 1 ConfigureParams: --with-gargle-blaster Depends: bar DefaultOption: x11 Option: ssl ConfigureParams: --with-ssl Depends: openssl Option: x11 ConfigureParams: --with-x Depends: x11 So, in all cases, the "bar" package is a dependency, and the "--with-gargle-blaster" is passsed to configure. Now, there is a fundamental problem with this: what if a variant needs to *remove* something from the default set? Ohm, not good. So, why not use an if-else-approcah: Each variant doesn't just specify things for when it is specified, but also a list of things to do when it is not given. Look at this: Package: foo Version: 1.0 Revision: 1 ConfigureParams: --with-gargle-blaster Depends: bar DefaultOption: x11 Option: ssl Depends: openssl NotOption: ssl ConfigureParams: --without-ssl Option: x11 Depends: x11 NotOption: x11 ConfigureParams: --without-x Option: gnome ImpliesOption: x11 ConfigureParams: --with-panel Depends: gnome NotOption: gnome ConfigureParams: --without-gnome NotOption: japanese ConfigureParams: --without-japanese Get what I mean? Note that the option "gnome" implies the option "x11". I am not sure how much sense I make, and there are probably holes in my thoguhts, so feel free to point them out :) Now the next step. How does a user specify options? Mabye like configure does: fink install foo --with-gnome --with-japanese Or like the current way: fink install foo-gnome-japanese Or maybe completly different fink install foo (gnome, japanese) And how do we map all this to dpkg names? One way would be to take the list of options, sort them alphabetically, and add concat them with the package name using "-". So the above examples would result in the .deb for foo-gnome-japanese-x11 What do you guys think? Am I crazy? :) Max -- ----------------------------------------------- Max Horn Software Developer email: <mailto:[EMAIL PROTECTED]> phone: (+49) 6151-494890 _______________________________________________ Fink-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/fink-devel