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

Makefile の中の

.include 

この部分から、bsd.port.post.mk をインクルードしてるみたい
というわけで追いかけてみる
とりあえず、bsd.port.post.mk の中を見てみる

  • bsd.port.post.mk を確認する

# cat /usr/ports/Mk/bsd.port.post.mk

# $FreeBSD: ports/Mk/bsd.port.post.mk,v 1.3 1999/08/25 04:40:21 obrien Exp $

AFTERPORTMK=    yes
.include "bsd.port.mk"
.undef AFTERPORTMK


bsd.port.mk を include しているので
bsd.port.mk を見てみる

  • bsd.port.mk を確認する

# vi /usr/ports/Mk/bsd.port.mk

(1942行目付近)

.if defined(USE_MYSQL) || defined(WANT_MYSQL_VER) || \
        defined(USE_PGSQL) || defined(WANT_PGSQL_VER) || \
        defined(USE_BDB) || defined(USE_SQLITE) || defined(USE_FIREBIRD)
.include "${PORTSDIR}/Mk/bsd.database.mk"
.endif

USE_MYSQL があるときに bsd.database.mk を include しているので
bsd.database.mk を見てみる

  • bsd.database.mk を確認する

# vi /usr/ports/Mk/bsd.database.mk
ごっそりとこんなカンジ

.if defined(USE_MYSQL)
DEFAULT_MYSQL_VER?=     50
# MySQL client version currently supported.
MYSQL323_LIBVER=        10
MYSQL40_LIBVER=         12
MYSQL41_LIBVER=         14
MYSQL50_LIBVER=         15
MYSQL51_LIBVER=         16
MYSQL60_LIBVER=         16

# Setting/finding MySQL version we want.
.if exists(${LOCALBASE}/bin/mysql)
_MYSQL_VER!=    ${LOCALBASE}/bin/mysql --version | ${SED} -e 's/.*Distrib \([0-9]\)\.\([0-9]*\).*/\1\2/'
.endif

.if defined(WANT_MYSQL_VER)
.if defined(WITH_MYSQL_VER) && ${WITH_MYSQL_VER} != ${WANT_MYSQL_VER}
IGNORE=         cannot install: the port wants mysql${WANT_MYSQL_VER}-client and you try to install mysql${WITH_MYSQL_VER}-client.
.endif
MYSQL_VER=      ${WANT_MYSQL_VER}
.elif defined(WITH_MYSQL_VER)
MYSQL_VER=      ${WITH_MYSQL_VER}
.else
.if defined(_MYSQL_VER)
MYSQL_VER=      ${_MYSQL_VER}
.else
MYSQL_VER=      ${DEFAULT_MYSQL_VER}
.endif
.endif # WANT_MYSQL_VER

.if defined(_MYSQL_VER)
.if ${_MYSQL_VER} != ${MYSQL_VER}
IGNORE= cannot install: MySQL versions mismatch: mysql${_MYSQL_VER}-client is installed and wanted version is mysql${MYSQL_VER}-client
.endif
.endif

# And now we are checking if we can use it
.if defined(MYSQL${MYSQL_VER}_LIBVER)
# compatability shim
.if defined(BROKEN_WITH_MYSQL)
IGNORE_WITH_MYSQL=${BROKEN_WITH_MYSQL}
.endif
.if defined(IGNORE_WITH_MYSQL)
.       for VER in ${IGNORE_WITH_MYSQL}
.               if (${MYSQL_VER} == "${VER}")
IGNORE=         cannot install: doesn't work with MySQL version : ${MYSQL_VER} (Doesn't support MySQL ${IGNORE_WITH_MYSQL})
.               endif
.       endfor
.endif # IGNORE_WITH_MYSQL
LIB_DEPENDS+=   mysqlclient.${MYSQL${MYSQL_VER}_LIBVER}:${PORTSDIR}/databases/mysql${MYSQL_VER}-client
.else
IGNORE=         cannot install: unknown MySQL version: ${MYSQL_VER}
.endif # Check for correct libs
.endif # USE_MYSQL

というわけで、このへんの MYSQL に関する マクロの処理をいじればよさそうなので
tritonn.mk という名前を付けて、
/usr/ports/databases/mysql50-tritonn-server ディレクトリに置いて
Makefile で include "tritonn.mk" とかする方向で進めます


とりあえず、コピー

  • bsd.database.mk を コピーして、tritonn 用の .mk ファイル tritonn.mk を作る

# cp /usr/ports/Mk/bsd.database.mk /usr/ports/databases/mysql50-tritonn-server/tritonn.mk

Makefile

.include 

の前に tritonn.mk をインクルードさせるようにします。

.include "tritonn.mk"
.include 

これで、tritonn.mk を、TRITONN にあったように変更していけばいいと思う。
(その3に続く!?)


ちなみに、/usr/ports/Mk/bsd.database.mk を書き換えればいいじゃんと思ったのですが
友人にきいたところ、「ソコはイジっちゃらめぇー」とのことです。
というわけで、tritonn.mk なんてものを作ることにしましたが、
何かいい方法があったら、教えてください。
もしくは、BSD の流儀はこうだよ、みたいなのでも・・・