tsutsuiの作業記録置き場

NetBSDとかPC-6001とかの作業記録のうち、Twitterの140字では収まらない内容や記事としてまとめるべき内容をとりあえず置いてみる予定

emacs 18.59 を pkgsrc 化してみる

emacs 18.59 on NetBSD

2015年のKOFセミナーで発表したネタですが、個人的に必要(?)という理由で20年以上前にリリースされた mule-1.1 とそのベースの emacs-18.59 を現在の NetBSD 7.x でもビルドできるようなツリーを github でメンテしています。
セミナー発表スライドはこちらから
ブロマガって github や speakerdeck の embedded スクリプトでの埋め込みってできないんですかね……

emacs 18.59 / mule-1.1 オレオレ版 github

github のツリーはそれぞれ以下にあります。
https://github.com/tsutsui/emacs-18.59-netbsd
https://github.com/tsutsui/mule1.1-netbsd

NetBSD の alpha, arm, i386, m68k, powerpc, sh3el, sparc, sparc64, vax, x86_64 のそれぞれでとりあえず Hanoi (および muleWnn での日本語変換) が動く程度までは確認してあります。

Linux でも 32bit の x86 および 64bit の x86_64 それぞれで Arch Linux, ubuntu 16.04 LTS, debian 9 等でとりあえずビルドできて動きます。 debian には (必然的に ubuntu も) なぜか apt に wnncanna もある謎

debian 8


ubuntu 16.04 LTS

pkgsrc/editors/emacs18.59

自分以外にこんなものを必要としている人はいないだろうというのと、20年以上前のアプリであり configure スクリプトなどというものは存在しない構成のため pkgsrc 化はちょっと面倒と思っていたのですが、「何もやる気が出ない連休」をなんとかする、ということでなんとなく(?)書いてみました。

https://github.com/tsutsui/pkgsrc-wip-emacs18.59

「とりあえず make pakcages が動いて pkglint に怒られない」という程度の WIP (Work-In-Progress) 状態ですが、早速反応が来ていて需要はあるのかも……。

上記エラーは修正済みです


以下はまだ検討の余地があります。

  • オレオレ修正適用済みの github を使っているが、そもそも元のバージョンに敬意を払ってオリジナルの配布ファイルに pkgsrc の枠組みでパッチを当てまくって作るべき?
  • ロックファイルについて、元々は /usr/local/emacs/lock 以下に作られていたものを PLIST の都合で ${VARBASE}/lock/emacs のフォルダを作るようにしたが、そもそもこの手のファイルは本来どこにどう作るべきなのかよくわかっていない
  • emacs 18.59 ではデフォルトで /usr/local/emacs 以下にファイルを入れていたのを、 pkgsrc 化にあたって ${PREFIX}/share/emacs/18.59 以下に入れるようにしたが、これが妥当なのかどうか
  • Linux の場合、たいていのディストリビューション/usr/lib 以下にファイルが入るようなので特にリンクオプションの rpath 等を設定していないがそれでいいのかどうか
    Linux + pkgsrc の環境を作っていないのでそもそも未テスト
  • pkgsrc の emacspkgsrc/editors/emacs の meta package で emacs20〜25 まで選択できるようなしくみにしているようであるが、それに含めることも考えるべき? そこまでやる気はあまりない
  • do-install 時の処理について、配布の Makefile をガン無視して pkgsrc の Makefile 内で自前でインストールを記述したが、それが妥当かどうか
  • mule-1.1 については 藤原さんの pkgsrc-wip が存在するが、記述をある程度合わせるべきなのか
  • mule について WnnCanna を options.mk で選択できるようにすべきだが、 src/mconfig.h の define 定義を編集する形になるので結構面倒? SUBST を駆使すればなんとかなる?

そのうちまたやる気になったら考えます。