Programmatically finding dependencies for a Portfile

Artur Szostak aszostak at partner.eso.org
Thu May 28 05:44:57 PDT 2015


Hi,

Given a Portfile, I am trying to programmatically find all of its direct dependencies. My approach is to execute an appropriate TcL script in port-tclsh to produce a listing of such dependencies. I am able to handle Portfiles with the example script indicated below, but only for Portfiles that do not have any subports. It is not clear to me how to handle dependencies for subports. The structure returned by mportinfo seems to only have a list of subport names, not their dependencies.
_______________________________________________________
package require macports
mportinit
set mport [mportopen "file:///tmp/testport" [list] [list]]
array unset portinfo
array set portinfo [mportinfo $mport]
mportclose $mport
array set depsdict {depends_build build depends_lib lib depends_run run}
foreach deptype [array names depsdict] {
    if {[info exists portinfo($deptype)] && \
        [string length $portinfo($deptype)] > 0} \
    {
        foreach dependency $portinfo($deptype) {
            puts "$depsdict($deptype) $dependency"
        }
    }
}
_______________________________________________________

How can I access the dependencies for the subports?
Is there any developers manual that I could refer to?
Is the API and structures documented anywhere?

Kind regards.

Artur


More information about the macports-dev mailing list