31 lines
1.6 KiB
Markdown
31 lines
1.6 KiB
Markdown
|
How to Merge Patches from NetBSD Trunk
|
||
|
============================================
|
||
|
Using the NetBSD CVS is a pain, so instead, the preferred thing to do is to use
|
||
|
[IIJ's Git mirror](https://github.com/IIJ-NetBSD/netbsd-src). The code here is
|
||
|
in the tree at a few places:`inet` is at `lib/libc/inet`, irs is scattered
|
||
|
across the tree, and `resolv` is at `lib/libc/resolv`.
|
||
|
|
||
|
The preferable way to merge is to take the last commit merged from IIJ's mirror
|
||
|
(can be found in the merging commit in Haiku, if the merger has done their work
|
||
|
properly) and check all commits since then to see if they apply or not (some
|
||
|
apply to documentation we don't have, etc.) Cherry-pick the ones that do, and
|
||
|
download them as git-format-patch patches (by adding `.patch` onto the end of the
|
||
|
commit URL).
|
||
|
|
||
|
To convert the patches to have the correct paths to the resolv/inet/etc. code, use
|
||
|
`sed`:
|
||
|
```
|
||
|
sed s%lib/libc/resolv%src/kits/network/netresolv/resolv%g -i *.patch
|
||
|
```
|
||
|
(You'll need to use similar commands for the `inet` and `irs` code.)
|
||
|
|
||
|
Then apply the patches using `git apply --reject file.patch`. Git will spew a lot of
|
||
|
errors about files in the patch that aren't in the tree, and then it will warn that
|
||
|
some hunks are being rejected. Review the rejected hunks **VERY CAREFULLY**, as
|
||
|
some code in Haiku's NetResolv is not in NetBSD's and vice versa, and so some patches
|
||
|
may not apply cleanly because of that. You might have to resort to merging those
|
||
|
hunks by hand, if they apply at all to Haiku's code.
|
||
|
|
||
|
Commit the changes all at once, but list all the commits merged from NetBSD
|
||
|
in the commit message (see previous merges for the style to follow).
|