プロフィール

kosaki

Author:kosaki
連絡先はコチラ

ブログ検索
最近の記事
最近のコメント
最近のトラックバック
リンク
カテゴリー
月別アーカイブ
RSSフィード
FC2ブログランキング

スポンサーサイト このエントリーをはてなブックマークに追加

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)

commit 直前にChangeLogの日付を変更する このエントリーをはてなブックマークに追加

今日、なるせさんが




とかつぶやいていて、意味がわからないので突っ込んだところ。svn ポッキー問題と呼ばれる大きな問題が隠れている事がわかった(詳細はコチラ http://togetter.com/li/706683) ので、コミット時に ChangeLogの日付を自動更新する git hookを書いた。これで自動的にChangeLogの時刻がコミット時時刻に一致する。

ソースはこちら。これを .git/hooks/pre-commit というファイル名で保存し、実行可能権限をつける



関連記事
スポンサーサイト
ruby | 【2014-08-15(Fri) 00:53:49】 | Trackback:(0) | Comments:(2)

[Rubyコミッタ向け] Rubyリポジトリへのコミット時にコミットメッセージ自動生成 このエントリーをはてなブックマークに追加

いまさら確認するまでもないが、Rubyコミッタは全員 git svn を使っていて、コミット時にはなるせさんの
コミットメッセージ自動整形スクリプト(http://d.hatena.ne.jp/nurse/20100413)を使ってる。
異論はみとめない(キリッ

さて、これはこれで大変いいものであるのだが、脊髄反射的に git commit -av <リターン> とか打ってることがあって、他のプロジェクトと行ったり来たりしていると今ひとつなところがあった。
そういうわけで、上記URLのスクリプトをgit hook に移植して、git commit -a したら自動的にChangeLogからコミットメッセージを生成するようにしてみた

以下のスクリプトを、/.git/hooks/prepare-commit-msg というファイル名でセーブして、実行権限をつけるとよい。




関連記事
ruby | 【2014-08-14(Thu) 22:59:06】 | Trackback:(0) | Comments:(2)

global --single-update このエントリーをはてなブックマークに追加

今日知ったこと。
gtagsのupdate は global --single-update で1ファイルだけのアップデートが出来る。
よって、



みたいなスクリプトで、gitのコミットIDから変更ファイルだけアップデートが出来る。わたしはこれをcherry-pickの処理に仕込んだ

関連記事
linux | 【2014-08-14(Thu) 15:08:01】 | Trackback:(0) | Comments:(0)

おまえら rpmdev-setuptree を使えという話 このエントリーをはてなブックマークに追加

いままで、rpmbuildするときに

mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}


して、

echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros



とかやってたんだけど、それはもう古いらしい。

% yum install rpmdevtools
% rpmdev-setuptree



すると、上記の両方をやってくれるのに加えて .rpmmacrosに並列処理設定を追加してくれる。
こんな感じ

%_topdir %(echo $HOME)/rpmbuild

%_smp_mflags %( \
[ -z "$RPM_BUILD_NCPUS" ] \\\
&& RPM_BUILD_NCPUS="`/usr/bin/nproc 2>/dev/null || \\\
/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
if [ "$RPM_BUILD_NCPUS" -gt 16 ]; then \\\
echo "-j16"; \\\
elif [ "$RPM_BUILD_NCPUS" -gt 3 ]; then \\\
echo "-j$RPM_BUILD_NCPUS"; \\\
else \\\
echo "-j3"; \\\
fi )

%__arch_install_post \
[ "%{buildarch}" = "noarch" ] || QA_CHECK_RPATHS=1 ; \
case "${QA_CHECK_RPATHS:-}" in [1yY]*) /usr/lib/rpm/check-rpaths ;; esac \
/usr/lib/rpm/check-buildroot



rpmbuildがかなり高速化されるし、間違いも起きにくいので、手で .rpmmacrosを書く必然性は
まったくなくなったと言っていい。

知らんかったなあ

関連記事
linux | 【2014-08-10(Sun) 21:01:45】 | Trackback:(0) | Comments:(0)

RHEL7でカーテン無効化 このエントリーをはてなブックマークに追加

RHEL7でしばらくキーを操作しないでおくと、以下の様なカーテンが降りてくるけど、非常に鬱陶しい。

gnome3-curtain

今回はこれのdisableの仕方。

% sudo yum install -y gnome-shell-browser-plugin



で、firefoxにgnome-shell extensionを入れる。これで、ブラウザで、https://extensions.gnome.org を
閲覧すると、インストールしまっかと聞いてくるようになる。

https://extensions.gnome.org/extension/730/curtains-up/

に curtainを disable するプラグインがあるので、これをインストール。

なお、パスワード入力はGnome標準の機能でdisableできるが、これがとんでもなく分かりにくいので
ついでに紹介。

メニューバー右端の、自分の名前をクリック、Settingsを選択
setting1.png

Privacyを選択
setting2.png

Screen LockをOFFに変更
setting3.png

昔ながらのようにスクリーンセーバーというアイコンがコントロールパネルにあるかと思い込んでるとハマる。


関連記事
linux | 【2014-08-10(Sun) 16:19:04】 | Trackback:(0) | Comments:(0)

rpm specファイルまわりで、またしてもハマってた話 このエントリーをはてなブックマークに追加

もう何百回もやってるはずなのに定期的にハマるのでメモ

kernelのspec ファイル書き換えてオレオレカーネルを作るには以下の三箇所を変更する

まず、rpm名を書き換えるために6行目ぐらいのbuildidのところ、コメントアウトされてるのを元に戻す

変更元)

# % define buildid .local



変更後)

%define buildid .mytest



ここで罠なのは % と define の後に、スペースを入れるのは許されていないのだが、なぜか
変更元はスペースが入っているのでまんまと騙されることである。
あと、名前は "." で初めておかないと、いろいろと後悔する。

kernel-3.10.0-1.el7.mytest.src.rpm

みたいなファイル名になるんだが、ここで "." がないと、前の el7 とくっついてしまう。

次に

# empty final patch to facilitate testing of kernel patches
Patch999999: linux-kernel-test.patch



となっているところに、適用するパッチを足す

変更後)

# empty final patch to facilitate testing of kernel patches
Patch999999: linux-kernel-test.patch

Patch10001: hoge1.patch



とかみたいにする。番号は適当でいいが、ユニークな番号にすること。
なお、ここでファイル名を書くときに余分なスペースは絶対に入れてはいけない。

パッチ適用をするApplyPatchという関数の中で


ApplyPatch()
{
(略)
if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME%%%%%{?variant}}.spec ; then



というクソコードが有るため、スペースが1つでも余分にあるとパッチ適用に失敗する。
わたしは、dired から矩形選択でファイル名持ってきて、これでハマったよ。

さて、rpm specfileはクソフォーマットなので、これで話が終わりじゃなくて、別の場所にもう一度
パッチ一覧を列挙しないといけない。

変更元)

ApplyOptionalPatch linux-kernel-test.patch



変更先)

ApplyOptionalPatch linux-kernel-test.patch

ApplyPatch hoge1.patch



のように、ApplyOptionalPatchがあるあたりに、ApplyPatchを書いていく。ここで間違ってもApplyOptionalPatchを
使ってはいけない。
ApplyOptionalPatchはパッチがなきゃあスキップする関数なので、間違った時に気づくのが遅れてしまう。


で、こんなん憶えていられるはずなのでスクリプト書いた

rpmpatch kernel.spec --localname .mytest ../SOURCES/00*.patch



のように名前をファイル名を引数に取ってパッチしてくれる。

以下に置いとく。
https://gist.github.com/kosaki/de41d67a899b0d839599



関連記事
linux | 【2014-08-10(Sun) 12:17:49】 | Trackback:(0) | Comments:(0)
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。