aboutsummaryrefslogtreecommitdiff
path: root/README
blob: f8097a8e1adc8b24b51e9bdccf2cb7f9d96ea5dd (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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
This folder contains my patches for various pkgsrc packages as well
as the NetBDS distribution. This README describes how to create
and apply them.

= pkgsrc patches =

== Modifying a package ==

	cd /usr/pkgsrc/path-to/package
	make fetch
	cd /usr/pkgsrc/distfiles
	tar xf archived-package.tgz
	cd extracted-package/

At this point, you can either decide to track your changes by
initializing a Git repository

	git init
	git commit .

or by using pkgvi and pkgdiff:

	pkgvi file.c
	pkgdiff file.c > ~/patches/path-to/package/patch-name

== Generating a patch from Git ==

	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 ==

	undopatch
	make do-patch
	make do-build
	make do-install
	# pkg_delete PACKAGE
	make reinstall # or make replace

---

= NetBSD patches =

The usr/ directory contains patches for the NetBSD distribution.

== Applying a patch ==

	cd /usr/*src/...
	pkgpatch <~/patches/usr/*src/.../patch-name