aboutsummaryrefslogtreecommitdiff
path: root/security/krb5-17/Makefile
blob: c6a442bee79e27c828105bdfc8b65b5ad973958b (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# Ports collection Makefile for:	MIT Kerberos V
# Version required:			1.0.5
# Date created:				6/5/1998
# Whom:					nectar@FreeBSD.ORG
#
# $Id: Makefile,v 1.9 1999/05/27 02:08:13 nectar Exp $
#

DISTNAME=		krb5-1.0.6
CATEGORIES=		security
MASTER_SITES=		# empty here.  See below for real setting.
DISTFILES=		krb5-1.0.6.src.tar.gz       \
			krb5-1.0.6.doc.tar.gz       \
			krb5-1.0.6.crypto.tar.gz

MAINTAINER=		nectar@FreeBSD.ORG

BUILD_DEPENDS=		gm4:${PORTSDIR}/devel/m4

DIST_SUBDIR=		krb5

# Deal with "secret" subdirectory on the canonical MASTER_SITE.
# If USA_RESIDENT=YES then:
#	we fetch from the canonical MASTER_SITE in the USA,
#	and deal with a "secret" subdirectory whose name
#	we obtain by using an awk script to search a README file.
# If USA_RESIDENT=NO then:
#	we fetch from a MASTER_SITE outside the USA,
#	and we don't need to deal with any "secret" subdirectory,
#	so we use an empty awk script.
README_KRB5=		README.KRB5-1.0.6
.if defined(USA_RESIDENT) && ${USA_RESIDENT} == "YES"
MASTER_SITES=		ftp://athena-dist.mit.edu/pub/kerberos/
AWK_SCRIPT=		'(/1\) Change into the directory/) { if (match($$0, "dist/[0-9]+")) print substr($$0, RSTART, RLENGTH) }'
.else
MASTER_SITES=		ftp://ftp.internat.freebsd.org/pub/FreeBSD/distfiles/
AWK_SCRIPT=		''
.endif

USE_GMAKE=		yes
GNU_CONFIGURE=		yes
CONFIGURE_ARGS?=	--enable-shared --with-ccopts="${CFLAGS}"
KRB5_KRB4_COMPAT?=	YES

.if !defined(KRB5_KRB4_COMPAT) || ${KRB5_KRB4_COMPAT} == "NO"
CONFIGURE_ARGS+=	--without-krb4
.endif

.if defined(KRB5_HOME)
PREFIX=			${KRB5_HOME}
.endif

RESTRICTED=		"Crypto; export-controlled"
# Set USA_RESIDENT appropriately in /etc/make.conf if you like

INFO_FILES=		krb425.info krb5-admin.info krb5-admin.info-1 \
			krb5-admin.info-2 krb5-admin.info-3 krb5-install.info \
			krb5-install.info-1 krb5-install.info-2 krb5-user.info

pre-fetch:
.if !defined(KRB5_KRB4_COMPAT)
	@${ECHO} "------------------------------------------------------"
	@${ECHO} "Set KRB5_KRB4_COMPAT=NO if you do not want to build   "
	@${ECHO} "the KerberosIV compatibility libraries.               "
	@${ECHO} "------------------------------------------------------"
.endif
.if defined(USA_RESIDENT) && ${USA_RESIDENT} == "YES"
	@${ECHO}
	@${ECHO} ">> If you are a US resident, understand that this software"
	@${ECHO} "   may be export restricted."
.elif defined(USA_RESIDENT) && ${USA_RESIDENT} == "NO"
	@${ECHO}
	@${ECHO} ">> If you are not a US resident, then you cannot obtain"
	@${ECHO} "   Kerberos V source from a server within the United"
	@${ECHO} "   States.  If automatic fetching of the sources from"
	@${ECHO} "   a server outside the US fails then you will have to"
	@${ECHO} "   find the sources elsewhere yourself, and put them"
	@${ECHO} "   in ${_DISTDIR}."
.else
	@${ECHO}
	@${ECHO} ">> You must set the variable USA_RESIDENT to YES if you are"
	@${ECHO} "   a United States resident, otherwise NO."
	@${ECHO} "   If you are a US resident, understand that this software"
	@${ECHO} "   may be export restricted."
	@${ECHO} "   If you are not a US resident, then you cannot obtain"
	@${ECHO} "   Kerberos V source from a server within the United"
	@${ECHO} "   States."
	@${FALSE}
.endif

MAN1=			krb5-send-pr.1 kpasswd.1 v5passwd.1 klist.1 kinit.1 \
			kdestroy.1 ksu.1 sclient.1 rsh.1 rcp.1 rlogin.1     \
			v4rcp.1 ftp.1 telnet.1 kerberos.1
MAN5=			kdc.conf.5 krb5.conf.5 .k5login.5
MAN8=			krb5kdc.8 kadmin.8 kadmin.local.8 kdb5_util.8 \
			ktutil.8 kadmind.8 kprop.8 kpropd.8 sserver.8 \
			kshd.8 klogind.8 login.krb5.8 ftpd.8 telnetd.8

WRKSRC=			${WRKDIR}/${DISTNAME}/src
RECONF_COOKIE=		${WRKDIR}/.reconf_done

WANT_HTML?=		YES
HTML_DOC_DIR=		${WRKDIR}/${DISTNAME}/doc
HTML_DOCS=		admin.html install_foot.html user-guide.html          \
			admin_foot.html install_toc.html user-guide_foot.html \
			admin_toc.html krb425.html user-guide_toc.html        \
			install.html krb425_toc.html
SETUID_EXE=		bin/ksu bin/v4rcp

CHOWN?=		chown
SUPERUSER?=	root

.include <bsd.port.pre.mk>

do-fetch:
	@${MKDIR} ${_DISTDIR}
	@(cd ${_DISTDIR};                 \
	if [ ! -f ${README_KRB5} ]; then  \
	for site in ${MASTER_SITES}; do   \
		${ECHO_MSG} ">> Attempting to fetch ${README_KRB5} from $${site}."; \
		if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}/${README_KRB5} \
			${FETCH_AFTER_ARGS}; then \
			break;                    \
		fi                                \
	done; fi; ${DO_NADA})
	@(if [ ! -f ${_DISTDIR}/${README_KRB5} ]; then \
		${ECHO_MSG} ">> Couldn't fetch it - please try to retrieve";  \
		${ECHO_MSG} ">> this port manually into ${_DISTDIR} and try"; \
		${ECHO_MSG} ">> again."; \
		${FALSE};                \
	fi)
	@${MKDIR} ${_DISTDIR}
	@(cd ${_DISTDIR}; \
	 secret=`${AWK} ${AWK_SCRIPT} < ${_DISTDIR}/${README_KRB5}`; \
	 for file in ${DISTFILES}; do \
		if [ ! -f $$file -a ! -f `${BASENAME} $$file` ]; then \
			if [ -h $$file -o -h `${BASENAME} $$file` ]; then \
				${ECHO_MSG} ">> ${_DISTDIR}/$$file is a broken symlink."; \
				${ECHO_MSG} ">> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
				${ECHO_MSG} ">> Please correct this problem and try again."; \
				exit 1; \
			fi ; \
			${ECHO_MSG} ">> $$file doesn't seem to exist on this system."; \
			for site in ${MASTER_SITES}; do \
			    ${ECHO_MSG} ">> Attempting to fetch from $${site}/$${secret}."; \
				if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}/$${secret}/$${file} ${FETCH_AFTER_ARGS}; then \
					continue 2; \
				fi \
			done; \
			${ECHO_MSG} ">> Couldn't fetch it - please try to retrieve this";\
			${ECHO_MSG} ">> port manually into ${_DISTDIR} and try again."; \
			exit 1; \
	    fi \
	 done)

pre-configure: ${RECONF_COOKIE}

${RECONF_COOKIE}:
	${SETENV} PORTOBJFORMAT="${PORTOBJFORMAT}" \
	${SH} -c 'cd ${WRKSRC}/util/autoconf && ./configure && ${GMAKE} && cd ${WRKSRC} && ./util/reconf --force'
	${TOUCH} ${RECONF_COOKIE}

post-build:
	@(cd ${WRKSRC}/../doc && \
	${MAKE} ${INFO_FILES})

post-install:
# XXX Not sure why tmac.doc is installed here -- I don't think
#     we need it.  I should patch the distribution to not install
#     it, I think.
	@rm -f ${PREFIX}/man/man1/tmac.doc
# shared libs
	${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m ${PREFIX}/lib
# html documentation
.if defined(WANT_HTML) && ${WANT_HTML} == "YES"
	@${MKDIR} ${PREFIX}/share/doc/krb5
.for html in ${HTML_DOCS}
	${INSTALL_MAN} ${HTML_DOC_DIR}/${html} ${PREFIX}/share/doc/krb5
.endfor
.endif
# fixup setuid executables
.for setuid in ${SETUID_EXE}
	${CHOWN} ${SUPERUSER} ${PREFIX}/${setuid}
.endfor
# handle info files
.for info in ${INFO_FILES}
	${INSTALL_MAN} ${WRKSRC}/../doc/${info} ${PREFIX}/info/${info}
.endfor
.for info in ${INFO_FILES:M*.info}
	install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir
.endfor
# fixup packing list (no libs without version numbers in aout case)
.if ${PORTOBJFORMAT} == "aout"
	${ECHO_MSG} "Fixing packing list for a.out"
	${MV} ${TMPPLIST} ${TMPPLIST}.new
	${GREP} -v '\.so$$' ${TMPPLIST}.new > ${TMPPLIST}
	${RM} ${TMPPLIST}.new
.endif

.include <bsd.port.post.mk>

# XXX deal with these patches:
# patch-aw