いけむランド

はてダからやってきました

calm のインストールと mksetupini

はじめに

cygport が 0.23.0 になった時に既存の genini が使えなくなるという問題に遭遇した。

原因は cygport が生成する hint のファイル名が固定の setup.hint から変わってしまったことによるもので、genini は setup.hint 固定されている前提の処理であったため、hint ファイルが認識できなくなってしまったというものであった。

というわけでなんとかしたい旨を cygport に issue ってみた。


https://github.com/cygwinports/cygport/issues/1github.com


すると genini じゃなくて calm の mksetupini を使えばいいんじゃね?という返事をもらったので、さっそく試してみた。

インストール


github.com


残念ながら pip で入れようとすると別の calm というパッケージが入ってしまうようなので、仕方なく setup.py でインストールすることにした。

$ git clone https://github.com/cygwin/calm.git
$ cd calm
$ python3 setup.py install
$ rehash
$ which mksetupini
/usr/local/bin/mksetupini

実行


普通に実行しても、いろいろとエラーを吐かれたため、最終的には以下のようなオプションをつけての実行となった。

$ mksetupini --arch x86_64 --inifile ./x86_64/setup --okmissing required-package --releasearea .
$ xz ./x86_64/setup
  • genini とは異なり、結果を stdout に出してはくれない。(そのため、あとから xz している。)
  • releasearea はデフォルトだと /sourceware 配下にあることを想定する。そのためオプションでカレントを指定した。


あと、追加で calm のソースコードをいじって、categories に Emulators など過去に存在したカテゴリを追加した。(ここで宣言されていないカテゴリが yacp に残っており、それらが存在するとエラーとなり、setup.ini が生成されなかったため)


time で実行時間を確認したところ genini の 2/3 くらいになったように見えた。

$ gtime ./genini --recursive x86_64 > /tmp/setup.ini
29.17user 7.23system 0:51.42elapsed 70%CPU (0avgtext+0avgdata 60227584maxresident)k
2367inputs+0outputs (258major+112605minor)pagefaults 0swaps
$ gtime mksetupini --arch x86_64 --inifile /tmp/setup.ini --okmissing required-package --releasearea .
17.31user 4.70system 0:33.37elapsed 65%CPU (0avgtext+0avgdata 192790528maxresident)k
1950inputs+3outputs (676major+34400minor)pagefaults 0swaps