[Dev] RE: embarrassing patch question

Ed Vance dev@trilug.org
Thu, 28 Feb 2002 12:34:36 -0800


On Thu, Feb 28, 2002 at 11:46 AM, John F Davis wrote:
> Put another way, in your step 2.2, what is the implied 
> directory name used for the patch?  What is the p1 or 
> p0 bit?  Is that supposed to somehow strip the leading 
> directory name or something? 

Yes, the digit after the "-p" tells patch how many leading 
directory names to ignore. These are the directory names 
that are found inside the patch.file itself. Most kernel 
patches are designed to be used with "-p1" because it 
allows the author to have a completely bogus top level 
directory that labels what version is to be patched.

For example, the top three lines of one of my patches:

diff -urN -X dontdiff.txt linux-2.4.18-rc1/drivers/pci/pci.ids
rc1-ml/drivers/pci/pci.ids
--- linux-2.4.18-rc1/drivers/pci/pci.ids	Fri Feb 15 14:24:19 2002
+++ rc1-ml/drivers/pci/pci.ids	Fri Feb 15 14:49:07 2002

I would expect the user of the patch to execute patch in his top 
level source tree directory, perhaps named /usr/src/my-linux, with 
the -p1 specified so patch ignores the "linux-2.4.18-rc1" directory 
specified on the "---" line, and the "rc1-ml" directory specified on 
the "+++" line of my patch.file. Thus patch is looking for directory 
drivers/pci ... which it will find in its current directory, 
/usr/src/my-linux. The directory where patch will look for the file 
to be patched, pci.ids, is /usr/src/my-linux/drivers/pci. My leading 
directory name was chosen to inform the user that this patch was 
created from the version 2.4.18-rc1 kernel files.

>                               When you issue that
> command, are you in the parent directory which owns
> the kernel directory to be patched or are you in the 
> directory to be patched?

Is it clearer now? Patch ignores the leading directories that you 
tell it to ignore, and looks for the rest of the specified path in 
it's current directory.

Best regards,
---------------------------------------------------------------- 
Ed Vance              edv@macrolink.com
Macrolink, Inc.       1500 N. Kellogg Dr  Anaheim, CA  92807
----------------------------------------------------------------