7c8d3d128a2afa73813c009427eae7f2311bcba1
[pkgsrc.git] / net / samba / Makefile
1 # $NetBSD: Makefile,v 1.199 2010/04/14 14:51:00 sborrill Exp $
2
3 .include "Makefile.mirrors"
4
5 DISTNAME=               samba-${VERSION}
6 PKGREVISION=            2
7 CATEGORIES=             net
8 MASTER_SITES=           ${SAMBA_MIRRORS:=old-versions/}
9
10 .include "Makefile.patches"
11
12 MAINTAINER=             pkgsrc-users@NetBSD.org
13 HOMEPAGE=               http://www.samba.org/
14 COMMENT=                SMB/CIFS protocol server suite
15 LICENSE=                gnu-gpl-v2
16
17 VERSION=                3.0.37
18 CONFLICTS+=             ja-samba-[0-9]* pam-smbpass-[0-9]* tdb-[0-9]*   \
19                         winbind-[0-9]*
20 MAKE_JOBS_SAFE=         NO
21
22 PKG_DESTDIR_SUPPORT=    user-destdir
23
24 WRKSRC=                 ${WRKDIR}/${DISTNAME}/source
25 GNU_CONFIGURE=          yes
26 BUILD_DEFS+=            VARBASE
27 CHECK_WRKREF_SKIP=      *
28
29 .include "../../mk/bsd.prefs.mk"
30
31 PKG_SYSCONFSUBDIR?=     samba
32 SAMBA_ETCDIR?=          ${PKG_SYSCONFDIR}
33 SAMBA_LIBDIR?=          ${PREFIX}/lib/samba
34 SAMBA_LOCKDIR?=         ${SAMBA_VARDIR}/run/samba
35 SAMBA_LOGDIR?=          ${SAMBA_VARDIR}/log
36 SAMBA_PIDDIR?=          ${SAMBA_VARDIR}/run
37 SAMBA_PRIVATE?=         ${SAMBA_ETCDIR}/private
38 SAMBA_STATEDIR?=        ${SAMBA_VARDIR}/db/samba
39 SAMBA_VARDIR?=          ${VARBASE}
40 WINBINDD_RCD_SCRIPT=    # empty
41
42 FILES_SUBST+=           SAMBA_ETCDIR=${SAMBA_ETCDIR:Q}
43 FILES_SUBST+=           SAMBA_LOCKDIR=${SAMBA_LOCKDIR:Q}
44 FILES_SUBST+=           SAMBA_LOGDIR=${SAMBA_LOGDIR:Q}
45 FILES_SUBST+=           SAMBA_PIDDIR=${SAMBA_PIDDIR:Q}
46 FILES_SUBST+=           SAMBA_PRIVATE=${SAMBA_PRIVATE:Q}
47 FILES_SUBST+=           SAMBA_STATEDIR=${SAMBA_STATEDIR:Q}
48 FILES_SUBST+=           SAMBA_VARDIR=${SAMBA_VARDIR:Q}
49 FILES_SUBST+=           WINBINDD_RCD_SCRIPT=${WINBINDD_RCD_SCRIPT:Q}
50
51 CONFIGURE_ARGS+=        --with-configdir=${SAMBA_ETCDIR:Q}
52 CONFIGURE_ARGS+=        --with-libdir=${SAMBA_LIBDIR:Q}
53 CONFIGURE_ARGS+=        --with-lockdir=${SAMBA_LOCKDIR:Q}
54 CONFIGURE_ARGS+=        --with-logfilebase=${SAMBA_LOGDIR:Q}
55 CONFIGURE_ARGS+=        --with-piddir=${SAMBA_PIDDIR:Q}
56 CONFIGURE_ARGS+=        --with-privatedir=${SAMBA_PRIVATE:Q}
57 CONFIGURE_ARGS+=        --with-statedir=${SAMBA_STATEDIR:Q}
58 CONFIGURE_ARGS+=        --localstatedir=${SAMBA_VARDIR:Q}
59
60 CONFIGURE_ARGS+=        --with-mandir=${PREFIX:Q}/${PKGMANDIR:Q}
61 CONFIGURE_ARGS+=        --with-swatdir=${PREFIX:Q}/share/samba/swat
62
63 .include "../../converters/libiconv/buildlink3.mk"
64 CONFIGURE_ARGS+=        --with-libiconv=${BUILDLINK_PREFIX.iconv}
65
66 USE_GNU_READLINE=       yes
67 .include "../../devel/readline/buildlink3.mk"
68 CONFIGURE_ARGS+=        --with-readline=${BUILDLINK_PREFIX.readline}
69
70 .include "options.mk"
71
72 # Only Linux supports mount.cifs for mounting a CIFS share into the
73 # filesystem.
74 #
75 PLIST_VARS+=            cifsmount
76 .if ${OPSYS} == "Linux"
77 CONFIGURE_ARGS+=        --with-cifsmount
78 PLIST.cifsmount=        yes
79 .endif
80
81 # mktemp is useful for the replacement adduser script, but don't require
82 # a full dependency since it's not actually needed by samba.
83 #
84 USE_TOOLS+=             mktemp
85
86 # findsmb uses perl
87 #
88 USE_TOOLS+=             perl:run
89 REPLACE_PERL=           script/findsmb.in
90
91 .if !defined(PWD_MKDB)
92 PWD_MKDB!=      ${TYPE} pwd_mkdb 2>&1 | \
93                 ${AWK} '/not found/ { print "pwd_mkdb"; exit } { print $$3 }'
94 MAKEFLAGS+=     PWD_MKDB=${PWD_MKDB:Q}
95 .endif
96 FILES_SUBST+=   MKTEMP=${MKTEMP:Q}
97 FILES_SUBST+=   PWD_MKDB=${PWD_MKDB:Q}
98
99 DOCDIR=         share/doc/${PKGBASE}
100 EGDIR=          share/examples/${PKGBASE}
101
102 INSTALLATION_DIRS+=     ${DOCDIR} ${EGDIR}
103
104 CONF_FILES=             ${PREFIX}/${EGDIR}/smb.conf.default ${SAMBA_ETCDIR}/smb.conf
105 MAKE_DIRS=              ${SAMBA_VARDIR} ${SAMBA_LOGDIR} ${SAMBA_PIDDIR}
106 OWN_DIRS=               ${SAMBA_ETCDIR} ${SAMBA_LOCKDIR} ${SAMBA_STATEDIR}
107 OWN_DIRS_PERMS=         ${SAMBA_PRIVATE} ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 0700
108 RCD_SCRIPTS+=           samba nmbd smbd ${WINBINDD_RCD_SCRIPT}
109
110 SUBST_CLASSES+=         paths
111 SUBST_FILES.paths=      ${WRKDIR}/adduser.sh ${WRKDIR}/deluser.sh
112 SUBST_SED.paths+=       -e 's,@AWK@,${AWK},g' -e 's,@CAT@,${CAT},g'
113 SUBST_SED.paths+=       -e 's,@MKTEMP@,${MKTEMP},g' -e 's,@RM@,${RM},g'
114 SUBST_SED.paths+=       -e 's,@PWD_MKDB@,${PWD_MKDB},g' -e 's,@SH@,${SH},g'
115 SUBST_STAGE.paths=      post-patch
116
117 # Get the shared library major and minors for the installed shared
118 # libraries.  We'll need these to create the versioned symlinks for
119 # the shared libraries because samba Makefile doesn't do it on its
120 # own.
121 #
122 SAMBA_LIBS=             smbclient msrpc smbsharemodes addns
123
124 .PHONY: install-samba-lib-symlinks
125 .for l in ${SAMBA_LIBS}
126 .  for NUM in MAJOR MINOR
127 LIB${NUM}_cmd.${l}=     ${AWK} -F= '/^LIB${l:tu}_${NUM}/ { print $$2; }' \
128                                 ${WRKSRC:Q}/Makefile.in
129 LIB${NUM}.${l}=         ${LIB${NUM}_cmd.${l}:sh}
130 PLIST_SUBST+=           LIB${NUM}.${l}=${LIB${NUM}.${l}}
131 .  endfor
132
133 SAMBA_VERSIONS.${l}=    ${LIBMAJOR.${l}} ${LIBMAJOR.${l}}.${LIBMINOR.${l}}
134
135 .PHONY: install-samba-lib-symlinks-${l}
136 install-samba-lib-symlinks: install-samba-lib-symlinks-${l}
137 install-samba-lib-symlinks-${l}:
138         for v in ${SAMBA_VERSIONS.${l}}; do                             \
139                 cd ${DESTDIR}${SAMBA_LIBDIR} &&                         \
140                         rm -f lib${l}.so.$$v &&                         \
141                         ln -s lib${l}.so lib${l}.so.$$v;                \
142         done
143 .endfor
144
145 post-extract:
146         ${CP} ${FILESDIR}/adduser.sh ${FILESDIR}/deluser.sh ${WRKDIR}
147
148 post-install: install-samba-lib-symlinks
149         ${RMDIR} ${DESTDIR}${PREFIX}/share/samba/swat/js
150         ${RMDIR} ${DESTDIR}${PREFIX}/share/samba/swat/lang/ja/include
151         ${RMDIR} ${DESTDIR}${PREFIX}/share/samba/swat/lang/ja/images
152         ${RMDIR} ${DESTDIR}${PREFIX}/share/samba/swat/lang/ja/js
153         ${RMDIR} ${DESTDIR}${PREFIX}/share/samba/swat/lang/tr/include
154         ${RMDIR} ${DESTDIR}${PREFIX}/share/samba/swat/lang/tr/js
155         for d in idmap pdb rpc; do                                      \
156                 ${RMDIR} ${DESTDIR}${SAMBA_LIBDIR}/$$d;                 \
157         done
158         cd ${WRKDIR}/${DISTNAME}/docs/registry; for f in *.reg; do      \
159                 ${INSTALL_DATA} $${f} ${DESTDIR}${PREFIX}/${DOCDIR}/$${f}; \
160         done
161         ${INSTALL_SCRIPT} ${WRKDIR}/adduser.sh ${DESTDIR}${PREFIX}/${EGDIR}/adduser.sh
162         ${INSTALL_SCRIPT} ${WRKDIR}/deluser.sh ${DESTDIR}${PREFIX}/${EGDIR}/deluser.sh
163         cd ${WRKDIR}/${DISTNAME}/examples; \
164                 ${INSTALL_DATA} LDAP/samba.schema ${DESTDIR}${PREFIX}/${EGDIR}; \
165                 ${INSTALL_DATA} smb.conf.default ${DESTDIR}${PREFIX}/${EGDIR}
166         cd ${WRKSRC}/script; ${INSTALL_SCRIPT} mknissmbpasswd.sh ${DESTDIR}${PREFIX}/${EGDIR}
167         cd ${WRKSRC}/script; ${INSTALL_SCRIPT} mknissmbpwdtbl.sh ${DESTDIR}${PREFIX}/${EGDIR}
168         cd ${WRKSRC}/script; ${INSTALL_SCRIPT} mksmbpasswd.sh ${DESTDIR}${PREFIX}/${EGDIR}
169         cd ${WRKSRC}/script; ${INSTALL_SCRIPT} updatesmbpasswd.sh ${DESTDIR}${PREFIX}/${EGDIR}
170         ${CHMOD} ${SHAREMODE} ${DESTDIR}${PREFIX}/include/libmsrpc.h \
171                 ${DESTDIR}${PREFIX}/include/libsmbclient.h
172
173 .include "../../security/openssl/buildlink3.mk"
174 .include "../../devel/popt/buildlink3.mk"
175 .include "../../mk/bsd.pkg.mk"