cygportを作ってみる

一個前のspidermonkeyでcygportを作ってみた。
手順。

ソースのURIを見つける。

http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz

ソース名からcygportの名前を決めて作成開始。
js-1.8.0-rc1.tar.gz
から
js-1.8.0-rc1.cygportと名づける。
命名規則
package-version-release.cygport
(アーカイブ名にreleaseが含まれない場合は1などを適当につける)

js-1.8.0-rc1.cygport

SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz"

download

$ cygport js-1.8.0-rc1.cygport download

ソースファイルがカレントにダウンロードされる。

prep

ソース展開

$ cygport js-1.8.0-rc1.cygport prep

エラーが出る。
cygportは
package-version
という名のディレクトリができることを期待しているが
js-1.8.0-rc1.tar.gz
は解凍すると
js
に展開されるので調整してやる。

SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz"
SRC_DIR="js"

ソース展開

$ cygport js-1.8.0-rc1.cygport prep
$ ls js-1.8.0-rc1
CYGWIN-PATCHES@  build/  config/  dist/  inst/  log/  patch/  spkg/  src/  temp/

autoconfを使う場合やパッチ当てがある場合はここに仕込むが
Spidermonkeyは無いのでそのまま。

compile

cygport js-1.8.0-rc1.cygport

SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz"
SRC_DIR="js"

src_compile() {
  lndirs
  # ${B}はjs-1.8.0-rc1/build
  cd ${B}/src
  make -f Makefile.ref OS_ARCH=Linux LD=gcc BUILD_OPT=1
}
$ cygport js-1.8.0-rc1.cygport compile

install

ここでは実際にインストールされずに
js-1.8.0-rc1/inst/
をルートとして展開される。

cygport js-1.8.0-rc1.cygport(いちおう完成)

SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz"
SRC_DIR="js"

# makeだけでいい場合は書かなくてもいい
src_compile() {
  lndirs
  cd ${B}/src
  make -f Makefile.ref OS_ARCH=Linux LD=gcc BUILD_OPT=1
}

# make installだけでいい場合は書かなくてもいい
src_install() {
  cd ${B}/src/Linux_All_OPT.OBJ

  insinto /usr/local/bin
  doins js.exe
  doins jscpucfg.exe
  doins jskwgen.exe

  cp libjs.so libjs.dll
  doins libjs.dll

  insinto /usr/local/lib
  doins libjs.a
}
$ cygport js-1.8.0-rc1.cygport install

package

最後に

$ cygport js-1.8.0-rc1.cygport package

とするとアーカイブ
js-1.8.0-rc1-src.tar.bz2, js-1.8.0-rc1.tar.bz2
ができる。

ちゃんとインストールする別の方法があるような気がするが
とりあえず

$ cd /
$ tar jxf /usr/src/js-1.8.0-rc1.tar.bz2

以上で完了。