[Momonga-devel.ja:00090] 不要なパッチ類の掃除 (Re: PostgreSQL7.2.Xのエンコーディング関連パッチについて)
- From: Kazuhiko <kazuhiko@xxxxxxxxxx>
- Date: Sat, 13 Jul 2002 20:57:37 +0900
かずひこ@ 重箱の隅つつき担当 です。
At Sat, 13 Jul 2002 16:14:30 +0900,
OZAWA -Crouton- Sakuro wrote:
> これって、7.0.xや7.1.xというバージョンがファイル名に含まれるパッチファイル
> のことですか? だとすれば、現在のバージョンにもなお有効で、実際にビルドに使
> 用されているからこそ残っているのではないかしらん?
> # 不要になったパッチをremoveしないでほっとく人もいるかもしれませんが……
というのを見つけて消して cvs rm して cvs ci する (ためのスクリプトを出力
する) スクリプトを書いてみました。もともと cvs に入れていなくて手元にの
みあるファイルはあえて対象にしていません。やっていることは、できた srpm
に入っているファイルリストと、そのパッケージのディレクトリの CVS/Entries
のファイルリストの差分をとり、そこからさらに TO.Zoo や Antenna などの必
要なファイルを引いて、残りを出力しているだけです (必要なファイルリストが
いまいち全網羅しているか自信なし)。
末尾のスクリプトを listunused.rb とでもしてセーブして、
「まず pkgs のディレクトリに移動して」から、
ruby listunused.rb 「チェックしたいものの srpm (複数可)」
としたらできます。
例:
$ cd pkgs
$ ruby ~/bin/listunused.rb ~/PKGS/SRPMS/[B-D]*rpm
rm BZFlag/bzflag.cpml.patch
cvs rm BZFlag/bzflag.cpml.patch
cvs ci -m 'delete unused source(s)' BZFlag/bzflag.cpml.patch
rm Canna/Canna35b2-egcs.patch
cvs rm Canna/Canna35b2-egcs.patch
cvs ci -m 'delete unused source(s)' Canna/Canna35b2-egcs.patch
という感じです。この出力を実行すれば O.K. というわけです。
もちろん、各メンテナの意図もあるでしょうから、むやみやた
らに全パッケージについて一気にお掃除しちゃうようなことはしないほうがいい
のは言うまでもありませんし、スクリプトにバグがあるかもしれません。
特に、
%ifarch alpha
Source10: foo-alpha.patch
%endif
みたいなことをやっていたら (やるべきではないことだと思いますが)、環境に
よっては必要なはずのファイルを誤って消すこともありえます。
くれぐれもご利用の際は慎重にお願いします。
# とりあえず eb でやってみた。
--
かずひこ@...
ふぇみにん日記 http://www.fdiary.net/~kazuhiko/diary/
GK Kyoto Inc. http://www.gk-kyoto.com/
Momonga Linux http://www.momonga-linux.org/
電子辞書オープンラボ http://openlab.jp/edict/
電子書体オープンラボ http://openlab.jp/efont/
#!/usr/bin/env ruby
$CONF_FILES = ["./.OmoiKondara","~/.OmoiKondara","/etc/OmoiKondara.conf"]
$KEEP_FILES = ["TO.Nonfree","TO.Zoo","SRPM.ONLY","Antenna","SRPM.ONLY",
"REMOVE.PLEASE","SU.PLEASE","DISPLAY.PLEASE","YUKARI","NO.CCACHE",
"OBSOLETE","JAVA","IPv6"]
# and NOT.*, REMOVEME.*
def source_list (pkg)
return `rpm2cpio #{pkg} | cpio --list 2> /dev/null`.split(/\n/)
end
def rpm_name (pkg)
pkg =~ /^.+\/(.+)-([\w\.\+]+)-([\w\.\+]+)\.(.+)\.rpm$/
return $1
end
# main
$pkgs_list = ARGV
$pkgs_list.each do |pkg|
name = rpm_name (pkg)
entries = `cat ./#{name}/CVS/Entries | grep -v '^D' | sed -e 's,^/,,' -e 's,/.*,,' | grep -v '^NOT\.' | grep -v '^REMOVEME' `.split(/\n/)
unused = (entries - source_list (pkg) - $KEEP_FILES)
if (unused.length != 0)
files = unused.join(" #{name}/")
print "rm #{name}/#{files}\n"
print "cvs rm #{name}/#{files}\n"
print "cvs ci -m 'delete unused source(s)' #{name}/#{files}\n"
end
end