Remove +with_default_names and use a specific path for unprefixed binaries

Ryan Schmidt ryandesign at macports.org
Fri Sep 18 03:55:17 PDT 2009


On Sep 18, 2009, at 01:44, Bryan Blackburn wrote:

> Are you willing to build all 6100+ ports to verify all of them are  
> okay with
> +with_default_names?
>
> Also, note that some of these ports are dependencies for other  
> ports, so it
> may not simply be a case of "you wanted it, so you must want it as the
> default".  For example, I have m4 and gsed installed solely as  
> dependencies,
> and I believe that's how I've ended up with coreutils before.

Exactly. I don't have gsed because I want gsed; I have it because php5  
requires it. That is, php5 doesn't require it; it would work fine with  
bsd sed. But if gsed is present, php5 encodes the name "gsed" into one  
of its scripts; if I were to uninstall gsed later, a part of php5  
would break. Once I realized that, I had to either add the dependency  
or patch php5. The former was easier and more future-proof than the  
latter.

Mark brought the with_default_names issue up with me a few weeks ago  
and I convinced him that putting the unprefixed binaries into $ 
{prefix}/libexec/something would be an ok solution. I, too, would like  
to get rid of the with_default_names variants, but having the software  
install with default names always is not acceptable for the reasons  
mentioned. It would break tons of stuff. I presume that is the reason  
why e.g. gsed was changed to not install that way by default over four  
years ago in r13825. We don't want to re-break what that fixed.

I'm not sure what "something" in ${prefix}/libexec/something should  
be. I suggested ${name} because that's what other ports use. Mark  
suggested "gnubin". "gnubin" would be convenient in that you would  
only have to add one path to your PATH to pick up all installed GNU  
utilities. On the other hand, might there be a reason when you would  
want only specific GNU utilities and not others? Might you want to  
only have the GNU sed and keep the BSD awk, say? If so, then putting  
each port's binaries in its own directory would give you that freedom.  
Heck, we could have it both ways: each port could create two symlinks  
to each program, one in ${prefix}/libexec/gnubin and one in ${prefix}/ 
libexec/${name}. Then the user can use whichever path they like.






More information about the macports-dev mailing list