Hi guys,

I have just been fixing a bug in the code for KPat, the KDE 4 Patience 
(Solitaire) game, using MacPorts facilities to submit, compile, build and 
install patches, including source code for fixing and testing bugs. I have 
followed the guidance in Chapter 4 of the MacPorts Guide 
https://guide.macports.org/chunked/development.html and especially sections 4.5 
Patch Files and 4.6 Local Portfile Repositories.

This has worked very well and I have had a patch committed upstream to the kpat 
master, but I am sure my workflow has been sub-optimal and I would like some 
suggestions for improving it before continuing on and fixing other bugs. The 
overall approach is workable because, although KDE Games is based on KDE 4 in 
MacPorts and the central KDE repositories are now about 5 years further on, the 
code I am interested in fixing is “game engine” code and has changed very 
little over that time period.

Following the Guide, I have set up the following “local port” data structure:

/kdedev/ports/
    PortIndex
    kde/
        kpat/
            portfile (editable)
            files/
                source code a.cpp (editable)
                source code a.cpp.orig (read-only)
                patch file patch-aN.cpp
                patch file patch-bM.cpp
                source code sub-directory patsolve/ (mirroring the source code 
structure)
                    source code b.cpp (editable, known as patsolve/b.cpp in 
patch files)
                    source code b.cpp.orig (read-only, known as 
patsolve/b.cpp.orig in patch files)

N and M are sequence numbers, which I bump every time I edit a.cpp or b.cpp and 
create a new version of the patch.

In MacPorts KPat is at version kpat @4.14.3_3. I began by bumping the revision 
line in my local portfile from 3 to 4. Then I uninstalled kpat and re-installed 
it using port -sk to get and keep the source. Then I copied the source code 
files kpat/a.cpp and patsolve/b.cpp, twice each, to create local files a.cpp, 
a.cpp.orig, patsolve/b.cpp and patsolve/b.cpp.orig.

My workflow was basically edit, patch, build, test, as follows:

Edit a source file
Generate a new patch file with a new number N or M
Edit kpat/portfile to record the new N or M in the patch-file name
Run portindex in directory /kdedev/ports
Change to /kdedev/ports/kde/kpat
Run sudo port uninstall kpat
Run sudo -sk install kpat
If any compile or link errors, go back to the edit step
Test kpat, either by running it from the dock or from the command line

To run from the command line and get stderr output, I would do cd . in 
directory /Applications/MacPorts/KDE4/kpat.app/Contents/MacOS to make the kpat 
executable visible in the Term window I dedicated to testing.

I know MacPorts developers have smarter ways of doing all this, so I hope 
someone can help.

Cheers,
Ian W.

P.S. My patches should be of value in fixing bugs in the MacPorts’ KDE 4 
version of KPat, which is no longer supported upstream.

Reply via email to