Thanks very much for your help, Ken.

> On 26 Jul 2020, at 3:31 am, Ken Cunningham <ken.cunningham.web...@gmail.com> 
> wrote:
> 
> Here is my process (courtesy of advice from many others on this list 
> including Chris and Michael and others). And this is not yet ideal, as no 
> doubt it could be further improved. This is for anything beyond trivial 
> one-tweak patches, by the way — I might not do this for a trivial source fix.
> 
> 
> Set up your local ports repository like you have, copy the current portfile 
> directory into it, etc.
> 
> Go to the port’s directory in the new repo, and 
> 
> sudo port -v build
> 
> when it errors, open a new terminal window, navigate to the same directory 
> you’re in now, and then
> 
> cd work
> sudo chmod -R a+rw .

This seems to go to the heart of the matter, so to speak.

> cd into the source directory, whatever it’s called, then set it up as a 
> temporary git repo:
> 
> git init
> git add .
> git commit -m “init” > /dev/null

And I have git to fall back on if there is an editing glitch or if I wish to do 
multiple fixes to my source.

> now you’re ready to do your work.
> 
> edit your source files as needed.
> 
> 
> You now have two terminal windows open. One is the port directory, one is the 
> source directory.
> 
> In the port directory, try your build again:
> 
> sudo port -v build
> 
> if you get errors, in your source directory, edit the files, then rebuild 
> again. Keep going until you get it to build.
> 
> Now you have changes in your new source git tree to save, so save those into 
> a diff file that you can use later:
> 
> git diff —no-prefix > ~/patches-for-my-fixed-port.diff
> 
> then see if your port will destroot, and then install.
> 
> sudo port -v destroot
> 
> sudo port -v -k install
> 
> (note the -k — that keeps it from blowing out your source directory if it 
> succeeds).

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.

I’m looking for something with an effect like “make” or “cmake", which senses 
that something has changed and starts a new build. That’s why I was having to 
keep changing the name of my patch-file before. I then had to edit the portfile 
and re-run portindex.

I also tried “sudo port clean”, but that wiped my source files as well as the 
build-files… :-D

Using “sudo port -k clean” also wipes the source files. Using “rm -rf 
work/build” sent the "build” command back to “Computing dependencies" and 
exiting, but the source files were still down in “work” and included an edit I 
had done before deleting “work/build/“.

Maybe there is some key file in work/build/ that I can delete or edit or 
execute, to trigger a new build with the latest source-code edits.

KPat is based on building with “cmake” to generate a Makefile and then “make” 
to do the build. Back in the day I would run CMake once and then keep running a 
make-test-edit cycle to do KDE development work.

Cheers,
Ian W.

> If all is well, you’re close to done. from your port directory
> 
> sudo port clean
> sudo port uninstall THEPORT
> 
> cd files
> mv  ~/patches-for-my-fixed-port.diff .
> cd ..
> bbedit Portfile
> 
> add your new patch
> 
> patchfiles-append  patches-for-my-fixed-port.diff
> 
> 
> and then try your build — hopefully it goes right through to installing, and 
> all your patches worked.
> 
> You’re done. Open your PR, have a latte, wait for someone to tell you how 
> wonderful you are (yeah, right!).
> 
> Ken

Reply via email to