Difference between revisions of "Patching"
(→Example: removed the example. No need to show two way of doing the same thing.) |
EasterlyIrk (talk | contribs) |
||
Line 3: | Line 3: | ||
==On Windows== | ==On Windows== | ||
− | + | This assumes you have a basic knowledge of [[compiling]] and similar. | |
− | *Download the patch binary zip package from http://gnuwin32.sourceforge.net/packages/patch.htm | + | *Download the patch binary zip package from http://gnuwin32.sourceforge.net/packages/patch.htm, and unpack that into the bin directory of MinGW, so that the patch.exe will be in the same directory as mingw32-make.exe (e.g. c:\mingw\bin). |
− | |||
− | |||
*Find the diff-file you want to patch, and download it on to your computer, preferably in the NetHack sources root directory, <tt>c:\nh343</tt>. | *Find the diff-file you want to patch, and download it on to your computer, preferably in the NetHack sources root directory, <tt>c:\nh343</tt>. | ||
− | Note that linux-style line endings will cause problems, you need to convert those into Windows-style ones! You can do this for example copypasting the contents of that file from a browser window into Notepad, and then saving the notepad file. | + | Note that linux-style line endings will cause problems, you need to convert those into Windows-style ones! You can do this for example copypasting the contents of that file from a browser window into Notepad, and then saving the notepad file. The following code assumes the patch is [[Menucolors]], so to use any other patch just replace <code>nh343-menucolor.diff</code> with the filename of the patch. |
− | |||
− | |||
*Start <tt>cmd.exe</tt> and do the following: | *Start <tt>cmd.exe</tt> and do the following: | ||
Line 18: | Line 14: | ||
path=%path%;c:\mingw\bin | path=%path%;c:\mingw\bin | ||
patch -p1 < nh343-menucolor.diff | patch -p1 < nh343-menucolor.diff | ||
+ | |||
The <tt>1</tt> after the <tt>-p</tt> might need to be changed to <tt>0</tt> or possibly <tt>2</tt> for other patches. | The <tt>1</tt> after the <tt>-p</tt> might need to be changed to <tt>0</tt> or possibly <tt>2</tt> for other patches. | ||
Line 24: | Line 21: | ||
note: Newer version of windows require administrative privileges to run files named patch, which can break GNU patch, see here for a workaround: http://jameswynn.com/2010/03/gnu-patch-in-windows-7-or-vista/ | note: Newer version of windows require administrative privileges to run files named patch, which can break GNU patch, see here for a workaround: http://jameswynn.com/2010/03/gnu-patch-in-windows-7-or-vista/ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Linux, and Unix in general== | ==Linux, and Unix in general== | ||
Line 72: | Line 29: | ||
"-p''num''" is used to strip path prefixes from the patch before trying to apply it. | "-p''num''" is used to strip path prefixes from the patch before trying to apply it. | ||
− | For example, if the patch contains lines on the form | + | For example, if the patch contains lines on the form: |
--- slashem-0.0.7E7F1-orig/dat/Jedi.des 1970-01-01 01:00:00.000000000 +0100 | --- slashem-0.0.7E7F1-orig/dat/Jedi.des 1970-01-01 01:00:00.000000000 +0100 | ||
+++ slashem-0.0.7E7F1/dat/Jedi.des 2005-07-20 14:55:01.434612456 +0200 | +++ slashem-0.0.7E7F1/dat/Jedi.des 2005-07-20 14:55:01.434612456 +0200 | ||
− | you should strip off one level. You should strip off two levels if the patch says | + | you should strip off one level. You should strip off two levels if the patch says: |
--- a/slashem/dat/Jedi.des 1970-01-01 01:00:00.000000000 +0100 | --- a/slashem/dat/Jedi.des 1970-01-01 01:00:00.000000000 +0100 |
Revision as of 20:43, 29 October 2017
Here is a short guide on patching your NetHack sources, assuming you have already managed to compile your copy.
On Windows
This assumes you have a basic knowledge of compiling and similar.
- Download the patch binary zip package from http://gnuwin32.sourceforge.net/packages/patch.htm, and unpack that into the bin directory of MinGW, so that the patch.exe will be in the same directory as mingw32-make.exe (e.g. c:\mingw\bin).
- Find the diff-file you want to patch, and download it on to your computer, preferably in the NetHack sources root directory, c:\nh343.
Note that linux-style line endings will cause problems, you need to convert those into Windows-style ones! You can do this for example copypasting the contents of that file from a browser window into Notepad, and then saving the notepad file. The following code assumes the patch is Menucolors, so to use any other patch just replace nh343-menucolor.diff
with the filename of the patch.
- Start cmd.exe and do the following:
cd c:\nh343 path=%path%;c:\mingw\bin patch -p1 < nh343-menucolor.diff
The 1 after the -p might need to be changed to 0 or possibly 2 for other patches.
note: On MS-Windows, the patchfile must be a text file, i.e. CR-LF must be used as line endings. A file with LF may give the error: "Assertion failed, hunk, file patch.c, line 343," unless the option '--binary' is given.
note: Newer version of windows require administrative privileges to run files named patch, which can break GNU patch, see here for a workaround: http://jameswynn.com/2010/03/gnu-patch-in-windows-7-or-vista/
Linux, and Unix in general
The typical way to patch is to stand in the root directory of the nethack source tree, apply the patch:
patch -pnum < my.patch
and then examine the warning or error messages, if any.
"-pnum" is used to strip path prefixes from the patch before trying to apply it. For example, if the patch contains lines on the form:
--- slashem-0.0.7E7F1-orig/dat/Jedi.des 1970-01-01 01:00:00.000000000 +0100 +++ slashem-0.0.7E7F1/dat/Jedi.des 2005-07-20 14:55:01.434612456 +0200
you should strip off one level. You should strip off two levels if the patch says:
--- a/slashem/dat/Jedi.des 1970-01-01 01:00:00.000000000 +0100 +++ b/slashem/dat/Jedi.des 2005-07-20 14:55:01.434612456 +0200