This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

MASTERDIR

Chapter 6. MASTERDIR

その port の変数 (たとえば解像度とか紙のサイズなど) を 変えたりした, 少しだけ違うバージョンを作成する必要があるときには, ユーザが分りやすいように package ごとに別々のサブディレクトリを作成し, できるだけ port 間でファイルを共有するようにしてください. ほとんどの場合, うまく変数を使えば, 一つを除くすべてのディレクトリには とても短い Makefile を置くだけで済みます. その短い Makefile では, MASTERDIR を使って, 残りのファイルがあるディレクトリを指定できます. また, PKGNAMESUFFIX の 一部に変数に使って, package が別々の名前を持つようにしてください.

具体的な例を示すのが一番わかりやすいでしょう. これは japanese/xdvi300/Makefile の一部です.

    PORTNAME=       xdvi
    PORTVERSION=    17
    PKGNAMEPREFIX=  ja-
    PKGNAMESUFFIX=  ${RESOLUTION}
     :
    # default
    RESOLUTION?=   300
    .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
           ${RESOLUTION} != 300 && ${RESOLUTION} != 400
           @${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
           @${ECHO} "Possible values are: 118, 240, 300 (default) and 400."
           @${FALSE}
    .endif

japanese/xdvi300 には Makefile の他に通常のパッチや, package ファイル等が置かれています. このディレクトリで make を実行すると, デフォルトの解像度 (300) を使って, 普通に port のビルドを行ないます.

他の解像度に関していうと, xdvi118/Makefile に 必要なのはこれだけです:

    RESOLUTION=     118
    MASTERDIR=      ${.CURDIR}/../xdvi300
    
    .include ${MASTERDIR}/Makefile

(xdvi240/Makefilexdvi400/Makefile も同様のものになります). bsd.port.mk は, MASTERDIR の定義から FILESDIRSCRIPTDIR 等の 通常のサブディレクトリが xdvi300 以下に 存在することを理解します. RESOLUTION=118 の行が, xdvi300/MakefileRESOLUTION=300 の行を上書きし, port は解像度を 118 として作成されます.

FreeBSD ports システムに関する質問は <ports@freebsd.org> へ(英語で),
FreeBSD ports に関する日本語での議論は <ports-jp@jp.FreeBSD.org> へお願いします.
この文書の原文に関するお問い合わせは <doc@freebsd.org> へ(英語で),
日本語訳に関するお問い合わせは <doc-jp@jp.FreeBSD.org> へお願いします.