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
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev