[76478] trunk/dports/devel/redo/Portfile

Ryan Schmidt ryandesign at macports.org
Thu Feb 24 21:03:13 PST 2011

On Feb 24, 2011, at 15:58, singingwolfboy at macports.org wrote:

> Revision: 76478
>          http://trac.macports.org/changeset/76478
> Author:   singingwolfboy at macports.org
> Date:     2011-02-24 13:58:33 -0800 (Thu, 24 Feb 2011)
> Log Message:
> -----------
> Updated redo to 0.06. Docs can no longer be pulled from git, so added python dependencies to doc variant.

> depends_lib             bin:python:python_select
> variant doc description {Build and install man pages} {
> -    # The documentation requires pandoc to build...    
> -    #depends_build       bin:pandoc:pandoc
> -    # ... but if we don't have pandoc already installed, we can just grab
> -    # the pregenerated documentation.
> -    post-fetch {
> -        if {[file isfile "${prefix}/bin/pandoc"] == 0} {
> -            system "cd ${worksrcpath} && ${build.cmd} Documentation/git-import"
> -        }
> +    # The documentation requires some python modules to build
> +    depends_build       port:py27-beautifulsoup port:py27-markdown
> +    # make sure we use macports python, since that's required to build docs
> +    configure {
> +        eval reinplace "s|#!/usr/|#!${prefix}/|" [glob ${worksrcpath}/*]

So, for one thing, the configure phase you've added here in the doc variant is the same configure phase you already have in the python_select variant. What happens if the user selects both of these? Instead, why not make the doc variant depend on the python_select variant and remove the duplicate code from the doc variant?

Second, the a problem with this strategy in the first place is that you're declaring a dependency on the binary "python", and telling MacPorts to install python_select if it can't find one, and then making the scripts run "/opt/local/bin/python". But /usr/bin/python will satisfy the dependency; MacPorts would never install python_select in response to this dependency declaration.

Third, just installing "python_select" doesn't create /opt/local/bin/python; the user would have to run python_select and select a particular python to make that work. The python selected by python_select is supposed to be for the user's use only; ports installed by MacPorts should not be trying to make use of that. Instead, ports should depend on a specific version of python, and use that python binary.

More information about the macports-dev mailing list