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

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

medit(mooedit)についてとebuildとビルドメモ

medit(mooedit)(http://mooedit.sourceforge.net/)は、高度なテキストエディタ

  • タブによる切り替え
  • 端末やファイル選択のペインを持っている
  • 言語ごとの色付け(シンタックスハイライト)機能
  • 簡単に選択範囲をコメント/コメント解除
  • 正規表現を使用した検索や置換
  • 指定行に「ブックマーク」をして、登録した場所へ簡単にジャンプ

など、コードを書くのに特化しているような印象を受けるが、文章を書くのにも便利な機能は多い。
Debian(lennyから)/Ubuntu(Gutsy=7.10から)では「medit」パッケージが存在する。Gentoo LinuxではBugzillaにebuildがあったが、諸事情により、新規に作成した。内容はまだ不完全な可能性がある。KEYWORDSは必要に応じて編集する(「~x86」の追加など)。
(2008/1/21)公式のPortageツリーにebuildが追加され(バージョン0.9.2から)、下のebuildは必要なくなった。


ファイル名: medit-0.9.0.ebuild

# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

inherit fdo-mime gnome2-utils

DESCRIPTION="Multiplatform text editor"

HOMEPAGE="http://mooedit.sourceforge.net/"

SRC_URI="mirror://sourceforge/mooedit/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64"

IUSE="debug doc fam ide libmoo python xml"

RDEPEND=">=x11-libs/gtk+-2
	dev-libs/libpcre
	python? ( dev-python/pygtk )
	fam? ( virtual/fam )
	xml? ( dev-libs/libxml2 )"
DEPEND="${RDEPEND}
	dev-util/pkgconfig
	doc? ( dev-libs/libxslt ~app-text/docbook-xml-dtd-4.4 )"

src_compile() {
	local myconf="--with-system-pcre"
	use libmoo && myconf="${myconf} --enable-libmoo --enable-libmoo-headers"
	use python && use libmoo && myconf="${myconf} --enable-module"
	use !doc && myconf="${myconf} --disable-help"
	use debug && append-flags -O -ggdb
	econf \
		$(use_with fam) \
		$(use_with xml) \
		$(use_with python) \
		$(use_enable ide project ) \
		$(use_enable debug ) \
		${myconf} || die "econf failed"
	emake || die "emake failed"
}

src_install() {
	emake DESTDIR="${D}" install || die "emake install failed"
	rm ${D}/usr/share/mime/{mime.cache,aliases,subclasses,XMLnamespaces,magic,globs} -f
	rm ${D}/usr/share/mime/text/x-{automake,copying,dpatch,pkg-config,news,libtool,configure-in,todo,thanks,gap}.xml -f
	rm ${D}/usr/share/icons/hicolor/icon-theme.cache -f
}

pkg_postinst() {
	fdo-mime_desktop_database_update
	fdo-mime_mime_database_update
	gnome2_icon_cache_update
}

pkg_postrm() {
	fdo-mime_desktop_database_update
	fdo-mime_mime_database_update
	gnome2_icon_cache_update
}

以下は覚え書き。

ファイルの衝突

/usr/portage/skel.ebuildの流れでそのまま入れようとすると

 * Detected file collision(s):
 *
 *      /usr/share/icons/hicolor/icon-theme.cache
 *      /usr/share/mime/mime.cache
 *      /usr/share/mime/aliases
 *      /usr/share/mime/subclasses
 *      /usr/share/mime/XMLnamespaces
 *      /usr/share/mime/magic
 *      /usr/share/mime/globs
 *      /usr/share/mime/text/x-copying.xml
 *
 * Searching all installed packages for file collisions...
 *
 * Press Ctrl-C to Stop
 *

のようにファイルがかぶってしまうため、これらをマージ前に${D}以下から消す処理を入れる必要があった。やはりebuildのテスト時には(特に)「FEATURES="collision-protect"」があると便利。

ライセンス

GPL-2」となってはいるが、実際にはLGPL-2.1な部分が多い、ということはメモ。
[引用]ファイル名: medit-0.9.0/LICENSE より

medit is distributed under GPL version 2 licence, its text
you can find in COPYING.GPL file. Nevertheless, everything but
several lang files (see the list below) is under LGPL version
2.1 or "version 2.1 or later", see COPYING file for its text.

libmooとPython

libmooというライブラリをビルドする場合、--enable-libmooを指定し、ヘッダファイルをインストールする場合には--enable-libmoo-headersも付ける。
--enable-moduleによりビルドされるPythonモジュールに関しては
[引用]ファイル名: medit-0.9.0/INSTALL より

The python module is installed whenever libmoo is built, but it
can be also built as a big standalone module which doesn't require
libmoo to be installed.

libmooに依存しないモジュールとしてビルドすることが可能となっているのだが、ebuildとしては「USE=python かつ USE=libmooのときにのみ自動的に有効にする」ということにする(USEフラグと条件分岐を増やせばモジュール単独でのビルドも可能にはできる)。

MIMEデータベース更新

「inherit fdo-mime」を付けて、fdo-mime_desktop_database_update()fdo-mime_mime_database_update()の2つの関数を実行することになっているらしい。pkg_postrm()の中では呼ばれているebuildと呼ばれていないebuildがあるようで、多くはpkg_postinst()だけで使用されている。今回は両方に入れておいた。

GTK+ 2のアイコンキャッシュ

Hotwireのebuildでも使用したが、GNOMEに直接関係なくても「inherit gnome2-utils」を付けた上でgnome2_icon_cache_update()を実行しているebuildが多い。