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
|
SECTION = "console/network"
LICENSE = "GPL-3.0"
DEPENDS = "readline virtual/libiconv zlib popt"
SRC_URI = "http://samba.org/samba/ftp/stable/samba-${PV}.tar.gz \
file://volatiles.03_samba \
file://smb.conf \
file://init.samba \
file://init.winbind \
file://tdb.pc \
file://nmb.service \
file://smb.service \
file://winbind.service \
"
S = "${WORKDIR}/samba-${PV}/source"
inherit autotools-brokensep update-rc.d systemd
SYSTEMD_PACKAGES = "${PN} winbind"
SYSTEMD_SERVICE_${PN} = "nmb.service smb.service"
SYSTEMD_SERVICE_winbind = "winbind.service"
SAMBAMMAP = "no"
SAMBAMMAP_libc-glibc = "yes"
# The file system settings --foodir=dirfoo and overridden unconditionally
# in the samba config by --with-foodir=dirfoo - even if the --with is not
# specified! Fix that here. Set the privatedir to /etc/samba/private.
EXTRA_OECONF='--disable-cups \
--with-readline=${STAGING_LIBDIR}/.. \
--with-libiconv=${STAGING_LIBDIR}/.. \
--without-automount \
--with-configdir=${sysconfdir}/samba \
--with-privatedir=${sysconfdir}/samba/private \
--with-lockdir=${localstatedir}/lock \
--with-piddir=${localstatedir}/run \
--with-logfilebase=${localstatedir}/log \
--libdir=${libdir} \
--with-mandir=${mandir} \
--with-swatdir=${datadir}/swat \
--with-aio-support \
--with-winbind \
--with-wbclient \
--without-acl-support \
--disable-avahi \
samba_cv_struct_timespec=yes \
libreplace_cv_HAVE_MMAP=${SAMBAMMAP}'
PACKAGECONFIG = "${@base_contains('DISTRO_FEATURES', 'pam', 'pam', '', d)}"
PACKAGECONFIG[pam] = "--with-pam,--without-pam,libpam"
PACKAGECONFIG[fam] = "--enable-fam,--disable-fam,gamin"
PACKAGECONFIG[talloc] = "--enable-external-libtalloc --with-libtalloc, --disable-external-libtalloc --without-libtalloc, talloc"
INITSCRIPT_PACKAGES = "samba winbind"
INITSCRIPT_NAME_samba = "samba"
INITSCRIPT_NAME_winbind = "winbind"
# No dependencies, goes in at level 20 (NOTE: take care with the
# level, later levels put the shutdown later too - see the links
# in rc6.d, the shutdown must precede network shutdown).
INITSCRIPT_PARAMS = "defaults"
CONFFILES_${PN} = "${sysconfdir}/samba/smb.conf"
do_configure_prepend () {
./script/mkversion.sh
if [ ! -e acinclude.m4 ]; then
touch aclocal.m4
cat aclocal.m4 > acinclude.m4
fi
}
do_compile () {
oe_runmake proto_exists
base_do_compile
}
do_install_append() {
install -d ${D}${libdir}/pkgconfig/
cp ${WORKDIR}/tdb.pc ${D}${libdir}/pkgconfig/
mv ${D}${libdir}/libsmbclient.so ${D}${libdir}/libsmbclient.so.0 || true
ln -sf libsmbclient.so.0 ${D}${libdir}/libsmbclient.so
mkdir -p ${D}${base_sbindir}
rm -f ${D}${bindir}/*.old
rm -f ${D}${sbindir}/*.old
[ -f ${D}${sbindir}/mount.cifs ] && mv ${D}${sbindir}/mount.cifs ${D}${base_sbindir}/
[ -f ${D}${sbindir}/umount.cifs ] && mv ${D}${sbindir}/umount.cifs ${D}${base_sbindir}/
# This is needed for < 3.2.4
rm -f ${D}${sbindir}/mount.smbfs ${D}${base_sbindir}/mount.smbfs
if [ -f ${D}${bindir}/smbmount ]; then
ln -sf ${bindir}/smbmount ${D}${base_sbindir}/mount.smb
ln -sf ${bindir}/smbmount ${D}${base_sbindir}/mount.smbfs
fi
install -D -m 755 ${WORKDIR}/init.samba ${D}${sysconfdir}/init.d/samba
install -D -m 755 ${WORKDIR}/init.winbind ${D}${sysconfdir}/init.d/winbind
install -D -m 644 ${WORKDIR}/smb.conf ${D}${sysconfdir}/samba/smb.conf
install -D -m 644 ${WORKDIR}/volatiles.03_samba ${D}${sysconfdir}/default/volatiles/volatiles.03_samba
install -d ${D}/var/log/samba
install -d ${D}/var/spool/samba
# Install other stuff not installed by "make install"
if [ -d ${WORKDIR}/${PN}-${PV}/nsswitch ]; then
install -m 0644 ${WORKDIR}/${PN}-${PV}/nsswitch/libnss_winbind.so ${D}${libdir}/libnss_winbind.so.2
install -m 0644 ${WORKDIR}/${PN}-${PV}/nsswitch/libnss_wins.so ${D}${libdir}/libnss_wins.so.2
fi
rmdir --ignore-fail-on-non-empty ${D}${base_sbindir}
sed -i -e '1s,#!.*perl,#!${USRBINPATH}/env perl,' ${D}${bindir}/findsmb
# usershare mount place
mkdir -p ${D}${localstatedir}/lib/samba/usershares
# Remove sysinit script if sysvinit is not in DISTRO_FEATURES
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'false', 'true', d)}; then
rm -rf ${D}${sysconfdir}/init.d/
fi
install -d ${D}${systemd_unitdir}/system
for i in nmb smb winbind; do
install -m 0644 ${WORKDIR}/$i.service ${D}${systemd_unitdir}/system
done
sed -e 's,@BASE_BINDIR@,${base_bindir},g' \
-e 's,@SBINDIR@,${sbindir},g' \
-i ${D}${systemd_unitdir}/system/*.service
}
DEPENDS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd-systemctl-native', '', d)}"
pkg_postinst_${PN} () {
if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd sysvinit', 'true', 'false', d)}; then
if [ -n "$D" ]; then
OPTS="--root=$D"
fi
systemctl $OPTS mask samba.service
fi
}
pkg_postinst_libnss-winbind () {
# add wins to the list of resolvers
ns=$D${sysconfdir}/nsswitch.conf
if ! grep "hosts:.*wins" $ns > /dev/null; then
hosts="`grep '^hosts:' $ns`"
hosts=`echo "$hosts" | sed 's/\[/\\\\[/g; s/\]/\\\\]/g'`
sed -i "s/$hosts/$hosts wins/" "$ns"
fi
}
|