On Fri 19 Mar 2010 at 14:34:23 PDT Paul Schmehl wrote:
--On Friday, March 19, 2010 17:04:17 -0400 Alejandro Imass <a...@p2ee.org>
wrote:
To the O.P.:
How about submiting the patch to the community so it can be added by the
port maintainer? If it actually fixes a bug in the software you can't be
the only one would benefit from the patch.
That was going to be my next question, but I am currently debugging to
see why this common fix I've used in Linux is not not working on FBSD.
Ports can throw you for a loop if you're used to building from
source. Others have given you good instructions on how to fix the
problem, but here's a brief overview:
1) Go in to the port directory
2) Type make clean to remove any work directories
3) Type make extract - this extracts the tarball into the working
directories that FreeBSD expects to find
4) Type make patch to apply any patches that the port maintainer has included
'make patch' will also do the extract from the distfile, so you don't
need your step 3
5) Enter the directory where the problem source file is - usually
work/portname-version/some subdir
6) Copy it to filename.c.orig
If the port maintainer has already patched filename.c, 'make patch' will
already have created filename.c.orig
7) Edit filename.c to include your changes
8) Diff the two files and put the resulting patch file in
portdir/files (Note: If the file in question is already being patched
by the port, you will need to apply your diff to file as well as the
edits in the existing patch - doing that is not an exercise for the
faint of heart. If that's the case here, respond and folks will help
you sort it out.)
Not true. If the maintainer patched filename.c, 'make patch' will
create filename.c.orig (which is the original author's file) and
filename.c (which is the result of the maintainer's patches.) If you
edit filename.c and then diff it from filename.c.orig, the result is a
patch the includes your changes AND the maintainer's.
9) Edit the patch file (now in portdir/files) so that the first two
lines "point" to the actual location of the file in the working
directories. (For example, if the working directory has a subdir
named "sc", and your file is in there, the first two lines of the
patch would be edited thus:
from filename.c to src/filename.c and from filename.c.orig to
src/filename.c.orig
No need for this if you do the diff from the top level of the working
directory. I.e., if filename.c is in work/foo-x.y/bar/ you should cd to
work/foo-x.y/ and then run
diff -u bar/filename.c.orig bar/filename.c > ../../files/patch-filename.c
10) Return to the portdir and type make clean
11) Type make extract and then make patch - if it works, you should
be able to do the install - if it doesn't work, post the errors here
and we'll figure it out
Again, no need for the separate 'make extract' step.
In fact, I'd go straight to 'make build' or 'make install' here, and
skip the separate 'make patch' too.
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"