試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

GNU/Linux上のジョイパッドデバイスのテストと軸/ボタン割り当て変更を行うGUIツールjstest-gtkのUbuntu向けパッケージを作成

GNU/Linux上のジョイパッドデバイスにおける軸とボタンの割り当て変更について(2009/7/16現在)」で扱ったjstest-gtkUbuntu向けパッケージを作成し、「milkjfフォントとut(内海氏)版AnthyのUbuntu向けパッケージを作成(2010/11/20現在)」で書いているPPAリポジトリに公開した。
バージョンについては開発版の2009/7/23時点(2011年1月時点の最新)のソースを使用している。--version(-v)オプションを付けたときのバージョン表記(src/main.cpp内)も変更した。
また、デスクトップ環境などのメニューから簡単に起動できるようにするための.desktopファイルも用意した。
(2014/10/11)jstest-gtkUbuntu 12.04から標準でパッケージが利用可能となっている。

  1. パッケージ作成上のメモ
    1. 画像の場所
    2. Debian/Ubuntuのパッケージ作成ツールからのパッケージビルド時のジョブ数指定について(マルチコア対応含む)

パッケージ作成上のメモ

画像の場所
src/joystick_list_widget.cppの中でアイコンの場所が相対パスdata/generic.pngになっているが、これをパッケージのインストール先の場所(/usr/share/jstest-gtk/以下)に変更している。

Debian/Ubuntuのパッケージ作成ツールからのパッケージビルド時のジョブ数指定について(マルチコア対応含む)
ビルドシステムにmakeを用いているパッケージでは
[一部]ファイル名: ~/.devscripts

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-j[ジョブ数]"

記述することでdebian/rulesの中のdhコマンドや(「override_dh_」系ターゲット内の)「dh_」系コマンド(例:dh_auto_build)に--parallelオプションを記述するとビルドやインストールなどの処理が指定ジョブ数で並列化され、マルチコアなどの環境で処理が高速になる(並列化はビルド失敗の原因となる場合があるため既定のジョブ数は「1」となる点に注意・「DEBUILD_SET_ENVVAR_DH_INTERNAL_OPTIONS="--parallel"」の記述で強制的に並列処理指定にすることができるが推奨はできない)。dhコマンドに--parallelオプションを付けるかどうかによって、「override_dh_」系ターゲットで動作を置き換えない処理において並列処理されるかどうかが決まる(原則として並列処理にしたいならdhコマンドに--parallelオプションを付け、一部並列化したくない処理があるなら「override_dh_」系ターゲット内でオプションなしのコマンドを記述する)。
一方、ビルドシステムにSConsを用いているパッケージで複数ジョブでのビルドを可能にしたい場合、与えられたオプションを解析してジョブ数を取り出してコマンド行オプションに渡すという面倒なことが必要。
[一部]ファイル名: [パッケージ名]-[バージョン]/debian/rules

ifneq (,$(findstring parallel,${DEB_BUILD_OPTIONS}))
	[ジョブ数用の変数] := $(shell echo ${DEB_BUILD_OPTIONS} | \
		sed -e 's/.*parallel=\([0-9]\+\).*/\1/')
[ジョブ数文字列用の変数] := -j${[ジョブ数用の変数]}
endif

%:
	dh $@

override_dh_auto_build:
	scons PREFIX=/usr ${[ジョブ数文字列用の変数]}