m-tsudo / pt3

PT3のLinuxドライバ
GNU General Public License v3.0
114 stars 27 forks source link

DKMS 処理 + デバイス名変更 #5

Closed knight-rider closed 11 years ago

m-tsudo commented 11 years ago

デバイス名の変更はDKMSと関係ありますか? 変更するとrecpt1等に影響するので(自力で解決できる人たちだけではないので) できるだけ変えたくないです。

あと、Debian Wheezyの環境でmake version.hがこけるみたい。 シェルの違いでしょうか。

以下エラーメッセージ . ./dkms.conf ; \ GREV=git rev-list HEAD | wc -l 2> /dev/null; \ if [ $GREV != 0 ] ; then \ printf "#define DRV_VERSION \"${PACKAGE_VERSION}rev$GREV\"\n#define DRV_RELDATE \"git show --date=short --format=%ad | sed -n '1p' 2> /dev/null\"\n#define DRV_NAME \"${BUILT_MODULE_NAME[0]}\"\n" > version.h; \ else \ printf "#define DRV_VERSION \"${PACKAGE_VERSION}\"\n#define DRV_RELDATE \"$PACKAGE_RELDATE\"\n#define DRV_NAME \"${BUILT_MODULE_NAME[0]}\"\n" > version.h; \ fi /bin/sh: 5: ./dkms.conf: BUILT_MODULE_NAME[0]=pt3_drv: not found /bin/sh: 6: ./dkms.conf: DEST_MODULE_LOCATION[0]=/kernel/drivers/video/: not found /bin/sh: 4: Bad substitution

m-tsudo commented 11 years ago

version.hがこける原因は DebianやUbuntuで使われているdashが配列に対応してないからみたい 回避策さがしてますがどうしよう

lurdan commented 11 years ago

bashism の問題は dkms 2.1.0.1-4 で修正されているようです。wheezy であれば 2.2.0.3-1.2 が入っているはずですが…… cf. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560267

m-tsudo commented 11 years ago

dkmsの問題ではなくて、単純にmakeした場合です。 Makefileでdkms.confを読んでversion.hを作成する処理があるんですが、 makeがデフォルトでは/bin/shを参照するらしく、/bin/shがdashへのシンボリックリンクになっているのが原因っぽいです。

安直に回避する方法としてはmakeからはdkms.confの内容を整形して利用すればいいんですが、もっと良い方法がないか模索中です。 例: sed -e "s/[0]//" dkms.conf

lurdan commented 11 years ago

ということであれば、Makefile の頭の方に SHELL := /bin/bash を追加して、make から bash を呼ばせるのはいかがですか? cf. http://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html

m-tsudo commented 11 years ago

それも考えたんですが、/bin/bashが無い環境を考えるとBourne Shell系なら動きそうな上記の例の方がいいかなと。

lurdan commented 11 years ago

(/bin/sh が dash を向いていて、問題の発端となった) debian/ubuntu の場合は bash は必ず存在します、念の為。 ただ、/bin/sh の portability を重視されるのであれば、仰る対応が望ましいと思います。

その場合のやり方は、おおむね「sedとかで頑張る」「変数置換を駆使しまくる」あたりに落ち着くようですね……。