# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 CRATES=" addr2line@0.20.0 adler@1.0.2 ahash@0.7.6 ansi_term@0.12.1 atty@0.2.14 autocfg@1.1.0 backtrace@0.3.68 base64@0.13.1 bitflags@1.3.2 bitflags@2.3.3 byteorder@1.4.3 cbindgen@0.9.1 cc@1.0.79 cfg-if@1.0.0 clap@2.34.0 concread@0.2.21 crossbeam-channel@0.5.8 crossbeam-deque@0.8.3 crossbeam-epoch@0.9.15 crossbeam-queue@0.3.8 crossbeam-utils@0.8.16 crossbeam@0.8.2 errno-dragonfly@0.1.2 errno@0.3.1 fastrand@2.0.0 fernet@0.1.4 foreign-types-shared@0.1.1 foreign-types@0.3.2 getrandom@0.2.10 gimli@0.27.3 hashbrown@0.12.3 hermit-abi@0.1.19 instant@0.1.12 itoa@1.0.9 jobserver@0.1.26 libc@0.2.147 linux-raw-sys@0.4.3 lock_api@0.4.10 log@0.4.19 lru@0.7.8 memchr@2.5.0 memoffset@0.9.0 miniz_oxide@0.7.1 object@0.31.1 once_cell@1.18.0 openssl-macros@0.1.1 openssl-sys@0.9.87 openssl@0.10.52 parking_lot@0.11.2 parking_lot_core@0.8.6 paste-impl@0.1.18 paste@0.1.18 pin-project-lite@0.2.10 pkg-config@0.3.27 ppv-lite86@0.2.17 proc-macro-hack@0.5.20+deprecated proc-macro2@1.0.66 quote@1.0.32 rand@0.8.5 rand_chacha@0.3.1 rand_core@0.6.4 redox_syscall@0.2.16 redox_syscall@0.3.5 rustc-demangle@0.1.23 rustix@0.38.4 ryu@1.0.15 scopeguard@1.2.0 serde@1.0.175 serde_derive@1.0.175 serde_json@1.0.103 smallvec@1.11.0 strsim@0.8.0 syn@1.0.109 syn@2.0.27 tempfile@3.7.0 textwrap@0.11.0 tokio-macros@2.1.0 tokio@1.29.1 toml@0.5.11 unicode-ident@1.0.11 unicode-width@0.1.10 uuid@0.8.2 vcpkg@0.2.15 vec_map@0.8.2 version_check@0.9.4 wasi@0.11.0+wasi-snapshot-preview1 winapi-i686-pc-windows-gnu@0.4.0 winapi-x86_64-pc-windows-gnu@0.4.0 winapi@0.3.9 windows-sys@0.48.0 windows-targets@0.48.1 windows_aarch64_gnullvm@0.48.0 windows_aarch64_msvc@0.48.0 windows_i686_gnu@0.48.0 windows_i686_msvc@0.48.0 windows_x86_64_gnu@0.48.0 windows_x86_64_gnullvm@0.48.0 windows_x86_64_msvc@0.48.0 zeroize@1.6.0 zeroize_derive@1.4.2 " PYTHON_COMPAT=( python3_{10..12} ) DISTUTILS_SINGLE_IMPL=1 DISTUTILS_USE_PEP517=setuptools inherit autotools cargo distutils-r1 readme.gentoo-r1 systemd tmpfiles DESCRIPTION="389 Directory Server (core libraries and daemons)" HOMEPAGE="https://directory.fedoraproject.org/" SRC_URI=" https://github.com/389ds/${PN}/archive/refs/tags/${P}.tar.gz ${CARGO_CRATE_URIS} " LICENSE="GPL-3+" # Dependent crate licenses LICENSE+=" Apache-2.0 BSD MIT MPL-2.0 Unicode-DFS-2016" SLOT="0" KEYWORDS="~amd64 ~arm64" IUSE_PLUGINS="+accountpolicy +bitwise +dna +pam-passthru" IUSE="${IUSE_PLUGINS} +autobind auto-dn-suffix debug doc +ldapi selinux systemd" REQUIRED_USE="${PYTHON_REQUIRED_USE}" # lib389 tests (which is most of the suite) can't find their own modules. RESTRICT="test" # Do not add any AGPL-3 BDB here! # See bug 525110, comment 15. # dev-libs/libevent: https://github.com/389ds/389-ds-base/pull/5172 DEPEND=" >=app-crypt/mit-krb5-1.7-r100[openldap] dev-db/lmdb:= >=dev-libs/cyrus-sasl-2.1.19:2[kerberos] dev-libs/json-c:= >=dev-libs/icu-60.2:= dev-libs/nspr >=dev-libs/nss-3.22[utils] dev-libs/libevent:= dev-libs/libpcre2:= dev-libs/openssl:0= >=net-analyzer/net-snmp-5.1.2:= net-nds/openldap:=[sasl] sys-libs/cracklib sys-libs/db:5.3 sys-libs/zlib sys-fs/e2fsprogs pam-passthru? ( sys-libs/pam ) selinux? ( $(python_gen_cond_dep ' sys-libs/libselinux[python,${PYTHON_USEDEP}] ') ) systemd? ( >=sys-apps/systemd-244 ) virtual/libcrypt:= " BDEPEND=">=dev-build/autoconf-2.69-r5 virtual/pkgconfig >=virtual/rust-1.70 ${PYTHON_DEPS} $(python_gen_cond_dep ' dev-python/argparse-manpage[${PYTHON_USEDEP}] ') doc? ( app-text/doxygen ) test? ( dev-util/cmocka ) " # perl dependencies are for logconv.pl RDEPEND="${DEPEND} !net-nds/389-ds-base:1.4 acct-user/dirsrv ${PYTHON_DEPS} $(python_gen_cond_dep ' dev-python/pyasn1[${PYTHON_USEDEP}] dev-python/pyasn1-modules[${PYTHON_USEDEP}] dev-python/argcomplete[${PYTHON_USEDEP}] dev-python/cryptography[${PYTHON_USEDEP}] dev-python/python-dateutil[${PYTHON_USEDEP}] dev-python/python-ldap[sasl,${PYTHON_USEDEP}] dev-python/distro[${PYTHON_USEDEP}] ') virtual/perl-Archive-Tar virtual/perl-DB_File virtual/perl-IO virtual/perl-Getopt-Long virtual/perl-IO-Compress virtual/perl-MIME-Base64 virtual/perl-Scalar-List-Utils virtual/perl-Time-Local virtual/logger selinux? ( sec-policy/selinux-dirsrv ) " S="${WORKDIR}/${PN}-${P}" PATCHES=( "${FILESDIR}/${PN}-db-gentoo.patch" ) distutils_enable_tests pytest src_prepare() { # https://github.com/389ds/389-ds-base/issues/4292 if use !systemd; then sed -i \ -e 's|WITH_SYSTEMD = 1|WITH_SYSTEMD = 0|' \ Makefile.am || die fi default eautoreconf } src_configure() { local myeconfargs=( $(use_enable accountpolicy acctpolicy) $(use_enable bitwise) $(use_enable dna) $(use_enable pam-passthru) $(use_enable autobind) $(use_enable auto-dn-suffix) $(use_enable debug) $(use_enable ldapi) $(use_with selinux) $(use_with systemd) $(use_with systemd systemdgroupname "dirsrv.target") $(use_with systemd tmpfiles-d "/usr/lib/tmpfiles.d") --with-systemdsystemunitdir="$(systemd_get_systemunitdir)" $(use_with !systemd initddir "/etc/init.d") $(use_enable test cmocka) --enable-rust-offline --with-pythonexec="${PYTHON}" --with-fhs --with-openldap --with-db-inc="${EPREFIX}"/usr/include/db5.3 --disable-cockpit ) econf "${myeconfargs[@]}" rm .cargo/config || die } src_compile() { export CARGO_HOME="${ECARGO_HOME}" default if use doc; then doxygen docs/slapi.doxy || die fi pushd src/lib389 &>/dev/null || die distutils-r1_src_compile popd &>/dev/null || die # argparse-manpage dynamic man pages have hardcoded man v1 in header sed -i \ "1s/\"1\"/\"8\"/" \ src/lib389/man/{openldap_to_ds,ds{conf,ctl,idm,create}}.8 || die } src_test () { emake check cd src/lib389 || die distutils-r1_src_test } src_install() { # -j1 is a temporary workaround for bug #605432 emake -j1 DESTDIR="${D}" install # Install gentoo style init script # Get these merged upstream newinitd "${FILESDIR}"/389-ds.initd-r1 389-ds newinitd "${FILESDIR}"/389-ds-snmp.initd 389-ds-snmp dotmpfiles "${FILESDIR}"/389-ds-base.conf # cope with libraries being in /usr/lib/dirsrv dodir /etc/env.d echo "LDPATH=/usr/$(get_libdir)/dirsrv" > "${ED}"/etc/env.d/08dirsrv || die if use doc; then docinto html/ dodoc -r html/. fi pushd src/lib389 &>/dev/null || die distutils-r1_src_install popd &>/dev/null || die python_fix_shebang "${ED}" readme.gentoo_create_doc find "${ED}" -type f \( -name "*.a" -o -name "*.la" \) -delete || die } pkg_postinst() { tmpfiles_process 389-ds-base.conf readme.gentoo_print_elog }