Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

2008-03-09

project.vim の修正

vim script の project.vim を使っているのだけど、
  • project.vim のプロジェクトを定義しているファイルパスがデフォルトで ~/.vimprojects
    => それぞれのプロジェクトごとに指定しておきたい
  • プロジェクトのパスを絶対パスで定義する必要がある。
    =>絶対パスを調べるのが面倒
    =>プロジェクトを移すと設定しなおさないといけない
というのが不満だった。
なので
  • デフォルトはカレントディレクトリの .vimprojects を見る
  • プロジェクトのパス設定をカレントディレクトリからの相対パスで出きるようにする。
という修正を行った。
で、その project-1.4.1.tar.gz 用パッチ。

--- org/project.vim 2008-03-09 14:08:04.000000000 +0900
+++ new/project.vim 2008-03-09 14:12:47.000000000 +0900
@@ -21,7 +21,8 @@
let filename=bufname(g:proj_running)
else
if strlen(a:filename) == 0
- let filename ='~/.vimprojects' " Default project filename
+ "let filename ='~/.vimprojects' " Default project filename
+ let filename ='./.vimprojects' " Default project filename
else
let filename = a:filename
endif
@@ -971,12 +972,19 @@
let home=substitute(a:info, '.\{-}"\(.\{-}\)".*', '\1', '')
if strlen(home) != strlen(a:info) | let home=escape(home, ' ') | endif
endif
+ let parent_home=a:parent_home
+ " If project home path isn't absolute path, set current direcotry.
+ if parent_home == ''
+ if !s:IsAbsolutePath(home)
+ let parent_home = getcwd()
+ endif
+ endif
if strlen(home) == strlen(a:info)
- let home=a:parent_home
+ let home=parent_home
elseif home=='.'
- let home=a:parent_home
+ let home=parent_home
elseif !s:IsAbsolutePath(home)
- let home=a:parent_home.'/'.home
+ let home=parent_home.'/'.home
endif
return home
endfunction

project.vim のあるディレクトリで
patch -p1 < project.patch
で適用してね。

上を適用することで、
Project のパスを相対パスで指定できる。
元の様に絶対パスでも指定出来る。

後は、taglist.vim と連携できるとうれしいのだけども。

追記(2008-03-11 02:50):

考えなしに拡張すると、痛い目見た。
サブディレクトリでカレントディレクトリ変更すると、
後のファイルオープン操作がおかしくなる。
それを修正しました。
.vimprojects ファイルからの相対パスが使えるようになります。


diff -ur org/project.vim new/project.vim
--- org/project.vim 2006-10-13 22:47:08.000000000 +0900
+++ new/project.vim 2008-03-11 02:36:15.000000000 +0900
@@ -21,7 +21,8 @@
let filename=bufname(g:proj_running)
else
if strlen(a:filename) == 0
- let filename ='~/.vimprojects' " Default project filename
+ "let filename ='~/.vimprojects' " Default project filename
+ let filename ='./.vimprojects' " Default project filename
else
let filename = a:filename
endif
@@ -971,12 +972,18 @@
let home=substitute(a:info, '.\{-}"\(.\{-}\)".*', '\1', '')
if strlen(home) != strlen(a:info) | let home=escape(home, ' ') | endif
endif
+ let parent_home=a:parent_home
+ if parent_home == ''
+ if !s:IsAbsolutePath(home)
+ let parent_home = fnamemodify(bufname("%"),":p:h")
+ endif
+ endif
if strlen(home) == strlen(a:info)
- let home=a:parent_home
+ let home=parent_home
elseif home=='.'
- let home=a:parent_home
+ let home=parent_home
elseif !s:IsAbsolutePath(home)
- let home=a:parent_home.'/'.home
+ let home=parent_home.'/'.home
endif
return home
endfunction

2008-03-01

log4cxx のコンパイル

Fedora8 でlog4cxx のコンパイルをしたら、
以下の様なエラーがでてコンパイルできませんでした。


../include/log4cxx/xml/domconfigurator.h:211: error: extra qualification 'log4cxx::xml::DOMConfigurator::' on member 'subst'

とらえずコンパイルを通すには、
include/log4cxx/xml/domconfigurator.h:211 の
protected:
String DOMConfigurator::subst(const String& value);

となっている部分を
protected:
String subst(const String& value);
とすればよいようです。

クラスの宣言内で、
スコープの指定が不要になっているみたい。

GCC 4 からなのかな?

2007-03-20

Vine 4.0 && NIS Client

Vine Linux 4.1 でNIS クライアントの設定を試みました。
だけど、今までのように
/etc/yp.conf
に書いただけだと、起動時に
ypdomainname が設定されないようです。
どうやら、
/etc/sysconfig/network

NISDOMAIN=hogehgoe
という記述がいりそう。
あとは、
# chkconfig ypbind on
で自動起動するようにしておけば使えるようになる。

2007-02-12

Import EPS file in inkscape on Fedora Core 6

Fedora core 6 の inkscape では
EPSのインポートの際に文字の囲まれた部分が塗りつぶされてしまう。
内部的に pstoedit で plot-svg という形式に直してるらしいのだけどそれがダメなので、
sk という Sketch 形式を経由してインポートする。
そのためには、EPS のインポート用の拡張を以下のように書き直す。

+++ /usr/share/inkscape/extensions/eps_input.inx 2007-02-12 20:50:37.000000000 +0900
@@ -2,15 +2,16 @@
<_name>EPS Input</_name>
<id>org.inkscape.input.eps</id>
<dependency type="executable">pstoedit</dependency>
+ <dependency type="extension">org.inkscape.input.sk</dependency>
<input>
<extension>.eps</extension>
<mimetype>image/x-encapsulated-postscript</mimetype>
<_filetypename>Encapsulated Postscript (*.eps)</_filetypename>
<_filetypetooltip>Encapsulated Postscript</_filetypetooltip>
- <output_extension>org.inkscape.output.svg</output_extension>
+ <output_extension>org.inkscape.output.sk</output_extension>
</input>
<script>
- <command reldir="path">pstoedit -ndt -f plot-svg</command>
+ <command reldir="path">pstoedit -f sk </command>
+ <helper_extension>org.inkscape.input.sk</helper_extension>
</script>
</inkscape-extension>

元のファイルを残してなかったので、元のファイルの記述が違うかもしれません。
なので手でやった方が確実かも。
一段経由するので遅くなるけどこれで大丈夫になりました。

2007-02-06

Fedora core 6 && Adobe reader 7.0.8

Fedora core 6 に Adobe reader 7.0.8をいれたけど、
syntax error
が一杯でて起動できない。
どうも、起動スクリプトがダメなようです。
Ubuntu などでもどうようなことが起きてるらしい。
http://ubuntuforums.org/showthread.php?t=233514
解決策としては、
echo $mfile| sed 's/libgtk-x11-\([0-9]*\).0.so.0.\([0-9]\)00.\([0-9]*\)\|\(.*\)/\1\2\3/g'
と言う部分を
echo $mfile| sed 's/libgtk-x11-\([0-9]*\).0.so.0.\([0-9]*\)00.\([0-9]*\)\|\(.*\)/\1\2\3/g'
と言う風に書き換えるということらしい。

2006-09-25

GTK+2 マニュアル

古いor少ない
と思っていたのだけど、英語だったらいっぱいあるのね。
GTK API Manualとか。
これで作業がはかどればよいが。

2006-08-05

Makefile 覚書

今までサブディレクトリがある場合の
依存関係の書き方がよくわからなかったんで、
トップディレクトリのMakefile に汚らしく書いてました。
しかし、親Makefileに echo で文字列渡せそうなので
これを使って各ディレクトリのMakefile は
自分の属するディレクトリだけ面倒をちゃんと見れば良い
ということができそう。

例えば親元 の Makefile で
DEP=a-file
DEP_B:=$(shell $(MAKE) -C b -s dep-files)
DEP_B:=$(DEP_B:%=b/%)
dep-files :
@echo $(DEP) $(DEP_B)
として、サブディレクトリ b の Makefile に
DEP=b-file
dep-files :
@echo $(DEP)
としておけば、必要なファイルを
各ディレクトリのMakefile だけが知っていれば
良いようになるのだけどどうでしょう。
あとで、まとまったモノを
tar -czf ALL.tar.gz $(DEP) $(DEP_B)
とすればよい。

2006-08-02

GNU Arch

GNU Arch を使っていて変なエラーメッセージが出て困ったので
その解決メモ

そのエラーメッセージ
$ tla commit
arch_commit: unable to acquire revision lock (could not rename file.)
tree:.....
revision:......

..... は適当なリビジョンが入ります。

どうも、アーカイブの最新のpatch に
++revision-lock/+contents
が無いのが原因みたいです。
具体的には
hogehoge--mainline--0.1--patch-18
が最新であったら、
そのアーカイブで

$mkdir -p arch_archive/hogehoge--mainline--0.1/patch-18/++revisoin-lock/+contents

(上のは実際は一行。arch_archive はアーカイブのトップのつもり)
を実行することでディレクトリを作ってやり、
$tla commit
で正常に commit されました。

2006-05-24

QEMUのインストール

Linux World(2006/07)の記事につられて
インストールをしてみる。
インストール環境は
Fedora Core 5.
http://www.qemu.org/ からファイルをダウンロード
qemu-0.8.1.tar.gz
kqemu-1.3.0pre7.tar.gz
のふたつ。
後者はQEMUの高速化の為。
また、後者はカーネルに組み入れるため、
カーネルのソースがいる。
(正確にはヘッダーファイルだけみたい)
Fedora Core5 では現時点
kernel-devel-2.6.16-1.2122_FC5
というパッケージネームでした。
qemu をコンパイルしようとした所
gcc 3.x が必要だそうです。
Fedora core5 は gcc4.x
たぶん 3.xも入るのですが
面倒なのでやっぱバイナリをダウンロード
qemu-0.8.1-i386.tar.gz
こいつを / で解凍する
# cd / && tar xzpf qemu-0.8.1-i386.tar.gz
次にkqemu をコンパイルする
$ make -C /usr/src/kernels/2.6.16-1.2122_FC5-i686 SUBDIRS=`pwd` modules V=1
でまずモジュールをつくって
次にインストールをする
# make -C /usr/src/kernels/2.6.16-1.2122_FC5-i686 SUBDIRS=`pwd` modules_install V=1
V=1とか正直意味分からん。
# depmod -a
次にkqemu用のデバイスファイルを作る
# mknod /dev/kqemu c 250 0
パーミッションの変更
# chmod 666 /dev/kqemu
でモジュールのカーネルへの組み込み
# modprob kqemu
で確認
# lsmod |grep kqemu
表示されれば大丈夫だ。