portfile(7)

提供:Beginning OS X
移動: 案内, 検索
PORTFILE(7) BSD Miscellaneous Information Manual PORTFILE(7)

目次

[編集] 名前

Portfile -- MacPorts のデスクリプションファイルに関するリファレンス

[編集] 概略

Portfile で利用可能な全ての変数と、その例文に関する完全なリファレンスです。Portfiles は正しい TCL 文で構成され、単純なキー/バリューのペアからなる文法や、TCL の拡張機能を使うことができます。Portfiles は UTF-8 でエンコードされます。
MacPorts は依存/提供モデルに基づいたターゲットの依存関係システムを用いており、個々の要求に応じて、ターゲットを正しい順序で登録・実行することができます。
Portfile の作者は、標準的なターゲット、それらが必要とするオプション、および、ターゲットと port システムの用意する各変数について、十分に理解しておかなくてはなりません。

[編集] PORTSYSTEM

Portfiles は、Portfile のインタープリタのバージョンを指定する PortSystem 行から始まらなくてはなりません。
Synopsis:
PortSystem 1.0

[編集] メイン変数

ports 中では、いくつかの変数を設定する必要があります。
name
port のフルネームを示します。
Type: required
Example:
name XFree86
version
ソフトウェアの上流バージョンを示します。
Type: required
Example:
version 4.2.1
epoch
port のバージョン番号変更時に、新しいバージョンが以前のバージョンよりも古いものであるように見えてしまう場合には、epoch の値を増やすことで対処できます。epoch の値は、日付のようなフォーマットを持つことが多いです。
Type: optional
Default: 0
Example:
epoch 20041231
description
ソフトウェアの内容に関する一行説明文です。説明文中では、ブラケットとセミコロンはバックスラッシュでエスケープする必要があります。(すなわち、"\[", "\]" および "\;") と書かなければなりません。) re_syntax(n) 中のエスケープシーケンスは、\n, \r および \f を除き利用できます。
Type: required
Example:
description Dictionary Server Protocol (RFC2229) client
long_description
ソフトウェアの内容に関する、より長い説明文です。説明文中では、ブラケットとセミコロンはバックスラッシュでエスケープする必要があります。(すなわち、"\[", "\]" および "\;") と書かなければなりません。) re_syntax(n) 中のエスケープシーケンスは、\n, \r および \f を除き利用できます。
Type: required
Example:
long_description The GNU Image Manipulation Program \
(GIMP) is a powerful tool for the preparation and \
manipulation of digital images. The GIMP provides \
the user with a wide variety of image manipulation, \
painting, processing, and rendering tools.
notes
port の設定や利用に関するノートを書きます。port をアクティベートしたとき、及び notes コマンドが使われた際に表示されます。
port notes python26
ui_msg の代わりに notes を使う利点としては、ui_msg がインストールの最中にしか表示されないのに対し、port のインストール後にも問い合わせをおこなうことが出来るところにあります。ですから、インストール後に必要となるインフォメーションなら何でも notes に書いておきましょう。
Type: optional
Example:
notes To fully complete your installation and make python \
${branch} the default, please run: \
sudo port install python_select \
sudo python_select ${name}
revision
Portfile のローカルなリビジョン番号です。いかなる場合にも、インストールされる内容に変化が生じる場合には、port のリビジョン番号を増やしてください。
Type: optional
Default: 0
Example:
revision 1
categories
port の属するカテゴリを示します。
Type: required
Example:
categories spelling textproc
maintainers
port のメンテナの E-mail アドレスを示します。
Type: required
Example:
maintainers landonf@macports.org
platforms
port がサポートするプラットフォームを宣言します。
Type: required
Values: darwin freebsd
Example:
platforms darwin
homepage
port のプロジェクトホームページです。
Type: required
Example:
http://wireshark.org
master_sites
distfiles の取得元となるサイト、もしくは事前に設定されてあるミラーサイトのリストです。サブディレクトリの設定が行われずにミラーサイトが設定された場合には、portname の内容がサブディレクトリ名として用いられます。
Type: required
Example:
master_sites ftp://ftp.cdrom.com/pub/magic \
sourceforge
worksrcdir
workpath を基準とした、ソースディレクトリのパスです。
Type: optional
Default: ${distname}
Example:
worksrcdir ${distname}-src-${version}
distname
extract.suffix を省いた、ソフトウェアの配布ファイルの名前です。
Type: optional
Default: ${name}-${version}
Example:
distname ${name}-${version}-src
checksums filename type checksum [filename type checksum ...]
distfiles のチェックサムに関するリストです。チェックサムの type としては現在、md5, rmd160 または sha1 が利用できます。配布ファイルが一つしかない場合には、filename を省略することもできます。
Type: required
Example:
checksums dictd-1.7.1.tar.gz md5 81317b86ea0a5df0163900ad2e6bb12c \
magic-words-1.7.1.tar.gz md5 897a005182928613eadd30c267ce9c5b
Example (ledit 1.11):
checksums md5 a2d38ba641682509c1e964ad699a9dd2 \
sha1 1fb6443b5fdf3c83787953f06282d256477c1288
Example (ssldump 0.9b3):
checksums md5 ac8c28fe87508d6bfb06344ec496b1dd \
sha1 a633a9a811a138eac5ed440d583473b644135ef5 \
rmd160 941cf8f2ef8459ec4f9ce65772e134505d46566
macosx_deployment_target
configure スクリプトを実行する際の MACOSX_DEPLOYMENT_TARGET 環境変数の値です。
Type: optional
Default: (current OS version)
Example:
macosx_deployment_target 10.4
use_parallel_build
yes を設定すると(および macports.conf 中で buildmakejobs を有効にすると)、port は一つ以上のジョブを使ってビルドされるようになります。
Type: optional
Default: no
Example:
use_parallel_build yes
use_automake
yes を設定すると、configure 用の Makefile.in ファイルを作成するために automake ターゲットが実行されます。
Type: optional
Default: no
Example:
use_automake yes
use_autoconf
yes を設定すると、configure スクリプトを作成するために autoconf ターゲットが実行されます。
Type: optional
Default: no
Example:
use_autoconf yes
use_configure
yes を設定すると、ビルドの設定をおこなうために configure ターゲットが実行されます。
Type: optional
Default: yes
Example:
use_configure no
copy_log_files path/to/logfile1 path/to/logfile2 ...
指定したログファイルを workdir から macports のログディレクトリにコピーします。
Type: optional
Example:
copy_log_files config.log
conflicts
conflicts 宣言は、その port とコンフリクトする内容を含む ports を列挙するのに使われます。
Type: optional
Default: none (empty)
Example:
conflicts cdrtools
replaced_by
ある port が廃止となり、他の port で代替される場合には、廃止側の port で replaced_by を使い、新しく導入されるべきものを指定します。
Type: optional
Default: none (empty)
Example:
replaced_by xorg-renderproto
add_users
ユーザ名と設定のリストから構成されます。port のインストールプロセス中の適切な時点で、ユーザ名毎に、対応する設定内容に沿ってユーザが生成されます。設定は name=value の形態でおこないます。設定内容は、リスト中の直近のユーザ名に対して適用されます。
適用可能なオプション: group, gid (group の代わりに利用可能), passwd, realname, home, および shell
Type: optional
Default: none (empty)
Example:
add_users squid group=squid realname=Squid\ Proxy home=${prefix}/var/squid
add_users user1 group=mygroup user2 group=mygroup
installs_libs
デフォルトでは、ライブラリやヘッダをインストールする ports と、それに依存する他の ports とは、一体のものでなければならないとみなされます。もしそうでなければ、installs_libsno に設定してください。これは、この ports に依存する他の ports において、それらと同じアーキテクチャとしてこの port がインストールされているかどうかのチェックをする必要がないということを意味します。また、ライセンスのコンフリクトが生じる場合であっても、バイナリの配布を許可するということを意味します。加えて、この port のアップデートが、依存する他の ports に対して、ダイナミックリンクの破損を決して引き起こさないということを意味します。
Type: optional
Default: none
Example:
installs_libs no

[編集] ターゲットフック

フックを利用することで、port(1) の実行する多くの標準的なターゲットをカスタマイズすることができます。これらのフックをサポートするターゲットには、fetch, automake, autoconf, configure, build, destroot, および test があります。各フックについては次のとおりです。
target.asroot
target を root の権限で実行します。
Example:
install.asroot yes
target.dir
target を実行する際のディレクトリを指定します。
Example:
automake.dir src
target.env
target 実行時の環境変数を変更します。Portfile ごとの基本設定によって、上書きされてしまうことがあります。
Example:
configure.env CPP=/usr/bin/cpp-4.0
target.pre_args
メインの引数の前に渡される追加の引数を書きます。
Example:
extract.pre_args -cd
target.args
target に渡されるメインの引数を書きます。Portfile ごとの基本設定によって、上書きされてしまうことがあります。
Example:
configure.args --enable-fooble
target.post_args
メインの引数の後に渡される追加の引数を書きます。
Example:
extract.post_args | tar xf -

[編集] ランタイム変数

MacPorts の設定に関しては、読み出し専用のものもあります。
prefix
インストール時の prefix です。
Type: optional
Default: /opt/local
libpath
ports 専用の TCL ライブラリの場所を示します。
Type: read-only
portpath
Portfile の存在する場所へのフルパスです。
Type: read-only
Default: work
workdir
portpath を基準とした、作業ディレクトリへのパスを示します。可能であれば、代わりに workpath を利用してください。
Type: read-only
Default: work
workpath
作業ディレクトリへのフルパスです。
Type: read-only
Default: ${portbuildpath}/work
worksrcpath
作業対象となるソース (port がソースファイルを展開した場所) へのフルパスです。
Type: read-only
Default: ${workpath}/${worksrcdir}
filesdir
portpath を基準とした、port ファイルへのパスです。
Type: read-only
Default: files
filespath
port ファイルがある場所へのフルパスです。
Type: read-only
Default: ${portpath}/${filesdir}
distpath
ダウンロード済みの distfiles が格納される場所です。
Type: read-only
Default: ${sysportpath}/distfiles/${dist_subdir}/
os.arch
ハードウェアのタイプを表します。(たとえば "powerpc")
Type: read-only
os.version
オペレーティングシステムのバージョンです。(たとえば "7.0")
Type: read-only
os.major
オペレーティングシステムのメジャーバージョンです。(たとえば "7")
Type: read-only
os.endian
プロセッサのエンティアンを表します。(たとえば "big")
Type: read-only
os.platform
オペレーティングシステムの名前を表します。(たとえば "darwin")
Type: read-only
os.subplatform
オペレーティングシステムのバリアント名を表します。(たとえば "macosx")
Type: read-only
install.user
MacPorts をインストールする際のユーザ名を表します。(たとえば root)
Type: read-only
install.group
MacPorts をインストールする際のグループを表します。(たとえば wheel)
Type: read-only
applications_dir
Mac OS X のアプリケーションバンドル (.app ディレクトリ) をインストールする最終位置の絶対パスを表します。
Type: read-only
Default: /Applications/Macports
frameworks_dir
Mac OS X のフレームワークバンドル (.framework ディレクトリ) をインストールする最終位置の絶対パスを表します。
Type: read-only
Default: ${prefix}/Library/Frameworks

[編集] 依存関係のオプション

Port の依存関係は、可能である限り他の MacPorts の ports を参照する形でおこなわれるべきです。したがって、各依存関係は以下のフォーマットで表現されるべきです。
port:<port>
<port> の部分には、MacPorts における既存の port 名が入ります。もし MacPorts の port で依存関係を満たすことが現実的でない場合や、Apple のソフトウェアを追加インストールすることにより依存関係が満たされる場合には、以下の代替的な依存関係のフォーマットを使うことができます。
type:<filename>:<port>
<filename> がプログラムである場合には、type は "bin" となり、ライブラリであれば "lib"、インストール済みのファイルに対するパスであれば "path" とします。
Example:
lib:libX11.6:XFree86
depends_fetch
fetch, checksum, extract, patch, configure, build, destroot, install, および package ターゲットの前にチェックされるべき依存関係のリストです。
Type: optional
Example:
depends_fetch port:mercurial
depends_extract
extract, patch, configure, build, destroot, install, および package ターゲットの前にチェックされるべき依存関係のリストです。
Type: optional
Example:
depends_extract port:xz-devel
depends_build
configure, build, destroot, install, および package ターゲットの前にチェックされるべき依存関係のリストです。
Type: optional
Example:
depends_build port:autoconf
depends_run
destroot, install および package ターゲットの前にチェックされるべき依存関係のリストです。インストールの際には、依存関係を持つ port からの要求によってインストールされた旨がレジストリに記録されます。
Type: optional
Example:
depends_run port:bash
depends_lib
configure, build, destroot, install, および package ターゲットの前にチェックされるべき依存関係のリストです。インストールの際には、依存関係を持つ port からの要求によってインストールされた旨がレジストリに記録されます。
Type: optional
Example:
depends_lib port:libfetch

[編集] FETCH オプション

全ての配布ファイルとパッチを取得します。
master_sites.mirror_subdir
master_sites で指定されたリスト中の全てのミラーサイトにおいて、追加されるサブディレクトリ名を指定します。
Type: optional
Default: ${name}
Example:
master_sites.mirror_subdir magic
patch_sites
patchfiles を取得する元サイトのリスト、もしくは既存ミラーサイトのリストです。
Type: optional
Default: ${master_sites}
Example:
patch_sites ftp://ftp.patchcityrepo.com/pub/magic/patches
patch_sites.mirror_subdir
patch_sites で指定されたリスト中の全てのミラーサイトにおいて、追加されるサブディレクトリ名を指定します。
Type: optional
Default: ${name}
Example:
patch_sites.mirror_subdir magic
extract.suffix
distname に追加される拡張子を指定します。
Type: optional
Default: .tar.gz
Example:
extract.suffix .tgz
distfiles
master_sites から取得すべき配布ファイルのリストです。
Type: optional
Default: [suffix ${distname}]
Example:
distfiles magicsource.tar.gz cluebat.tar.bz2
patchfiles
取得し、適用すべきパッチファイルのリストです。
Type: optional
Example:
patchfiles japanese-widechar-fix.diff japanese-localization.diff
use_zip
zip を使います。
extract.suffix を .zip に設定します。
extract.cmd を unzip に設定します。
extract.pre_args を -q に設定します。
extract.post_args を "-d ${workpath}" に設定します。
Type: optional
Example:
use_zip yes
use_bzip2
bzip2 を使います。
extract.suffix を .bz2 に設定します。
extract.cmd を bzip2 に設定します。
Type: optional
Example:
use_bzip2 yes
use_lzma
lzma を使います。
extract.suffix を .lzma に設定します。
extract.cmd を lzma に設定します。
Type: optional
Example:
use_lzma yes
use_xz
xz を使います。
extract.suffix を .xz に設定します。
extract.cmd を xz に設定します。
Type: optional
Example:
use_xz yes
use_7z
7z を使います。
extract.suffix を .7z に設定します。
extract.cmd を 7za に設定します。
Type: optional
Example:
use_7z yes
dist_subdir
取得したファイルを格納するため、distpath 内にサブディレクトリを作成します。
Type: optional
Default: ${name}
Example:
dist_subdir vim${version}

[編集] 高度な FETCH オプション

ミラーからリソースを正しくダウンロードするために、特別なオプションが必要となる場合もあります。
fetch.user
リソースを取得する際に使う、HTTP または FTP のユーザ名を指定します。
Type: optional
fetch.password
リソースを取得する際に使う、HTTP または FTP のパスワードを指定します。
Type: optional
fetch.use_epsv
FTP の転送時に EPSV コマンドを使うかどうかを指定します。
Type: optional
Default: yes
fetch.ignore_sslcert
(HTTPS 時における) ホスト SSL 認証を無視するかどうかを指定します。
Type: optional
Default: no

[編集] CVS からのファイル取得

配布ファイルを取得する方法の一つとして、CVS レポジトリからのソースのチェックアウトが利用できます。但し、CVS を利用すると、常に同じビルド結果が得られるとは限らない場合も出てきますので、あまりお勧めはしません。
cvs.root
ファイルをチェックアウトする元となる CVS レポジトリのアドレスを指定します。
Type: optional
Default: none
Example:
cvs.root :pserver:anonymous@cvs.sv.gnu.org:/sources/emacs
cvs.tag
チェックアウトするソースコードを指定するための CVS タグです。
Type: optional
Default none
Example:
cvs.tag HEAD
cvs.date
チェックアウトするソースコードを指定するための日付です。
Type: optional
Default none
Example:
cvs.date "12-April-2005"
cvs.module
ソースコードをチェックアウトするための CVS モジュールを指定します。
Type: optional
Default none
Example:
cvs.module Sources

[編集] SUBVERSION からのファイル取得

配布ファイルを取得する方法の一つとして、subversion レポジトリからのソースのチェックアウトが利用できます。但し、subversion を利用すると、常に同じビルド結果が得られるとは限らない場合も出てきますので、あまりお勧めはしません。
svn.url
ファイルを取得する元となる url を指定します。
Type: required
Default: none
Example:
svn.url http://www.domain.com/svn-repo/mydirectory
svn.url svn://www.domain.com/svn-repo/mydirectory
svn.tag
svn のどのバージョンからファイルを取得するかのタグを指定します。これは svn をコマンドラインで使った場合の -r オプションに対応しています。ブレースやダブルクォートといった、Tcl インタープリタで解釈される文字の含まれる場合には、バックスラッシュを使ってエスケープをおこなう必要がある点に注意してください。
Type: optional
Default: none
Example:
svn.tag 37192
svn.tag \{\"2006-02-17 15:30 +0230\"\}

[編集] GIT からのファイル取得

配布ファイルを取得する方法の一つとして、git レポジトリからのソースのチェックアウトが利用できます。但し、git を利用すると、常に同じビルド結果が得られるとは限らない場合も出てきますので、あまりお勧めはしません。
git.url
ファイルを取得する元となる url を指定します。
Type: required
Default: none
Example:
git.url git://git.kernel.org/pub/scm/git/git.git
git.url http://www.kernel.org/pub/scm/git/git.git
git.branch
git でチェックアウトするブランチ(または他のコミットされたもの)を指定します。
HEAD 以外のブランチでは必ず先頭に origin/ を付けなければならない点に注意してください。
Type: optional
Default: none
Example:
git.branch 72bf1c8
git.branch origin/next


[編集] EXTRACT オプション

圧縮/アーカイブ済みのファイルを全て展開します。
extract.only
workpath に展開するファイルのリストを書きます。
Type: optional
Default: ${distfiles}
Example:
extract.only worksrc-1.4.4.tar.gz
extract.cmd
展開をおこなうためのコマンドを指定します。
Type: optional
Default: gzip
Example:
extract.cmd bzip2
extract.mkdir
展開の前に worksrcdir を生成します。サブディレクトリを掘るのではなく、カレント作業ディレクトリに直接展開する ports に有用です。
Type: optional
Default: no
Example:
extract.mkdir yes

[編集] CONFIGURE オプション

MacPorts には、configure フラグ (CFLAGS, LDFLAGS, CPPFLAGS, CXXFLAGS, CC, CXX, CPP, FC, F77, F90) に関する特別なサポートがあります。従来の方法 (configure.env を使用) を使ってこれらのフラグを書き換えるのは、いくつかの点で好ましくありませんので、注意してください。以下のオプションが用意されています。
configure.optflags
最適化のために使われるフラグを指定します。
Type: optional
Default: -O2
Example:
configure.optflags -O3
configure.cflags
configure スクリプトを実行する際の CFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: ${configure.optflags}
Example:
configure.cflags-append -DHAS_LRINTF
configure.cppflags
configure スクリプトを実行する際の CPPFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: -I${prefix}/include
configure.cxxflags
configure スクリプトを実行する際の CXXFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: ${configure.optflags}
configure.objcflags
configure スクリプトを実行する際の OBJCFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: ${configure.optflags}
configure.ldflags
configure スクリプトを実行する際の LDFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: -L${prefix}/lib
configure.fflags
configure スクリプトを実行する際の FFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: ${configure.optflags}
configure.f90flags
configure スクリプトを実行する際の F90FLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: ${configure.optflags}
configure.fcflags
configure スクリプトを実行する際の FCFLAGS 環境変数に設定するフラグを指定します。
Type: optional
Default: ${configure.optflags}
configure.classpath
configure スクリプトを実行する際の CLASSPATH 環境変数に設定するフラグを指定します。
Type: optional
configure.cc
configure スクリプトを実行する際の CC 環境変数に設定する C コンパイラを指定します。
Type: optional
Example:
configure.cc /usr/bin/gcc
configure.cpp
configure スクリプトを実行する際の CPP 環境変数に設定する C プリプロセッサを指定します。
Type: optional
configure.cxx
configure スクリプトを実行する際の CXX 環境変数に設定する C++ コンパイラを指定します。
Type: optional
configure.objc
configure スクリプトを実行する際の CPP 環境変数に設定する Objective-C コンパイラを指定します。
Type: optional
Example:
configure.objc ${prefix}/bin/gcc-mp-4.1
configure.fc
configure スクリプトを実行する際の FC 環境変数に設定する Fortran コンパイラを指定します。
Type: optional
configure.f77
configure スクリプトを実行する際の F77 環境変数に設定する Fortran-77 コンパイラを指定します。
Type: optional
configure.f90
configure スクリプトを実行する際の F90 環境変数に設定する Fortran-90 コンパイラを指定します。
Type: optional
configure.javac
configure スクリプトを実行する際の JAVAC 環境変数に設定する Java コンパイラを指定します。
Type: optional
configure.compiler
利用するコンパイラ一式を選択します。このオプションはコンパイラ環境変数を指定された一式で上書きします。選択されたコンパイラパッケージへの依存関係は、わざと設定されていませんので注意してください。gcc-3.3 gcc-4.0 gcc-4.2 は標準のシステムコンパイラパッケージを、llvm-gcc-4.2 clang は Xcode によりインストールされる新しい非デフォルトのコンパイラを、apple-gcc-3.3 apple-gcc-4.0 apple-gcc-4.2 は MacPorts 経由でインストールされた Apple の gcc パッケージを、macports-gcc-3.3 macports-gcc-3.4 macports-gcc-4.0 macports-gcc-4.1 macports-gcc-4.2 macports-gcc-4.3 macports-gcc-4.4 macports-gcc-4.5 は MacPorts 経由でインストールされた素の gcc を使います。
Type: optional
Values: gcc-3.3 gcc-4.0 gcc-4.2 llvm-gcc-4.2 clang apple-gcc-3.3 apple-gcc-4.0 apple-gcc-4.2 macports-gcc-3.3 macports-gcc-3.4 macports-gcc-4.0 macports-gcc-4.1 macports-gcc-4.2 macports-gcc-4.3 macports-gcc-4.4 macports-gcc-4.5
Example:
configure.compiler gcc-4.0

[編集] UNIVERSAL ターゲットフック

configure ベースの ports で universal バイナリを生成できるようにするため、特別なターゲットフックが用意されています。これらの内容は必要に応じて上書き可能です。なお、これらのフックはデフォルトの universal variant で利用されるものであり、variant の再定義をおこなった場合には反映されないという点に注意してください。
configure.universal_args
universal バイナリを生成するため configure スクリプトに追加する引数を指定します。
Type: optional
Default: --disable-dependency-tracking
configure.universal_cflags
configure スクリプトを実行する際の CFLAGS 環境変数に追加するフラグを指定します。
Type: optional
Default: -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc
configure.universal_cppflags
configure スクリプトを実行する際の CPPFLAGS 環境変数に追加するフラグを指定します。
Type: optional
configure.universal_cxxflags
configure スクリプトを実行する際の CXXFLAGS 環境変数に追加するフラグを指定します。
Type: optional
Default: -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc
configure.universal_ldflags
configure スクリプトを実行する際の LDFLAGS 環境変数に追加するフラグを指定します。
Type: optional
Default: -arch i386 -arch ppc

[編集] BUILD オプション

必要なビルドコマンドを実行します。
build.cmd
worksrcdir をカレントディレクトリとして実行される make コマンドを指定します。
Type: optional
Default: make
Example:
build.cmd scons
build.type
'gnu' と 'bsd' のうち、どちらの 'make' が必要となるのかを設定します。'xcode' (または非推奨の別名 'pbx') を選択することもできますが、これを直接指定するよりは xcode PortGroup を使うべきです。これにより、build.cmdgnumake, bsdmake または xcodebuild のいずれかにセットされます。
Type: optional
Default: gnu
Example:
build.type bsd
build.target
build.cmd に渡されるターゲットを指定します。
Type: optional
Default: all
Example:
build.target all-src

[編集] DESTROOT オプション

一時的なデスティネーションルート ("destroot") 領域にインストールするのに必要なコマンドを実行します。
destroot.cmd
worksrcdir をカレントディレクトリとして実行されるインストールコマンドを指定します。
Type: optional
Default: ${build.cmd}
Example:
destroot.cmd pbxbuild
destroot.destdir
destroot にインストールをおこなううえで必要な、destroot.cmd に渡される引数を指定します。
Type: optional
Default: DESTDIR=${destroot}
Example:
destroot.destdir prefix=${destroot}${prefix}
destroot.target
destroot.cmd に渡されるインストールターゲットを指定します。
Type: optional
Default: install
Example:
destroot.target install-src
destroot.umask
destroot 中に使われる umask を指定します。
Type: optional
Default: 022
Example:
destroot.umask 002
destroot.keepdirs
destroot の終了時に、たとえ内容が空であっても削除されることのないディレクトリのリストを書きます。
Type: optional
Example:
destroot.keepdirs ${destroot}${prefix}/var/log/mysql
destroot.violate_mtree
port が標準のディレクトリ構造を逸脱するか否かを指示します。mtree 違反のテスト (e. g. non-standard directories in ${prefix}) を有効または無効にします。標準の mtree については porthier(7) を参照してください。
Type: optional
Values: yes no
Default: no

[編集] TEST オプション

port に付属するテストコマンドを実行します。
test.run
port に付属するテストを実施するようにします。
Type: optional
Example:
test.run yes
test.cmd
worksrcdir をカレントディレクトリとして実行されるテストコマンドを指定します。
Type: optional
Default: ${build.cmd}
Example:
test.cmd checks.sh
test.target
test.cmd に渡されるテストターゲットを指定します。
Type: optional
Default: test
Example:
test.target checks

[編集] STARTUPITEM オプション

port がシステムのスタートアップ時に起動される必要がある場合には、MacPorts の startupitem キーワードを使って OS X のスタートアップスクリプトをインストールすることができます。スタートアップスクリプトの起動を有効にするには、port のインストール後にユーザが手動でおこなう必要があります。その方法に関しては、port のインストール中に表示されます。
startupitem.create
スタートアップアイテムを生成するかどうかを選択します。
Type: optional
Default: no
Values: yes no
Example:
startupitem.create yes
startupitem.type
生成するスタートアップアイテムののタイプを選択します。デフォルトでは、OS のタイプに合致したスタートアップアイテムが生成されます。具体的には、10.4 のシステムでは launchd が使われていますが、それ以前の Mac OS X システムでは SystemStarter が用いられています。グローバルなデフォルト設定は ports.conf の startupitem_type で指定することができます。
Type: optional
Default: default
Values: SystemStarter launchd default rcNG
Example
startupitem.type launchd
startupitem.name
スタートアップアイテムの表示上の名前を指定します。
Type: required
Example:
startupitem.name OpenSSH
startupitem.executable
バックエンドで起動されるデーモンの名前を指定します。startupitem.init, startupitem.start, startupitem.stop, および startupitem.restart を使って デーモンを起動する方法よりも好ましく、また、これらのオプションと同時に使うことはできません。このオプションは複数の引数を持つことができますが、それらは exec で呼び出せる必要があり、恣意的なシェルコードは書けません。
Type: optional
Values: /path/to/executable <args>
Example:
startupitem.executable ${prefix}/bin/wonka
startupitem.init
startupitem.start, startupitem.stop, および startupitem.restart のいずれよりも 早い段階で呼び出されるシェルコードを指定します。
Type: optional
Values: sh code
Example:
startupitem.init FOO=start
startupitem.start
デーモンを開始するためのシェルコードを指定します。
Type: optional
Values: sh code
Example:
startupitem.start ${prefix}/share/mysql/mysql.server start
startupitem.stop
デーモンを停止するためのシェルコードを指定します。
Type: optional
Values: sh code
Example:
startupitem.stop ${prefix}/share/mysql/mysql.server stop
startupitem.restart
デーモンを再起動するためのシェルコードを指定します。この指定がない場合には、デーモンは一旦停止ののち、続いて開始のアクションがおこなわれることで再起動されます。
Type: optional
Values: sh code
Example:
startupitem.restart ${prefix}/share/mysql/mysql.server restart
startupitem.pidfile
pid ファイルの扱いに関して指定します。これは startupitem.executable と同時に使うと、とりわけ有用です。というのも、startupitem がデーモンの起動状態をどのように追跡するかを知っておくことは大変重要であるからです。デーモンが自分自身で pid ファイルを生成する場合 (auto)、デーモンは自分自身で pid ファイルを生成するが、削除するのを忘れており、startupitem 側で削除しなければならない場合 (clean)、もしくは、デーモンは自分自身で pid ファイルを生成せず、startupitem が独自に pid ファイルを管理しなければならない場合 (manual)、または、pid ファイルは全く使用しない場合 (none) のいずれかを指定できます。
Type: optional
Default: none ${prefix}/var/run/${name}.pid
Values: none|auto|manual|clean [/path/to/pidfile]
Example:
startupitem.pidfile auto ${prefix}/var/run/${name}.pidfile
startupitem.logfile
startupitem の生存時間に関するイベントをロギングするログファイルのパスを指定します。startupitem のタイプ、およびデーモンの開始方法により、デーモンの標準出力もまたログファイルに保存されます。
Type: optional
Default: /dev/null
Values: path
Example:
startupitem.logfile ${prefix}/var/log/mydaemon.log
startupitem.logevents
イベントをログファイルに保存するかどうかをコントロールします。logevents が設定されると、イベントはタイムスタンプ付きでログファイルに保存されます。
Type: optional
Default: no
Values: yes|no
Example:
startupitem.logevents yes
startupitem.netchange
ネットワーク状態の変化を検知した場合に startupitem を再起動させるかどうかをコントロールします。
Type: optional
Default: no
Values: yes|no
Example:
startupitem.netchange yes

[編集] DISTCHECK および LIVECHECK オプション

MacPorts は、Portfile が更新されてからソフトウェアがアップデートされていないかどうか、また、何らかの変更が生じた結果、Portfile のアップデートが必要となっていないかどうかを 自動的にチェックすることができます。これによりメンテナが Portfile を最新の状態に保ちやすくなります。
二種類のチェックを利用できます。distcheck では、MacPorts は配布ファイルがまだダウンロード可能であり、portfile が最後に更新されてから変更が生じていないかどうかをチェックできます。livecheck では、MacPorts はリソースに問い合わせをおこない、より新しいバージョンのソフトウェアが存在していないかどうかを確認することができます。
distcheck.check
このオプションは distcheck を無効化する際に使います。配布ファイルに対しておこなうチェックの方法として、moddate (Portfile が配布ファイルよりも古いかどうかを確認) または none (チェックをおこなわない) を指定できます。
Type: optional
Default: moddate
Values: moddate none
livecheck.type
ソフトウェアがアップデートされていないかどうかを確認するために、どういった方法をとるのかを指定します。freshmeat (freshmeat の XML ファイル内の date_updated タグを使用), sourceforge (プロジェクトの最新リリースファイルのバージョンを使用), googlecode (プロジェクトの最新リリースファイルのバージョンを使用), moddate (何らかの URL リソースの更新日時を使用), regex (何らかの URL リソースに正規表現を適用し、バージョンを取得), regexm (何らかの URL リソースに複数行の正規表現を適用し、バージョンを取得), md5 (何らかの URL リソースの md5 サムを比較) もしくは none (チェックをおこなわない) を指定できます。
Type: optional
Default: sourceforge or googlecode if the master_sites is one of these, else freshmeat
Values: freshmeat sourceforge googlecode moddate regex regexm md5 none
livecheck.name
livecheck をおこなうプロジェクト名を指定します。(freshmeat, sourceforge および googlecode ベースのチェックで使用されます。)
Type: optional
Default: ${name} or the sourceforge/freshmeat/googlecode project name if it can be guessed by looking at the master_sites.
livecheck.distname
リリースされたファイルの名前を指定します。(sourceforge および googlecode ベースのチェックで使用されます。) sourceforge では、パッケージの名前が使われます。googlecode では、拡張子を含んだダウンロードファイルの名前が使われます。バージョン部分は "(.*)" で置き換えられます。
Type: optional
Default: ${livecheck.name} for sourceforge projects or the first entry in ${distfiles} for googlecode projects
livecheck.version
livecheck をおこなうプロジェクトのバージョンを指定します。(regex ベースのチェックで使用されます。)
Type: optional
Default: ${version}
livecheck.url
チェックの際にクエリがおこなわれる URL を指定します。
Type: optional
Default: ${homepage} or http://freshmeat.net/projects-xml/${livecheck.name}/${livecheck.name}.xml or http://sourceforge.net/export/rss2_projfiles.php?project=${livecheck.name} or http://code.google.com/p/${livecheck.name}/downloads/list
livecheck.regex
regex ベースのチェックにおいて、リソースの切り分けをおこなう際に使う正規表現を指定します。バージョン番号に相当する部分を正規表現でグループ化しておくのを忘れないよう注意してください。
Type: optional
livecheck.md5
md5 の比較の際に使う md5 のチェックサム値を指定します。
Type: optional

[編集] VARIANT オプション

MacPorts では Portfile に指定された範疇でインストール条件の変更が可能であり、ソフトウェアのビルド時における設定のカスタマイズをユーザ側でおこなうことができます。
variant [requires variant] [conflicts variant] [description description]
値には大抵の場合、Portfile 中にある変数を少し変更する TCL スクリプトが入ります。同一 port 中における、他の variant に対する依存およびコンフリクトの関係については、requiresconflicts を併記することで表現可能となります。ユーザに対して variant の説明をおこないたい場合には、description を併用してください。
Type: optional
Example: Add a "gnome" variant to a port.
variant gnome requires glib { configure.args-append --with-gnome \
depends_lib-append lib:gnome-session:gnome-session }
default_variants
定義されると、default_variants のリストに含まれるバリアントの要素がデフォルトで有効になります。
Type: optional
Example:
default_variants +ssl +tcpd
universal_variant
MacPorts を Mac OS X 上で利用する際には universal variant がデフォルトで定義され、その動作としては、universal フラグ付きで ports のコンフィグをおこないます。(上記の UNIVERSAL ターゲットフック セクションを参照してください。) universal variant は、デフォルトのコードでは動作しない場合、上書きすることができます。また、universal variant が必要ない場合には、無効化することもできます。無効化する際には universal_variant オプションを使います。
Type: optional
Default: yes
Example:
universal_variant no

[編集] PLATFORM オプション

MacPorts では Portfile 中でプラットフォームに特化したコードを書くことができ、プラットフォーム間、および同一プラットフォームでのバージョン間における差異を吸収できます。
platform platform [version] [arch] body
指定された platform/version/arch の組み合わせが os.platform または os.subplatform かつ/または os.major かつ/または os.arch にマッチする場合、ボディの内容が実行されます。以下の例は databases/db4 および devel/libidll の Portfiles からそれぞれ引用したものです。
Type: optional
Example:
platform darwin 6 { configure.args-append --enable-tcl \
--with-tcl=/System/Library/Tcl/8.3 }
Example:
platform darwin powerpc { configure.args-append \
--host=${os.arch}-apple-rhapsody${os.version} }
platform darwin i386 { configure.args-append \
--host=i386-gnu-rhapsody${os.version} }

[編集] PORTGROUP

よく似た ports をグループ分けするため、MacPorts には PortGroup が用意されています。これを使って指定されたクラスまたは ports グループに関する定義を読み込むことができます。PortGroup クラスの詳細に関しては、portgroup(7) を参照してください。

[編集] TCL エクステンション

Portfiles 中では、多数の TCL エクステンションが利用可能です。
xinstall [-c] [-B suffix] [-b] [-C] [-f flags] [-g group] [-M] [-m mode] [-o owner] [-p] [-S] [-s] [-W dir] [file ...] destination
xinstall -d [-B suffix] [-b] [-C] [-f flags] [-g group] [-M] [-m mode] [-o owner] [-p] [-S] [-s] [-W dir] directory
ターゲットのファイル名として、あるいはディレクトリにファイルをインストールします。利用できるオプションは install(1) のものと互換性があります。
-b
.old という拡張子を付けて既存のファイルをバックアップします。
-B
-b フラグで使われるファイルの拡張子を指定します。
-c
ファイルをインストールします。(これがデフォルトの動作となります。)
-C
相違がある場合に限り、ファイルをコピーします。
-d
ディレクトリを作成します。(必要であれば) 親ディレクトリも作成します。
-f
ターゲットのフラグを指定します。詳しくは chflags(1) を参照してください。
-g
グループを指定します。
-M
mmap(2) の使用を無効にします。
-m
モードを指定します。デフォルトは 0755 です。詳しくは chmod(1) を参照してください。
-p
更新日時を保持します。
-S
一時ファイルを用いて安全なコピーを行います。
-s
strip(1) を用いてバイナリの strip をおこないます。
-W
作業をおこなう前にディレクトリを dir に変更します。
fs-traverse [-depth] [-ignoreErrors] varname target-list body
target-list で指定した各々の要素をルートとしてファイルシステムの階層構造を辿り、見つかったファイル/ディレクトリごとに body を実行します。varname にはファイル/ディレクトリのパスが設定されます。実行途中でbreak が呼ばれた場合には、ファイルシステムの巡回は終了します。continue が呼ばれた場合には、現在のファイルおよびその配下にあるファイルはスキップされ、巡回は継続されます。
-depth
find(1) における -d スイッチと同じ働きをします。-depth を利用した場合、配下のディレクトリから先に処理がおこなわれるようになるので、continue を使ったディレクトリの枝刈りがおこなえなくなる点に注意してください。
-ignoreErrors
fs-traverse の処理の最中にパーミッション/読み出しエラーが生じたとしても、無視するようにします。
シンボリックリンクに対して fs-traverse が呼び出された場合、そのリンクは辿られます。巡回中に見つかったリンクは辿られません。
fs-traverse は、ルートと異なるデバイス番号を持つディレクトリは辿りません。
もし巡回中にカレントディレクトリを削除した場合、fs-traverse がディレクトリを降下しないように continue を呼び出さなければなりません。
curl fetch url file
url にて示されたリソースを取得し、file にセーブします。
curl isnewer url date
url にて示されたリソースが date よりも新しいかどうかを調べます。(date は epoch 時からの秒数です。)
adduser username [uid=uid] [gid=gid] [passwd=passwd] [realname=realname] [home=home] [shell=shell]
指定した uid, gid, パスワード, 本名, ホームディレクトリ、ログインシェルを持つ 新しいローカルユーザをシステムに追加します。たいていの場合、adduser を直接呼び出すよりも、add_users オプションを設定するほうが好ましいといえます。なぜなら、adduser は全てのケースで動作するように考慮するならば、複数の場所に記述しなければならないからです。(たとえば、バイナリアーカイブからインストールする場合など。)
existsuser username
ローカルユーザが存在するかどうかを調べます。
nextuid
最も大きな uid + 1 の値を返します。
addgroup group [gid=gid] [passwd=passwd] [realname=realname] [users=users]
指定した gid, パスワード、リアルネーム、およびユーザのリストをメンバとして持つ 新しいローカルグループをシステムに追加します。
existsgroup group
ローカルグループが存在するかどうかを調べ、その gid を返します。adduser と一緒に使うことができます。
addgroup foo
adduser foo gid=[existsgroup foo]
nextgid
最も大きな gid + 1 の値を返します。
reinplace [-E] regex file ...
sed(1) ライクなファイルの編集処理をおこないます。-E フラグは sed(1) と同じ働きをします。
Example:
reinplace "s|/usr/local|${prefix}|g" doc/manpage.1
file
ファイルの名前と属性を操作する標準 TCL コマンドです。Mac OS X 10.3.x および Mac OS X 10.4.x 上において、destroot の際に Mac OS のリソースフォークを保持したい場合に推奨されます。拡張アトリビュート (たとえばアクセスコントロールリスト) を保持したい場合には同様に xinstall を使うようにしてください。詳しくは file(n) を参照してください。
copy
"file copy" と同じ働きをするビルトインの短縮コマンドです。
move
"file rename" と同じ働きをするビルトインの短縮コマンドです。
delete file ...
指定されたファイル/ディレクトリを削除します。挙動としては file delete -force に似ていますが、file delete -force だと 10.3 のシステムではディレクトリの削除に失敗してしまいます。その点が異なります。
touch
BSD の touch コマンドと似た働きをするビルトインコマンドです。
ln
BSD の ln コマンドと似た働きをするビルトインコマンドです。
system commandline
プログラムを実行します。詳しくは system(3) を参照してください。install(1) を呼び出す代わりに xinstall を使うようにしてください。また、mv(1), cp(1), rm(1) などを呼び出す代わりに組み込みのコマンド、もしくはそれが目的に合致しないようならば file を用いるようにしてください。
variant_isset variant
variant が指定されているかどうかを調べます。
variant_set variant
variant を指定します。
variable-append item
変数 variable に要素 item を追加します。
Example:
configure.args-append --with-gnomedb
variable-delete item
変数 variable から要素 item を削除します。
Example:
configure.args-delete --with-gnomedb
readdir directory
ディレクトリ directory に含まれる要素のリストを返します。. および .. は除外されます。
strsed string pattern
ed(1)/tr(1)ライクな文字列の検索、置換、翻字を行います。
mktemp template
template を使って一時ファイルを作成します。詳しくは mktemp(3) を参照してください。
mkstemp template
template を使って安全に一時ファイルを作成します。詳しくは mkstemp(3) を参照してください。
mkdtemp template
template を使って一時ファイルを作成します。詳しくは mkdtemp(3) を参照してください。
md5 file ...
ファイルの MD5 ハッシュ値を計算します。
rpm-vercomp versionA versionB
二つの RPM フォーマットで記されたバージョンを比較します。戻り値は strcmp() と同じように、versionA が versionB よりも古い、同じ、新しい場合にそれぞれ、-1, 0, または 1 が返されます。バージョン番号が浮動小数点表記の場合、正しい比較結果が得られないことがあります。たとえば、2.101 を 2.2 よりも新しいバージョンである(101 は 2 よりも大きい)とみなすのは、プロジェクトのバージョニングメソッドによっては正しくないことかも知れません。(チケット #11873 を参照)
lpush varName [value ...]
varName で与えられた変数をリストとして扱い、各々の value の引数を個別の要素としてリストの末尾に追加します。varName が存在しない場合には、value の引数で与えられた要素からなるリストを生成します。実際、lappend(n) に対する別名でしかありません。
lpop varName
varName で与えられたリストの末尾の要素を削除し、その要素を返します。リストに要素が無い場合には、空文字列が返されます。varName が存在しない場合には、例外が発生します。
lunshift varName [value ...]
varName で与えられた変数をリストとして扱い、各々の value の引数を個別の要素としてリストの先頭に追加します。varName 存在しない場合には、value の引数で与えられた要素からなるリストを生成します。
lshift varName
varName で与えられたリストの先頭の要素を削除し、その要素を返します。リストに要素が無い場合には、空文字列が返されます。varName が存在しない場合には、例外が発生します。
ldindex varName [index ...]
varName で与えられた変数をリストとして扱い、index で指定された番号の要素を削除し、その要素を返します。index の指定がない場合には、varName は空文字列になり、前に設定されていた値の全体が返されます。lindex(n) と同じような使いかたをします。
try body [catch { type-list [ecvar] [msgvar] [infovar] } body ...] [finally body]
TIP #89 で定義された try-catch-finally ブロックを実装します。
Example: Basic try-finally construct.
try {
set fd [open $file r]
# do stuff here
} finally {
close $fd
}
Example: Basic try-catch construct
try {
set result [expr $num / $div]
} catch {{ARITH DIVZERO}} {
set result -1
}
Example: Basic try with multiple catches construct
try {
set fd [open $file r]
# do stuff here
} catch {{POSIX ENOENT} {} msgvar} {
puts stderr $msgvar
} catch {*} {
puts stderr "An error occurred while processing the file"
close $fd
throw
}
throw [type] [message] [info]
例外を投げます。引数が与えられた場合、error message info type コマンドと同様の動作をします。引数が指定されずに catch ブロックの中から呼び出された場合には、捕捉された例外が再度投げられます。
ui_debug message
ui_error message
ui_info message
ui_msg message
ui_warn message
ユーザに対する様々なレベルの message を表示します。
Example:
ui_msg "Add each user to the system using the clamav command"

[編集] 参照

port(1), macports.conf(5), portgroup(7), portstyle(7), porthier(7), file(n)

[編集] 作者

Landon Fuller <landonf@macports.org>
Juan Manuel Palacios <jmpp@macports.org>
Mark Duling <markd@macports.org>
Kevin Van Vechten <kevin@opendarwin.org>
Jordan K. Hubbard <jkh@macports.org>
Chris Ridd <cjr@opendarwin.org>
Kevin Ballard <eridius@macports.org>
Markus W. Weissmann <mww@macports.org>
Darwin February 13, 2007 Darwin
個人用ツール
名前空間
変種
操作
案内
ツールボックス