blob: 2bf9dcec5cdca4334fc9278029a5d5ec1d6509c3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
This folder contains my patches for various pkgsrc packages.
This README describes how to create and apply them.
= Modifying a package =
cd /usr/pkgsrc/path-to/package
make fetch
cd /usr/pkgsrc/distfiles
tar xf archived-package.tgz
cd extracted-package/
git init
I like tracking my modifications with Git, if only temporarily.
= Generating a patch =
cd /path-to/extracted-package/
git diff ... | conv -i
The resulting patch will be placed in ~/patches.
= Applying a patch =
Be sure to set the LOCALPATCHES variable in mk.conf:
echo LOCALPATCHES = $HOME/patches >> /etc/mk.conf
After that, local patches will be applied automatically, assuming
they are formatted correctly and placed in the correct directory.
= Undoing patches =
In order to undo all patches, you need to extract the original
files from the downloaded archive.
cd /usr/pkgsrc/path-to/package
w=/usr/pkgsrc/distfiles/$(sed -n '/.*(\(.*\)).*/{s//\1/;p;q}' distinfo)
cd $(dirname $w)
tar xf $w
cd -
find . -name '*.orig' | while read f; do
f=${f%.orig}
cp $w/${f#work/} $f
done
It is not reliable to restore the original files using the .orig
files, as multiple patches may have been applied to the same file.
You can use the undopatch script to automate this.
= Rebuilding with new patch =
First, you may want to undo the old patches as described above.
make do-patch
make do-build
make replace
The first step will complain if patches have already been applied
(and not undone), but your new patch should be applied regardless.
|