Auto-Detection of Build Dependencies, Gsoc 2019
Marcus Calhoun-Lopez
mcalhoun at macports.org
Sun Mar 10 16:46:32 UTC 2019
Greetings Arghya,
I am responding to this message on the developer mailing list in case anyone else has more insight than I.
A minor point: you may want to avoid the word “trace” in this context since trace has another meaning in MacPorts [1,2,3].
Quite a bit of information on the registry can be found in the video Introduction to MacPorts Base at around the 55 minute mark [4].
Just to give you a start, let us look at the code that writes the dependencies the the registry during the install phase [5].
We see that the values of `$dep_portnames` are written into the database.
Elsewhere in the code, we see that `$dep_portnames` consists *only* of library and run dependencies (not build dependencies) [6].
Later, in the reclaim portion of the MacPorts API [7], the dependencies read from the database do not include build dependencies, which leads to the questionable behavior of `port reclaim` [8,9].
More information on the MacPorts API can be found at the 14 minute mark of the video Introduction to MacPorts Base [10].
About a year ago, the C++ stdlib started being recorded in the registry [11].
This might be a model of how to proceed.
I am not sure I have answered your questions.
If not, please feel free to ask for further clarification.
-Marcus
[1] https://guide.macports.org/#using.port.install
[2] the man page for `port`
[3] https://youtu.be/46qshiDskrM?t=4680
[4] https://youtu.be/46qshiDskrM?t=3330
[5] https://github.com/macports/macports-base/blob/4eb0095fb006ff5fb9d1a6a471c2a022f73a1aa1/src/port1.0/portinstall.tcl#L405
[6] https://github.com/macports/macports-base/blob/4eb0095fb006ff5fb9d1a6a471c2a022f73a1aa1/src/port1.0/portinstall.tcl#L367
[7] https://github.com/macports/macports-base/blob/4eb0095fb006ff5fb9d1a6a471c2a022f73a1aa1/src/macports1.0/reclaim.tcl#L523
[8] https://trac.macports.org/wiki/SummerOfCode#reclaim
[9] https://lists.macports.org/pipermail/macports-users/2019-January/thread.html#46344
[10] https://youtu.be/46qshiDskrM?t=847
[11] https://github.com/macports/macports-base/commit/2564ab3eb1ebe37209073176f7d085ba1b2177df
> On Mar 10, 2019, at 6:30 AM, Arghya Bhattacharya <arghya.b at research.iiit.ac.in> wrote:
>
> Hello Marcus!
>
> Hope you're doing well. :D
>
> I'm planning to write a proposal for the project Auto-Detection of Build Dependencies(+ fixing the behaviour of port reclaim) and have a few doubts regarding the same.
>
> From my discussion with Mojca on the mailing list following is my insight on how to go about this:
>
> -> Update the way port information is stored in the registry to include build dependencies as a separate list.
> -> Use this list to change the behaviour of port reclaim.
>
> I looked up the way MacPorts currently "traces" the installation process but couldn't really get a hang of it. Could you provide an insight into how the trace mode works? That would be helpful in the way I'm going to identify the build dependencies for this project.
>
> Also, some information on how I should go about the port registry and more on updating it would be great!
>
>
> Regards
> Arghya Bhattacharya
More information about the macports-dev
mailing list