Opened 8 years ago

Closed 8 years ago

#50204 closed enhancement (wontfix)

There is no need for subports, they are actually harmful

Reported by: nshmyrev@… Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: swig

Description

SWIG does not require language development packages to be installed to compile and install language support, you can install all languages at once as a single package as it is done in Linux distributions, there is no need for modularity here.

For example, swig port lacks support for javascript while it is simply not packaged, there is no required dependency to install. (issue https://trac.macports.org/ticket/45562)

Another one lacking is CFFI.

Swig-ruby does not require ruby to be installed, ruby can be present in the system installed without ports. Swig-java does not require java, it might be used with NDK.

Same for many other languages.

Change History (2)

comment:1 Changed 8 years ago by mf2k (Frank Schima)

Owner: changed from macports-tickets@… to michaelld@…
Version: 2.3.4

In the future, please Cc the port maintainers (port info --maintainers swig), if any.

comment:2 Changed 8 years ago by michaelld (Michael Dickens)

Resolution: wontfix
Status: newclosed

I don't know the history of how or why the SWIG ports were split and distributed in the manner they are. If I had to guess, it's because some other package managers do it this way & it's really convenient for precise dependency tracking (e.g., depending not just 'swig', but on the Python bindings from 'swig-python'). If we just installed "swig" with everything, there would be no way to actually have reasonable belief and/or robustly verify that the bindings were installed properly.

Making a separate port increases the chances that the bindings were properly installed -- if for some reason the build fails or does not install anything, then 'port' will error out & it will be obvious that the bindings failed (for some reason). I like the specific dependency tracking allowed by keeping the language bindings separate from the primary port.

Although some of the swig* ports might have no dependencies, or could possible use System dependencies, the "MacPorts way of doing things" does not mean that we should just be installing them anyway with SWIG.

SWIG is pretty easy to maintain as it currently is because someone (not me) did a great job writing the Portfile in the first place. Given the amount of work that would be required to go back to a single swig install, I'm not inclined to go there without some -very- persuasive arguments to do so. I'm not convinced by your arguments here, especially the note using binding ports is harmful. Having binding ports is just another way of splitting installs, and it comes with some advantages over the alternative. Maybe I'm just not understanding your arguments?

I'm going to close this ticket as "won't fix". My advice if you truly feel strongly about this matter is to bring up your issue on the MacPorts developer email discussion group & refer to this ticket. If you can convince the MPDevs that this change is appropriate, good, and necessary, then we'll find a way to make it happen.

[As a related aside: A few years back, I maintained various gnuradio-* subports, which was a real pain when a major version change happened & some subports needed to be removed while others were added. I queried GR users and developers if they cared about the supports and the vast vast majority said they would prefer a single install; thus, I made it so & it's been -so- much easier for me to maintain since then. Thus, moving from multiple subports to a single port can be done, if one gets the correct info & uses it well.]

Note: See TracTickets for help on using tickets.