猿丸です。
お疲れさまです。

Kazumaro Aoki さんは書きました:
> From: Yoshihiko Sarumaru 
> <[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]>
> Subject: [FreeBSD-users-jp 91400] Re: csup と独自パッチ 
> Date: Tue, 12 Feb 2008 00:01:18 +0900
> 
>> 個人的にはパッチが出来ているのだから、send-pr して次のリリースに
>> 取り込んでもらうのが世のため人のため、そして自分のためだと思います。
> 
> 自分で作ったものでもないし、中身を理解している訳でもないのですが、そう
> いうのでもsend-prっていうのはアリな文化なのでしょうか?
> send-prは経験がないので教えて下さい。

誰もやってないようであれば、動作を確認できているならよいのでは
ないでしょうか。Description あたりに、This patch was obtained from
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/90628
とでも書いておけば。この辺のドライバの面倒をよくみてくれている
Warner (imp@) なら日本語読めますし :)

> Classはchange-requestか、updateのどちらがふさわしいのかアドバイスはある
> でしょうか。

http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/usb/uftdi.c
をみると、去年は 3 件の PR が反映されていますが、change-request
だったり sw-bug だったり、update だったり、人によってばらばらですね。
どっちでもよいと思いますが、私なら change-request にするかなと思います。

その他迷ったら、
http://www.freebsd.org/cgi/query-pr.cgi?pr=113384
とか
http://www.freebsd.org/cgi/query-pr.cgi?pr=110992
とかを参考にして似たように書けばよいと思います。


>> 諸々の事情でローカルパッチを抱えないといけない場合はありますが、
>> お手軽なのは /etc/make.conf に
>> SUP_UPDATE=yes
>> CVS_UPDATE=yes
>> CVS=/root/localpatch.sh
>> とでも書いておいて、/root/localpatch.sh には
>> #!/bin/sh
>> patch_files="patch1 patch2"
>> for file in $patch_files
>> do
>>     patch -quiet < /root/$file
>>     [ $? -ne 0 ] && exit $?
>> done
>> とでも書いて chmod +x しておけばいいんじゃないでしょうか。全然
>> 試してませんが…。パッチが新規ファイルの作成を含んでいる場合は
>> これではうまくうかないので、適宜 rm とか増やしてください。
>> (詳細は /usr/src/Makefile.inc1 の update: の部分を参照してください)
> 
> 上記make.confを書いたらcsupを実行したら実行されるということでしょうか?
> csupの仕組みを全然理解していないので、makeと何が関係があるのか不思議に
> 思えてしまいます。

csup を動かしたらというのとはちょっと違って、/etc/make.conf に
SUP_UPDATE=yes と書いた上で /usr/src で make update とすると、
csup が自動的に動くようになります。
つまり、
# make -C /usr/src update buildworld buildkernel installkernel installworld
と実行すれば、make を起動するだけでソースの更新から全ビルドがすべて一度に
行われます(途中でエラーが起きたらそこで止まります)。
別に一度にやる必要はありませんが…。

それに加えて、
>> CVS_UPDATE=yes
>> CVS=/root/localpatch.sh
を書いておけば、make update の実行時に (csup が正常終了したら)、
/root/localpatch.sh も動きます、ということを意図していました。


>> 戸川さんの cvs update を使う方法がたぶん一番確実だし cvs diff して
>> パッチを作ることもできるし、バックアップ作っておかなくてもいつでも
>> 元にもどせるしで一番いい方法なんですが、cvs update って結構遅いのが
>> 難点です。が、私がそれやってたのは何年も前だしディスクの空き容量が
>> 足りなくてネットワーク越しだったので、いまはそんなに遅く感じないかも。
> 
> 何も考えずに/etc/make.confに「CVS_UPDATE=yes」を追加し、/usr/srcでmake
> updateしたら
> cvs update: No CVSROOT specified!  Please use the `-d' option
> cvs [update aborted]: or set the CVSROOT environment variable.
> といわれました。CVSそのものの設定が必要なんですね。そういえば「cvs
> checkout」をせよ、とありましたね。

そうですね。一度 /usr/src をどこかに退避してから、cvs で /usr/src を
checkout してからでないと、通常は cvs update はできませんね。

> ハンドブックに
>   
> http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/anoncvs.html
> というのがあるのは見つけたのですが、注意していろいろ作業しないと、いろ
> いろ破壊的なことがおきそうな感じがするので、時間が十分にとれる次の週末
> に試したいと思います。

このハンドブックの内容は、remote にある anonymous cvs サーバを使う方法ですね。
ディスクの空き容量さえあれば、手元に CVS repository そのものを持ってきておいた
ほうが、時間的にはだいぶ有利です。CVS repository を CVSup なり cvsync なりで
もってきて、その位置を CVSROOT 環境変数で指定するのがお勧めです。

メールによる返信