Help with applying a patch to a port
Ryan Schmidt
ryandesign at macports.org
Wed Mar 21 15:37:28 PDT 2007
On Mar 21, 2007, at 15:07, Kevin Windham wrote:
> I am trying to figure out the easiest way to apply a patch to a
> port and still use the port command to install and uninstall etc.
>
> The port is giflib and the patch file is here.
>
> <http://users.own-hero.net/~decoder/fuzzyocr/giftext-segfault.patch>
>
> Is there a simple way to modify the local portfile to install this
> patch for me.
Hi Kevin. Let's see what we can do here!
First, why do you want to patch? From the name of the patchfile, it
sounds like you are attempting to fix a crashing bug in the software.
So then this is a patch that you would ultimately want to make
available to all MacPorts users, right? This modification won't just
stay local to your machine? You just want to try it out now to make
sure it works?
So then you can just drop the patch into the files directory for the
port and add it to the Portfile.
First, go to the port directory. Type "cd `port dir giflib`" to get
there. If there isn't already a "files" directory next to the
Portfile, make one with "sudo mkdir files". Now you can put the
patchfile into that directory. The naming convention is that the
patchfile's name starts with "patch-" and ends with ".diff" and has
the name of the file being patched in between. So you should name it
"patch-giftext.c.diff". Also, it should be in unified diff format,
not context diff format like you have at the above URL. To generate
unified diffs, use "diff -u <oldfile> <newfile>". Now edit the
portfile. Type "port edit giflib". Add a line that reads "patchfiles
patch-giftext.c.diff".
That should do it. Now you can try installing the port and see if it
works better. Try enabling the debugging and verbose flags with "sudo
port install -dv giflib"; this way you will see the line about
whether the patch succeeded or failed.
If you find that the patch works, and you would like to submit these
changes to the Portfile for all to enjoy, create a ticket in Trac,
attach you patchfile, and also a unified diff of your changes for the
Portfile, and tell us here what the ticket number is, and someone can
commit it. Also, note that giflib has no maintainer; if you would
like to become the maintainer, just say so, or you can also just
change the maintainers line in the Portfile to your email address and
include that in the Portfile diff in the ticket.
More information about the macports-users
mailing list