Opened 10 months ago

Last modified 10 months ago

#61861 assigned defect

gimp-resynthesizer: uses "python2", underquoted AC_CONFIG_HEADERS, lib dependency, license

Reported by: ryandesign (Ryan Schmidt) Owned by: pietvo (Pieter van Oostrum)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: gimp-resynthesizer

Description

gimp-resynthesizer has a patchfile that changes #!/usr/bin/env python to #!/usr/bin/env python2 in several python scripts. There is no python2 on macOS 10.14 or earlier. You should probably change it to #!/usr/bin/python so that we're sure what python is used or add a dependency on port:python27 and use #!/opt/local/bin/python2.7.

You also have a patch that switches to AC_CONFIG_HEADERS in configure.ac but it's underquoted. Instead of AC_CONFIG_HEADERS(config.h) use AC_CONFIG_HEADERS([config.h]). In any case it's an upstream issue so you should also submit a pull request for your configure.ac changes to the developers and then include the URL of that pull request in your MacPorts patchfile so that we can keep track of it.

The port has a dependency on lib:libgimp-2.0:gimp2. That should be port:gimp2. lib:-style dependencies can be satisfied by software installed outside of MacPorts, which we don't want.

The port specifies license GPL-3.0. That should be written as license GPL-3 which means the same thing in MacPorts.

Change History (4)

comment:1 Changed 10 months ago by pietvo (Pieter van Oostrum)

Re: the python2: almost all standard python plugins in gimp2 have #!/usr/bin/env python2, so I went along with that. There is just one that #!/usr/bin/env python. gimp2 has the default variant +python27, so usually the dependency on python2.7 is already satisfied. But if gimp2 is installed with -python27 then all hope is lost, because the plugin won't work. Is there a way to set a dependency on gimp2 with the python27 variant enforced?

Re: the lib:libgimp-2.0:gimp2, this was done to catch also gimp2-devel. Is there a way to specify either gimp2 or gimp2-devel?

The config.ac changes and the licence I will correct.

And, by the way, I also noticed a few python3 scripts in the gimp distribution, whereas the gimp2 port has no dependency on any python3. That is of course outside this port, but maybe it should be looked int.

comment:2 in reply to:  1 ; Changed 10 months ago by ryandesign (Ryan Schmidt)

Replying to pietvo:

Re: the python2: almost all standard python plugins in gimp2 have #!/usr/bin/env python2

Then they are all broken on macOS 10.14 and earlier and need to be fixed.

gimp2 has the default variant +python27, so usually the dependency on python2.7 is already satisfied. But if gimp2 is installed with -python27 then all hope is lost, because the plugin won't work. Is there a way to set a dependency on gimp2 with the python27 variant enforced?

This can be accomplished using the require_active_variants procedure of the active_variants 1.1 portgroup.

PortGroup active_variants 1.1
require_active_variants path:lib/pkgconfig/gimp-2.0.pc:gimp2 python27

Re: the lib:libgimp-2.0:gimp2, this was done to catch also gimp2-devel. Is there a way to specify either gimp2 or gimp2-devel?

Other ports use path:lib/pkgconfig/gimp-2.0.pc:gimp2

And, by the way, I also noticed a few python3 scripts in the gimp distribution, whereas the gimp2 port has no dependency on any python3. That is of course outside this port, but maybe it should be looked int.

No port provides python, python2, or python3. All OS versions provide /usr/bin/python. Some OS versions provide /usr/bin/python2 or /usr/bin/python3 but not all so you shouldn't rely on them. Symlinks called python, python2 or python3 can be created by using port select python but that is for the user's convenience only; ports should not rely on the user having run (or not run) port select. If you can use any python and don't care what version and don't need any extra modules, #!/usr/bin/env python is fine or #!/usr/bin/python if you want to ensure that a MacPorts python will not be used. If you care what version or you need extra modules, specify a dependency on the corresponding python and module ports and use #!/opt/local/bin/pythonX.Y where X.Y is whatever version you're using.

comment:3 in reply to:  2 ; Changed 10 months ago by pietvo (Pieter van Oostrum)

Replying to ryandesign:

Replying to pietvo:

Re: the python2: almost all standard python plugins in gimp2 have #!/usr/bin/env python2

Then they are all broken on macOS 10.14 and earlier and need to be fixed.

I found out that these lines are interpreted by gimp itself, not by the OS. It looks for #!/usr/bin/env and then looks up the rest in a table. Both python and python2 are mapped to /opt/local/bin/python2.7. So I guess the python2 is only chosen for documentary purposes. This also means that my patch is both unnecessary and harmless. I'll remove it.

gimp2 has the default variant +python27, so usually the dependency on python2.7 is already satisfied. But if gimp2 is installed with -python27 then all hope is lost, because the plugin won't work. Is there a way to set a dependency on gimp2 with the python27 variant enforced?

This can be accomplished using the require_active_variants procedure of the active_variants 1.1 portgroup.

PortGroup active_variants 1.1
require_active_variants path:lib/pkgconfig/gimp-2.0.pc:gimp2 python27

I'll use that.

Re: the lib:libgimp-2.0:gimp2, this was done to catch also gimp2-devel. Is there a way to specify either gimp2 or gimp2-devel?

Other ports use path:lib/pkgconfig/gimp-2.0.pc:gimp2

I suppose that's covered by the two lines above.

I will make the changes, test it, and submit a new PR.

comment:4 in reply to:  3 Changed 10 months ago by ryandesign (Ryan Schmidt)

Replying to pietvo:

I found out that these lines are interpreted by gimp itself, not by the OS. It looks for #!/usr/bin/env and then looks up the rest in a table. Both python and python2 are mapped to /opt/local/bin/python2.7. So I guess the python2 is only chosen for documentary purposes. This also means that my patch is both unnecessary and harmless. I'll remove it.

Ah ok.

gimp2 has the default variant +python27, so usually the dependency on python2.7 is already satisfied. But if gimp2 is installed with -python27 then all hope is lost, because the plugin won't work. Is there a way to set a dependency on gimp2 with the python27 variant enforced?

This can be accomplished using the require_active_variants procedure of the active_variants 1.1 portgroup.

PortGroup active_variants 1.1
require_active_variants path:lib/pkgconfig/gimp-2.0.pc:gimp2 python27

I'll use that.

Re: the lib:libgimp-2.0:gimp2, this was done to catch also gimp2-devel. Is there a way to specify either gimp2 or gimp2-devel?

Other ports use path:lib/pkgconfig/gimp-2.0.pc:gimp2

I suppose that's covered by the two lines above.

Well you need to specify path:lib/pkgconfig/gimp-2.0.pc:gimp2 in both places: in depends_whatever and in require_active_variants.

Note: See TracTickets for help on using tickets.