aboutsummaryrefslogtreecommitdiffstats
path: root/net/openafs/Makefile
blob: fea2470dbc6b7362dcccd920f6895f2a05753dd3 (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
# $FreeBSD$

PORTNAME=   openafs
DISTVERSION=    ${AFS_DISTVERSION}.${DBVERSION:S/-//g}
CATEGORIES= net
MASTER_SITES=   http://dl.central.org/dl/openafs/${AFS_DISTVERSION}/:openafs \
        http://dl.openafs.org/dl/openafs/${AFS_DISTVERSION}/:openafs \
        http://dl.central.org/dl/cellservdb/:gco \
        http://grand.central.org/dl/cellservdb/:gco
DISTFILES=  ${PORTNAME}-${AFS_DISTVERSION}-src.tar.bz2:openafs \
        ${PORTNAME}-${AFS_DISTVERSION}-doc.tar.bz2:openafs \
        CellServDB.${DBVERSION}:gco
EXTRACT_ONLY=   ${PORTNAME}-${AFS_DISTVERSION}-src.tar.bz2 \
        ${PORTNAME}-${AFS_DISTVERSION}-doc.tar.bz2

MAINTAINER= bjk@FreeBSD.org
COMMENT=    AFS implementation from openafs.org

LICENSE=    IPLv1
LICENSE_NAME=   IBM Public License Version 1.0
LICENSE_FILE=   ${WRKSRC}/doc/LICENSE
LICENSE_PERMS=  dist-mirror dist-sell pkg-mirror pkg-sell auto-accept

BROKEN=     fails to build
ONLY_FOR_ARCHS= i386 amd64

AFS_DISTVERSION=    1.6.22
DBVERSION=  2016-01-01

USES=       cpe kmod tar:bzip2
USE_LDCONFIG=   yes
HAS_CONFIGURE=  yes
CONFIGURE_ENV=  _XCFLAGS="${CFLAGS} -fPIC" \
        _PAM_CFLAGS="${CFLAGS} -fPIC" \
        _MT_LIBS="-lpthread"
CONFIGURE_ARGS= --prefix=${PREFIX} \
        --localstatedir=/var \
        --mandir=${MANPREFIX}/man \
        --with-bsd-kernel-headers=${SRC_BASE}/sys \
        --with-bsd-kernel-build=${WRKDIR}/conf \
        --enable-debug \
        --enable-debug-kernel \
        --enable-debug-lwp \
        --includedir=${PREFIX}/include/openafs \
        ${CONFIGURE_TARGET}
WRKSRC=     ${WRKDIR}/${PORTNAME}-${AFS_DISTVERSION}
MAKE_ENV=   COMPILER_TYPE=${COMPILER_TYPE}
USE_RC_SUBR=    afsserver

CPE_VERSION=    ${AFS_DISTVERSION}

CONFLICTS=  coda-server-6.[0-9]* heimdal-[0-9]*

MAKE_JOBS_UNSAFE=   yes

AFSMNTDIR?= /afs
AFSSTATEDIR?=   /var/${PORTNAME}
AFSCACHEDIR?=   ${AFSSTATEDIR}/cache
PLIST_SUB+= AFSMNTDIR=${AFSMNTDIR:C,^/,,} \
        AFSSTATEDIR=${AFSSTATEDIR:C,^/,,} \
        AFSCACHEDIR=${AFSCACHEDIR:C,^/,,}

# clang (the base system compiler in __FreeBSD_version 1000024 and later)
# is pickier about stack alignment than gcc; OpenAFS uses its own
# lightweight process "threading" library which will produce a misaligned
# stack under clang; we need to pass -mstackrealign to avoid SIGBUS at
# runtime.  gcc does not understand this flag, so we use compiler.mk to
# figure out what type of compiler is in use.
USES+=      compiler

OPTIONS_DEFINE= FUSE
FUSE_USES=  fuse
OPTIONS_SUB=    yes
FUSE_CONFIGURE_OFF= --disable-fuse-client

.include <bsd.port.pre.mk>

.if ${COMPILER_TYPE} == clang
CFLAGS+=    -mstackrealign
.endif

.if ${OSREL:R} >= 11
# Upstream does not support the client on 11 and newer
CONFIGURE_ARGS += --disable-kernel-module
PLIST_SUB+= KMOD="@comment "

post-install:
    @${RMDIR} ${STAGEDIR}${PREFIX}/lib/openafs
.else
CONFIGURE_ARGS += --enable-kernel-module
PLIST_SUB+= KMOD=
USE_RC_SUBR+= afsd

KERNCONF?=  GENERIC
KERNCONFDIR?=   ${SRC_BASE}/sys/${ARCH}/conf

# Use the first component of ${KERNCONF}.
.for K in ${KERNCONF}
_KERNCONF?=$K
.endfor

.if !exists(${KERNCONFDIR}/${_KERNCONF})
IGNORE= requires kernel configuration file ${_KERNCONF} to build
.endif

# Do not show users the reminder about cleandepend and depend
post-extract:
    ${MKDIR} ${WRKDIR}/conf
    cd ${KERNCONFDIR} && \
        /usr/sbin/config -d ${WRKDIR}/conf ${_KERNCONF} >/dev/null

create-sample-files:
    @${ECHO_CMD} openafs.org > ${WRKDIR}/ThisCell
    @${ECHO_CMD} "${AFSMNTDIR}:${AFSCACHEDIR}:150000" > ${WRKDIR}/cacheinfo
    ${INSTALL_DATA} ${DISTDIR}/CellServDB.${DBVERSION} ${WRKDIR}/CellServDB

post-install: create-sample-files
    @${MKDIR} ${STAGEDIR}${ETCDIR}
.for F in CellServDB ThisCell cacheinfo
    ${INSTALL_DATA} ${WRKDIR}/${F} ${STAGEDIR}${ETCDIR}/${F}.sample
.endfor
    ${INSTALL_KLD} ${STAGEDIR}${PREFIX}/lib/openafs/libafs.ko \
        ${STAGEDIR}${KMODDIR}
    @${RM} ${STAGEDIR}${PREFIX}/lib/openafs/libafs.ko
    @${RMDIR} ${STAGEDIR}${PREFIX}/lib/openafs
    @${MKDIR} ${STAGEDIR}${AFSMNTDIR} \
        ${STAGEDIR}${AFSSTATEDIR} ${STAGEDIR}${AFSCACHEDIR}
.endif # ${OSREL} blacklist

.include <bsd.port.post.mk>