Tritonn の ports を作ろう (その1)

Makefile は、行頭からのとこを tab にする(コピペする人はいないと思うけど)

とりあえず、コピーする

# cd /usr/ports/databases
# cp -R mysql50-server mysql50-tritonn-server


Makefile を変更していく

# cd /usr/ports/mysql50-tritonn-server
# vi Makefile

  • PORTバージョンを mysql の 5.0.67 から tritonn の 1.0.11 に変更する
PORTVERSION=  1.0.11
  • Tritonn1.0.11 は mysql5.0.67 限定なので、DISTFILE で指定
DISTFILES=   mysql-5.0.67.tar.gz
  • Tritonn のパッチを適用したいので、PATCH_SITE などを指定
    • この辺の書き方は、他の ports を見てみた
PATCH_SITES=         ${MASTER_SITE_SOURCEFORGE_JP}
PATCH_SITE_SUBDIR=   tritonn/33719
PATCHFILES=          tritonn-${PORTVERSION}-mysql-5.0.67.diff
PATCH_DIST_STRIP=    -p1
PKGNAMESUFFIX?=	     -tritonn-server
SLAVEDIRS=          databases/mysql50-tritonn-client databases/mysql50-tritonn-scripts
  • configure のオプションに、-with-senna と -with-mecab を追加
CONFIGURE_ARGS= --localstatedir=/var/db/mysql \
                --without-debug \
                --without-readline \
                --without-libedit \
                --without-bench \
                --without-extra-tools \
                --with-libwrap \
                --with-mysqlfs \
                --with-low-memory \
                --with-comment='FreeBSD port: ${PKGNAME}' \
                --enable-thread-safe-client \
                --with-senna \
                --with-mecab
  • 実行のために必要な ライブラリと 対応する ports (senna は最新が前提)
RUN_DEPENDS=  ${LOCALBASE}/lib/libmecab.a:${PORTSDIR}/japanese/mecab \
              ${LOCALBASE}/lib/libsenna.a:${PORTSDIR}/textproc/senna
  • ビルド時に必要な ports
BUILD_DEPENDS=        autoheader:${PORTSDIR}/devel/autotools \
                      bison:${PORTSDIR}/devel/bison \
                      ${RUN_DEPENDS}
WRKSRC=               ${WRKDIR}/mysql-5.0.67
  • MySQL がなかったら、エラーだして make 止めるっていう部分を TRITONN がなかったらに変更

変更前

.ifdef USE_MYSQL
.error You have `USE_MYSQL' variable defined either in environment or in make(1) arguments. Please undefine and try again.

変更後

.ifdef USE_TRITONN
.error You have `USE_TRITONN' variable defined either in environment or in make(1) arguments. Please undefine and try again.
.endif
.ifdef WANT_MYSQL_TRITONN_VER
.error You have `WANT_MYSQL_TRITONN_VER' variable defined either in environment or in make(1) arguments. Please undefine and try again.
  • # MySQL-Server part の LATEST_LINK をtritonn にあわせる
LATEST_LINK=  mysql50-tritonn-server
  • 通常のの MySQL すべて とぶつかるので
CONFLICTS=    mysql-sever-*
  • # MySQL-Client part も
LATEST_LINK=  mysql50-tritonn-client
CONFLICTS=    mysql-client-*

変更前

USE_MYSQL=    yes
WANT_MYSQL_VER=       50

変更後

USE_TRITONN=  yes
WANT_MYSQL_TRITONN_VER=       50
LATEST_LINK=  mysql50-tritonn-scripts
CONFLICTS=    mysql-scripts-*
  • tritonn パッチをあてた後の libtools とかを実行するようにする

変更前

.if defined(WITH_OPENSSL) && defined(BUILD_STATIC)
pre-configure:
        @${ECHO} "You can't use the BUILD_STATIC option when using OpenSSL."
        @${FALSE}
.endif

変更後

pre-configure:
.if defined(WITH_OPENSSL) && defined(BUILD_STATIC)
        @${ECHO} "You can't use the BUILD_STATIC option when using OpenSSL."
        @${FALSE}
.else
        @cd ${WRKSRC} && libtoolize -c -f
        @cd ${WRKSRC} && aclocal-1.9
        @cd ${WRKSRC} && autoheader
        @cd ${WRKSRC} && automake-1.9 -c -a -i
        @cd ${WRKSRC} && autoconf
.endif

このあとに、Makefile 内で、 bsd.port.post.mk を呼び出して処理をするけど
USE_MYSQL と WANT_MYSQL_VER を変更してしまったので
USE_MYSQL, WANT_MYSQL_VER の処理を素通りしてしまう・・・

次のエントリ(その2)へ続く!?