おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2008年07月13日(Sun) [同日]

[memo] luvcview (quickcamteam.net) を作ってみる

たぶん標準的な*1パッケージ構成のUbuntu 8.04に追加でインストールしたのは、libsdl1.2-dev。

あと、Linux UVC driver & toolsより、svn://svn.berlios.de/linux-uvc/linux-uvc/trunkをcheckoutし、libwebcamより、http://svn.quickcamteam.net/svn/qct/Linux/をcheckout。READMEのとおり、一部のヘッダファイルをsymlinkした。

*1 このご時勢コンパイラが入ってたら標準的とは言えないのかな

[memo] dpkgにファイルの持ち主のパッケージ名を表示させる

rpm -qf <パス>に対応するのはdpkg -S <パス>

野良ビルドのluvcviewはUbuntu提供のluvcviewと違ってioctl()がInvalid argumentを返す。なぜ…

[memo] autotoolsで管理するプロジェクトを始めてみる

久しぶりにやろうとすると忘れてしまっていることに気づく。 一度メモしておこう。下記の手順が正しいとは限らないのでご注意ください。

Ubuntuの場合は開発ツールがぜんぜん入ってない。僕の場合は、 automakeを入れる必要があった。

まずdoc/、src/、test/をつくってsrc/に適当にファイルを配置する。

autoscanでconfigure.scanを作ってもらえるので、configure.inに改名して、 FULL-PACKAGE-NAME、VERSION、BUG-REPORT-ADDRESSを編集する。

Makefile.amを作って、SUBDIRS = . test、 test/Makefile.amのcheck_PROGRAMSにとりあえず作ったテストプログラムを書く。 INCLUDES = -I$(top_srcdir)/src も追加。 (追記) TESTS = にも追加しないとmake checkで走らせてくれない。

automakeする。configure.inにAM_INIT_AUTOMAKEが無いと怒られるので、 AM_INIT_AUTOMAKE($PACKAGE_NAME, $PACKAGE_VERISION) という行を追加する。

automakeする。aclocal.m4が無いと言われるのでaclocalする。

automakeする。install-shが無いと言われるので、automake --add-missingする。

automakeする。AC_CONFIG_FILES([Makefile])が無いと言われるので、 AC_CONFIG_FILES([test/Makefile]) という行と一緒にconfigure.inに追加する。

automakeする。INSTALLが無いと言われるのでautomaek --add-missingする。 COPYINGとしてGPL3がsymlinkされる(Ubuntu)。えええっ!?

automakeする。NEWS、README、AUTHORS、ChangeLogが無いといれる。 COPYINGも一緒に編集する。

automakeする。Makefile.inとtest/Makefile.inができる。

この状態でautoreconfすると、configureができるので実行してみる。 config.h、Makefile、test/Makefileができる。

これで、make checkが走るようになる。 ここで悩ましいのはどこまでレポジトリに登録しておくか。 他のマシンでcheckoutしてすぐ./configureできるようにしたいと思って、 手で書いたファイル以外に、 スクリプト: depcomp missing install-sh aclocal.m4、 生成ファイル: configure Makefile.in test/Makefile.in をsvn addしてみた。 次はコードのtypoの修正から。

automakeとsubversionを使うプロジェクトでmake commitできるようにする

下記をトップディレクトリのMakefile.amに追記しておくと、 ChangeLogの最初のパラグラフ(空行まで)をcommit logとしてcommitしてくれる。

.PHONY: commit
commit: .svn
	cd $(top_srcdir) && \
	log=`sed -n '/^$$/q;p' ChangeLog` && \
	svn commit -m "$$log" && \
	echo "$$log"

前にも書いたような気がするけど。

error: expected expression before `struct’

V4L2のioctl(2) APIを呼ぶコードが、上記のコンパイルエラーをもらった。 linux/videodev2.hをincludeしてプリプロセッサだけを通すと、下記のようなコードに展開されていた。

ioctl(…, _IOWR ('V', 36, struct v4l2_queryctrl), …)

_IOWRって何?というわけで、加えて、linux/ioctl.hをincludeするようにしたらコンパイルできるようになった。

[memo] Ubuntuでパッケージのソースを得る

たぶんDebianでも一緒だろう。

dpkg-devを入れておいて、apt-get source luvcviewなどとすると、カレントディテクトリの下にいろいろコピーしてくれる。

本日のツッコミ(全2件) [ツッコミを入れる]
> kou (2008年07月14日(Mon) 02:11)

そういえば、GNUビルドシステムを使ったパッケージの作り方のチュートリアルがありましたよ。ついでに自動テスト環境もできるみたいです。<br>http://cutter.sourceforge.net/reference/ja/tutorial.html

> zunda (2008年07月14日(Mon) 18:43)

ありがとうございます!TDDの見本ですね。今回はハードウェアが対象なのでどこまで自動化できるか微妙なのですが、慣れればできるようになるんだろうな。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>