port versus path dependency declaration

Ryan Schmidt ryandesign at macports.org
Sat May 12 03:17:07 UTC 2018


On May 11, 2018, at 21:57, Renee Otten wrote:

> I am trying to understand why in some Python ports the run dependencies are declared using path instead of port statements - is there an advantage/preference for one over the other?
> 
> For example, in the py-spyder-devel Portfile (but also the py-autopep8, which I recently updated) it uses: "depends_lib-append path:${python.pkgd}/pep8:py${python.version}-pep8”, which I changed to "depends_lib-append path:${python.pkgd}/pycodestyle:py${python.version}-codestyle” in the py-autopep8 Portfile. 
> 
> If I understand it correctly form the guide the path statement will look if a specific file is present, if not it will install the port. So, in this case for  pep8/pycodestyle in ${frameworks_dir}/Python.framework/Versions/${python.branch}//lib/python${python.branch} ; that file is present but with the extension .py - is that implicitly assumed or should one provide the extension in the path specification. Also, is there any advantage here of using path instead of just doing: "depends_lib-append port:py${python.version}-pep8” or "depends_lib-append port:py${python.version}-pycodestyle”?

path:-style dependencies are used when more than one port could satisfy the dependency. For example, py-spyder-devel is a development version of spyder, while py-spyder is the stable version. If another port needs to declare a dependency on spyder, it should use a path:-style dependency, so that either the stable version or the development version can be used.

Our documentation about this is somewhat lacking. See https://trac.macports.org/ticket/14540 for some stuff that should be added to the guide about this.

As for why a dependency on pep8 is being written in path:-style, I don't know. I don't see a py-pep8-devel port. I don't know if there is another port that provides the same files as py-pep8.

If you use a path:-style dependency, you must specify the complete and accurate path of the file, including filename extensions. If the path you specify is relative (does not begin with a slash), ${prefix} is prepended for you.



More information about the macports-dev mailing list