Fixing source-code bugs using MacPorts facilities.

Ian Wadham iandw.au at gmail.com
Mon Jul 27 05:30:51 UTC 2020


Hi Ken and Ryan,

Thank you very much for your suggestions. I think I have got all of them working, including cycling repeatedly through editing the MacPorts version of source down in /opt/local/…, then cyling back through editing the state file, re-doing build and re-doing destroot.

There is just one fly in the ointment.

Ken’s final step — sudo port -v -k install — does not work, or maybe works only on the first cycle. Looking in /Applications/MacPorts/KDE4/kpat.app/Contents/MacOS/, the new executable (file kpat) does not get staged in from the …/destroot/… directory structure.

This is the only runtime file that I am actually changing and KDE 4 does not care where its executable files come from.

So I would be happy to test by running the kpat executable that appears in the …/destroot/… structure, unless you guys have a better way.

Cheers,
Ian W.

> On 26 Jul 2020, at 5:37 pm, Ken Cunningham <ken.cunningham.webuse at gmail.com> wrote:
> 
> 
> On 2020-07-25, at 11:26 PM, Ryan Schmidt wrote:
> 
>> 
>> 
>> On Jul 26, 2020, at 01:15, Ian Wadham wrote:
>> 
>>> The above all worked very well, but only once… :-(
>>> 
>>> If I test the app I have installed and find there is still some problem, I need to edit the source and go back to the build step. But “build” just says "--->  Computing dependencies for kpat”  and exits, even if I use “sudo port -f build”. It does not see that the source has changed.
>> 
>> MacPorts keeps track of which phases have been completed. If you successfully build a port, for example, the build phase is marked completed and will not be attempted again until you clean and start over. 
>> 
>> To bypass that behavior, you can edit the state file (a file in the work directory whose name is .macports.${subport}.state) and remove lines from the end of it for completed phases that you want to retry.
>> 
> 
> 
> Indeed as Ryan said.
> 
> I wanted to let you see the basics, without overwhelming you.
> 
> Once you can do that, as Ryan points out, you can delete the destroot and/or build folders, edit  the state file, and have MacPorts redo the steps you want it to do.
> 
> You can also have macports just redo the destrooting without redoing the build, editing the portfile, and passing "-o" to have it leave the build alone -- I do this quite often for complex destrooting scenarios.
> 
> It is incredibly powerful, but it does miss one feature that I would really like -- to be able to do this using a stable git repo on my system as the source folder, rather than a transient one created for each build.
> 
> Ken
> 
> 



More information about the macports-users mailing list