blob: ab34c0bc66335d4dc1c5993b11cc86ecacd74853 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
---
title: 第7章 MASTERDIR
prev: books/porters-handbook/special
next: books/porters-handbook/shared
showBookMenu: true
weight: 7
path: "/books/porters-handbook/"
---
[[porting-masterdir]]
= `MASTERDIR`
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 7
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/porters-handbook/
ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]
ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
その port の変数 (たとえば解像度とか紙のサイズなど) を 変えたりした、少しだけ違うバージョンを作成する必要があるときには、 ユーザが分りやすいように package ごとに別々のサブディレクトリを作成し、 できるだけ port 間でファイルを共有するようにしてください。 ほとんどの場合、うまく変数を使えば、一つを除くすべてのディレクトリには とても短い [.filename]#Makefile# を置くだけで済みます。 その短い [.filename]#Makefile# では、 `MASTERDIR` を使って、 残りのファイルがあるディレクトリを指定できます。 また、<<porting-pkgname,`PKGNAMESUFFIX`>> の 一部に変数に使って、package が別々の名前を持つようにしてください。
具体的な例を示すのが一番わかりやすいでしょう。 これは [.filename]#japanese/xdvi300/Makefile# の一部です。
[.programlisting]
....
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
....
package:japanese/xdvi300[] には [.filename]#Makefile# の他に通常のパッチや、 package ファイル等が置かれています。 このディレクトリで `make` を実行すると、 デフォルトの解像度 (300) を使って、 普通に port のビルドを行ないます。
他の解像度に関していうと、 [.filename]#xdvi118/Makefile# に 必要なのは_これだけ_です:
[.programlisting]
....
RESOLUTION= 118
MASTERDIR= ${.CURDIR}/../xdvi300
.include "${MASTERDIR}/Makefile"
....
([.filename]#xdvi240/Makefile# や [.filename]#xdvi400/Makefile# も同様のものになります)。 [.filename]#bsd.port.mk# は、 `MASTERDIR` の定義から `FILESDIR` や `SCRIPTDIR` 等の 通常のサブディレクトリが [.filename]#xdvi300# 以下に存在することを理解します。 `RESOLUTION=118` の行が、 [.filename]#xdvi300/Makefile# の `RESOLUTION=300` の行を上書きし、 port は解像度を 118 として作成されます。
|