samba/samba.spec
2023-09-30 10:58:22 +00:00

1576 lines
51 KiB
RPMSpec

# Useful commands for testing domain controller/OpenLDAP replacement
# functionality:
#
# Set up initial domain controller:
# samba-tool domain provision --realm=LINDEV.CH --domain=LINDEV --adminpass='PASSWORD' --server-role='domain controller'
# Query:
# ldapsearch -H ldap://127.0.0.1 -x -w 'PASSWORD' -b "DC=lindev,DC=ch" -D "CN=Administrator,CN=Users,DC=lindev,DC=ch"
# With TLS:
# ldapsearch -Z -H ldaps://127.0.0.1:636 -x -w 'PASSWORD' -b "DC=lindev,DC=ch" -D "CN=Administrator,CN=Users,DC=lindev,DC=ch"
#
# To view current parameters, including directories: sbmd -b
#######
# TODO: ctdb (--with-cluster-support)
# Build order of the dependency chain of samba:
# tdb lmdb talloc
# tevent
# ldb
# samba
%define libsmbmajor 0
%define netapimajor 1
%define dcerpcmajor 0
%define hostconfigmajor 0
%define ndrmajor 3
%define krbmajor 0
%define nbtmajor 0
%define standardmajor 0
%define wbclientmajor 0
%define sambautilmajor 0
%define samdbmajor 0
%define policymajor 0
%define passdbmajor 0
%define credentialsmajor 1
%define smbconfmajor 0
%define smbldapmajor 2
%define tevent_utilmajor 0
#%%define pytalloc_utilmajor 2
%define nsswinsmajor 2
%define winbindmajor 2
%define sambaerrorsmajor 1
# Useless check which prints tones of rubbish because of missing RPATHs
# (see comments about RPATHs bellow)
%define dont_check_elf_files 1
# There are many unversioned *.so libraries which are not symlinks
# and are not devel stuff, disable devel-rpm-generator requires completely.
%global __develgen_requires %{nil}
# Default options
# gcc5 seems to build a bit faster than clang6
%bcond_with clang
%bcond_with doc
%bcond_without test
# Bundled avahi config (off by default,
# because GVFS/KIO find Samba shares automatically and make duplicates otherwise)
# We also use --enable-avahi in build options
%bcond_with avahi_service
# zerro is a dummy value bellow #
# this package does not contain libraries
%define libs_config %mklibname samba-libs-config 0
# In these packages libraries are private and unversioned
%define libsambalibs %mklibname samba-private
%define winbind_krb5_locator %mklibname winbind-krb5-locator 0
# transitional name (obsoleted by samba-libs)
%define libsambaserver %mklibname samba-server 0
%define libname %mklibname smbclient %{libsmbmajor}
%define devname %mklibname smbclient -d
%define libnetapi %mklibname netapi %{netapimajor}
%define netapidevel %mklibname netapi -d
%define libdcerpc %mklibname dcerpc %{dcerpcmajor}
%define libdcerpc_binding %mklibname dcerpc-binding %{dcerpcmajor}
%define libdcerpc_samr %mklibname dcerpc-samr %{dcerpcmajor}
%define libdcerpc_server %mklibname dcerpc-server %{dcerpcmajor}
%define libdcerpc_servercore %mklibname dcerpc-server-core %{dcerpcmajor}
%define dcerpcdevel %mklibname dcerpc -d
%define libsambahostconfig %mklibname samba-hostconfig %{hostconfigmajor}
%define sambahostconfigdevel %mklibname samba-hostconfig -d
%define libndr %mklibname ndr %{ndrmajor}
%define libndr_krb5pac %mklibname libndr-krb5pac %{krbmajor}
%define libndr_nbt %mklibname libndr-nbt %{nbtmajor}
%define libndr_standard %mklibname libndr-standard %{standardmajor}
%define ndrdevel %mklibname ndr -d
%define libwbclient %mklibname wbclient %{wbclientmajor}
%define wbclientdevel %mklibname wbclient -d
%define libsambautil %mklibname samba-util %{sambautilmajor}
%define sambautildevel %mklibname samba-util -d
%define libpolicy %mklibname samba-policy %{policymajor}
%define libpolicydevel %mklibname samba-policy -d
%define libsamdb %mklibname samdb %{samdbmajor}
%define libsamdbdevel %mklibname samdb -d
%define libsambapassdb %mklibname samba-passdb %{passdbmajor}
%define libcredentials %mklibname samba-credentials %{credentialsmajor}
%define libsmbconf %mklibname smbconf %{smbconfmajor}
%define libsmbldap %mklibname smbldap %{smbldapmajor}
%define libtevent_util %mklibname tevent-util %{tevent_utilmajor}
%define libnsswins %mklibname nsswins %{nsswinsmajor}
%define libwinbind %mklibname winbind %{winbindmajor}
%define libsambaerrors %mklibname samba-errors %{sambaerrorsmajor}
%global smb_usershare_dir %{_localstatedir}/lib/samba/usershare
# Needed because versioned public libraries depend from unversioned private ones
%define samba_soname_changed_meta() %{expand:
Obsoletes: %{1} < %{2}
Conflicts: %{1} < %{2}
}
Summary: Samba SMB server
Name: samba
Version: 4.18.3
Release: 3
Epoch: 1
License: GPLv3+
Group: System/Servers
Url: http://www.samba.org
Source0: http://ftp.samba.org/pub/samba/stable/samba-%{version}.tar.gz
Source1: samba.log
Source10: samba-print-pdf.sh
Source28: samba.pamd
Source29: system-auth-winbind.pamd
Source41: openldap-samba.conf
%if %{with avahi_service}
Source42: avahi_samba.xml
%endif
Source43: samba-server.sysusers.conf
Source100: %{name}.rpmlintrc
Patch2: samba-4.3.11-winbind-service.patch
Patch8: ROSA-bind-GID.patch
Patch10: ROSA-vendor-version.patch
Patch11: ROSA-smb-default-config.patch
Patch12: ROSA-Clearer-debug-about-ulimits.patch
# https://bugzilla.rosalinux.ru/show_bug.cgi?id=10068
# Rediffed from https://gitlab.com/samba-team/samba/merge_requests/289
Patch14: 0001-samba-tool-dbcheck-Avoid-creating-child-DNs-via-ldb.patch
Patch15: 0002-samba-tool-dbcheck-Avoid-creating-an-RDN-via-ldb.Dn-.patch
%if %{with clang}
BuildRequires: clang lld
%else
BuildRequires: gcc
%endif
# Required for ldb docs
BuildRequires: docbook-style-xsl
#BuildRequires: docbook-dtd-xml
BuildRequires: docbook-dtd42-xml
BuildRequires: gnupg
BuildRequires: perl(Parse::Yapp)
BuildRequires: perl(ExtUtils::MakeMaker)
BuildRequires: perl(JSON)
BuildRequires: python3-ldb
BuildRequires: python3-tdb
BuildRequires: python3-tevent
BuildRequires: python3-markdown
BuildRequires: python3egg(dnspython)
BuildRequires: xsltproc
BuildRequires: acl-devel
BuildRequires: cups-devel
BuildRequires: dbus-devel
BuildRequires: keyutils-devel
BuildRequires: libaio-devel
# Samba 3.2 and later should be built with capabilities support:
# http://lists.samba.org/archive/samba/2009-March/146821.html
BuildRequires: libcap-devel
BuildRequires: magic-devel
BuildRequires: openldap-devel
BuildRequires: pam-devel
BuildRequires: readline-devel
BuildRequires: pkgconfig(ctdb) >= 2.0
BuildRequires: pkgconfig(gnutls)
BuildRequires: pkgconfig(krb5)
BuildRequires: pkgconfig(ldb) >= 1.1.29
BuildRequires: py3ldb-util-devel
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libtirpc)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(popt)
BuildRequires: pytalloc-util-devel
BuildRequires: pkgconfig(talloc)
BuildRequires: pkgconfig(tdb)
BuildRequires: pkgconfig(tevent)
BuildRequires: pkgconfig(jansson)
BuildRequires: pkgconfig(libarchive)
BuildRequires: pkgconfig(python3)
BuildRequires: %{_lib}cmocka-devel
BuildRequires: gpgme-devel
BuildRequires: bison
BuildRequires: flex
BuildRequires: icu-devel
BuildRequires: libtasn1-devel
BuildRequires: libtasn1-tools
BuildRequires: pkgconfig(libnsl)
%description
Samba provides SMB server which can be used to provide network services
to SMB (sometimes called "Lan Manager") clients, including various versions
of MS Windows, OS/2, and other Linux machines. Samba also provides some SMB
clients, which complement the built-in SMB filesystem in Linux. Samba uses
NetBIOS over TCP/IP (NetBT) protocols and does NOT need NetBEUI (Microsoft
Raw NetBIOS frame) protocol.
Samba also features working AD Domain Control capability.
#----------------------------------------------------------------------------
# All packages containing %%{_libdir}/samba/*.so* must manually depend from %%{libs_config}
# To find them:
# rpm -qf /usr/lib64/samba/*.so* /usr/lib64/samba/*/*.so* --qf '%%{NAME}\n' | sort -u
# This package is not a library, but 64 and 32 bit libraries will require
# architecture-specific config, so I'm prefixing the name of this package with lib64/lib via %%mklibname
# Why make a separate package for one config? Because it allows to freely split other
# libraries between packages, not all libraries in /usr/lib64/samba/ are in lib64samba-server0.
# Libraries from /usr/lib64/ and /lib64/ built from samba source package also
# depend from libraries in /usr/lib64/samba/.
# Yes, packaging plain text as 'lib64samba-libs-config0' violates packaging policy...
# What to do? urpmi can't handle bi/multiarch packages with the same name, as far as I understand.
# Leaving ld.so.conf.d/*.conf in e.g. lib64sambaserver0, as it was in samba < 4.9,
# is not a good idea in general.
# We can try enabling RPATH in build options, then all resulting libraries will have hardcoded
# RPATH = %%{_libdir}/samba. We will also need to move libwbclient.so* to %%{_libdir}/samba/
# to fix its issues with RPATH (see Fedora's spec). Not a good idea.
%package -n %{libs_config}
Summary: ldconfig configuration for Samba libraries
Group: System/Libraries
%description -n %{libs_config}
ldconfig configuration for Samba libraries
%files -n %{libs_config}
%dir %{_libdir}/samba
%dir %{_libdir}/samba/krb5
%{_sysconfdir}/ld.so.conf.d/samba_%{_arch}.conf
#----------------------------------------------------------------------------
%package server
Summary: Samba (SMB) server programs
Group: Networking/Other
Requires: %{name}-common = %{EVRD}
Requires: %{libsambalibs} = %{EVRD}
# samba-tool is used both for domain provisioning and as a client
Requires: %{name}-client = %{EVRD}
# AD controller needs winbindd
Requires: %{name}-winbind = %{EVRD}
# pull deps for python scripts
Requires: python3-%{name} = %{EVRD}
# distro-type(desktop) is provided by branding-configs
Recommends: (%{name}-share-role if distro-type(desktop))
Requires(pre): /bin/systemd-sysusers
# samba.service is domain controller
Provides: samba = %{EVRD}
%description server
Samba-server provides SMB server which can be used to provide network services
to SMB (sometimes called "Lan Manager") clients, including various versions
of MS Windows, OS/2, and other Linux machines. Samba also provides some SMB
clients, which complement the built-in SMB filesystem in Linux. Samba uses
NetBIOS over TCP/IP (NetBT) protocols and does NOT need NetBEUI (Microsoft
Raw NetBIOS frame) protocol.
Samba also features an AD domain capability.
%files server
%{_bindir}/oLschema2ldif
%{_sbindir}/samba
%{_sbindir}/samba_dnsupdate
%{_sbindir}/samba_downgrade_db
%{_sbindir}/samba_spnupdate
%{_sbindir}/samba_upgradedns
%{_sbindir}/samba-gpupdate
%{_sbindir}/smbd
%{_sbindir}/nmbd
%{_libexecdir}/samba/samba-bgqd
%{_libexecdir}/samba/rpcd_classic
%{_libexecdir}/samba/rpcd_epmapper
%{_libexecdir}/samba/rpcd_fsrvp
%{_libexecdir}/samba/rpcd_lsad
%{_libexecdir}/samba/rpcd_mdssvc
%{_libexecdir}/samba/rpcd_rpcecho
%{_libexecdir}/samba/rpcd_spoolss
%{_libexecdir}/samba/rpcd_winreg
%attr(-,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-server
%attr(-,root,root) %config(noreplace) %{_sysconfdir}/pam.d/%{name}
%{_mandir}/man?/oLschema2ldif.*
%attr(775,root,adm) %dir %{_localstatedir}/lib/%{name}/netlogon
%attr(755,root,root) %dir %{_localstatedir}/lib/%{name}/profiles
%attr(755,root,root) %dir %{_localstatedir}/lib/%{name}/printers
%attr(2775,root,adm) %dir %{_localstatedir}/lib/%{name}/printers/*
%attr(1777,root,root) %dir /var/spool/%{name}
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/scripts
%{_datadir}/samba/setup
%dir %{_datadir}/samba/admx
%{_datadir}/samba/admx/samba.admx
%{_datadir}/samba/admx/GNOME_Settings.admx
%dir %{_datadir}/samba/admx/en-US
%dir %{_datadir}/samba/admx/ru-RU
%{_datadir}/samba/admx/en-US/samba.adml
%{_datadir}/samba/admx/en-US/GNOME_Settings.adml
%{_datadir}/samba/admx/ru-RU/GNOME_Settings.adml
%attr(0755,root,root) %{_datadir}/%{name}/scripts/print-pdf
%{_mandir}/man8/samba.8*
%{_mandir}/man8/samba-gpupdate.8*
%{_mandir}/man8/samba_downgrade_db.8*
%{_mandir}/man8/samba-bgqd.8*
%{_unitdir}/samba.service
%{_unitdir}/smb.service
%{_unitdir}/nmb.service
%{_sysusersdir}/samba-server.conf
%attr(1770,root,sambashare) %dir %{smb_usershare_dir}
%config(noreplace) %{_sysconfdir}/sysconfig/samba
%pre server
%sysusers_create_package samba-server %{SOURCE43}
%post server
%systemd_post nmb.service
%systemd_post samba.service
%systemd_post smb.service
if [ $1 -gt 1 ] ; then
echo "Flushing Samba cache."
/usr/bin/net cache flush > /dev/null 2>&1 || :
fi
%preun server
%systemd_preun nmb.service
%systemd_preun samba.service
%systemd_preun smb.service
%postun server
# Here it is important to restart services on upgrade because they
# dlopen libs like full_audit.so in runtime. If the library is
# upgraded and the daemon is not restarted, it will try to dlopen
# it some time later and fail some time later after the upgrade.
%systemd_postun_with_restart nmb.service
%systemd_postun_with_restart smb.service
%systemd_postun_with_restart samba.service
#----------------------------------------------------------------------------
%package share-role
Summary: Allow users from the "wheel" group to manage Samba shares
Group: System/Configuration/Other
Requires: libnss-role
%description share-role
Allow users from the "wheel" group to manage Samba shares.
Install this package to automatically add any member of the group "wheel"
to the group "sambashare". It will allow admin users of graphical desktops
to create and manage Samba shares from GUIs like file managers.
%files share-role
%config(noreplace) %{_sysconfdir}/role.d/sambashare.role
#----------------------------------------------------------------------------
%package -n %{libsambalibs}
Summary: Samba libraries
Group: System/Libraries
Requires: %{libs_config}
# samba-common is the package with smb.conf and manuals
# /etc/samba/smb.conf is read by e.g. libsmbclient.so.0
Requires: %{name}-common = %{EVRD}
# Package was renamed
Obsoletes: %{_lib}samba-libs0 < 1:4.15
Conflicts: %{_lib}samba-libs0 < 1:4.15
%description -n %{libsambalibs}
Provides libraries for Samba
%files -n %{libsambalibs}
%{_libdir}/%{name}/vfs/*.so
%{_libdir}/samba/ldb
%{_libdir}/samba/service
%{_libdir}/samba/process_model
%{_libdir}/samba/gensec
#%%{_libdir}/samba/auth
%{_libdir}/samba/libCHARSET3-samba4.so
%{_libdir}/samba/libMESSAGING-SEND-samba4.so
%{_libdir}/samba/libHDB-SAMBA4-samba4.so
%{_libdir}/samba/libLIBWBCLIENT-OLD-samba4.so
%{_libdir}/samba/libMESSAGING-samba4.so
%{_libdir}/samba/libREG-FULL-samba4.so
%{_libdir}/samba/libRPC-SERVER-LOOP-samba4.so
%{_libdir}/samba/libRPC-WORKER-samba4.so
%{_libdir}/samba/libaddns-samba4.so
%{_libdir}/samba/libads-samba4.so
%{_libdir}/samba/libasn1-samba4.so
%{_libdir}/samba/libasn1util-samba4.so
%{_libdir}/samba/libauth-samba4.so
%{_libdir}/samba/libauth-unix-token-samba4.so
%{_libdir}/samba/libauth4-samba4.so
%{_libdir}/samba/libauthkrb5-samba4.so
%{_libdir}/samba/libcli-ldap-common-samba4.so
%{_libdir}/samba/libcli-ldap-samba4.so
%{_libdir}/samba/libcli-nbt-samba4.so
%{_libdir}/samba/libcli-cldap-samba4.so
%{_libdir}/samba/libcli-smb-common-samba4.so
%{_libdir}/samba/libcli-spoolss-samba4.so
%{_libdir}/samba/libcliauth-samba4.so
%{_libdir}/samba/libclidns-samba4.so
%{_libdir}/samba/libcluster-samba4.so
%{_libdir}/samba/libcmdline-contexts-samba4.so
%{_libdir}/samba/libcmdline-samba4.so
%{_libdir}/samba/libdcerpc-pkt-auth-samba4.so
%{_libdir}/samba/libgpext-samba4.so
%{_libdir}/samba/libcommon-auth-samba4.so
%{_libdir}/samba/libcom-err-samba4.so
%{_libdir}/samba/libdb-glue-samba4.so
%{_libdir}/samba/libdbwrap-samba4.so
%{_libdir}/samba/libdcerpc-samba-samba4.so
%{_libdir}/samba/libdcerpc-samba4.so
%{_libdir}/samba/libdfs-server-ad-samba4.so
%{_libdir}/samba/libdlz-bind9-for-torture-samba4.so
%{_libdir}/samba/libdnsserver-common-samba4.so
%{_libdir}/samba/libdsdb-garbage-collect-tombstones-samba4.so
%{_libdir}/samba/libscavenge-dns-records-samba4.so
%{_libdir}/samba/libdsdb-module-samba4.so
%{_libdir}/samba/libevents-samba4.so
%{_libdir}/samba/libflag-mapping-samba4.so
%{_libdir}/samba/libgenrand-samba4.so
%{_libdir}/samba/libgensec-samba4.so
%{_libdir}/samba/libgpo-samba4.so
%{_libdir}/samba/libgse-samba4.so
%{_libdir}/samba/libgssapi-samba4.so
%{_libdir}/samba/libgss-preauth-samba4.so
%{_libdir}/samba/libhcrypto-samba4.so
%{_libdir}/samba/libhdb-samba4.so
%{_libdir}/samba/libheimbase-samba4.so
%{_libdir}/samba/libheimntlm-samba4.so
%{_libdir}/samba/libhttp-samba4.so
%{_libdir}/samba/libhx509-samba4.so
%{_libdir}/samba/libidmap-samba4.so
%{_libdir}/samba/libinterfaces-samba4.so
%{_libdir}/samba/libiov-buf-samba4.so
%{_libdir}/samba/libkdc-samba4.so
%{_libdir}/samba/libkrb5-samba4.so
%{_libdir}/samba/libkrb5samba-samba4.so
#%%{_libdir}/samba/libldb-cmdline.so - does not build. removed? not configured? to be investigated.
%{_libdir}/samba/libldbsamba-samba4.so
%{_libdir}/samba/liblibcli-lsa3-samba4.so
%{_libdir}/samba/liblibcli-netlogon3-samba4.so
%{_libdir}/samba/liblibsmb-samba4.so
%{_libdir}/samba/libmessages-dgm-samba4.so
%{_libdir}/samba/libmessages-util-samba4.so
%{_libdir}/samba/libmscat-samba4.so
%{_libdir}/samba/libmsghdr-samba4.so
%{_libdir}/samba/libmsrpc3-samba4.so
%{_libdir}/samba/libndr-samba-samba4.so
%{_libdir}/samba/libndr-samba4.so
%{_libdir}/samba/libnet-keytab-samba4.so
%{_libdir}/samba/libnetif-samba4.so
%{_libdir}/samba/libnpa-tstream-samba4.so
%{_libdir}/samba/libnss-info-samba4.so
%{_libdir}/samba/libpac-samba4.so
%{_libdir}/samba/libposix-eadb-samba4.so
%{_libdir}/samba/libprinter-driver-samba4.so
%{_libdir}/samba/libprinting-migrate-samba4.so
%{_libdir}/samba/libprocess-model-samba4.so
%{_libdir}/samba/libregistry-samba4.so
%{_libdir}/samba/libreplace-samba4.so
%{_libdir}/samba/libroken-samba4.so
%{_libdir}/samba/libsamba-cluster-support-samba4.so
%{_libdir}/samba/libsamba-debug-samba4.so
%{_libdir}/samba/libsamba-modules-samba4.so
%{_libdir}/samba/libsamba-net.cpython*-samba4.so
%{_libdir}/samba/libsamba-python.cpython*-samba4.so
%{_libdir}/samba/libsamba-security-samba4.so
%{_libdir}/samba/libsamba-sockets-samba4.so
%{_libdir}/samba/libsamba3-util-samba4.so
%{_libdir}/samba/libsamdb-common-samba4.so
%{_libdir}/samba/libsecrets3-samba4.so
%{_libdir}/samba/libserver-id-db-samba4.so
%{_libdir}/samba/libserver-role-samba4.so
%{_libdir}/samba/libservice-samba4.so
%{_libdir}/samba/libshares-samba4.so
%{_libdir}/samba/libsmb-transport-samba4.so
%{_libdir}/samba/libsmbclient-raw-samba4.so
%{_libdir}/samba/libsmbd-base-samba4.so
%{_libdir}/samba/libsmbd-shim-samba4.so
%{_libdir}/samba/libsmbldaphelper-samba4.so
%{_libdir}/samba/libsmbpasswdparser-samba4.so
%{_libdir}/samba/libsocket-blocking-samba4.so
%{_libdir}/samba/libstable-sort-samba4.so
%{_libdir}/samba/libsys-rw-samba4.so
%{_libdir}/samba/libtalloc-report-samba4.so
%{_libdir}/samba/libtalloc-report-printf-samba4.so
%{_libdir}/samba/libtdb-wrap-samba4.so
%{_libdir}/samba/libtime-basic-samba4.so
%{_libdir}/samba/libtorture-samba4.so
%{_libdir}/samba/libtrusts-util-samba4.so
%{_libdir}/samba/libutil-reg-samba4.so
%{_libdir}/samba/libutil-setid-samba4.so
%{_libdir}/samba/libutil-tdb-samba4.so
%{_libdir}/samba/libwind-samba4.so
%{_libdir}/samba/libxattr-tdb-samba4.so
%{_libdir}/samba/bind9
%dir %{_libdir}/samba/vfs
%{_libdir}/%{name}/nss_info
%{_libdir}/%{name}/idmap
#----------------------------------------------------------------------------
%package client
Summary: Samba (SMB) client programs
Group: Networking/Other
Requires: %{name}-common = %{EVRD}
Requires: %{libname} = %{EVRD}
Requires: mount-cifs
# For samba-tool
Requires: python3-%{name} = %{EVRD}
# samba-tool needs tdbbackup
Requires: tdb-utils
# samba-tool needs mdb_copy for domain backup or upgrade provision
Requires: lmdb
# issues with /usr/lib64/cups being a symlink to /usr/lib/cups
OrderWithRequires(pre): cups
# smbclient is common in other distros
Provides: smbclient = %{EVRD}
%description client
Samba-client provides some SMB clients, which complement the built-in
SMB filesystem in Linux. These allow the accessing of SMB shares, and
printing to SMB printers.
%files client
%{_bindir}/cifsdd
%{_bindir}/dbwrap_tool
%{_bindir}/dumpmscat
%{_bindir}/mvxattr
%{_bindir}/net
%{_bindir}/nmblookup
%{_bindir}/pdbedit
%{_bindir}/profiles
%{_bindir}/rpcclient
%{_sbindir}/samba_kcc
%{_sbindir}/eventlogadm
%{_bindir}/samba-tool
%{_bindir}/sharesec
%{_bindir}/smbcacls
%{_bindir}/smbclient
%{_bindir}/smbcontrol
%{_bindir}/smbcquotas
%{_bindir}/smbget
%{_bindir}/smbpasswd
%{_bindir}/smbspool
%{_bindir}/smbstatus
%{_bindir}/smbtree
%{_bindir}/samba-regedit
%{_bindir}/smbtar
%{_bindir}/mdsearch
%{_mandir}/man1/dbwrap_tool.1*
%{_mandir}/man1/mdsearch.1*
%{_mandir}/man8/samba-tool.8*
%{_mandir}/man8/samba-regedit.8*
%{_prefix}/lib/cups/backend/smb
# see smbspool_krb5_wrapper(8) why such attributes
%attr(0700,root,root) %{_libexecdir}/samba/smbspool_krb5_wrapper
#----------------------------------------------------------------------------
%package common
Summary: Files used by both Samba servers and clients
Group: System/Servers
# rpcclient etc. use samba python modules
Requires: python3-%{name} = %{EVRD}
%description common
Samba-common provides files necessary for both the server and client
packages of Samba.
%files common
%{_tmpfilesdir}/samba.conf
%dir /var/cache/%{name}
%dir /var/log/%{name}
%dir %{_libexecdir}/samba
%dir %{_datadir}/samba/mdssvc
%dir /var/lib/%{name}/private
%{_bindir}/ntlm_auth
%{_bindir}/testparm
%{_bindir}/regdiff
%{_bindir}/regpatch
%{_bindir}/regshell
%{_bindir}/regtree
%dir %{_sysconfdir}/%{name}
%attr(-,root,root) %config(noreplace) %{_sysconfdir}/%{name}/smb.conf
%attr(-,root,root) %config(noreplace) %{_sysconfdir}/%{name}/lmhosts
%if %{with avahi_service}
%config %{_sysconfdir}/avahi/services/smb.service
%endif
%dir %{_localstatedir}/lib/%{name}
%attr(-,root,root) %{_localstatedir}/lib/%{name}/codepages
# run by both winbind and smbd
# https://bugzilla.redhat.com/show_bug.cgi?id=2136763
%{_libexecdir}/samba/samba-dcerpcd
%{_mandir}/man1/ntlm_auth.1*
%{_mandir}/man1/regdiff.1*
%{_mandir}/man1/regpatch.1*
%{_mandir}/man1/regshell.1*
%{_mandir}/man1/regtree.1*
%{_mandir}/man1/log2pcap.1*
%{_mandir}/man1/mvxattr.1*
%{_mandir}/man1/nmblookup.1*
%{_mandir}/man1/profiles.1*
%{_mandir}/man1/rpcclient.1*
%{_mandir}/man1/sharesec.1*
%{_mandir}/man1/smbcacls.1*
%{_mandir}/man1/smbclient.1*
%{_mandir}/man1/smbcontrol.1*
%{_mandir}/man1/smbcquotas.1*
%{_mandir}/man1/smbget.1*
%{_mandir}/man1/smbstatus.1*
%{_mandir}/man1/smbtar.1*
%{_mandir}/man1/smbtree.1*
%{_mandir}/man1/testparm.1*
%{_mandir}/man1/wbinfo.1*
%{_mandir}/man5/lmhosts.5*
%{_mandir}/man5/pam_winbind.conf.5*
%{_mandir}/man5/smb.conf.5*
%{_mandir}/man5/smbgetrc.5*
%{_mandir}/man5/smbpasswd.5*
%{_mandir}/man7/samba.7*
%{_mandir}/man7/traffic_learner.7*
%{_mandir}/man7/traffic_replay.7*
%{_mandir}/man8/cifsdd.8*
%{_mandir}/man8/eventlogadm.8*
%{_mandir}/man8/net.8*
%{_mandir}/man8/nmbd.8*
%{_mandir}/man8/pam_winbind.8*
%{_mandir}/man8/pdbedit.8*
%{_mandir}/man8/samba-dcerpcd.8*
%{_mandir}/man8/smbd.8*
%{_mandir}/man8/smbpasswd.8*
%{_mandir}/man8/smbspool.8*
%{_mandir}/man8/smbspool_krb5_wrapper.8*
%{_mandir}/man8/winbind_krb5_locator.8*
%{_mandir}/man8/vfs_acl_tdb.8*
%{_mandir}/man8/vfs_acl_xattr.8*
%{_mandir}/man8/vfs_aio_fork.8*
%{_mandir}/man8/vfs_aio_pthread.8*
%{_mandir}/man8/vfs_audit.8*
%{_mandir}/man8/vfs_cap.8*
%{_mandir}/man8/vfs_catia.8*
%{_mandir}/man8/vfs_commit.8*
%{_mandir}/man8/vfs_crossrename.8*
%{_mandir}/man8/vfs_default_quota.8*
%{_mandir}/man8/vfs_dirsort.8*
%{_mandir}/man8/vfs_expand_msdfs.8*
%{_mandir}/man8/vfs_extd_audit.8*
%{_mandir}/man8/vfs_fake_perms.8*
%{_mandir}/man8/vfs_fileid.8*
%{_mandir}/man8/vfs_fruit.8*
%{_mandir}/man8/vfs_full_audit.8*
%{_mandir}/man8/vfs_glusterfs_fuse.8*
%{_mandir}/man8/vfs_gpfs.8*
%{_mandir}/man8/vfs_media_harmony.8*
#%%{_mandir}/man8/vfs_netatalk.8*
%{_mandir}/man8/vfs_offline.8*
%{_mandir}/man8/vfs_preopen.8*
%{_mandir}/man8/vfs_readahead.8*
%{_mandir}/man8/vfs_readonly.8*
%{_mandir}/man8/vfs_recycle.8*
%{_mandir}/man8/vfs_shadow_copy.8*
%{_mandir}/man8/vfs_shadow_copy2.8*
%{_mandir}/man8/vfs_shell_snap.8*
%{_mandir}/man8/vfs_snapper.8*
%{_mandir}/man8/vfs_streams_depot.8*
%{_mandir}/man8/vfs_streams_xattr.8*
%{_mandir}/man8/vfs_time_audit.8*
%{_mandir}/man8/vfs_xattr_tdb.8*
%{_mandir}/man8/vfs_unityed_media.8*
%{_mandir}/man8/vfs_worm.8*
%{_mandir}/man8/vfs_btrfs.8*
%{_mandir}/man8/vfs_linux_xfs_sgid.8*
%{_mandir}/man8/vfs_syncops.8*
%{_mandir}/man8/vfs_virusfilter.8*
%{_mandir}/man8/vfs_widelinks.8*
%{_datadir}/samba/mdssvc/elasticsearch_mappings.json
%post common
%tmpfiles_create samba.conf
# And this too, in case we don't have smbd to create it for us
[ -f /var/cache/%{name}/unexpected.tdb ] || {
touch /var/cache/%{name}/unexpected.tdb
}
#----------------------------------------------------------------------------
%if %{with doc}
%package doc
Summary: Documentation for Samba servers and clients
Group: Documentation
%description doc
Samba-doc provides documentation files for both the server and client
packages of Samba.
%files doc
%doc README COPYING
%doc WHATSNEW.txt Roadmap
%doc clean-docs/samba-doc/docs/*
%doc clean-docs/samba-doc/examples
%endif
#----------------------------------------------------------------------------
%package -n %{libwinbind}
Summary: Samba-winbind daemon libraries
Group: System/Libraries
Provides: pam_winbind = %{EVRD}
Provides: nss_winbind = %{EVRD}
Provides: pam_winbind%{_isa} = %{EVRD}
Provides: nss_winbind%{_isa} = %{EVRD}
%description -n %{libwinbind}
Provides libraries for winbind daemon and testing tools
%files -n %{libwinbind} -f pam_winbind.lang
%attr(755,root,root) %{_libdir}/security/pam_winbind*
%{_libdir}/libnss_winbind*
#----------------------------------------------------------------------------
%package winbind
Summary: Samba-winbind daemon, utilities and documentation
Group: System/Servers
Recommends: %{winbind_krb5_locator}
Requires: %{libwinbind}
%description winbind
Provides the winbind daemon and testing tools to allow authentication
and group/user enumeration from a Windows or Samba domain controller.
%files winbind
# %%config(noreplace) %%{_sysconfdir}/security/pam_winbind.conf
%{_sbindir}/winbindd
%{_bindir}/wbinfo
%attr(-,root,root) %config(noreplace) %{_sysconfdir}/pam.d/system-auth-winbind*
%{_unitdir}/winbind.service
%{_sysconfdir}/NetworkManager/dispatcher.d/30-winbind
%{_mandir}/man8/winbindd.8*
%{_mandir}/man8/idmap_*.8*
%post winbind
# winbind service must not be auto-enabled e.g. because it will break Samba as a Domain Controller
# https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC#The_winbindd_Service
%systemd_post winbind.service
#----------------------------------------------------------------------------
%package -n %{libnsswins}
Summary: Name Service Switch service for WINS
Group: System/Libraries
Provides: nss_wins = %{EVRD}
%description -n %{libnsswins}
Provides the libnss_wins shared library which resolves NetBIOS names to
IP addresses.
%files -n %{libnsswins}
%{_libdir}/libnss_wins.so*
%post -n %{libnsswins}
if [ $1 = 1 ]; then
cp -af %{_sysconfdir}/nsswitch.conf %{_sysconfdir}/nsswitch.conf.rpmsave
grep '^hosts' %{_sysconfdir}/nsswitch.conf |grep -v 'wins' >/dev/null
if [ $? = 0 ];then
echo "Adding a wins entry to the hosts section of %{_sysconfdir}/nsswitch.conf"
awk '/^hosts/ {print $0 " wins"};!/^hosts/ {print}' %{_sysconfdir}/nsswitch.conf.rpmsave >%{_sysconfdir}/nsswitch.conf;
else
echo "wins entry found in %{_sysconfdir}/nsswitch.conf"
fi
fi
#----------------------------------------------------------------------------
%package -n python3-%{name}
Summary: Samba Python modules
Group: Development/Python
Requires: python3-talloc
Requires: python3-tevent
Requires: python3-tdb
Requires: python3-ldb
Requires: python3egg(dnspython)
Requires: ldb-utils
# old name
Provides: samba-python3 = %{EVRD}
# A clumzy approach to get rid of LOOPS - provide deps for individual libs _by hand_
Requires: %{libpolicy} = %{EVRD}
%description -n python3-%{name}
Samba Python modules.
%files -n python3-%{name}
%{python3_sitearch}/samba
#----------------------------------------------------------------------------
%if %{with test}
%package test
Summary: Debugging and benchmarking tools for samba
Group: System/Servers
Requires: %{name}-common = %{EVRD}
%description test
This package provides tools for benchmarking samba, and debugging the correct
operation of tools against smb servers.
%files test
%{_bindir}/locktest
%{_bindir}/masktest
%{_bindir}/gentest
%{_bindir}/ndrdump
%{_bindir}/smbtorture
%{_mandir}/man1/locktest.1*
%{_mandir}/man1/masktest.1*
%{_mandir}/man1/ndrdump.1*
%{_mandir}/man1/gentest.1*
%{_mandir}/man1/smbtorture.1*
%endif
#----------------------------------------------------------------------------
%package -n %{libname}
Summary: SMB Client Library
Group: System/Libraries
Provides: libsmbclient = %{EVRD}
%description -n %{libname}
This package contains the SMB client library, part of the samba suite of
networking software, allowing other software to access SMB shares.
%files -n %{libname}
%{_libdir}/libsmbclient.so.%{libsmbmajor}*
#----------------------------------------------------------------------------
%package -n %{devname}
Summary: SMB Client Library Development files
Group: Development/C
Requires: %{libname} = %{EVRD}
Requires: samba-devel = %{EVRD}
%description -n %{devname}
This package contains the development files for the SMB client library, part
of the samba suite of networking software, allowing the development of other
software to access SMB shares.
%files -n %{devname}
%{_includedir}/samba-4.0/libsmbclient.h
%{_libdir}/libsmbclient.so
%{_mandir}/man7/libsmbclient.7*
%{_libdir}/pkgconfig/smbclient.pc
#----------------------------------------------------------------------------
%package devel
Summary: Samba 4 development package
Group: Development/C
Requires: %{devname} = %{EVRD}
Requires: %{libsambalibs} = %{EVRD}
%description devel
Samba 4 development libraries.
%files devel
%{_includedir}/samba-4.0/charset.h
%dir %{_includedir}/samba-4.0/core
%{_includedir}/samba-4.0/core/*.h
%{_includedir}/samba-4.0/credentials.h
%{_includedir}/samba-4.0/domain_credentials.h
%dir %{_includedir}/samba-4.0/gen_ndr
%{_includedir}/samba-4.0/gen_ndr/*.h
%{_includedir}/samba-4.0/ndr.h
%{_includedir}/samba-4.0/ndr
%{_includedir}/samba-4.0/param.h
%{_includedir}/samba-4.0/samba/
%{_includedir}/samba-4.0/share.h
%{_includedir}/samba-4.0/tdr.h
%{_includedir}/samba-4.0/tsocket.h
%{_includedir}/samba-4.0/tsocket_internal.h
%{_includedir}/samba-4.0/rpc_common.h
%dir %{_includedir}/samba-4.0/util/
%{_includedir}/samba-4.0/util/*.h
%{_includedir}/samba-4.0/util_ldb.h
%{_includedir}/samba-4.0/ldb_wrap.h
%{_libdir}/libsamba-errors.so
%{_libdir}/libsamba-passdb.so
%{_libdir}/libsmbconf.so
%{_libdir}/libsmbldap.so
%{_libdir}/libtevent-util.so
%{_includedir}/samba-4.0/lookup_sid.h
%{_includedir}/samba-4.0/machine_sid.h
%{_includedir}/samba-4.0/passdb.h
%{_includedir}/samba-4.0/policy.h
%{_includedir}/samba-4.0/smb2_lease_struct.h
%{_includedir}/samba-4.0/smb_ldap.h
%{_includedir}/samba-4.0/smbconf.h
%{_includedir}/samba-4.0/smbldap.h
%{_includedir}/samba-4.0/dcesrv_core.h
%{_libdir}/pkgconfig/samba-credentials.pc
#----------------------------------------------------------------------------
%package pidl
Summary: Perl IDL compiler for Samba4
Group: Development/Perl
%description pidl
Perl Interface Description Language compiler for Samba4.
%files pidl
%{_bindir}/pidl
%{perl_vendorlib}/Parse/Pidl*
%{_mandir}/man1/pidl.1.*
%{_mandir}/man3/Parse::Pidl*.3pm.*
#----------------------------------------------------------------------------
%package -n %{libnetapi}
Summary: Samba library for accessing functions in 'net' binary
Group: System/Libraries
%samba_soname_changed_meta %{quote:%{mklibname netapi 0}} 1:4.15
%description -n %{libnetapi}
Samba library for accessing functions in 'net' binary.
%files -n %{libnetapi}
%{_libdir}/libnetapi.so.%{netapimajor}*
#----------------------------------------------------------------------------
%package -n %{netapidevel}
Summary: Samba library for accessing functions in 'net' binary
Group: Development/C
Requires: %{libnetapi} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: netapi-devel = %{EVRD}
%description -n %{netapidevel}
Samba library for accessing functions in 'net' binary.
%files -n %{netapidevel}
%{_libdir}/libnetapi*.so
%{_includedir}/samba-4.0/netapi.h
%{_libdir}/pkgconfig/netapi.pc
#----------------------------------------------------------------------------
%package -n %{libdcerpc}
Summary: Library implementing DCE/RPC for Samba4
Group: System/Libraries
%description -n %{libdcerpc}
Library implementing DCE/RPC for Samba4 (libdcerpc)
%files -n %{libdcerpc}
%{_libdir}/libdcerpc.so.%{dcerpcmajor}*
#----------------------------------------------------------------------------
%package -n %{libdcerpc_binding}
Summary: Library implementing DCE/RPC for Samba4
Group: System/Libraries
# splitted from %%libdcerpc
Conflicts: %{libdcerpc} < 1:4.17
%description -n %{libdcerpc_binding}
Library implementing DCE/RPC for Samba4 (libdcerpc-binding)
%files -n %{libdcerpc_binding}
%{_libdir}/libdcerpc-binding.so.%{dcerpcmajor}*
#----------------------------------------------------------------------------
%package -n %{libdcerpc_samr}
Summary: Library implementing DCE/RPC for Samba4
Group: System/Libraries
# splitted from %%libdcerpc
Conflicts: %{libdcerpc} < 1:4.17
%description -n %{libdcerpc_samr}
Library implementing DCE/RPC for Samba4 (libdcerpc-samr)
%files -n %{libdcerpc_samr}
%{_libdir}/libdcerpc-samr.so.%{dcerpcmajor}*
#----------------------------------------------------------------------------
%package -n %{libdcerpc_server}
Summary: Library implementing DCE/RPC for Samba4
Group: System/Libraries
# splitted from %%libdcerpc
Conflicts: %{libdcerpc} < 1:4.17
%description -n %{libdcerpc_server}
Library implementing DCE/RPC for Samba4 (libdcerpc-server)
%files -n %{libdcerpc_server}
%{_libdir}/libdcerpc-server.so.%{dcerpcmajor}*
#----------------------------------------------------------------------------
%package -n %{libdcerpc_servercore}
Summary: Library implementing DCE/RPC for Samba4
Group: System/Libraries
# splitted from %%libdcerpc
Conflicts: %{libdcerpc} < 1:4.17
%description -n %{libdcerpc_servercore}
Library implementing DCE/RPC for Samba4 (libdcerpc-server-core)
%files -n %{libdcerpc_servercore}
%{_libdir}/libdcerpc-server-core.so.%{dcerpcmajor}*
#----------------------------------------------------------------------------
%package -n %{dcerpcdevel}
Summary: Library implementing Samba's memory allocator
Group: Development/C
Requires: %{libdcerpc} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: dcerpc-devel = %{EVRD}
%description -n %{dcerpcdevel}
Library implementing Samba's memory allocator.
%files -n %{dcerpcdevel}
%{_libdir}/pkgconfig/dcerpc*.pc
%{_includedir}/samba-4.0/dcerpc*.h
%{_libdir}/libdcerpc.so
%{_libdir}/libdcerpc-samr.so
%{_libdir}/libdcerpc-binding.so
%{_libdir}/libdcerpc-server.so
%{_libdir}/libdcerpc-server-core.so
#----------------------------------------------------------------------------
%package -n %{libndr}
Summary: Network Data Representation library (libndr) from Samba
Group: System/Libraries
%samba_soname_changed_meta %{quote:%{mklibname ndr 1}} 1:4.15
%samba_soname_changed_meta %{quote:%{mklibname ndr 2}} 1:4.15
%description -n %{libndr}
Network Data Representation library from Samba4.
%files -n %{libndr}
%{_libdir}/libndr.so.%{ndrmajor}*
#----------------------------------------------------------------------------
%package -n %{libndr_krb5pac}
Summary: Network Data Representation library (libndr-krb5pac) from Samba
Group: System/Libraries
Conflicts: %{_lib}ndr1 < 1:4.17
Conflicts: %{_lib}ndr2 < 1:4.17
%description -n %{libndr_krb5pac}
Network Data Representation (libndr-krb5pac) library from Samba
%files -n %{libndr_krb5pac}
%{_libdir}/libndr-krb5pac.so.%{krbmajor}*
#----------------------------------------------------------------------------
%package -n %{libndr_nbt}
Summary: Network Data Representation library (libndr-nbt) from Samba
Group: System/Libraries
Conflicts: %{_lib}ndr1 < 1:4.17
Conflicts: %{_lib}ndr2 < 1:4.17
%description -n %{libndr_nbt}
Network Data Representation (libndr-nbt) library from Samba
%files -n %{libndr_nbt}
%{_libdir}/libndr-nbt.so.%{nbtmajor}*
#----------------------------------------------------------------------------
%package -n %{libndr_standard}
Summary: Network Data Representation library (libndr-standard) from Samba
Group: System/Libraries
Conflicts: %{_lib}ndr1 < 1:4.17
Conflicts: %{_lib}ndr2 < 1:4.17
%description -n %{libndr_standard}
Network Data Representation (libndr-standard) library from Samba
%files -n %{libndr_standard}
%{_libdir}/libndr-standard.so.%{standardmajor}*
#----------------------------------------------------------------------------
%package -n %{ndrdevel}
Summary: Development files for Network Data Representation library from Samba4
Group: Development/C
Requires: %{libndr} = %{EVRD}
Requires: %{libndr_krb5pac} = %{EVRD}
Requires: %{libndr_nbt} = %{EVRD}
Requires: %{libndr_standard} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: ndr-devel = %{EVRD}
%description -n %{ndrdevel}
Development files for Network Data Representation library from Samba4.
%files -n %{ndrdevel}
%{_libdir}/pkgconfig/ndr*.pc
%{_libdir}/libndr*.so
#----------------------------------------------------------------------------
%package -n %{libsambahostconfig}
Summary: Samba4's host configuration library
Group: System/Libraries
%description -n %{libsambahostconfig}
Samba4's host configuration library.
%files -n %{libsambahostconfig}
%{_libdir}/libsamba-hostconfig.so.%{hostconfigmajor}*
#----------------------------------------------------------------------------
%package -n %{sambahostconfigdevel}
Summary: Samba4's host configuration library
Group: Development/C
Requires: %{libsambahostconfig} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: samba-hostconfig-devel = %{EVRD}
%description -n %{sambahostconfigdevel}
Samba4's host configuration library.
%files -n %{sambahostconfigdevel}
%{_libdir}/libsamba-hostconfig.so
%{_libdir}/pkgconfig/samba-hostconfig.pc
#----------------------------------------------------------------------------
%package -n %{libwbclient}
Summary: Library providing access to winbindd
Group: System/Libraries
%description -n %{libwbclient}
Library providing access to winbindd.
%files -n %{libwbclient}
%{_libdir}/libwbclient.so.%{wbclientmajor}*
#----------------------------------------------------------------------------
%package -n %{wbclientdevel}
Summary: Library providing access to winbindd
Group: Development/C
Requires: %{libwbclient} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: wbclient-devel = %{EVRD}
%description -n %{wbclientdevel}
Library providing access to winbindd.
%files -n %{wbclientdevel}
%{_libdir}/libwbclient.so
%{_includedir}/samba-4.0/wbclient.h
%{_libdir}/pkgconfig/wbclient.pc
#----------------------------------------------------------------------------
%package -n %{libsambautil}
Summary: Samba4 utility library
Group: System/Libraries
%description -n %{libsambautil}
Samba4 utility library.
%files -n %{libsambautil}
%{_libdir}/libsamba-util.so.%{sambautilmajor}*
#----------------------------------------------------------------------------
%package -n %{sambautildevel}
Summary: Development files for Samba4 utility library
Group: Development/C
Requires: %{libsambautil} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: samba-util-devel = %{EVRD}
%description -n %{sambautildevel}
Development files for Samba4 utility library.
%files -n %{sambautildevel}
%{_libdir}/libsamba-util.so
%{_libdir}/pkgconfig/samba-util.pc
#----------------------------------------------------------------------------
%package -n %{libpolicy}
Summary: Samba4 policy library
Group: System/Libraries
%description -n %{libpolicy}
Samba4 policy library.
%files -n %{libpolicy}
%{_libdir}/libsamba-policy.cpython-*.so.%{policymajor}*
#----------------------------------------------------------------------------
%package -n %{libpolicydevel}
Summary: Development files for Samba4 policy library
Group: Development/C
Requires: %{libpolicy} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: policy-devel = %{EVRD}
%description -n %{libpolicydevel}
Development files for Samba4 policy library.
%files -n %{libpolicydevel}
%{_libdir}/libsamba-policy.cpython*.so
%{_libdir}/pkgconfig/samba-policy.cpython*.pc
#----------------------------------------------------------------------------
%package -n %{libsamdb}
Summary: Samba4 samdb library
Group: System/Libraries
%description -n %{libsamdb}
Samba4 samdb library.
%files -n %{libsamdb}
%{_libdir}/libsamdb.so.%{samdbmajor}*
#----------------------------------------------------------------------------
%package -n %{libsamdbdevel}
Summary: Development files for Samba4 samdb library
Group: Development/C
Requires: %{libsamdb} = %{EVRD}
Requires: samba-devel = %{EVRD}
Provides: samdb-devel = %{EVRD}
%description -n %{libsamdbdevel}
Development files for Samba4 samdb library.
%files -n %{libsamdbdevel}
%{_libdir}/libsamdb.so
%{_libdir}/pkgconfig/samdb.pc
#----------------------------------------------------------------------------
%package -n %{libsambapassdb}
Summary: Library for working with the Samba user database
Group: System/Libraries
%description -n %{libsambapassdb}
Library for working with the Samba user database.
%files -n %{libsambapassdb}
%{_libdir}/libsamba-passdb.so.%{passdbmajor}*
#----------------------------------------------------------------------------
%package -n %{libcredentials}
Summary: Library for working with Samba credentials
Group: System/Libraries
%samba_soname_changed_meta %{quote:%{mklibname samba-credentials 0}} 1:4.15
%description -n %{libcredentials}
Library for working with Samba credentials.
%files -n %{libcredentials}
%{_libdir}/libsamba-credentials.so.%{credentialsmajor}*
#----------------------------------------------------------------------------
%package -n %{libsmbconf}
Summary: Library for working with Samba config files
Group: System/Libraries
%description -n %{libsmbconf}
Library for working with Samba config files.
%files -n %{libsmbconf}
%{_libdir}/libsmbconf.so.%{smbconfmajor}*
#----------------------------------------------------------------------------
%package -n %{libsmbldap}
Summary: Samba LDAP library
Group: System/Libraries
%description -n %{libsmbldap}
Samba LDAP library.
%files -n %{libsmbldap}
%{_libdir}/libsmbldap.so.%{smbldapmajor}*
#----------------------------------------------------------------------------
%package -n %{libtevent_util}
Summary: Utility library for working with the Tevent library
Group: System/Libraries
%description -n %{libtevent_util}
Utility library for working with the Tevent library.
%files -n %{libtevent_util}
%{_libdir}/libtevent-util.so.%{tevent_utilmajor}*
#----------------------------------------------------------------------------
%package -n %{libsambaerrors}
Summary: Samba errors library
Group: System/Libraries
%description -n %{libsambaerrors}
Samba errors library.
%files -n %{libsambaerrors}
%{_libdir}/libsamba-errors.so.%{sambaerrorsmajor}*
#----------------------------------------------------------------------------
%package -n openldap-schemas-%{name}
Summary: OpenLDAP schema files from Samba source tree
Group: Databases
BuildArch: noarch
%description -n openldap-schemas-%{name}
OpenLDAP schema files from Samba source tree
%files -n openldap-schemas-%{name}
%config(noreplace) %{_sysconfdir}/openldap/schema/*
%attr(750,ldap,ldap) %config(noreplace) %{_sysconfdir}/openldap/slapd.d/%{name}.conf
#----------------------------------------------------------------------------
# From Fedora
%package -n %{winbind_krb5_locator}
Summary: Samba winbind krb5 locator
Requires: %{libwbclient} = %{EVRD}
Requires: samba-winbind = %{EVRD}
# Handle winbind_krb5_locator.so as alternatives to allow
# IPA AD trusts case where it should not be used by libkrb5
# The plugin will be diverted to /dev/null by the FreeIPA
# freeipa-server-trust-ad subpackage due to higher priority
# and restored to the proper one on uninstall
Requires(post): update-alternatives
Requires(postun): update-alternatives
Requires(preun): update-alternatives
%description -n %{winbind_krb5_locator}
The winbind krb5 locator is a plugin for the system kerberos library to allow
the local kerberos library to use the same KDC as samba and winbind use
%files -n %{winbind_krb5_locator}
%ghost %{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so
%{_libdir}/samba/krb5/winbind_krb5_locator.so
%{_libdir}/samba/krb5/async_dns_krb5_locator.so
# Fedora ships mans in the same package with libraries
# We can't do that to allow coexisting of 32 and 64 bit libraries in one system
# So we ship it in samba-common
#%%{_mandir}/man8/winbind_krb5_locator.8*
%postun -n %{winbind_krb5_locator}
if [ "$1" -ge "1" ]; then
if [ "`readlink %{_sysconfdir}/alternatives/winbind_krb5_locator.so`" == "%{_libdir}/samba/krb5/winbind_krb5_locator.so" ]; then
%{_sbindir}/update-alternatives --set winbind_krb5_locator.so %{_libdir}/samba/krb5/winbind_krb5_locator.so
fi
fi
%post -n %{winbind_krb5_locator}
%{_sbindir}/update-alternatives --install %{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so \
winbind_krb5_locator.so %{_libdir}/samba/krb5/winbind_krb5_locator.so 10
%preun -n %{winbind_krb5_locator}
if [ $1 -eq 0 ]; then
%{_sbindir}/update-alternatives --remove winbind_krb5_locator.so %{_libdir}/samba/krb5/winbind_krb5_locator.so
fi
#----------------------------------------------------------------------------
%prep
%setup -q
%autopatch -p1
grep -q '@ROSA_VENDOR_PATCH@' VERSION # validate
# SAMBA_VERSION_VENDOR_PATCH is a floating constant
sed -e 's/@ROSA_VENDOR_PATCH@/%{release}/g' -i VERSION
%build
%if %{with clang}
%clang_gcc_wrapper
%endif
%serverbuild
./configure \
--enable-fhs \
--with-modulesdir=%{_libdir}/samba \
--localstatedir=%{_localstatedir} \
--libexecdir=%{_libexecdir} \
--prefix=%{_prefix} \
--libdir=%{_libdir} \
--sysconfdir=%{_sysconfdir} \
--datadir=%{_datadir} \
--with-piddir=%{_rundir}/samba \
--with-lockdir=%{_rundir}/samba \
--with-sockets-dir=%{_rundir}/samba \
--with-statedir=%{_var}/lib/samba \
--with-cachedir=%{_var}/cache/samba \
--bundled-libraries=heimdal,!zlib,!popt,!talloc,!talloc-util,!tevent,!tdb,!ldb \
--enable-cups \
--enable-avahi \
--with-pam \
--with-smb1-server \
--with-winbind \
--with-ads \
--with-ldap \
--disable-rpath \
--disable-rpath-install \
--disable-rpath-private-install \
--enable-pthreadpool \
--with-iconv \
--with-acl-support \
--with-automount \
--with-systemd \
--with-systemddir=%{_unitdir} \
--systemd-install-services \
--
%make
( cd pidl
perl Makefile.PL PREFIX=%{_prefix}
%make
)
%install
# yes, we need -jN here, compilation is done (why?)
%makeinstall_std %{?_smp_mflags}
# no external consumers, no need in devel package
unlink %{buildroot}%{_libdir}/libsamba-credentials.so
#Even though we tell waf above where to put perl it gets it wrong
#mkdir -p %{buildroot}/%{perl_vendorlib}
#mv %{buildroot}%_datadir/perl5/* %{buildroot}/%{perl_vendorlib}
#need to stay
mkdir -p %{buildroot}/{sbin,bin}
mkdir -p %{buildroot}%{_sysconfdir}/{logrotate.d,pam.d,xinetd.d}
mkdir -p %{buildroot}%{_initrddir}
mkdir -p %{buildroot}/var/cache/%{name}
mkdir -p %{buildroot}/var/log/%{name}
mkdir -p %{buildroot}/var%{_rundir}/%{name}
mkdir -p %{buildroot}/var/spool/%{name}
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/private
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/{netlogon,profiles,printers}
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/printers/{W32X86,WIN40,W32ALPHA,W32MIPS,W32PPC}
mkdir -p %{buildroot}%{_localstatedir}/lib/%{name}/codepages/src
mkdir -p %{buildroot}%{smb_usershare_dir}
mkdir -p %{buildroot}%{_libdir}/pkgconfig
mkdir -p %{buildroot}%{_sbindir}
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}/%{name}/vfs
mkdir -p %{buildroot}%{_datadir}/%{name}/scripts
# Fix some paths so provision works:
perl -pi -e 's,default_ldb_modules_dir = None,default_ldb_modules_dir = \"%{_libdir}/%{name}/ldb\",g' %{buildroot}/%{python3_sitearch}/samba/__init__.py
#perl -pi -e 's,share/samba/setup,share/%{name}/setup,g' %{buildroot}/%{python3_sitearch}/samba/provision.py
# Install other stuff
install -m644 %{SOURCE28} %{buildroot}/%{_sysconfdir}/pam.d/%{name}
install -m644 %{SOURCE29} %{buildroot}/%{_sysconfdir}/pam.d/system-auth-winbind
#
install -m644 %{SOURCE1} %{buildroot}/%{_sysconfdir}/logrotate.d/%{name}-server
# install pam_winbind.conf sample file
mkdir -p %{buildroot}%{_sysconfdir}/security
# Install patched default config
install -m0644 examples/smb.conf.default %{buildroot}/%{_sysconfdir}/%{name}/smb.conf
sed -i -e 's,@ROSA_PLATFORM@,%{rosa_release},g' %{buildroot}/%{_sysconfdir}/%{name}/smb.conf
sed -i -e 's,@smb_usershare_dir@,%{smb_usershare_dir},g' %{buildroot}/%{_sysconfdir}/%{name}/smb.conf
echo 127.0.0.1 localhost > %{buildroot}/%{_sysconfdir}/%{name}/lmhosts
install -c -m 755 %{SOURCE10} %{buildroot}%{_datadir}/%{name}/scripts/print-pdf
rm -f %{buildroot}/%{_mandir}/man1/testprns*
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
cat >%{buildroot}%{_sysconfdir}/ld.so.conf.d/samba_%{_arch}.conf <<EOF
%{_libdir}/samba
EOF
mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
install -m644 packaging/systemd/samba.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/samba
# NetworkManager online/offline script
install -d -m 0755 %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/
install -m 0755 packaging/NetworkManager/30-winbind-systemd %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/30-winbind
# winbind krb5 plugins
install -d -m 0755 %{buildroot}%{_libdir}/krb5/plugins/libkrb5
touch %{buildroot}%{_libdir}/krb5/plugins/libkrb5/winbind_krb5_locator.so
sed -i "s|/usr/bin/kill|$(which kill)|g" %{buildroot}%{_unitdir}/*.service
# create %{_rundir}/samba too.
mkdir -p %{buildroot}%{_tmpfilesdir}/
echo "d %{_rundir}/samba 755 root root" >> %{buildroot}%{_tmpfilesdir}/samba.conf
# Prepare schema files to be included into OpenLDAP configuration
mkdir -p %{buildroot}%{_sysconfdir}/openldap/{schema,slapd.d}
install -m 0644 examples/LDAP/samba.schema %{buildroot}%{_sysconfdir}/openldap/schema/
install -m 0644 examples/LDAP/samba.ldif %{buildroot}%{_sysconfdir}/openldap/schema/
install -m 0644 examples/LDAP/README %{buildroot}%{_sysconfdir}/openldap/schema/README.samba
install -m 0640 %{SOURCE41} %{buildroot}%{_sysconfdir}/openldap/slapd.d/%{name}.conf
# From Fedora
( cd pidl
make DESTDIR=%{buildroot} install_vendor
rm -f %{buildroot}%{perl_archlib}/perllocal.pod
rm -f %{buildroot}%{perl_archlib}/vendor_perl/auto/Parse/Pidl/.packlist
# Already packaged by perl Parse:Yapp
rm -rf %{buildroot}%{perl_vendorlib}/Parse/Yapp
)
# Make managing Samba shares from GUIs (e.g. Dolphin, Thunar) work out of the box where needed
mkdir -p %{buildroot}%{_sysconfdir}/role.d
echo "wheel: sambashare" > %{buildroot}%{_sysconfdir}/role.d/sambashare.role
mkdir -p %{buildroot}%{_sysusersdir}
cat %{SOURCE43} > %{buildroot}%{_sysusersdir}/samba-server.conf
%if %{with avahi_service}
mkdir -p %{buildroot}%{_sysconfdir}/avahi/services/
install -m 0644 %{SOURCE42} %{buildroot}%{_sysconfdir}/avahi/services/smb.service
sed -i -e 's,@SAMBA_VERSION@,%{version},g' -e 's,@ROSA_VERSION@,%{rosa_release},g' \
%{buildroot}%{_sysconfdir}/avahi/services/smb.service
%endif
# Manually build localizations of pam_winbind
# https://bugzilla.samba.org/show_bug.cgi?id=14491
( cd source3/locale/pam_winbind
for i in *.po
do
# ru.po -> ru
lang="$(echo "$i" | awk -F '.' '{print $1}')"
mkdir -p %{buildroot}%{_datadir}/locale/${lang}/LC_MESSAGES/
msgfmt --output-file=%{buildroot}%{_datadir}/locale/${lang}/LC_MESSAGES/pam_winbind.mo ${i}
done
)
%find_lang pam_winbind
# We upstreamized patches to samba to make smbspool_krb5_wrapper work both with and without krb5 auth
mkdir -p %{buildroot}%{_prefix}/lib/cups/backend
ln -sf ../../../libexec/samba/smbspool_krb5_wrapper %{buildroot}%{_prefix}/lib/cups/backend/smb
test -e "$(realpath %{buildroot}%{_prefix}/lib/cups/backend/smb)"