On 12 April 2016 at 20:49, Daniel J. Luke wrote: > On Apr 12, 2016, at 1:34 PM, Christopher Jones wrote: >> Take if you want, as a real world case, ROOT6, which I know well. It has a >> large number of variants, because upstream’s build system offers all these >> as optional extras. Many of them have dependencies I do not wish to force on >> all users, if they don’t require that feature. >> >> Some of them create additional libraries for the new features, some just add >> the functionality to existing ones. Most will also extend the introspection >> system as part of root. None can be built as afterthoughts. You have to >> configure ROOT from the start with the features you want. So for this port >> there is no chance in hell I am going to implement them as sub-ports. > > It would be nice if upstream could be convinced to 'fix' this. > > (As an end user, it's much easier to understand application + optional > plugins than application configured in one of many possible states). > > ROOT6 may well be a 'special case' where we can't easily work-around
I would say it's rather the opposite. Almost any given software I have ever compiled or packaged offers configure options and then builds the main binary that links against the libraries chosen during configure phase. Imagine some simple C program: #ifdef HAVE_LIBPNG #include <png.h> #endif #ifdef HAVE_JPEG #include <jpeglib.h> #endif #ifdef HAVE_READLINE #include <readline.h> #endif int main() { #ifdef HAVE_LIBPNG // do some stuff that requires PNG // perhaps add a button "Save as PNG" and add a pretty PNG picture for the background #endif #ifdef HAVE_JPEG // do some stuff that requires JPEG // add a button "Save as JPEG" and show a JPEG picture in the corner #endif #ifdef HAVE_READLINE // handle input with the library #else // an alternative "poor man's" implementation doing the same as readline would #endif return 0; } You end up with a single executable that links to up to three external libraries. I'm not saying it's completely impossible to do it, but reimplementing this in a way that you would be able to install four submodules, each one with some extra files, would require quite some extra trickery. Mojca _______________________________________________ macports-dev mailing list macports-dev@lists.macosforge.org https://lists.macosforge.org/mailman/listinfo/macports-dev