From c68077aecb55b446f403547767e3aacfc9b96441 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Tue, 30 Jul 2024 12:44:17 +0200 Subject: [PATCH 1/8] Convert to %autorelease and %autochangelog [skip changelog] --- 389-ds-base.spec | 502 +---------------------------------------------- changelog | 498 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 500 insertions(+), 500 deletions(-) create mode 100644 changelog diff --git a/389-ds-base.spec b/389-ds-base.spec index 99f2209..3a4bc2f 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -46,7 +46,7 @@ ExcludeArch: i686 Summary: 389 Directory Server (base) Name: 389-ds-base Version: 3.0.2 -Release: 1%{?dist} +Release: %autorelease License: GPL-3.0-or-later AND (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND PSF-2.0 URL: https://www.port389.org Conflicts: selinux-policy-base < 3.9.8 @@ -907,502 +907,4 @@ exit 0 %endif %changelog -* Mon Apr 15 2024 James Chapman - 3.0.2-1 -- Bump version to 3.0.2 -- Issue 6082 - Remove explicit dependencies toward libdb - revert default (#6145) -- Issue 6142 - [RFE] Add LMDB configuration related checks into Healthcheck tool (#6143) -- Issue 6141 - freeipa test_topology_TestCASpecificRUVs is failing (#6144) -- Issue 6136 - failure in freeipa tests (#6137) -- Issue 6119 - Synchronise accept_thread with slapd_daemon (#6120) -- Issue 6105 - lmdb - Cannot create entries with long rdn (#6130) -- Issue 6082 - Remove explicit dependencies toward libdb (#6083) -- Issue i6057 - Fix3 - Fix covscan issues (#6127) -- Issue 6057 - vlv search may result wrong result with lmdb - Fix 2 (#6121) -- Issue 6057 - vlv search may result wrong result with lmdb (#6091) -- Issue 6092 - passwordHistory is not updated with a pre-hashed password (#6093) -- Issue 6133 - Move slapi_pblock_set_flag_operation_notes() to slapi-plugin.h -- Issue 6125 - dscreate interactive fails when chosing mdb backend (#6126) -- Issue 6110 - Typo in Account Policy plugin message -- Issue 6080 - ns-slapd crash in referint_get_config (#6081) -- Issue 6117 - Fix the UTC offset print (#6118) -- Issue 5305 - OpenLDAP version autodetection doesn't work -- Issue 6112 - RFE - add new operation note for MFA authentications -- Issue 5842 - Add log buffering to audit log -- Issue 3527 - Support HAProxy and Instance on the same machine configuration (#6107) -- Issue 6103 - New connection timeout error breaks errormap (#6104) -- Issue 6096 - Improve connection timeout error logging (#6097) -- Issue 6067 - Improve dsidm CLI No Such Entry handling (#6079) -- Issue 6067 - Add hidden -v and -j options to each CLI subcommand (#6088) -- Issue 6061 - Certificate lifetime displayed as NaN - -* Wed Jan 31 2024 Pete Walter - 3.0.1-2 -- Rebuild for ICU 74 - -* Tue Jan 30 2024 Simon Pichugin - 3.0.1-1 -- Bump version to 3.0.1 -- Issue 6043, 6044 - Enhance Rust and JS bundling and add SPDX licenses for both (#6045) -- Issue 3555 - Remove audit-ci from dependencies (#6056) -- Issue 6052 - Paged results test sets hostname to `localhost` on test collection -- Issue 6051 - Drop unused pytest markers -- Issue 6049 - lmdb - changelog is wrongly recreated by reindex task (#6050) -- Issue 6047 - Add a check for tagged commits -- Issue 6041 - dscreate ds-root - accepts relative path (#6042) -- Switch default backend to lmdb and bump version to 3.0 (#6013) -- Issue 6032 - Replication broken after backup restore (#6035) -- Issue 6037 - Server crash at startup in vlvIndex_delete (#6038) -- Issue 6034 - Change replica_id from str to int -- Issue 6028 - vlv index keys inconsistencies (#6031) -- Issue 5989 - RFE support of inChain Matching Rule (#5990) -- Issue 6022 - lmdb inconsistency between vlv index and vlv cache names (#6026) -- Issue 6015 - Fix typo remeber (#6014) -- Issue 6016 - Pin upload/download artifacts action to v3 -- Issue 5939 - During an update, if the target entry is reverted in the entry cache, the server should not retry to lock it (#6007) -- Issue 4673 - Update Rust crates -- Issue 6004 - idletimeout may be ignored (#6005) -- Issue 5954 - Disable Transparent Huge Pages -- Issue 5997 - test_inactivty_and_expiration CI testcase is wrong (#5999) -- Issue 5993 - Fix several race condition around CI tests (#5996) -- Issue 5944 - Reversion of the entry cache should be limited to BETXN plugin failures (#5994) -- Bump openssl from 0.10.55 to 0.10.60 in /src (#5995) -- Issue 5980 - Improve instance startup failure handling (#5991) -- Issue 5976 - Fix freeipa install regression with lmdb (#5977) -- Issue 5984 - Crash when paged result search are abandoned - fix2 (#5987) -- Issue 5984 - Crash when paged result search are abandoned (#5985) -- Issue 5947 - CI test_vlv_recreation_reindex fails on LMDB (#5979) - -* Mon Jan 29 2024 Fedora Release Engineering - 2.4.5-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Mon Jan 22 2024 Fedora Release Engineering - 2.4.5-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 2.4.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Jan 18 2024 Fedora Release Engineering - 2.4.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Thu Jan 18 2024 Viktor Ashirov - 2.4.5-1 -- Bump version to 2.4.5 -- Issue 5989 - RFE support of inChain Matching Rule (#5990) -- Issue 5939 - During an update, if the target entry is reverted in the entry cache, the server should not retry to lock it (#6007) -- Issue 5944 - Reversion of the entry cache should be limited to BETXN plugin failures (#5994) -- Issue 5954 - Disable Transparent Huge Pages -- Issue 5984 - Crash when paged result search are abandoned - fix2 (#5987) -- Issue 5984 - Crash when paged result search are abandoned (#5985) - -* Wed Nov 15 2023 James Chapman - 2.4.4 -- Bump version to 2.4.4 -- Issue 5971 - CLI - Fix password prompt for repl status (#5972) -- Issue 5973 - Fix fedora cop RawHide builds (#5974) -- Revert "Issue 5761 - Worker thread dynamic management (#5796)" (#5970) -- Issue 5966 - CLI - Custom schema object is removed on a failed edit (#5967) -- Issue 5786 - Update permissions for Release workflow -- Issue 5960 - Subpackages should have more strict interdependencies -- Issue 3555 - UI - Fix audit issue with npm - babel/traverse (#5959) -- Issue 4843 - Fix dscreate create-template issue (#5950) -- bugfix for --passwd-file not working on latest version (#5934) -- Issue 5843 - dsconf / dscreate should be able to handle lmdb parameters (#5943) -- Bump postcss from 8.4.24 to 8.4.31 in /src/cockpit/389-console (#5945) -- Issue 5938 - Attribute Names changed to lowercase after adding the Attributes (#5940) -- issue 5924 - ASAN server build crash when looping opening/closing connections (#5926) -- Issue 1925 - Add a CI test (#5936) -- Issue 5732 - Localizing Cockpit's 389ds Plugin using CockpitPoPlugin (#5764) -- Issue 1870 - Add a CI test (#5929) -- Issue 843 - Add a warning to slapi_valueset_add_value_ext (#5925) -- Issue 5761 - Worker thread dynamic management (#5796) -- Issue 1802 - Improve ldclt man page (#5928) -- Issue 1456 - Add a CI test that verifies there is no issue (#5927) -- Issue 1317 - Add a CI test (#5923) -- Issue 1081 - CI - Add more tests for overwriting x-origin issue (#5815) -- Issue 1115 - Add a CI test (#5913) -- Issue 5848 - Fix condition and add a CI test (#5916) -- Issue 5848 - Fix condition and add a CI test (#5916) -- Issue 5914 - UI - server settings page validation improvements and db index fixes -- Issue 5909 - Multi listener hang with 20k connections (#5917) -- Issue 5902 - Fix previous commit regression (#5919) -- pass instance correctly to ds_is_older (#5903) -- Issue 5909 - Multi listener hang with 20k connections (#5910) -- Issue 5722 - improve testcase (#5904) -- Issue 5203 - outdated version in provided metadata for lib389 -- Bug Description: -- issue 5890 part 2 - Need a tester for testing multiple listening thread feature (#5897) -- Issue i5846 - Crash when lmdb import is aborted (#5881) -- Issue 5894 - lmdb import error fails with Could not store the entry (#5895) -- Issue 5890 - Need a tester for testing multiple listening thread feature (#5891) -- Issue 5082 - slugify: ModuleNotFoundError when running test cases -- Issue 4551 - Part 2 - Fix build warning of previous PR (#5888) -- Issue 5834 - AccountPolicyPlugin erroring for some users (#5866) -- Issue 5872 - part 2 - fix is_dbi regression (#5887) -- Issue 4758 - Add tests for WebUI -- Issue 5848 - dsconf should prevent setting the replicaID for hub and consumer roles (#5849) -- Issue 5883 - Remove connection mutex contention risk on autobind (#5886) -- Issue 5872 - `dbscan()` in lib389 can return bytes - -* Thu Aug 3 2023 Mark Reynolds - 2.4.3-1 -- Bump version to 2.4.3-1 -- Issue 5729 - Memory leak in factory_create_extension (#5814) -- Issue 5870 - ns-slapd crashes at startup if a backend has no suffix (#5871) -- Issue 5876 - CI Test random failure - Import (#5879) -- Issue 5877 - test_basic_ldapagent breaks test_setup_ds_as_non_root* tests -- Issue 5867 - lib389 should use filter for tarfile as recommended by PEP 706 (#5868) -- Issue 5853 - Update Cargo.lock and fix minor warning (#5854) -- Issue 5785 - CLI - arg completion is broken -- Issue 5864 - Server fails to start after reboot because it's unable to access nsslapd-rundir -- Issue 5856 - SyntaxWarning: invalid escape sequence '\,' -- Issue 5859 - dbscan fails with AttributeError: 'list' object has no attribute 'extends' -- Issue 3527 - UI - Add nsslapd-haproxy-trusted-ip to server setting (#5839) -- Issue 4551 - Paged search impacts performance (#5838) -- Issue 4758 - Add tests for WebUI -- Issue 4169 - UI - Fix retrochangelog and schema Typeaheads (#5837) -- issue 5833 - dsconf monitor backend fails on lmdb (#5835) -- Issue 3555 - UI - Fix audit issue with npm - stylelint (#5836) - -* Mon Jul 24 2023 Mark Reynolds - 2.4.2-5 -- Bump version to 2.4.2-5 -- Add the bash completion scripts to the appropriate files section - -* Wed Jul 19 2023 Fedora Release Engineering - 2.4.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 11 2023 František Zatloukal - 2.4.2-3 -- Rebuilt for ICU 73.2 - -* Mon Jul 10 2023 Mark Reynolds - 2.4.2-2 -- Bump version to 2.4.2-2 -- Issue 5752 - RFE - Provide a history for LastLoginTime (#5807) -= Issue 4719 - CI - Add dsconf add a PTA URL test - -* Fri Jul 7 2023 Mark Reynolds - 2.4.2-1 -- Bump version to 2.4.2 -- Issue 5793 - UI - fix suffix selection in export modal -- Issue 5793 - UI - Fix minor crashes (#5827) -- Issue 5825 - healthcheck - password storage scheme warning needs more info -- Issue 5822 - Allow empty export path for db2ldif -- Issue 5755 - Massive memory leaking on update operations (#5824) -- Issue 5701 - CI - Add more tests for referral mode fix (#5810) -- Issue 5551 - Almost empty and not loaded ns-slapd high cpu load -- Issue 5755 - The Massive memory leaking on update operations (#5803) -- Issue 2375 - CLI - Healthcheck - revise and add new checks -- Bump openssl from 0.10.52 to 0.10.55 in /src -- Issue 5793 - UI - movce from webpack to esbuild bundler -- Issue 5752 - CI - Add more tests for lastLoginHistorySize RFE (#5802) -- Issue 3527 - Fix HAProxy x390x compatibility and compiler warnings (#5801) -- Issue 5798 - CLI - Add multi-valued support to dsconf config (#5799) -- Issue 5781 - Bug handling return code of pre-extended operation plugin. -- Issue 5785 - move bash completion to post section of specfile -- Issue 5156 - (cont) RFE slapi_memberof reusing memberof values (#5744) -- Issue 4758 - Add tests for WebUI -- Issue 3527 - Add PROXY protocol support (#5762) -- Issue 5789 - Improve ds-replcheck error handling -- Issue 5786 - CLI - registers tools for bash completion -- Issue 5786 - Set minimal permissions on GitHub Workflows (#5787) -- Issue 5646 - Various memory leaks (#5725) -- Issue 5778 - UI - Remove error message if .dsrc is missing -- Issue 5751 - Cleanallruv task crashes on consumer (#5775) - -* Wed Jun 28 2023 Python Maint - 2.4.1-2 -- Rebuilt for Python 3.12 - -* Thu May 18 2023 Mark Reynolds - 2.4.1-1 -- Bump version to 2.4.1 -- Issue 5770 - RFE - Extend Password Adminstrators to allow skipping password info updates -- Issue 5768 - CLI/UI - cert checks are too strict, and other issues -- Issue 5722 - fix compilation warnings (#5771) -- Issue 5765 - Improve installer selinux handling -- Issue 152 - RFE - Add support for LDAP alias entries -- Issue 5052 - BUG - Custom filters prevented entry deletion (#5060) -- Issue 5752 - RFE - Provide a history for LastLoginTime (#5753) -- Issue 5722 - RFE When a filter contains 'nsrole', improve response time by rewriting the filter (#5723) -- Issue 5704 - crash in sync_refresh_initial_content (#5720) -- Issue 5738 - RFE - UI - Read/write replication monitor info to .dsrc file -- Issue 5156 - build warnings (#5758) -- Issue 5749 - RFE - Allow Account Policy Plugin to handle inactivity and expiration at the same time -- Issue 5743 - Disabling replica crashes the server (#5746) -- Issue 2562 - Copy config files into backup directory -- Issue 5156 - fix build breakage from slapi-memberof commit -- Issue 4758 - Add tests for WebUI - -* Tue Apr 25 2023 Mark Reynolds - 2.4.0-1 -- Bump version to 2.4.0 -- Issue 5156 - RFE that implement slapi_memberof (#5694) -- Issue 5734 - RFE - Exclude pwdFailureTime and ContextCSN (#5735) -- Issue 5726 - ns-slapd crashing in ldbm_back_upgradednformat (#5727) -- Issue 4758 - Add tests for WebUI -- Issue 5718 - Memory leak in connection table (#5719) -- Issue 5705 - Add config parameter to close client conns on failed bind (#5712) -- Issue 4758 - Add tests for WebUI -- Issue 5643 - Memory leak in entryrdn during delete (#5717) -- Issue 5714 - UI - fix typo, db settings, log settings, and LDAP editor paginations -- Issue 5701 - CLI - Fix referral mode setting (#5708) -- Bump openssl from 0.10.45 to 0.10.48 in /src (#5709) -- Issue 5710 - subtree search statistics for index lookup does not report ancestorid/entryrdn lookups (#5711) -- Issue 5697 - Obsolete nsslapd-ldapimaprootdn attribute (#5698) -- Issue 1081 - Stop schema replication from overwriting x-origin -- Issue 4812 - Listener thread does not scale with a high num of established connections (#5706) -- Issue 4812 - Listener thread does not scale with a high num of established connections (#5681) -- Bump webpack from 5.75.0 to 5.76.0 in /src/cockpit/389-console (#5699) -- Issue 5598 - (3rd) In 2.x, SRCH throughput drops by 10% because of handling of referral (#5692) -- Issue 5598 - (2nd) In 2.x, SRCH throughput drops by 10% because of handling of referral (#5691) -- Issue 5687 - UI - sensitive information disclosure -- Issue 5661 - LMDB hangs while Rebuilding the replication changelog RUV (#5676) -- Issue 5554 - Add more tests to security_basic_test suite -- Issue 4583 - Update specfile to skip checks of ASAN builds -- Issue 4758 - Add tests for WebUI -- Issue 3604 - UI - Add support for Subject Alternative Names in CSR -- Issue 5600 - buffer overflow when enabling sync repl plugin when dynamic plugins is enabled -- Issue 5640 - Update logconv for new logging format -- Issue 5162 - CI - fix error message for invalid pem file -- Issue 5598 - In 2.x, SRCH throughput drops by 10% because of handling of referral (#5604) -- Issue 5671 - covscan - clang warning (#5672) -- Issue 5267 - CI - Fix issues with nsslapd-return-original-entrydn -- Issue 5666 - CLI - Add timeout parameter for tasks -- Issue 5567 - CLI - make ldifgen use the same default ldif name for all options -- Issue 5647 - Fix unused variable warning from previous commit (#5670) -- Issue 5162 - Lib389 - verify certificate type before adding -- Issue 5642 - Build fails against setuptools 67.0.0 -- Issue 5630 - CLI - need to add logging filter for stdout -- Issue 5646 - CLI/UI - do not hardcode password storage schemes -- Issue 5640 - Update logconv for new logging format -- issue 5647 - covscan: memory leak in audit log when adding entries (#5650) -- Issue 5658 - CLI - unable to add attribute with matching rule -- Issue 5653 - covscan - fix invalid dereference -- Issue 5652 - Libasan crash in replication/cascading_test (#5659) -- Issue 5628 - Handle graceful timeout in CI tests (#5657) -- Issue 5648 - Covscan - Compiler warnings (#5651) -- Issue 5630 - CLI - error messages should goto stderr -- Issue 2435 - RFE - Raise IDL Scan Limit to INT_MAX (#5639) -- Issue 5632 - CLI - improve error handling with db2ldif -- Issue 5517 - Replication conflict CI test sometime fails (#5518) -- Issue 5634 - Deprecated warning related to github action workflow code (#5635) -- Issue 5637 - Covscan - fix Buffer Overflows (#5638) -- Issue 5624 - RFE - UI - export certificates, and import text base64 encoded certificates -- Bump tokio from 1.24.1 to 1.25.0 in /src (#5629) -- Issue 4577 - Add LMDB pytest github action (#5627) -- Issue 4293 - RFE - CLI - add dsrc options for setting user and group subtrees -- Remove stale libevent(-devel) dependency -- Issue 5578 - dscreate ds-root does not normaile paths (#5613) -- Issue 5497 - boolean attributes should be case insensitive - -* Fri Mar 31 2023 Viktor Ashirov - 2.3.2-3 -- Fix build issue against setuptools 67.0.0 (#2183375) - -* Tue Feb 28 2023 Simon Pichugin - 2.3.2-2 -- Use systemd-sysusers for dirsrv user and group (#2173834) - -* Mon Jan 23 2023 Mark Reynolds - 2.3.2-1 -- Bump version to 2.3.2 -- Issue 5547 - automember plugin improvements -- Issue 5607, 5351, 5611 - UI/CLI - fix various issues -- Issue 5610 - Build failure on Debian -- Issue 5608 - UI - need to replace some "const" with "let" -- Issue 5560 - dscreate run by non superuser set defaults requiring superuser privilege (#5579) -- Issue 3604 - Create a private key/CSR with dsconf/Cockpit (#5584) -- Issue 5605 - Adding a slapi_log_backtrace function in libslapd (#5606) -- Issue 5602 - UI - browser crash when trying to modify read-only variable -- Issue 5581 - UI - Support cockpit dark theme -- Issue 5593 - CLI - dsidm account subtree-status fails with TypeError -- Issue 5591 - BUG - Segfault in cl5configtrim with invalid confi (#5592) -- Fix latest npm audit failures -- Issue 5599 - CI - webui tests randomly fail -- Issue 5348 - RFE - CLI - add functionality to do bulk updates to entries -- Issue 5588 - Fix CI tests -- Issue 5585 - lib389 password policy DN handling is incorrect (#5587) -- Issue 5521 - UI - Update plugins for new split PAM and LDAP pass thru auth -- Bump json5 from 2.2.1 to 2.2.3 in /src/cockpit/389-console -- Issue 5236 - UI add specialized group edit modal -- Issue 5550 - dsconf monitor crashes with Error math domain error (#5553) -- Issue 5278 - CLI - dsidm asks for the old password on password reset -- Issue 5531 - CI - use universal_lines in capture_output -- Issue 5425 - CLI - add confirmation arg when deleting backend -- Issue 5558 - non-root instance fails to start on creation (#5559) -- Issue 5545 - A random crash in import over lmdb (#5546) -- Issue 3615 - CLI - prevent virtual attribute indexing -- Update specfile and rust crates -- Issue 5413 - Allow mutliple MemberOf fixup tasks with different bases/filters -- Issue 5554 - Add more tests to security_basic_test suite (#5555) -- Issue 5561 - Nightly tests are failing -- Issue 5521 - RFE - split pass through auth cli -- Issue 5521 - BUG - Pam PTA multiple issues -- Issue 5544 - Increase default task TTL -- Issue 5526 - RFE - Improve saslauthd migration options (#5528) -- Issue 5539 - Make logger's parameter name unified (#5540) -- Issue 5541 - Fix typo in `lib389.cli_conf.backend._get_backend` (#5542) -- Issue 3729 - (cont) RFE Extend log of operations statistics in access log (#5538) -- Issue 5534 - Fix a rebase typo (#5537) -- Issue 5534 - Add copyright text to the repository files - -* Wed Jan 18 2023 Fedora Release Engineering - 2.3.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Sat Dec 31 2022 Pete Walter - 2.3.1-2 -- Rebuild for ICU 72 - -* Fri Nov 18 2022 Mark Reynolds - 2.3.1-1 -- Bump version to 2.3.1 -- Issue 5532 - Make db compaction TOD day more robust. -- Issue 3729 - RFE Extend log of operations statistics in access log (#5508) -- Issue 5529 - UI - Fix npm vulnerability in loader-utils -- Issue 5490 - tombstone in entryrdn index with lmdb but not with bdb (#5498) -- Issue 5162 - Fix dsctl tls ca-certfiicate add-cert arg requirement -- Issue 5510 - remove twalk_r dependency to build on RHEL8 (#5516) -- Issue 5162 - RFE - CLI allow adding CA certificate bundles -- Issue 5440 - memberof is slow on update/fixup if there are several 'groupattr' (#5455) -- Issue 5512 - BUG - skip pwdPolicyChecker OC in migration (#5513) -- Issue 3555 - UI - fix audit issue with npm loader-utils (#5514) -- Issue 5505 - Fix compiler warning (#5506) -- Issue 5469 - Increase the default value of nsslapd-conntablesize (#5472) -- Issue 5408 - lmdb import is slow (#5481) -- Issue 5429 - healthcheck - add checks for MemberOf group attrs being indexed -- Issue 5502 - RFE - Add option to display entry attributes in audit log -- Issue 5495 - BUG - Minor fix to dds skip, inconsistent attrs caused errors (#5501) -- Issue 5367 - RFE - store full DN in database record -- Issue 5495 - RFE - skip dds during migration. (#5496) -- Issue 5491 - UI - Add rework and finish jpegPhoto functionality (#5492) -- Issue 5368 - Retro Changelog trimming does not work (#5486) -- Issue 5487 - Fix various issues with logconv.pl -- Issue 5476 - RFE - add memberUid read aci by default (#5477) -- Issue 5482 - lib389 - Can not enable replication with a mixed case suffix -- Issue 5478 - Random crash in connection code during server shutdown (#5479) -- Issue 3061 - RFE - Add password policy debug log level -- Issue 5302 - Release tarballs don't contain cockpit webapp -- Issue 5262 - high contention in find_entry_internal_dn on mixed load (#5264) -- Issue 4324 - Revert recursive pthread mutex change (#5463) -- Issue 5462 - RFE - add missing default indexes (#5464) -- Issue 5465 - Fix dbscan linking (#5466) -- Issue 5271 - Serialization of pam_passthrough causing high etimes (#5272) -- Issue 5453 - UI/CLI - Changing Root DN breaks UI -- Issue 5446 - Fix some covscan issues (#5451) -- Issue 4308 - checking if an entry is a referral is expensive -- Issue 5447 - UI - add NDN max cache size to UI -- Issue 5443 - UI - disable save button while saving -- Issue 5413 - Allow only one MemberOf fixup task at a time -- Issue 4592 - dscreate error with custom dir_path (#5434) -- Issue 5158 - entryuuid fixup tasks fails in replicated topology (#5439) - -* Tue Sep 20 2022 Mark Reynolds - 2.3.0-2 -- Bump version to 2.3.0-2 -- Update old pcre-devel requirement to pcre2-devel - -* Thu Sep 1 2022 Mark Reynolds - 2.3.0-1 -- Bump version to 2.3.0 -- Issue 5012 - Migrate pcre to pcre2 - remove match limit -- Issue 5356 - Make Rust non-optional and update default password storage scheme -- Issue 5012 - Migrate pcre to pcre2 -- Issue 5428 - Fix regression with nscpEntryWsi computation -- Fix missing 'not' in description (closes #5423) (#5424) -- Issue 5421 - CI - makes replication/acceptance_test.py::test_modify_entry more robust (#5422) -- Issue 3903 - fix repl keep alive event interval -- Issue 5418 - Sync_repl may crash while managing invalid cookie (#5420) -- Issue 5415 - Hostname when set to localhost causing failures in other tests -- Issue 5412 - lib389 - do not set backend name to lowercase -- Issue 5407 - sync_repl crashes if enabled while dynamic plugin is enabled (#5411) -- Issue 5385 - LMDB - import crash in rdncache_add_elem (#5406) -- Issue 5403 - Memory leak in conntection table mulit list (#5404) -- Issue 3903 - keep alive update event starts too soon -- Issue 5397 - Fix various memory leaks -- Issue 5399 - UI - LDAP Editor is not updated when we switch instances (#5400) -- Issue 3903 - Supplier should do periodic updates -- Issue 5377 - Code cleanup: Fix Covscan invalid reference (#5393) -- Issue 5394 - configure doesn't check for lmdb and json-c -- Issue 5392 - dscreate fails when using alternative ports in the SELinux hi_reserved_port_t label range -- Issue 5386 - BUG - Update sudoers schema to correctly support UTF-8 (#5387) -- Issue 5388 - fix use-after-free and deadcode -- Issue 5383 - UI - Various fixes and RFE's for UI -- Issue 4656 - Remove problematic language from source code -- Issue 5380 - Separate cleanAllRUV code into new file -- Issue 5322 - optime & wtime on rejected connections is not properly set -- Issue 5335 - RFE - Add Security Audit Log -- Issue 5375 - CI - disable TLS hostname checking -- Issue 981 - Managed Entries betxnpreoperation - transaction not aborted on managed entry failure (#5369) -- Issue 5373 - dsidm user get_dn fails with search_ext() argument 1 must be str, not function -- Issue 5371 - Update npm and cargo packages -- Issue 3069 - Support ECDSA private keys for TLS (#5365) -- Issue 5290 - Importing certificate chain files via "import-server-key-cert" no longer works (#5293) - -* Mon Aug 01 2022 Frantisek Zatloukal - 2.2.2-3 -- Rebuilt for ICU 71.1 - -* Wed Jul 20 2022 Fedora Release Engineering - 2.2.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Tue Jul 5 2022 Mark Reynolds - 2.2.2-1 -- Bump version to 2.2.2 -- Issue 5221 - fix covscan (#5359) -- Issue 5294 - Report Portal 5 is not processing an XML file with (#5358) -- Issue 5353 - CLI - dsconf backend export breaks with multiple backends -- Issue 5346 - New connection table fails with ASAN failures (#5350) -- Issue 5345 - BUG - openldap migration fails when ppolicy is active (#5347) -- Issue 5323 - BUG - improve skipping of monitor db (#5340) -- Issue 5329 - Improve replication extended op logging -- Issue 5343 - Various improvements to winsync -- Issue 4932 - CLI - add parser aliases to long arg names -- Issue 5332 - BUG - normalise filter as intended -- Issue 5327 - Validate test metadata -- Issue 4812 - Scalability with high number of connections (#5090) -- Issue 4348 - Add tests for dsidm -- Issue 5333 - 389-ds-base fails to build with Python 3.11 - -* Thu Jun 16 2022 Python Maint - 2.2.1-4 -- Rebuilt for Python 3.11 - -* Wed Jun 15 2022 Mark Reynolds - 2.2.1-3 -- Bump version to 2.2.1-3 -- Issue 5332 - BUG - normalise filter as intended -- Issue 5327 - Validate test metadata -- Issue 4348 - Add tests for dsidm -- Bump crossbeam-utils from 0.8.6 to 0.8.8 in /src -- Issue 5333 - 389-ds-base fails to build with Python 3.11 - -* Mon Jun 13 2022 Python Maint - 2.2.1-2 -- Rebuilt for Python 3.11 - -* Fri Jun 3 2022 Mark Reynolds - 2.2.1-1 -- Bump version to 2.2.1 -- Issue 5323 - BUG - Fix issue in mdb tests with monitor (#5326) -- Issue 5170 - BUG - incorrect behaviour of filter test (#5315) -- Issue 5324 - plugin acceptance test needs hardening -- Issue 5319 - dsctl_tls_test.py fails with openssl-3.x -- Issue 5323 - BUG - migrating database for monitoring interface lead to crash (#5321) -- Issue 5304 - Need a compatibility option about sub suffix handling (#5310) -- Issue 5313 - dbgen test uses deprecated -h HOST and -p PORT options for ldapmodify -- Issue 5311 - Missing Requires for acl in the spec file -- Issue 5305 - OpenLDAP version autodetection doesn't work -- Issue 5307 - VERSION_PREREL is not set correctly in CI builds -- Issue 5302 - Release tarballs don't contain cockpit webapp -- Issue 5170 - RFE - improve filter logging to assist debugging (#5301) -- Issue 5299 - jemalloc 5.3 released -- Issue 5175 - Remove stale zlib-devel dependency declaration (#5173) -- Issue 5294 - Report Portal 5 is not processing test results XML file -- Issue 5170 - BUG - ldapsubentries were incorrectly returned (#5285) -- Issue 5291 - Harden ReplicationManager.wait_for_replication (#5292) -- Issue 379 - RFE - Compress rotated logs (fix linker) -- Issue 379 - RFE - Compress rotated logs -- Issue 5281 - HIGH - basic test does not run -- Issue 5284 - Replication broken after password change (#5286) -- Issue 5279 - dscontainer: TypeError: unsupported operand type(s) for /: 'str' and 'int' -- Issue 5170 - RFE - Filter optimiser (#5171) -- Issue 5276 - CLI - improve task handling -- Issue 5126 - Memory leak in slapi_ldap_get_lderrno (#5153) -- Issue 3 - ansible-ds - Prefix handling fix (#5275) -- Issue 5273 - CLI - add arg completer for instance name -- Issue 2893 - CLI - dscreate - add options for setting up replication -- Issue 4866 - CLI - when enabling replication set changelog trimming by default -- Issue 5241 - UI - Add account locking missing functionality (#5251) -- Issue 5180 - snmp_collator tries to unlock NULL mutex (#5266) -- Issue 4904 - Fix various small issues -- lib389 prerequisite for ansible-ds (#5253) -- Issue 5260 - BUG - OpenLDAP allows multiple names of memberof overlay (#5261) -- Issue 5252 - During DEL, vlv search can erroneously return NULL candidate (#5256) -- Issue 5254 - dscreate create-template regression due to 5a3bdc336 (#5255) -- Issue 5210 - Python undefined names in lib389 -- Issue 5065 - Crash in suite plugins - test_dna_max_value (#5108) -- Issue 5247 - BUG - Missing attributes in samba schema (#5248) -- Issue 5242- Craft message may crash the server (#5243) -- Issue 4775 -plugin entryuuid failing (#5229) -- Issue 5239 - Nightly copr builds are broken -- Issue 5237 - audit-ci: Cannot convert undefined or null to object -- Issue 5234 - UI - rename Users and Groups tab -- Issue 5227 - UI - No way to move back to Get Started step (#5233) -- Issue 5217 - Simplify instance creation and administration by non root user (#5224) - +%autochangelog diff --git a/changelog b/changelog new file mode 100644 index 0000000..81ef03c --- /dev/null +++ b/changelog @@ -0,0 +1,498 @@ +* Mon Apr 15 2024 James Chapman - 3.0.2-1 +- Bump version to 3.0.2 +- Issue 6082 - Remove explicit dependencies toward libdb - revert default (#6145) +- Issue 6142 - [RFE] Add LMDB configuration related checks into Healthcheck tool (#6143) +- Issue 6141 - freeipa test_topology_TestCASpecificRUVs is failing (#6144) +- Issue 6136 - failure in freeipa tests (#6137) +- Issue 6119 - Synchronise accept_thread with slapd_daemon (#6120) +- Issue 6105 - lmdb - Cannot create entries with long rdn (#6130) +- Issue 6082 - Remove explicit dependencies toward libdb (#6083) +- Issue i6057 - Fix3 - Fix covscan issues (#6127) +- Issue 6057 - vlv search may result wrong result with lmdb - Fix 2 (#6121) +- Issue 6057 - vlv search may result wrong result with lmdb (#6091) +- Issue 6092 - passwordHistory is not updated with a pre-hashed password (#6093) +- Issue 6133 - Move slapi_pblock_set_flag_operation_notes() to slapi-plugin.h +- Issue 6125 - dscreate interactive fails when chosing mdb backend (#6126) +- Issue 6110 - Typo in Account Policy plugin message +- Issue 6080 - ns-slapd crash in referint_get_config (#6081) +- Issue 6117 - Fix the UTC offset print (#6118) +- Issue 5305 - OpenLDAP version autodetection doesn't work +- Issue 6112 - RFE - add new operation note for MFA authentications +- Issue 5842 - Add log buffering to audit log +- Issue 3527 - Support HAProxy and Instance on the same machine configuration (#6107) +- Issue 6103 - New connection timeout error breaks errormap (#6104) +- Issue 6096 - Improve connection timeout error logging (#6097) +- Issue 6067 - Improve dsidm CLI No Such Entry handling (#6079) +- Issue 6067 - Add hidden -v and -j options to each CLI subcommand (#6088) +- Issue 6061 - Certificate lifetime displayed as NaN + +* Wed Jan 31 2024 Pete Walter - 3.0.1-2 +- Rebuild for ICU 74 + +* Tue Jan 30 2024 Simon Pichugin - 3.0.1-1 +- Bump version to 3.0.1 +- Issue 6043, 6044 - Enhance Rust and JS bundling and add SPDX licenses for both (#6045) +- Issue 3555 - Remove audit-ci from dependencies (#6056) +- Issue 6052 - Paged results test sets hostname to `localhost` on test collection +- Issue 6051 - Drop unused pytest markers +- Issue 6049 - lmdb - changelog is wrongly recreated by reindex task (#6050) +- Issue 6047 - Add a check for tagged commits +- Issue 6041 - dscreate ds-root - accepts relative path (#6042) +- Switch default backend to lmdb and bump version to 3.0 (#6013) +- Issue 6032 - Replication broken after backup restore (#6035) +- Issue 6037 - Server crash at startup in vlvIndex_delete (#6038) +- Issue 6034 - Change replica_id from str to int +- Issue 6028 - vlv index keys inconsistencies (#6031) +- Issue 5989 - RFE support of inChain Matching Rule (#5990) +- Issue 6022 - lmdb inconsistency between vlv index and vlv cache names (#6026) +- Issue 6015 - Fix typo remeber (#6014) +- Issue 6016 - Pin upload/download artifacts action to v3 +- Issue 5939 - During an update, if the target entry is reverted in the entry cache, the server should not retry to lock it (#6007) +- Issue 4673 - Update Rust crates +- Issue 6004 - idletimeout may be ignored (#6005) +- Issue 5954 - Disable Transparent Huge Pages +- Issue 5997 - test_inactivty_and_expiration CI testcase is wrong (#5999) +- Issue 5993 - Fix several race condition around CI tests (#5996) +- Issue 5944 - Reversion of the entry cache should be limited to BETXN plugin failures (#5994) +- Bump openssl from 0.10.55 to 0.10.60 in /src (#5995) +- Issue 5980 - Improve instance startup failure handling (#5991) +- Issue 5976 - Fix freeipa install regression with lmdb (#5977) +- Issue 5984 - Crash when paged result search are abandoned - fix2 (#5987) +- Issue 5984 - Crash when paged result search are abandoned (#5985) +- Issue 5947 - CI test_vlv_recreation_reindex fails on LMDB (#5979) + +* Mon Jan 29 2024 Fedora Release Engineering - 2.4.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 2.4.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 2.4.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 18 2024 Fedora Release Engineering - 2.4.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 18 2024 Viktor Ashirov - 2.4.5-1 +- Bump version to 2.4.5 +- Issue 5989 - RFE support of inChain Matching Rule (#5990) +- Issue 5939 - During an update, if the target entry is reverted in the entry cache, the server should not retry to lock it (#6007) +- Issue 5944 - Reversion of the entry cache should be limited to BETXN plugin failures (#5994) +- Issue 5954 - Disable Transparent Huge Pages +- Issue 5984 - Crash when paged result search are abandoned - fix2 (#5987) +- Issue 5984 - Crash when paged result search are abandoned (#5985) + +* Wed Nov 15 2023 James Chapman - 2.4.4 +- Bump version to 2.4.4 +- Issue 5971 - CLI - Fix password prompt for repl status (#5972) +- Issue 5973 - Fix fedora cop RawHide builds (#5974) +- Revert "Issue 5761 - Worker thread dynamic management (#5796)" (#5970) +- Issue 5966 - CLI - Custom schema object is removed on a failed edit (#5967) +- Issue 5786 - Update permissions for Release workflow +- Issue 5960 - Subpackages should have more strict interdependencies +- Issue 3555 - UI - Fix audit issue with npm - babel/traverse (#5959) +- Issue 4843 - Fix dscreate create-template issue (#5950) +- bugfix for --passwd-file not working on latest version (#5934) +- Issue 5843 - dsconf / dscreate should be able to handle lmdb parameters (#5943) +- Bump postcss from 8.4.24 to 8.4.31 in /src/cockpit/389-console (#5945) +- Issue 5938 - Attribute Names changed to lowercase after adding the Attributes (#5940) +- issue 5924 - ASAN server build crash when looping opening/closing connections (#5926) +- Issue 1925 - Add a CI test (#5936) +- Issue 5732 - Localizing Cockpit's 389ds Plugin using CockpitPoPlugin (#5764) +- Issue 1870 - Add a CI test (#5929) +- Issue 843 - Add a warning to slapi_valueset_add_value_ext (#5925) +- Issue 5761 - Worker thread dynamic management (#5796) +- Issue 1802 - Improve ldclt man page (#5928) +- Issue 1456 - Add a CI test that verifies there is no issue (#5927) +- Issue 1317 - Add a CI test (#5923) +- Issue 1081 - CI - Add more tests for overwriting x-origin issue (#5815) +- Issue 1115 - Add a CI test (#5913) +- Issue 5848 - Fix condition and add a CI test (#5916) +- Issue 5848 - Fix condition and add a CI test (#5916) +- Issue 5914 - UI - server settings page validation improvements and db index fixes +- Issue 5909 - Multi listener hang with 20k connections (#5917) +- Issue 5902 - Fix previous commit regression (#5919) +- pass instance correctly to ds_is_older (#5903) +- Issue 5909 - Multi listener hang with 20k connections (#5910) +- Issue 5722 - improve testcase (#5904) +- Issue 5203 - outdated version in provided metadata for lib389 +- Bug Description: +- issue 5890 part 2 - Need a tester for testing multiple listening thread feature (#5897) +- Issue i5846 - Crash when lmdb import is aborted (#5881) +- Issue 5894 - lmdb import error fails with Could not store the entry (#5895) +- Issue 5890 - Need a tester for testing multiple listening thread feature (#5891) +- Issue 5082 - slugify: ModuleNotFoundError when running test cases +- Issue 4551 - Part 2 - Fix build warning of previous PR (#5888) +- Issue 5834 - AccountPolicyPlugin erroring for some users (#5866) +- Issue 5872 - part 2 - fix is_dbi regression (#5887) +- Issue 4758 - Add tests for WebUI +- Issue 5848 - dsconf should prevent setting the replicaID for hub and consumer roles (#5849) +- Issue 5883 - Remove connection mutex contention risk on autobind (#5886) +- Issue 5872 - `dbscan()` in lib389 can return bytes + +* Thu Aug 3 2023 Mark Reynolds - 2.4.3-1 +- Bump version to 2.4.3-1 +- Issue 5729 - Memory leak in factory_create_extension (#5814) +- Issue 5870 - ns-slapd crashes at startup if a backend has no suffix (#5871) +- Issue 5876 - CI Test random failure - Import (#5879) +- Issue 5877 - test_basic_ldapagent breaks test_setup_ds_as_non_root* tests +- Issue 5867 - lib389 should use filter for tarfile as recommended by PEP 706 (#5868) +- Issue 5853 - Update Cargo.lock and fix minor warning (#5854) +- Issue 5785 - CLI - arg completion is broken +- Issue 5864 - Server fails to start after reboot because it's unable to access nsslapd-rundir +- Issue 5856 - SyntaxWarning: invalid escape sequence '\,' +- Issue 5859 - dbscan fails with AttributeError: 'list' object has no attribute 'extends' +- Issue 3527 - UI - Add nsslapd-haproxy-trusted-ip to server setting (#5839) +- Issue 4551 - Paged search impacts performance (#5838) +- Issue 4758 - Add tests for WebUI +- Issue 4169 - UI - Fix retrochangelog and schema Typeaheads (#5837) +- issue 5833 - dsconf monitor backend fails on lmdb (#5835) +- Issue 3555 - UI - Fix audit issue with npm - stylelint (#5836) + +* Mon Jul 24 2023 Mark Reynolds - 2.4.2-5 +- Bump version to 2.4.2-5 +- Add the bash completion scripts to the appropriate files section + +* Wed Jul 19 2023 Fedora Release Engineering - 2.4.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jul 11 2023 František Zatloukal - 2.4.2-3 +- Rebuilt for ICU 73.2 + +* Mon Jul 10 2023 Mark Reynolds - 2.4.2-2 +- Bump version to 2.4.2-2 +- Issue 5752 - RFE - Provide a history for LastLoginTime (#5807) += Issue 4719 - CI - Add dsconf add a PTA URL test + +* Fri Jul 7 2023 Mark Reynolds - 2.4.2-1 +- Bump version to 2.4.2 +- Issue 5793 - UI - fix suffix selection in export modal +- Issue 5793 - UI - Fix minor crashes (#5827) +- Issue 5825 - healthcheck - password storage scheme warning needs more info +- Issue 5822 - Allow empty export path for db2ldif +- Issue 5755 - Massive memory leaking on update operations (#5824) +- Issue 5701 - CI - Add more tests for referral mode fix (#5810) +- Issue 5551 - Almost empty and not loaded ns-slapd high cpu load +- Issue 5755 - The Massive memory leaking on update operations (#5803) +- Issue 2375 - CLI - Healthcheck - revise and add new checks +- Bump openssl from 0.10.52 to 0.10.55 in /src +- Issue 5793 - UI - movce from webpack to esbuild bundler +- Issue 5752 - CI - Add more tests for lastLoginHistorySize RFE (#5802) +- Issue 3527 - Fix HAProxy x390x compatibility and compiler warnings (#5801) +- Issue 5798 - CLI - Add multi-valued support to dsconf config (#5799) +- Issue 5781 - Bug handling return code of pre-extended operation plugin. +- Issue 5785 - move bash completion to post section of specfile +- Issue 5156 - (cont) RFE slapi_memberof reusing memberof values (#5744) +- Issue 4758 - Add tests for WebUI +- Issue 3527 - Add PROXY protocol support (#5762) +- Issue 5789 - Improve ds-replcheck error handling +- Issue 5786 - CLI - registers tools for bash completion +- Issue 5786 - Set minimal permissions on GitHub Workflows (#5787) +- Issue 5646 - Various memory leaks (#5725) +- Issue 5778 - UI - Remove error message if .dsrc is missing +- Issue 5751 - Cleanallruv task crashes on consumer (#5775) + +* Wed Jun 28 2023 Python Maint - 2.4.1-2 +- Rebuilt for Python 3.12 + +* Thu May 18 2023 Mark Reynolds - 2.4.1-1 +- Bump version to 2.4.1 +- Issue 5770 - RFE - Extend Password Adminstrators to allow skipping password info updates +- Issue 5768 - CLI/UI - cert checks are too strict, and other issues +- Issue 5722 - fix compilation warnings (#5771) +- Issue 5765 - Improve installer selinux handling +- Issue 152 - RFE - Add support for LDAP alias entries +- Issue 5052 - BUG - Custom filters prevented entry deletion (#5060) +- Issue 5752 - RFE - Provide a history for LastLoginTime (#5753) +- Issue 5722 - RFE When a filter contains 'nsrole', improve response time by rewriting the filter (#5723) +- Issue 5704 - crash in sync_refresh_initial_content (#5720) +- Issue 5738 - RFE - UI - Read/write replication monitor info to .dsrc file +- Issue 5156 - build warnings (#5758) +- Issue 5749 - RFE - Allow Account Policy Plugin to handle inactivity and expiration at the same time +- Issue 5743 - Disabling replica crashes the server (#5746) +- Issue 2562 - Copy config files into backup directory +- Issue 5156 - fix build breakage from slapi-memberof commit +- Issue 4758 - Add tests for WebUI + +* Tue Apr 25 2023 Mark Reynolds - 2.4.0-1 +- Bump version to 2.4.0 +- Issue 5156 - RFE that implement slapi_memberof (#5694) +- Issue 5734 - RFE - Exclude pwdFailureTime and ContextCSN (#5735) +- Issue 5726 - ns-slapd crashing in ldbm_back_upgradednformat (#5727) +- Issue 4758 - Add tests for WebUI +- Issue 5718 - Memory leak in connection table (#5719) +- Issue 5705 - Add config parameter to close client conns on failed bind (#5712) +- Issue 4758 - Add tests for WebUI +- Issue 5643 - Memory leak in entryrdn during delete (#5717) +- Issue 5714 - UI - fix typo, db settings, log settings, and LDAP editor paginations +- Issue 5701 - CLI - Fix referral mode setting (#5708) +- Bump openssl from 0.10.45 to 0.10.48 in /src (#5709) +- Issue 5710 - subtree search statistics for index lookup does not report ancestorid/entryrdn lookups (#5711) +- Issue 5697 - Obsolete nsslapd-ldapimaprootdn attribute (#5698) +- Issue 1081 - Stop schema replication from overwriting x-origin +- Issue 4812 - Listener thread does not scale with a high num of established connections (#5706) +- Issue 4812 - Listener thread does not scale with a high num of established connections (#5681) +- Bump webpack from 5.75.0 to 5.76.0 in /src/cockpit/389-console (#5699) +- Issue 5598 - (3rd) In 2.x, SRCH throughput drops by 10% because of handling of referral (#5692) +- Issue 5598 - (2nd) In 2.x, SRCH throughput drops by 10% because of handling of referral (#5691) +- Issue 5687 - UI - sensitive information disclosure +- Issue 5661 - LMDB hangs while Rebuilding the replication changelog RUV (#5676) +- Issue 5554 - Add more tests to security_basic_test suite +- Issue 4583 - Update specfile to skip checks of ASAN builds +- Issue 4758 - Add tests for WebUI +- Issue 3604 - UI - Add support for Subject Alternative Names in CSR +- Issue 5600 - buffer overflow when enabling sync repl plugin when dynamic plugins is enabled +- Issue 5640 - Update logconv for new logging format +- Issue 5162 - CI - fix error message for invalid pem file +- Issue 5598 - In 2.x, SRCH throughput drops by 10% because of handling of referral (#5604) +- Issue 5671 - covscan - clang warning (#5672) +- Issue 5267 - CI - Fix issues with nsslapd-return-original-entrydn +- Issue 5666 - CLI - Add timeout parameter for tasks +- Issue 5567 - CLI - make ldifgen use the same default ldif name for all options +- Issue 5647 - Fix unused variable warning from previous commit (#5670) +- Issue 5162 - Lib389 - verify certificate type before adding +- Issue 5642 - Build fails against setuptools 67.0.0 +- Issue 5630 - CLI - need to add logging filter for stdout +- Issue 5646 - CLI/UI - do not hardcode password storage schemes +- Issue 5640 - Update logconv for new logging format +- issue 5647 - covscan: memory leak in audit log when adding entries (#5650) +- Issue 5658 - CLI - unable to add attribute with matching rule +- Issue 5653 - covscan - fix invalid dereference +- Issue 5652 - Libasan crash in replication/cascading_test (#5659) +- Issue 5628 - Handle graceful timeout in CI tests (#5657) +- Issue 5648 - Covscan - Compiler warnings (#5651) +- Issue 5630 - CLI - error messages should goto stderr +- Issue 2435 - RFE - Raise IDL Scan Limit to INT_MAX (#5639) +- Issue 5632 - CLI - improve error handling with db2ldif +- Issue 5517 - Replication conflict CI test sometime fails (#5518) +- Issue 5634 - Deprecated warning related to github action workflow code (#5635) +- Issue 5637 - Covscan - fix Buffer Overflows (#5638) +- Issue 5624 - RFE - UI - export certificates, and import text base64 encoded certificates +- Bump tokio from 1.24.1 to 1.25.0 in /src (#5629) +- Issue 4577 - Add LMDB pytest github action (#5627) +- Issue 4293 - RFE - CLI - add dsrc options for setting user and group subtrees +- Remove stale libevent(-devel) dependency +- Issue 5578 - dscreate ds-root does not normaile paths (#5613) +- Issue 5497 - boolean attributes should be case insensitive + +* Fri Mar 31 2023 Viktor Ashirov - 2.3.2-3 +- Fix build issue against setuptools 67.0.0 (#2183375) + +* Tue Feb 28 2023 Simon Pichugin - 2.3.2-2 +- Use systemd-sysusers for dirsrv user and group (#2173834) + +* Mon Jan 23 2023 Mark Reynolds - 2.3.2-1 +- Bump version to 2.3.2 +- Issue 5547 - automember plugin improvements +- Issue 5607, 5351, 5611 - UI/CLI - fix various issues +- Issue 5610 - Build failure on Debian +- Issue 5608 - UI - need to replace some "const" with "let" +- Issue 5560 - dscreate run by non superuser set defaults requiring superuser privilege (#5579) +- Issue 3604 - Create a private key/CSR with dsconf/Cockpit (#5584) +- Issue 5605 - Adding a slapi_log_backtrace function in libslapd (#5606) +- Issue 5602 - UI - browser crash when trying to modify read-only variable +- Issue 5581 - UI - Support cockpit dark theme +- Issue 5593 - CLI - dsidm account subtree-status fails with TypeError +- Issue 5591 - BUG - Segfault in cl5configtrim with invalid confi (#5592) +- Fix latest npm audit failures +- Issue 5599 - CI - webui tests randomly fail +- Issue 5348 - RFE - CLI - add functionality to do bulk updates to entries +- Issue 5588 - Fix CI tests +- Issue 5585 - lib389 password policy DN handling is incorrect (#5587) +- Issue 5521 - UI - Update plugins for new split PAM and LDAP pass thru auth +- Bump json5 from 2.2.1 to 2.2.3 in /src/cockpit/389-console +- Issue 5236 - UI add specialized group edit modal +- Issue 5550 - dsconf monitor crashes with Error math domain error (#5553) +- Issue 5278 - CLI - dsidm asks for the old password on password reset +- Issue 5531 - CI - use universal_lines in capture_output +- Issue 5425 - CLI - add confirmation arg when deleting backend +- Issue 5558 - non-root instance fails to start on creation (#5559) +- Issue 5545 - A random crash in import over lmdb (#5546) +- Issue 3615 - CLI - prevent virtual attribute indexing +- Update specfile and rust crates +- Issue 5413 - Allow mutliple MemberOf fixup tasks with different bases/filters +- Issue 5554 - Add more tests to security_basic_test suite (#5555) +- Issue 5561 - Nightly tests are failing +- Issue 5521 - RFE - split pass through auth cli +- Issue 5521 - BUG - Pam PTA multiple issues +- Issue 5544 - Increase default task TTL +- Issue 5526 - RFE - Improve saslauthd migration options (#5528) +- Issue 5539 - Make logger's parameter name unified (#5540) +- Issue 5541 - Fix typo in `lib389.cli_conf.backend._get_backend` (#5542) +- Issue 3729 - (cont) RFE Extend log of operations statistics in access log (#5538) +- Issue 5534 - Fix a rebase typo (#5537) +- Issue 5534 - Add copyright text to the repository files + +* Wed Jan 18 2023 Fedora Release Engineering - 2.3.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Dec 31 2022 Pete Walter - 2.3.1-2 +- Rebuild for ICU 72 + +* Fri Nov 18 2022 Mark Reynolds - 2.3.1-1 +- Bump version to 2.3.1 +- Issue 5532 - Make db compaction TOD day more robust. +- Issue 3729 - RFE Extend log of operations statistics in access log (#5508) +- Issue 5529 - UI - Fix npm vulnerability in loader-utils +- Issue 5490 - tombstone in entryrdn index with lmdb but not with bdb (#5498) +- Issue 5162 - Fix dsctl tls ca-certfiicate add-cert arg requirement +- Issue 5510 - remove twalk_r dependency to build on RHEL8 (#5516) +- Issue 5162 - RFE - CLI allow adding CA certificate bundles +- Issue 5440 - memberof is slow on update/fixup if there are several 'groupattr' (#5455) +- Issue 5512 - BUG - skip pwdPolicyChecker OC in migration (#5513) +- Issue 3555 - UI - fix audit issue with npm loader-utils (#5514) +- Issue 5505 - Fix compiler warning (#5506) +- Issue 5469 - Increase the default value of nsslapd-conntablesize (#5472) +- Issue 5408 - lmdb import is slow (#5481) +- Issue 5429 - healthcheck - add checks for MemberOf group attrs being indexed +- Issue 5502 - RFE - Add option to display entry attributes in audit log +- Issue 5495 - BUG - Minor fix to dds skip, inconsistent attrs caused errors (#5501) +- Issue 5367 - RFE - store full DN in database record +- Issue 5495 - RFE - skip dds during migration. (#5496) +- Issue 5491 - UI - Add rework and finish jpegPhoto functionality (#5492) +- Issue 5368 - Retro Changelog trimming does not work (#5486) +- Issue 5487 - Fix various issues with logconv.pl +- Issue 5476 - RFE - add memberUid read aci by default (#5477) +- Issue 5482 - lib389 - Can not enable replication with a mixed case suffix +- Issue 5478 - Random crash in connection code during server shutdown (#5479) +- Issue 3061 - RFE - Add password policy debug log level +- Issue 5302 - Release tarballs don't contain cockpit webapp +- Issue 5262 - high contention in find_entry_internal_dn on mixed load (#5264) +- Issue 4324 - Revert recursive pthread mutex change (#5463) +- Issue 5462 - RFE - add missing default indexes (#5464) +- Issue 5465 - Fix dbscan linking (#5466) +- Issue 5271 - Serialization of pam_passthrough causing high etimes (#5272) +- Issue 5453 - UI/CLI - Changing Root DN breaks UI +- Issue 5446 - Fix some covscan issues (#5451) +- Issue 4308 - checking if an entry is a referral is expensive +- Issue 5447 - UI - add NDN max cache size to UI +- Issue 5443 - UI - disable save button while saving +- Issue 5413 - Allow only one MemberOf fixup task at a time +- Issue 4592 - dscreate error with custom dir_path (#5434) +- Issue 5158 - entryuuid fixup tasks fails in replicated topology (#5439) + +* Tue Sep 20 2022 Mark Reynolds - 2.3.0-2 +- Bump version to 2.3.0-2 +- Update old pcre-devel requirement to pcre2-devel + +* Thu Sep 1 2022 Mark Reynolds - 2.3.0-1 +- Bump version to 2.3.0 +- Issue 5012 - Migrate pcre to pcre2 - remove match limit +- Issue 5356 - Make Rust non-optional and update default password storage scheme +- Issue 5012 - Migrate pcre to pcre2 +- Issue 5428 - Fix regression with nscpEntryWsi computation +- Fix missing 'not' in description (closes #5423) (#5424) +- Issue 5421 - CI - makes replication/acceptance_test.py::test_modify_entry more robust (#5422) +- Issue 3903 - fix repl keep alive event interval +- Issue 5418 - Sync_repl may crash while managing invalid cookie (#5420) +- Issue 5415 - Hostname when set to localhost causing failures in other tests +- Issue 5412 - lib389 - do not set backend name to lowercase +- Issue 5407 - sync_repl crashes if enabled while dynamic plugin is enabled (#5411) +- Issue 5385 - LMDB - import crash in rdncache_add_elem (#5406) +- Issue 5403 - Memory leak in conntection table mulit list (#5404) +- Issue 3903 - keep alive update event starts too soon +- Issue 5397 - Fix various memory leaks +- Issue 5399 - UI - LDAP Editor is not updated when we switch instances (#5400) +- Issue 3903 - Supplier should do periodic updates +- Issue 5377 - Code cleanup: Fix Covscan invalid reference (#5393) +- Issue 5394 - configure doesn't check for lmdb and json-c +- Issue 5392 - dscreate fails when using alternative ports in the SELinux hi_reserved_port_t label range +- Issue 5386 - BUG - Update sudoers schema to correctly support UTF-8 (#5387) +- Issue 5388 - fix use-after-free and deadcode +- Issue 5383 - UI - Various fixes and RFE's for UI +- Issue 4656 - Remove problematic language from source code +- Issue 5380 - Separate cleanAllRUV code into new file +- Issue 5322 - optime & wtime on rejected connections is not properly set +- Issue 5335 - RFE - Add Security Audit Log +- Issue 5375 - CI - disable TLS hostname checking +- Issue 981 - Managed Entries betxnpreoperation - transaction not aborted on managed entry failure (#5369) +- Issue 5373 - dsidm user get_dn fails with search_ext() argument 1 must be str, not function +- Issue 5371 - Update npm and cargo packages +- Issue 3069 - Support ECDSA private keys for TLS (#5365) +- Issue 5290 - Importing certificate chain files via "import-server-key-cert" no longer works (#5293) + +* Mon Aug 01 2022 Frantisek Zatloukal - 2.2.2-3 +- Rebuilt for ICU 71.1 + +* Wed Jul 20 2022 Fedora Release Engineering - 2.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jul 5 2022 Mark Reynolds - 2.2.2-1 +- Bump version to 2.2.2 +- Issue 5221 - fix covscan (#5359) +- Issue 5294 - Report Portal 5 is not processing an XML file with (#5358) +- Issue 5353 - CLI - dsconf backend export breaks with multiple backends +- Issue 5346 - New connection table fails with ASAN failures (#5350) +- Issue 5345 - BUG - openldap migration fails when ppolicy is active (#5347) +- Issue 5323 - BUG - improve skipping of monitor db (#5340) +- Issue 5329 - Improve replication extended op logging +- Issue 5343 - Various improvements to winsync +- Issue 4932 - CLI - add parser aliases to long arg names +- Issue 5332 - BUG - normalise filter as intended +- Issue 5327 - Validate test metadata +- Issue 4812 - Scalability with high number of connections (#5090) +- Issue 4348 - Add tests for dsidm +- Issue 5333 - 389-ds-base fails to build with Python 3.11 + +* Thu Jun 16 2022 Python Maint - 2.2.1-4 +- Rebuilt for Python 3.11 + +* Wed Jun 15 2022 Mark Reynolds - 2.2.1-3 +- Bump version to 2.2.1-3 +- Issue 5332 - BUG - normalise filter as intended +- Issue 5327 - Validate test metadata +- Issue 4348 - Add tests for dsidm +- Bump crossbeam-utils from 0.8.6 to 0.8.8 in /src +- Issue 5333 - 389-ds-base fails to build with Python 3.11 + +* Mon Jun 13 2022 Python Maint - 2.2.1-2 +- Rebuilt for Python 3.11 + +* Fri Jun 3 2022 Mark Reynolds - 2.2.1-1 +- Bump version to 2.2.1 +- Issue 5323 - BUG - Fix issue in mdb tests with monitor (#5326) +- Issue 5170 - BUG - incorrect behaviour of filter test (#5315) +- Issue 5324 - plugin acceptance test needs hardening +- Issue 5319 - dsctl_tls_test.py fails with openssl-3.x +- Issue 5323 - BUG - migrating database for monitoring interface lead to crash (#5321) +- Issue 5304 - Need a compatibility option about sub suffix handling (#5310) +- Issue 5313 - dbgen test uses deprecated -h HOST and -p PORT options for ldapmodify +- Issue 5311 - Missing Requires for acl in the spec file +- Issue 5305 - OpenLDAP version autodetection doesn't work +- Issue 5307 - VERSION_PREREL is not set correctly in CI builds +- Issue 5302 - Release tarballs don't contain cockpit webapp +- Issue 5170 - RFE - improve filter logging to assist debugging (#5301) +- Issue 5299 - jemalloc 5.3 released +- Issue 5175 - Remove stale zlib-devel dependency declaration (#5173) +- Issue 5294 - Report Portal 5 is not processing test results XML file +- Issue 5170 - BUG - ldapsubentries were incorrectly returned (#5285) +- Issue 5291 - Harden ReplicationManager.wait_for_replication (#5292) +- Issue 379 - RFE - Compress rotated logs (fix linker) +- Issue 379 - RFE - Compress rotated logs +- Issue 5281 - HIGH - basic test does not run +- Issue 5284 - Replication broken after password change (#5286) +- Issue 5279 - dscontainer: TypeError: unsupported operand type(s) for /: 'str' and 'int' +- Issue 5170 - RFE - Filter optimiser (#5171) +- Issue 5276 - CLI - improve task handling +- Issue 5126 - Memory leak in slapi_ldap_get_lderrno (#5153) +- Issue 3 - ansible-ds - Prefix handling fix (#5275) +- Issue 5273 - CLI - add arg completer for instance name +- Issue 2893 - CLI - dscreate - add options for setting up replication +- Issue 4866 - CLI - when enabling replication set changelog trimming by default +- Issue 5241 - UI - Add account locking missing functionality (#5251) +- Issue 5180 - snmp_collator tries to unlock NULL mutex (#5266) +- Issue 4904 - Fix various small issues +- lib389 prerequisite for ansible-ds (#5253) +- Issue 5260 - BUG - OpenLDAP allows multiple names of memberof overlay (#5261) +- Issue 5252 - During DEL, vlv search can erroneously return NULL candidate (#5256) +- Issue 5254 - dscreate create-template regression due to 5a3bdc336 (#5255) +- Issue 5210 - Python undefined names in lib389 +- Issue 5065 - Crash in suite plugins - test_dna_max_value (#5108) +- Issue 5247 - BUG - Missing attributes in samba schema (#5248) +- Issue 5242- Craft message may crash the server (#5243) +- Issue 4775 -plugin entryuuid failing (#5229) +- Issue 5239 - Nightly copr builds are broken +- Issue 5237 - audit-ci: Cannot convert undefined or null to object +- Issue 5234 - UI - rename Users and Groups tab +- Issue 5227 - UI - No way to move back to Get Started step (#5233) +- Issue 5217 - Simplify instance creation and administration by non root user (#5224) From 502e0cf5cb987a8ec7f0c49799a7a1ee9b7584e3 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Tue, 30 Jul 2024 13:08:01 +0200 Subject: [PATCH 2/8] Update to 3.0.4 ... - Resolves: CVE-2024-1062 (rhbz#2261884) - Resolves: CVE-2024-2199 (rhbz#2283632) - Resolves: CVE-2024-3657 (rhbz#2283631) - Resolves: CVE-2024-5953 (rhbz#2292109) --- .fmf/version | 1 + .gitignore | 2 + 389-ds-base-git-local.sh | 23 -- 389-ds-base-git.sh | 16 -- 389-ds-base.spec | 486 +++++++++++++++++++------------- concread-use-2018-edition.patch | 19 -- gating.yaml | 15 + main.fmf | 17 ++ sources | 3 +- tests/tests.yml | 26 -- 10 files changed, 334 insertions(+), 274 deletions(-) create mode 100644 .fmf/version delete mode 100644 389-ds-base-git-local.sh delete mode 100644 389-ds-base-git.sh delete mode 100644 concread-use-2018-edition.patch create mode 100644 gating.yaml create mode 100644 main.fmf delete mode 100644 tests/tests.yml diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index b2c03ac..3b3f16f 100644 --- a/.gitignore +++ b/.gitignore @@ -227,3 +227,5 @@ /389-ds-base-2.4.5.tar.bz2 /389-ds-base-3.0.1.tar.bz2 /389-ds-base-3.0.2.tar.bz2 +/389-ds-base-3.0.4.tar.bz2 +/libdb-5.3.28-59.tar.bz2 diff --git a/389-ds-base-git-local.sh b/389-ds-base-git-local.sh deleted file mode 100644 index bc809cb..0000000 --- a/389-ds-base-git-local.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -DATE=`date +%Y%m%d` -# use a real tag name here -VERSION=1.3.5.14 -PKGNAME=389-ds-base -TAG=${TAG:-$PKGNAME-$VERSION} -#SRCNAME=$PKGNAME-$VERSION-$DATE -SRCNAME=$PKGNAME-$VERSION - -test -d .git || { - echo you must be in the ds git repo to use this - echo bye - exit 1 -} - -if [ -z "$1" ] ; then - dir=. -else - dir="$1" -fi - -git archive --prefix=$SRCNAME/ $TAG | bzip2 > $dir/$SRCNAME.tar.bz2 diff --git a/389-ds-base-git.sh b/389-ds-base-git.sh deleted file mode 100644 index 0043901..0000000 --- a/389-ds-base-git.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -DATE=`date +%Y%m%d` -# use a real tag name here -VERSION=1.3.5.14 -PKGNAME=389-ds-base -TAG=${TAG:-$PKGNAME-$VERSION} -URL="https://git.fedorahosted.org/git/?p=389/ds.git;a=snapshot;h=$TAG;sf=tgz" -SRCNAME=$PKGNAME-$VERSION - -wget -O $SRCNAME.tar.gz "$URL" - -echo convert tgz format to tar.bz2 format - -gunzip $PKGNAME-$VERSION.tar.gz -bzip2 $PKGNAME-$VERSION.tar diff --git a/389-ds-base.spec b/389-ds-base.spec index 3a4bc2f..ef6dc60 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -1,30 +1,54 @@ - -%global pkgname dirsrv -%global srcname 389-ds-base +%global pkgname dirsrv # Exclude i686 bit arches -ExcludeArch: i686 +ExcludeArch: i686 -# If perl-Socket-2.000 or newer is available, set 0 to use_Socket6. -%global use_Socket6 0 - -%global use_asan 0 -%global bundle_jemalloc 1 -%if %{use_asan} -%global bundle_jemalloc 0 -%endif - -%if %{bundle_jemalloc} +%bcond bundle_jemalloc 1 +%if %{with bundle_jemalloc} %global jemalloc_name jemalloc %global jemalloc_ver 5.3.0 %global __provides_exclude ^libjemalloc\\.so.*$ %endif +%bcond bundle_libdb %{defined rhel} +%if %{with bundle_libdb} +%global libdb_version 5.3 +%global libdb_base_version db-%{libdb_version}.28 +%global libdb_full_version lib%{libdb_base_version}-59 +%global libdb_bundle_name libdb-%{libdb_version}-389ds.so +%if 0%{?fedora} >= 41 || 0%{?rhel} >= 11 +# RPM 4.20 +%global libdb_base_dir lib%{libdb_base_version}-build/%{libdb_base_version} +%else +%global libdb_base_dir %{libdb_base_version} +%endif +%endif + +# This is used in certain builds to help us know if it has extra features. +%global variant base +# This enables a sanitized build. +%bcond asan 0 +%bcond msan 0 +%bcond tsan 0 +%bcond ubsan 0 + +%if %{with asan} || %{with msan} || %{with tsan} || %{with ubsan} +%global variant base-xsan +%endif + # Use Clang instead of GCC -%global use_clang 0 +%bcond clang 0 +%if %{with msan} +%bcond clang 1 +%endif + +%if %{with clang} +%global toolchain clang +%global _missing_build_ids_terminate_build 0 +%endif # Build cockpit plugin -%global use_cockpit 1 +%bcond cockpit 1 # fedora 15 and later uses tmpfiles.d # otherwise, comment this out @@ -33,9 +57,6 @@ ExcludeArch: i686 # systemd support %global groupname %{pkgname}.target -# set PIE flag -%global _hardened_build 1 - # Filter argparse-manpage from autogenerated package Requires %global __requires_exclude ^python.*argparse-manpage @@ -43,117 +64,117 @@ ExcludeArch: i686 # See bz1986327 %define dirsrv_requires_ge() %(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} >= %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") -Summary: 389 Directory Server (base) +Summary: 389 Directory Server (%{variant}) Name: 389-ds-base -Version: 3.0.2 -Release: %autorelease +Version: 3.0.4 +Release: %{autorelease -n %{?with_asan:-e asan}}%{?dist} License: GPL-3.0-or-later AND (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND PSF-2.0 URL: https://www.port389.org -Conflicts: selinux-policy-base < 3.9.8 -Conflicts: freeipa-server < 4.0.3 -Obsoletes: %{name} <= 1.4.4 Obsoletes: %{name}-legacy-tools < 1.4.4.6 Obsoletes: %{name}-legacy-tools-debuginfo < 1.4.4.6 Provides: ldif2ldbm >= 0 ##### Bundled cargo crates list - START ##### -Provides: bundled(crate(addr2line)) = 0.21.0 +Provides: bundled(crate(addr2line)) = 0.22.0 Provides: bundled(crate(adler)) = 1.0.2 -Provides: bundled(crate(ahash)) = 0.7.7 +Provides: bundled(crate(ahash)) = 0.7.8 Provides: bundled(crate(atty)) = 0.2.14 -Provides: bundled(crate(autocfg)) = 1.1.0 -Provides: bundled(crate(backtrace)) = 0.3.69 +Provides: bundled(crate(autocfg)) = 1.3.0 +Provides: bundled(crate(backtrace)) = 0.3.73 Provides: bundled(crate(base64)) = 0.13.1 -Provides: bundled(crate(bitflags)) = 2.4.2 +Provides: bundled(crate(bitflags)) = 2.6.0 Provides: bundled(crate(byteorder)) = 1.5.0 Provides: bundled(crate(cbindgen)) = 0.26.0 -Provides: bundled(crate(cc)) = 1.0.83 +Provides: bundled(crate(cc)) = 1.1.7 Provides: bundled(crate(cfg-if)) = 1.0.0 Provides: bundled(crate(clap)) = 3.2.25 Provides: bundled(crate(clap_lex)) = 0.2.4 Provides: bundled(crate(concread)) = 0.2.21 Provides: bundled(crate(crossbeam)) = 0.8.4 -Provides: bundled(crate(crossbeam-channel)) = 0.5.11 +Provides: bundled(crate(crossbeam-channel)) = 0.5.13 Provides: bundled(crate(crossbeam-deque)) = 0.8.5 Provides: bundled(crate(crossbeam-epoch)) = 0.9.18 Provides: bundled(crate(crossbeam-queue)) = 0.3.11 -Provides: bundled(crate(crossbeam-utils)) = 0.8.19 -Provides: bundled(crate(errno)) = 0.3.8 -Provides: bundled(crate(fastrand)) = 2.0.1 +Provides: bundled(crate(crossbeam-utils)) = 0.8.20 +Provides: bundled(crate(errno)) = 0.3.9 +Provides: bundled(crate(fastrand)) = 2.1.0 Provides: bundled(crate(fernet)) = 0.1.4 Provides: bundled(crate(foreign-types)) = 0.3.2 Provides: bundled(crate(foreign-types-shared)) = 0.1.1 -Provides: bundled(crate(getrandom)) = 0.2.12 -Provides: bundled(crate(gimli)) = 0.28.1 +Provides: bundled(crate(getrandom)) = 0.2.15 +Provides: bundled(crate(gimli)) = 0.29.0 Provides: bundled(crate(hashbrown)) = 0.12.3 Provides: bundled(crate(heck)) = 0.4.1 Provides: bundled(crate(hermit-abi)) = 0.1.19 Provides: bundled(crate(indexmap)) = 1.9.3 -Provides: bundled(crate(instant)) = 0.1.12 -Provides: bundled(crate(itoa)) = 1.0.10 -Provides: bundled(crate(jobserver)) = 0.1.27 -Provides: bundled(crate(libc)) = 0.2.152 -Provides: bundled(crate(linux-raw-sys)) = 0.4.13 -Provides: bundled(crate(lock_api)) = 0.4.11 -Provides: bundled(crate(log)) = 0.4.20 +Provides: bundled(crate(instant)) = 0.1.13 +Provides: bundled(crate(itoa)) = 1.0.11 +Provides: bundled(crate(jobserver)) = 0.1.32 +Provides: bundled(crate(libc)) = 0.2.155 +Provides: bundled(crate(linux-raw-sys)) = 0.4.14 +Provides: bundled(crate(lock_api)) = 0.4.12 +Provides: bundled(crate(log)) = 0.4.22 Provides: bundled(crate(lru)) = 0.7.8 -Provides: bundled(crate(memchr)) = 2.7.1 -Provides: bundled(crate(miniz_oxide)) = 0.7.1 -Provides: bundled(crate(object)) = 0.32.2 +Provides: bundled(crate(memchr)) = 2.7.4 +Provides: bundled(crate(miniz_oxide)) = 0.7.4 +Provides: bundled(crate(object)) = 0.36.2 Provides: bundled(crate(once_cell)) = 1.19.0 -Provides: bundled(crate(openssl)) = 0.10.63 +Provides: bundled(crate(openssl)) = 0.10.66 Provides: bundled(crate(openssl-macros)) = 0.1.1 -Provides: bundled(crate(openssl-sys)) = 0.9.99 +Provides: bundled(crate(openssl-sys)) = 0.9.103 Provides: bundled(crate(os_str_bytes)) = 6.6.1 Provides: bundled(crate(parking_lot)) = 0.11.2 Provides: bundled(crate(parking_lot_core)) = 0.8.6 Provides: bundled(crate(paste)) = 0.1.18 Provides: bundled(crate(paste-impl)) = 0.1.18 -Provides: bundled(crate(pin-project-lite)) = 0.2.13 -Provides: bundled(crate(pkg-config)) = 0.3.29 -Provides: bundled(crate(ppv-lite86)) = 0.2.17 +Provides: bundled(crate(pin-project-lite)) = 0.2.14 +Provides: bundled(crate(pkg-config)) = 0.3.30 +Provides: bundled(crate(ppv-lite86)) = 0.2.18 Provides: bundled(crate(proc-macro-hack)) = 0.5.20+deprecated -Provides: bundled(crate(proc-macro2)) = 1.0.78 -Provides: bundled(crate(quote)) = 1.0.35 +Provides: bundled(crate(proc-macro2)) = 1.0.86 +Provides: bundled(crate(quote)) = 1.0.36 Provides: bundled(crate(rand)) = 0.8.5 Provides: bundled(crate(rand_chacha)) = 0.3.1 Provides: bundled(crate(rand_core)) = 0.6.4 -Provides: bundled(crate(redox_syscall)) = 0.4.1 -Provides: bundled(crate(rustc-demangle)) = 0.1.23 -Provides: bundled(crate(rustix)) = 0.38.30 -Provides: bundled(crate(ryu)) = 1.0.16 +Provides: bundled(crate(redox_syscall)) = 0.2.16 +Provides: bundled(crate(rustc-demangle)) = 0.1.24 +Provides: bundled(crate(rustix)) = 0.38.34 +Provides: bundled(crate(ryu)) = 1.0.18 Provides: bundled(crate(scopeguard)) = 1.2.0 -Provides: bundled(crate(serde)) = 1.0.196 -Provides: bundled(crate(serde_derive)) = 1.0.196 -Provides: bundled(crate(serde_json)) = 1.0.113 -Provides: bundled(crate(smallvec)) = 1.13.1 +Provides: bundled(crate(serde)) = 1.0.204 +Provides: bundled(crate(serde_derive)) = 1.0.204 +Provides: bundled(crate(serde_json)) = 1.0.121 +Provides: bundled(crate(smallvec)) = 1.13.2 Provides: bundled(crate(strsim)) = 0.10.0 -Provides: bundled(crate(syn)) = 2.0.48 -Provides: bundled(crate(tempfile)) = 3.9.0 +Provides: bundled(crate(syn)) = 2.0.72 +Provides: bundled(crate(tempfile)) = 3.10.1 Provides: bundled(crate(termcolor)) = 1.4.1 -Provides: bundled(crate(textwrap)) = 0.16.0 -Provides: bundled(crate(tokio)) = 1.35.1 -Provides: bundled(crate(tokio-macros)) = 2.2.0 +Provides: bundled(crate(textwrap)) = 0.16.1 +Provides: bundled(crate(tokio)) = 1.39.2 +Provides: bundled(crate(tokio-macros)) = 2.4.0 Provides: bundled(crate(toml)) = 0.5.11 Provides: bundled(crate(unicode-ident)) = 1.0.12 Provides: bundled(crate(uuid)) = 0.8.2 Provides: bundled(crate(vcpkg)) = 0.2.15 -Provides: bundled(crate(version_check)) = 0.9.4 +Provides: bundled(crate(version_check)) = 0.9.5 Provides: bundled(crate(wasi)) = 0.11.0+wasi_snapshot_preview1 Provides: bundled(crate(winapi)) = 0.3.9 Provides: bundled(crate(winapi-i686-pc-windows-gnu)) = 0.4.0 -Provides: bundled(crate(winapi-util)) = 0.1.6 +Provides: bundled(crate(winapi-util)) = 0.1.8 Provides: bundled(crate(winapi-x86_64-pc-windows-gnu)) = 0.4.0 Provides: bundled(crate(windows-sys)) = 0.52.0 -Provides: bundled(crate(windows-targets)) = 0.52.0 -Provides: bundled(crate(windows_aarch64_gnullvm)) = 0.52.0 -Provides: bundled(crate(windows_aarch64_msvc)) = 0.52.0 -Provides: bundled(crate(windows_i686_gnu)) = 0.52.0 -Provides: bundled(crate(windows_i686_msvc)) = 0.52.0 -Provides: bundled(crate(windows_x86_64_gnu)) = 0.52.0 -Provides: bundled(crate(windows_x86_64_gnullvm)) = 0.52.0 -Provides: bundled(crate(windows_x86_64_msvc)) = 0.52.0 -Provides: bundled(crate(zeroize)) = 1.7.0 +Provides: bundled(crate(windows-targets)) = 0.52.6 +Provides: bundled(crate(windows_aarch64_gnullvm)) = 0.52.6 +Provides: bundled(crate(windows_aarch64_msvc)) = 0.52.6 +Provides: bundled(crate(windows_i686_gnu)) = 0.52.6 +Provides: bundled(crate(windows_i686_gnullvm)) = 0.52.6 +Provides: bundled(crate(windows_i686_msvc)) = 0.52.6 +Provides: bundled(crate(windows_x86_64_gnu)) = 0.52.6 +Provides: bundled(crate(windows_x86_64_gnullvm)) = 0.52.6 +Provides: bundled(crate(windows_x86_64_msvc)) = 0.52.6 +Provides: bundled(crate(zerocopy)) = 0.6.6 +Provides: bundled(crate(zerocopy-derive)) = 0.6.6 +Provides: bundled(crate(zeroize)) = 1.8.1 Provides: bundled(crate(zeroize_derive)) = 1.4.2 Provides: bundled(npm(@aashutoshrathi/word-wrap)) = 1.2.6 Provides: bundled(npm(@eslint-community/eslint-utils)) = 4.4.0 @@ -337,30 +358,43 @@ Provides: bundled(npm(wrappy)) = 1.0.2 Provides: bundled(npm(yocto-queue)) = 0.1.0 ##### Bundled cargo crates list - END ##### - -BuildRequires: nspr-devel >= 4.32 -BuildRequires: nss-devel >= 3.67.0-7 +# Attach the buildrequires to the top level package: +BuildRequires: nspr-devel +BuildRequires: nss-devel >= 3.34 +BuildRequires: openldap-clients BuildRequires: openldap-devel BuildRequires: lmdb-devel -BuildRequires: libdb-devel BuildRequires: cyrus-sasl-devel BuildRequires: icu BuildRequires: libicu-devel BuildRequires: pcre2-devel BuildRequires: cracklib-devel BuildRequires: json-c-devel -%if %{use_clang} +%if %{with clang} BuildRequires: libatomic BuildRequires: clang +BuildRequires: compiler-rt +BuildRequires: lld %else BuildRequires: gcc BuildRequires: gcc-c++ +%if %{with asan} +BuildRequires: libasan %endif +%if %{with tsan} +BuildRequires: libtsan +%endif +%if %{with ubsan} +BuildRequires: libubsan +%endif +%endif +%if %{without bundle_libdb} +BuildRequires: libdb-devel +%endif + # The following are needed to build the snmp ldap-agent BuildRequires: net-snmp-devel -BuildRequires: lm_sensors-devel BuildRequires: bzip2-devel -BuildRequires: zlib-devel BuildRequires: openssl-devel # the following is for the pam passthru auth plug-in BuildRequires: pam-devel @@ -368,16 +402,12 @@ BuildRequires: systemd-units BuildRequires: systemd-devel BuildRequires: systemd-rpm-macros %{?sysusers_requires_compat} -%if %{use_asan} -BuildRequires: libasan -%endif BuildRequires: cargo BuildRequires: rust BuildRequires: pkgconfig BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(krb5) BuildRequires: pkgconfig(libpcre2-8) - # Needed to support regeneration of the autotool artifacts. BuildRequires: autoconf BuildRequires: automake @@ -386,112 +416,115 @@ BuildRequires: libtool BuildRequires: doxygen # For tests! BuildRequires: libcmocka-devel -BuildRequires: libevent-devel -# For lib389 and related components +# For lib389 and related components. +BuildRequires: python%{python3_pkgversion} BuildRequires: python%{python3_pkgversion}-devel BuildRequires: python%{python3_pkgversion}-setuptools BuildRequires: python%{python3_pkgversion}-ldap -BuildRequires: python%{python3_pkgversion}-six BuildRequires: python%{python3_pkgversion}-pyasn1 BuildRequires: python%{python3_pkgversion}-pyasn1-modules BuildRequires: python%{python3_pkgversion}-dateutil BuildRequires: python%{python3_pkgversion}-argcomplete BuildRequires: python%{python3_pkgversion}-argparse-manpage -BuildRequires: python%{python3_pkgversion}-libselinux BuildRequires: python%{python3_pkgversion}-policycoreutils +BuildRequires: python%{python3_pkgversion}-libselinux BuildRequires: python%{python3_pkgversion}-cryptography # For cockpit -%if %{use_cockpit} +%if %{with cockpit} BuildRequires: rsync +BuildRequires: npm +BuildRequires: nodejs %endif Requires: %{name}-libs = %{version}-%{release} Requires: python%{python3_pkgversion}-lib389 = %{version}-%{release} -Requires: lmdb-libs # this is needed for using semanage from our setup scripts Requires: policycoreutils-python-utils -Requires: /usr/sbin/semanage Requires: libsemanage-python%{python3_pkgversion} -Requires: selinux-policy >= 3.14.1-29 - # the following are needed for some of our scripts Requires: openldap-clients -Requires: /usr/bin/c_rehash -Requires: python%{python3_pkgversion}-ldap Requires: acl -Requires: zlib -Requires: json-c - # this is needed to setup SSL if you are not using the # administration server package Requires: nss-tools -Requires: nss >= 3.67.0-7 -Requires: nspr >= 4.32 - +%dirsrv_requires_ge nss # these are not found by the auto-dependency method # they are required to support the mandatory LDAP SASL mechs Requires: cyrus-sasl-gssapi Requires: cyrus-sasl-md5 +# This is optionally supported by us, as we use it in our tests Requires: cyrus-sasl-plain - -# this is needed for verify-db.pl -Requires: libdb-utils - -# Needed for password dictionary checks -Requires: cracklib-dicts - +# this is needed for backldbm +%if %{without bundle_libdb} +Requires: libdb +%endif +Requires: lmdb # Needed by logconv.pl +%if %{without bundle_libdb} Requires: perl-DB_File +%endif Requires: perl-Archive-Tar %if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 Requires: perl-debugger Requires: perl-sigtrap %endif - +# Needed for password dictionary checks +Requires: cracklib-dicts +Requires: json-c +# Log compression +Requires: zlib-devel # Picks up our systemd deps. %{?systemd_requires} -Obsoletes: %{name} <= 1.4.4 - -Source0: https://releases.pagure.org/389-ds-base/%{name}-%{version}.tar.bz2 -# 389-ds-git.sh should be used to generate the source tarball from git -Source1: %{name}-git.sh +Source0: %{name}-%{version}.tar.bz2 Source2: %{name}-devel.README -%if %{bundle_jemalloc} +%if %{with bundle_jemalloc} Source3: https://github.com/jemalloc/%{jemalloc_name}/releases/download/%{jemalloc_ver}/%{jemalloc_name}-%{jemalloc_ver}.tar.bz2 %endif Source4: 389-ds-base.sysusers +%if %{with bundle_libdb} +Source5: https://fedorapeople.org/groups/389ds/libdb-5.3.28-59.tar.bz2 +%endif %description 389 Directory Server is an LDAPv3 compliant server. The base package includes the LDAP server and command line utilities for server administration. -%if %{use_asan} +%if %{with asan} WARNING! This build is linked to Address Sanitisation libraries. This probably isn't what you want. Please contact support immediately. Please see http://seclists.org/oss-sec/2016/q1/363 for more information. %endif + %package libs -Summary: Core libraries for 389 Directory Server -BuildRequires: nspr-devel -BuildRequires: nss-devel >= 3.34 -BuildRequires: openldap-devel -BuildRequires: libdb-devel -BuildRequires: cyrus-sasl-devel -BuildRequires: libicu-devel -BuildRequires: pcre2-devel -BuildRequires: libtalloc-devel -BuildRequires: libevent-devel -BuildRequires: libtevent-devel -Requires: krb5-libs -Requires: libevent -BuildRequires: systemd-devel -BuildRequires: make +Summary: Core libraries for 389 Directory Server (%{variant}) Provides: svrcore = 4.1.4 -Conflicts: svrcore Obsoletes: svrcore <= 4.1.3 +Conflicts: svrcore +%dirsrv_requires_ge nss +Requires: nspr +Requires: openldap +Requires: systemd-libs +# Pull in sasl +Requires: cyrus-sasl-lib +# KRB +Requires: krb5-libs +%if %{with clang} +Requires: llvm +Requires: compiler-rt +%else +%if %{with asan} +Requires: libasan +%endif +%if %{with tsan} +Requires: libtsan +%endif +%if %{with ubsan} +Requires: libubsan +%endif +%endif %description libs Core libraries for the 389 Directory Server base package. These libraries @@ -499,19 +532,17 @@ are used by the main package and the -devel package. This allows the -devel package to be installed with just the -libs package and without the main package. %package devel -Summary: Development libraries for 389 Directory Server +Summary: Development libraries for 389 Directory Server (%{variant}) +Provides: svrcore-devel = 4.1.4 +Obsoletes: svrcore-devel <= 4.1.3 +Conflicts: svrcore-devel Requires: %{name}-libs = %{version}-%{release} Requires: pkgconfig Requires: nspr-devel Requires: nss-devel >= 3.34 Requires: openldap-devel -Requires: libtalloc -Requires: libevent -Requires: libtevent +# systemd-libs contains the headers iirc. Requires: systemd-libs -Provides: svrcore-devel = 4.1.4 -Conflicts: svrcore-devel -Obsoletes: svrcore-devel <= 4.1.3 %description devel Development Libraries and headers for the 389 Directory Server base package. @@ -525,16 +556,34 @@ Obsoletes: %{name} <= 1.4.0.0 %description snmp SNMP Agent for the 389 Directory Server base package. +%if %{with bundle_libdb} +%package bdb +Summary: Berkeley Database backend for 389 Directory Server +%description bdb +Berkeley Database backend for 389 Directory Server +Warning! This backend is deprecated in favor of lmdb and its support +may be removed in future versions. + +Requires: %{name} = %{version}-%{release} +# Berkeley DB database libdb was marked as deprecated since F40: +# https://fedoraproject.org/wiki/Changes/389_Directory_Server_3.0.0 +# because libdb was marked as deprecated since F33 +# https://fedoraproject.org/wiki/Changes/Libdb_deprecated +Provides: deprecated() +%endif + + %package -n python%{python3_pkgversion}-lib389 Summary: A library for accessing, testing, and configuring the 389 Directory Server BuildArch: noarch +Requires: %{name} = %{version}-%{release} Requires: openssl +# This is for /usr/bin/c_rehash tool, only needed for openssl < 1.1.0 +Requires: openssl-perl Requires: iproute -Recommends: bash-completion Requires: python%{python3_pkgversion} Requires: python%{python3_pkgversion}-distro Requires: python%{python3_pkgversion}-ldap -Requires: python%{python3_pkgversion}-six Requires: python%{python3_pkgversion}-pyasn1 Requires: python%{python3_pkgversion}-pyasn1-modules Requires: python%{python3_pkgversion}-dateutil @@ -542,20 +591,21 @@ Requires: python%{python3_pkgversion}-argcomplete Requires: python%{python3_pkgversion}-libselinux Requires: python%{python3_pkgversion}-setuptools Requires: python%{python3_pkgversion}-cryptography +Recommends: bash-completion %{?python_provide:%python_provide python%{python3_pkgversion}-lib389} %description -n python%{python3_pkgversion}-lib389 This module contains tools and libraries for accessing, testing, and configuring the 389 Directory Server. -%if %{use_cockpit} +%if %{with cockpit} %package -n cockpit-389-ds Summary: Cockpit UI Plugin for configuring and administering the 389 Directory Server BuildArch: noarch Requires: cockpit -Requires: 389-ds-base +Requires: %{name} = %{version}-%{release} Requires: python%{python3_pkgversion} -Requires: python%{python3_pkgversion}-lib389 +Requires: python%{python3_pkgversion}-lib389 = %{version}-%{release} %description -n cockpit-389-ds A cockpit UI Plugin for configuring and administering the 389 Directory Server @@ -564,34 +614,47 @@ A cockpit UI Plugin for configuring and administering the 389 Directory Server %prep %autosetup -p1 -v -n %{name}-%{version} -%if %{bundle_jemalloc} +%if %{with bundle_jemalloc} %setup -q -n %{name}-%{version} -T -D -b 3 %endif +%if %{with bundle_libdb} +%setup -q -n %{name}-%{version} -T -D -b 5 +%endif + cp %{SOURCE2} README.devel %build -OPENLDAP_FLAG="--with-openldap" -%{?with_tmpfiles_d: TMPFILES_FLAG="--with-tmpfiles-d=%{with_tmpfiles_d}"} - -%if %{use_asan} -ASAN_FLAGS="--enable-asan --enable-debug" -%endif - -RUST_FLAGS="--enable-rust-offline" - -%if !%{use_cockpit} -COCKPIT_FLAGS="--disable-cockpit" -%endif - -%if %{use_clang} -export CC=clang -export CXX=clang++ +%if %{with clang} CLANG_FLAGS="--enable-clang" %endif -%if %{bundle_jemalloc} +%{?with_tmpfiles_d: TMPFILES_FLAG="--with-tmpfiles-d=%{with_tmpfiles_d}"} + +%if %{with asan} +ASAN_FLAGS="--enable-asan --enable-debug" +%endif + +%if %{with msan} +MSAN_FLAGS="--enable-msan --enable-debug" +%endif + +%if %{with tsan} +TSAN_FLAGS="--enable-tsan --enable-debug" +%endif + +%if %{with ubsan} +UBSAN_FLAGS="--enable-ubsan --enable-debug" +%endif + +RUST_FLAGS="--enable-rust --enable-rust-offline" + +%if %{without cockpit} +COCKPIT_FLAGS="--disable-cockpit" +%endif + +%if %{with bundle_jemalloc} # Override page size, bz #1545539 # 4K %ifarch %ix86 %arm x86_64 s390x @@ -614,26 +677,44 @@ pushd ../%{jemalloc_name}-%{jemalloc_ver} %configure \ --libdir=%{_libdir}/%{pkgname}/lib \ --bindir=%{_libdir}/%{pkgname}/bin \ - --enable-prof + --enable-prof %{lg_page} %{lg_hugepage} make %{?_smp_mflags} popd %endif -# Enforce strict linking -%define _ld_strict_symbol_defs 1 +# Build custom libdb package +%if %{with bundle_libdb} +mkdir -p ../%{libdb_base_version} +pushd ../%{libdb_base_version} +tar -xjf %{_topdir}/SOURCES/%{libdb_full_version}.tar.bz2 +mv %{libdb_full_version} SOURCES +rpmbuild --define "_topdir $PWD" -bc %{_builddir}/%{name}-%{version}/rpm/bundle-libdb.spec +popd +%endif # Rebuild the autotool artifacts now. autoreconf -fiv -%configure --enable-autobind --with-selinux $TMPFILES_FLAG \ +%configure \ +%if %{with bundle_libdb} + --with-bundle-libdb=%{_builddir}/%{libdb_base_version}/BUILD/%{libdb_base_dir}/dist/dist-tls \ +%endif + --with-selinux $TMPFILES_FLAG \ --with-systemd \ --with-systemdsystemunitdir=%{_unitdir} \ --with-systemdsystemconfdir=%{_sysconfdir}/systemd/system \ - --with-systemdgroupname=%{groupname} \ + --with-systemdgroupname=%{groupname} \ --libexecdir=%{_libexecdir}/%{pkgname} \ - $ASAN_FLAGS $RUST_FLAGS $CLANG_FLAGS $COCKPIT_FLAGS \ - --enable-cmocka \ - --with-libldap-r=no + $ASAN_FLAGS $MSAN_FLAGS $TSAN_FLAGS $UBSAN_FLAGS $RUST_FLAGS $CLANG_FLAGS $COCKPIT_FLAGS \ +%if 0%{?fedora} >= 34 || 0%{?rhel} >= 9 + --with-libldap-r=no \ +%endif + --enable-cmocka + +# Avoid "Unknown key name 'XXX' in section 'Service', ignoring." warnings from systemd on older releases +%if 0%{?rhel} && 0%{?rhel} < 9 + sed -r -i '/^(Protect(Home|Hostname|KernelLogs)|PrivateMounts)=/d' %{_builddir}/%{name}-%{version}/wrappers/*.service.in +%endif # lib389 make src/lib389/setup.py @@ -650,22 +731,26 @@ sed -i "1s/\"1\"/\"8\"/" %{_builddir}/%{name}-%{version}/src/lib389/man/dscreat # Generate symbolic info for debuggers export XCFLAGS=$RPM_OPT_FLAGS -#make %{?_smp_mflags} -make +make %{?_smp_mflags} %install mkdir -p %{buildroot}%{_datadir}/gdb/auto-load%{_sbindir} -%if %{use_cockpit} +%if %{with cockpit} mkdir -p %{buildroot}%{_datadir}/cockpit %endif make DESTDIR="$RPM_BUILD_ROOT" install -%if %{use_cockpit} +%if %{with cockpit} find %{buildroot}%{_datadir}/cockpit/389-console -type d | sed -e "s@%{buildroot}@@" | sed -e 's/^/\%dir /' > cockpit.list find %{buildroot}%{_datadir}/cockpit/389-console -type f | sed -e "s@%{buildroot}@@" >> cockpit.list %endif +find %{buildroot}%{_libdir}/%{pkgname}/plugins/ -type f -iname 'lib*.so' | sed -e "s@%{buildroot}@@" > plugins.list +%if %{with bundle_libdb} +sed -i -e "/libback-bdb/d" plugins.list +%endif + # Copy in our docs from doxygen. cp -r %{_builddir}/%{name}-%{version}/man/man3 $RPM_BUILD_ROOT/%{_mandir}/man3 @@ -683,13 +768,14 @@ done mkdir -p $RPM_BUILD_ROOT/var/log/%{pkgname} mkdir -p $RPM_BUILD_ROOT/var/lib/%{pkgname} -mkdir -p $RPM_BUILD_ROOT/var/lock/%{pkgname} +mkdir -p $RPM_BUILD_ROOT/var/lock/%{pkgname} \ + && chmod 770 $RPM_BUILD_ROOT/var/lock/%{pkgname} # for systemd mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/%{groupname}.wants install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_sysusersdir}/389-ds-base.conf -# remove libtool archives and static libs +#remove libtool and static libs rm -f $RPM_BUILD_ROOT%{_libdir}/%{pkgname}/*.a rm -f $RPM_BUILD_ROOT%{_libdir}/%{pkgname}/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/%{pkgname}/plugins/*.a @@ -697,7 +783,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/%{pkgname}/plugins/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/libsvrcore.a rm -f $RPM_BUILD_ROOT%{_libdir}/libsvrcore.la -%if %{bundle_jemalloc} +%if %{with bundle_jemalloc} pushd ../%{jemalloc_name}-%{jemalloc_ver} make DESTDIR="$RPM_BUILD_ROOT" install_lib install_bin cp -pa COPYING ../%{name}-%{version}/COPYING.jemalloc @@ -705,9 +791,26 @@ cp -pa README ../%{name}-%{version}/README.jemalloc popd %endif +%if %{with bundle_libdb} +pushd ../%{libdb_base_version} +libdbbuilddir=$PWD/BUILD/%{libdb_base_dir} +libdbdestdir=$PWD/../%{name}-%{version} +cp -pa $libdbbuilddir/LICENSE $libdbdestdir/LICENSE.libdb +cp -pa $libdbbuilddir/README $libdbdestdir/README.libdb +cp -pa $libdbbuilddir/lgpl-2.1.txt $libdbdestdir/lgpl-2.1.txt.libdb +cp -pa $libdbbuilddir/dist/dist-tls/.libs/%{libdb_bundle_name} $RPM_BUILD_ROOT%{_libdir}/%{pkgname}/%{libdb_bundle_name} +popd +%endif + + %check # This checks the code, if it fails it prints why, then re-raises the fail to shortcircuit the rpm build. +%if %{with tsan} +export TSAN_OPTIONS=print_stacktrace=1:second_deadlock_stack=1:history_size=7 +%endif +%if %{without asan} && %{without msan} if ! make DESTDIR="$RPM_BUILD_ROOT" check; then cat ./test-suite.log && false; fi +%endif %post if [ -n "$DEBUGPOSTTRANS" ] ; then @@ -786,8 +889,8 @@ fi exit 0 -%files -%if %{bundle_jemalloc} +%files -f plugins.list +%if %{with bundle_jemalloc} %doc LICENSE LICENSE.GPLv3+ LICENSE.openssl README.jemalloc %license COPYING.jemalloc %else @@ -817,7 +920,6 @@ exit 0 %{_mandir}/man1/logconv.pl.1.gz %{_bindir}/pwdhash %{_mandir}/man1/pwdhash.1.gz -#%caps(CAP_NET_BIND_SERVICE=pe) {_sbindir}/ns-slapd %{_sbindir}/ns-slapd %{_mandir}/man8/ns-slapd.8.gz %{_sbindir}/openldap_to_ds @@ -831,7 +933,6 @@ exit 0 %{_mandir}/man5/dirsrv.systemd.5.gz %{_libdir}/%{pkgname}/python %dir %{_libdir}/%{pkgname}/plugins -%{_libdir}/%{pkgname}/plugins/*.so # This has to be hardcoded to /lib - $libdir changes between lib/lib64, but # sysctl.d is always in /lib. %{_prefix}/lib/sysctl.d/* @@ -841,7 +942,7 @@ exit 0 %exclude %{_sbindir}/ldap-agent* %exclude %{_mandir}/man1/ldap-agent.1.gz %exclude %{_unitdir}/%{pkgname}-snmp.service -%if %{bundle_jemalloc} +%if %{with bundle_jemalloc} %{_libdir}/%{pkgname}/lib/ %{_libdir}/%{pkgname}/bin/ %exclude %{_libdir}/%{pkgname}/bin/jemalloc-config @@ -872,7 +973,7 @@ exit 0 %{_libdir}/%{pkgname}/libns-dshttpd.so.* %{_libdir}/%{pkgname}/libldaputil.so.* %{_libdir}/%{pkgname}/librewriters.so* -%if %{bundle_jemalloc} +%if %{with bundle_jemalloc} %{_libdir}/%{pkgname}/lib/libjemalloc.so.2 %endif @@ -883,6 +984,13 @@ exit 0 %{_mandir}/man1/ldap-agent.1.gz %{_unitdir}/%{pkgname}-snmp.service +%if %{with bundle_libdb} +%files bdb +%doc LICENSE LICENSE.GPLv3+ README.devel LICENSE.libdb README.libdb lgpl-2.1.txt.libdb +%{_libdir}/%{pkgname}/%{libdb_bundle_name} +%{_libdir}/%{pkgname}/plugins/libback-bdb.so +%endif + %files -n python%{python3_pkgversion}-lib389 %doc LICENSE LICENSE.GPLv3+ %{python3_sitelib}/lib389* @@ -900,7 +1008,7 @@ exit 0 %{bash_completions_dir}/dscreate %{bash_completions_dir}/dsidm -%if %{use_cockpit} +%if %{with cockpit} %files -n cockpit-389-ds -f cockpit.list %{_datarootdir}/metainfo/389-console/org.port389.cockpit_console.metainfo.xml %doc README.md diff --git a/concread-use-2018-edition.patch b/concread-use-2018-edition.patch deleted file mode 100644 index c09bf22..0000000 --- a/concread-use-2018-edition.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff '--color=auto' -Nur 389-ds-base-2.0.13.orig/vendor/concread/.cargo-checksum.json 389-ds-base-2.0.13/vendor/concread/.cargo-checksum.json ---- 389-ds-base-2.0.13.orig/vendor/concread/.cargo-checksum.json 2022-01-25 14:30:32.886759088 +0100 -+++ 389-ds-base-2.0.13/vendor/concread/.cargo-checksum.json 2022-01-25 14:30:59.144053695 +0100 -@@ -1 +1 @@ --{"files":{"CACHE.md":"258e585db81ee9582e1f7e7246026b49b3f617dae4459ec52437024b00ba5dff","CODE_OF_CONDUCT.md":"f32933e0090f012d336e8b2f2301967e8a27cbc896aa3860811a944d05b58964","CONTRIBUTORS.md":"1edff6e840fc50412ac698cd7e5ebe660574760b492d4febe94feb0c066b062f","Cargo.toml":"088f1aa3051cfc8b7861c3eed146e9a5d936e68edaaa85d04054475a8d24224e","LICENSE.md":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"de35f7df990b5c047785da63ad560ecadac746bf19d2ab8457fc2ba0224ad46a","README.md":"f70aafccb01764a1aa4d83e3f7fbeab245f7bfa3d3bafecea9614439ff97b487","asan_test.sh":"7355f359e34a6198e895c18fbb616fa45a44666c0a82787f704454e83687be4c","benches/arccache.rs":"6f1f23abb2b577c21aa7ee3d4bd7413fcb49a60d59b1220e1afaeda99f4e6b0e","benches/hashmap_benchmark.rs":"306d085f88f7ce40b8709aff37375482f8edb3c891cbb3da5d9d70a95c2d6cca","src/arcache/ll.rs":"2bd7eb2e73f80112765a0e1792edc27b58269dfc419498ef02ad68fb63141abc","src/arcache/mod.rs":"5911e162123373e241a6bf2b6355cda5480f9ff2f3fa2901c08a7010ad82c00a","src/arcache/traits.rs":"09ea380ea38efe3e35c2036a2ae233388a5367706d155c4aa3c9234d03eef8ea","src/bptree/asynch.rs":"69eff00e05b7b85a12468304374422b2ce1d8598b50918b0efe6eb77036249a4","src/bptree/impl.rs":"b54a7d53e23bf0ff23ebd43ea7ab19708cc383766706051f207bfb62f5e64793","src/bptree/mod.rs":"5e8d2004865dd2064a550070ca3b49a1975ac877cd6749f035806335f3a393a1","src/cowcell/asynch.rs":"04a1c424c083625f92524547bd21d20aadec4d20e2eedfff4db90f2aef920d6c","src/cowcell/mod.rs":"621c243c301f80ebcf65a636489c9450e22940bc5bc9cfb1e5db7943f4e3543f","src/ebrcell/mod.rs":"cf2a2042ac41039ca5fb4212f1fec58bfa1695b88f9c7f7864e01dafa84ccf35","src/hashmap/asynch.rs":"f8418906a23cf06e73fb1330988da4ab0f53ae58c4d5fd58ab5105f8fcbcc414","src/hashmap/impl.rs":"9695dcfde2fd6b27766adddd225d6390a44cc757ebf9b2f5879f6f1b9a7f29dc","src/hashmap/mod.rs":"bbd33d7f50a28b9a1254d4aaed72f5122e9f01e68e0c43331f90582a17056657","src/internals/bptree/cursor.rs":"83b250db73eb09e1cf7367e8c33700e9b9659695fd565e813549b7f20f9ba777","src/internals/bptree/iter.rs":"dfcf50a3ff5b052dc719b2c68b0bafcfdd0c0c8d8173f3e227a7dd6c8f1be773","src/internals/bptree/macros.rs":"568826a43238474d1f92f7dbf1671690790b35a3b8c88d0d6c5dd35aca54857a","src/internals/bptree/mod.rs":"67ba38e16d96c0d239b72cf0b7be5f27a7a82a29e3a31afc5477175f92b4c57f","src/internals/bptree/node.rs":"afe7217f187d5d7a086dab3bc6fadbae0456e4f8518aa12153f877590380d585","src/internals/bptree/states.rs":"da1ce34cbe6bc449e9e5172ed1fd2a296f2ac197b17ca855f2d40aada7d32a63","src/internals/hashmap/cursor.rs":"7d9c47d7e31e984670cd2161be54475dc468df5b00df26dc89f9848eb1a587ea","src/internals/hashmap/iter.rs":"f02f372e34d2af685eebbcc4db71cc5985c904c1bbd14dd13f48921ea58e5c5f","src/internals/hashmap/macros.rs":"f1236cd794e0e8d7ee2e89428b60c1c3437f34e6be32217de2d61dddce7c6b90","src/internals/hashmap/mod.rs":"ffa693b755ef92da14b001e08a1154e263bd9540ae993d4f79ddf5979e2dcbd6","src/internals/hashmap/node.rs":"7d86f28969185f28de91b2c816990f231adb2c5985c4cbf0efcfdd07ae94ef9a","src/internals/hashmap/simd.rs":"4ef1fd5a0b6218823eafd727b7ff1a738dfc0c59d1e3afbb2ace8f0513967bf3","src/internals/hashmap/states.rs":"9366f29bdfaeb3ee9744268b5b2283209f791a260045312e8489515f8bd3900a","src/internals/lincowcell/mod.rs":"9caa826c9b6758e79d90c10c5dad4bfeaf46a8773784537750814f700fa13428","src/internals/lincowcell_async/mod.rs":"c38ec2efbd02219ebec68aa0b31e824262941093d1cfb3e441e6c98b375df6ab","src/internals/mod.rs":"18db9c4cb457fd06a85d668a69bd290ad13a7fae971a926015daf148424e19cc","src/lib.rs":"ce9ba3daaa0f8e9ee2e61a61e8134cf4d241522ca30909d6933f37075bd3e549","src/threadcache/mod.rs":"43328459ade4c1abb8174ded0f77f264a3931dbae82991e70765747d519882c6","src/unsound.rs":"60ed0cad28434083fe7cccd17af4995381cdd9e4dfb685da5b14e802150074fb","src/unsound2.rs":"02b72de153d9f5fac901ea59a9ef3d1ce9b8e3e18bc80d9d19b2d6aa8c7b5022","src/unsound3.rs":"019ba913656558f91e9a160cbc05fe78b1e4a44acc1bb74d38281ebea71edd77","src/utils.rs":"d07e962bab8936d5396bc7542af7ce2812504358c4e68dd2322f521c066476cd","static/arc_1.png":"94ff0d24a15d5feda27f0316f8a1ca82291f816d8705b1d0743e03e39791bbe2","static/arc_2.png":"9932b1b8e7f44a833f4ffdb710af984199711d6c9c3349a51ab122a22d0ebbe7","static/cow_1.png":"f340e6d143589efdbbfb8c62c4fdddc97dcb213e0cff2c04f7f93bf380fd36f3","static/cow_2.png":"20f550b67109cd042170da95ff6faecda043d333c55f48ec19ced8bb9dce1eee","static/cow_3.png":"137a24e70196bd628522733b55ed1d92cf3f9936be39d9f0864201424a25bd88","static/cow_arc_1.png":"97a45ad9b55721381aff07e921fedc863209629a4ae4f8c160cad7059ecad795","static/cow_arc_2.png":"178e681ba6e2e0a33a7b6a08b9895b628dad74cda56e9e25b59288376e9f01ce","static/cow_arc_3.png":"37dac32e173b14faf37b502a110ab1e4f47f30710cfc65714b9fef0b79f64307","static/cow_arc_4.png":"f4b962b9ccd9b765523f50b752b9bb85525cbf8a4e6cdc15048f9363579e6719","static/cow_arc_5.png":"d6b122ec844d0d19312cc57667769f2955bc7b8667449b1c13a7359a4debc8a2","static/cow_arc_6.png":"847018f7f5e0813b26c2b636a2ca8549f475339de24a21dd2e0e21d90dbd77f1","static/cow_arc_7.png":"3df9b3d1153c7b1de52a30a46e9bdba75e2412ad51ef158437a356f16b3bd1be","static/cow_arc_8.png":"68f405191ef400b8f854102e98fac92ddd31c274bcff7739e47483a39dba9612","static/cow_arc_9.png":"eb60637be4fb951ac54a1e3de0fd33e0bb2f5a4d19c3519bd8f23c02b8fc240d"},"package":"dcc9816f5ac93ebd51c37f7f9a6bf2b40dfcd42978ad2aea5d542016e9244cf6"} -\ No newline at end of file -+{"files":{"CACHE.md":"258e585db81ee9582e1f7e7246026b49b3f617dae4459ec52437024b00ba5dff","CODE_OF_CONDUCT.md":"f32933e0090f012d336e8b2f2301967e8a27cbc896aa3860811a944d05b58964","CONTRIBUTORS.md":"1edff6e840fc50412ac698cd7e5ebe660574760b492d4febe94feb0c066b062f","Cargo.toml":"188257f3b5f5cba5f526fd3647ce8c5a4c75a70dc95fbedf665a2cf2755aee6d","LICENSE.md":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"de35f7df990b5c047785da63ad560ecadac746bf19d2ab8457fc2ba0224ad46a","README.md":"f70aafccb01764a1aa4d83e3f7fbeab245f7bfa3d3bafecea9614439ff97b487","asan_test.sh":"7355f359e34a6198e895c18fbb616fa45a44666c0a82787f704454e83687be4c","benches/arccache.rs":"6f1f23abb2b577c21aa7ee3d4bd7413fcb49a60d59b1220e1afaeda99f4e6b0e","benches/hashmap_benchmark.rs":"306d085f88f7ce40b8709aff37375482f8edb3c891cbb3da5d9d70a95c2d6cca","src/arcache/ll.rs":"2bd7eb2e73f80112765a0e1792edc27b58269dfc419498ef02ad68fb63141abc","src/arcache/mod.rs":"5911e162123373e241a6bf2b6355cda5480f9ff2f3fa2901c08a7010ad82c00a","src/arcache/traits.rs":"09ea380ea38efe3e35c2036a2ae233388a5367706d155c4aa3c9234d03eef8ea","src/bptree/asynch.rs":"69eff00e05b7b85a12468304374422b2ce1d8598b50918b0efe6eb77036249a4","src/bptree/impl.rs":"b54a7d53e23bf0ff23ebd43ea7ab19708cc383766706051f207bfb62f5e64793","src/bptree/mod.rs":"5e8d2004865dd2064a550070ca3b49a1975ac877cd6749f035806335f3a393a1","src/cowcell/asynch.rs":"04a1c424c083625f92524547bd21d20aadec4d20e2eedfff4db90f2aef920d6c","src/cowcell/mod.rs":"621c243c301f80ebcf65a636489c9450e22940bc5bc9cfb1e5db7943f4e3543f","src/ebrcell/mod.rs":"cf2a2042ac41039ca5fb4212f1fec58bfa1695b88f9c7f7864e01dafa84ccf35","src/hashmap/asynch.rs":"f8418906a23cf06e73fb1330988da4ab0f53ae58c4d5fd58ab5105f8fcbcc414","src/hashmap/impl.rs":"9695dcfde2fd6b27766adddd225d6390a44cc757ebf9b2f5879f6f1b9a7f29dc","src/hashmap/mod.rs":"bbd33d7f50a28b9a1254d4aaed72f5122e9f01e68e0c43331f90582a17056657","src/internals/bptree/cursor.rs":"83b250db73eb09e1cf7367e8c33700e9b9659695fd565e813549b7f20f9ba777","src/internals/bptree/iter.rs":"dfcf50a3ff5b052dc719b2c68b0bafcfdd0c0c8d8173f3e227a7dd6c8f1be773","src/internals/bptree/macros.rs":"568826a43238474d1f92f7dbf1671690790b35a3b8c88d0d6c5dd35aca54857a","src/internals/bptree/mod.rs":"67ba38e16d96c0d239b72cf0b7be5f27a7a82a29e3a31afc5477175f92b4c57f","src/internals/bptree/node.rs":"afe7217f187d5d7a086dab3bc6fadbae0456e4f8518aa12153f877590380d585","src/internals/bptree/states.rs":"da1ce34cbe6bc449e9e5172ed1fd2a296f2ac197b17ca855f2d40aada7d32a63","src/internals/hashmap/cursor.rs":"7d9c47d7e31e984670cd2161be54475dc468df5b00df26dc89f9848eb1a587ea","src/internals/hashmap/iter.rs":"f02f372e34d2af685eebbcc4db71cc5985c904c1bbd14dd13f48921ea58e5c5f","src/internals/hashmap/macros.rs":"f1236cd794e0e8d7ee2e89428b60c1c3437f34e6be32217de2d61dddce7c6b90","src/internals/hashmap/mod.rs":"ffa693b755ef92da14b001e08a1154e263bd9540ae993d4f79ddf5979e2dcbd6","src/internals/hashmap/node.rs":"7d86f28969185f28de91b2c816990f231adb2c5985c4cbf0efcfdd07ae94ef9a","src/internals/hashmap/simd.rs":"4ef1fd5a0b6218823eafd727b7ff1a738dfc0c59d1e3afbb2ace8f0513967bf3","src/internals/hashmap/states.rs":"9366f29bdfaeb3ee9744268b5b2283209f791a260045312e8489515f8bd3900a","src/internals/lincowcell/mod.rs":"9caa826c9b6758e79d90c10c5dad4bfeaf46a8773784537750814f700fa13428","src/internals/lincowcell_async/mod.rs":"c38ec2efbd02219ebec68aa0b31e824262941093d1cfb3e441e6c98b375df6ab","src/internals/mod.rs":"18db9c4cb457fd06a85d668a69bd290ad13a7fae971a926015daf148424e19cc","src/lib.rs":"ce9ba3daaa0f8e9ee2e61a61e8134cf4d241522ca30909d6933f37075bd3e549","src/threadcache/mod.rs":"43328459ade4c1abb8174ded0f77f264a3931dbae82991e70765747d519882c6","src/unsound.rs":"60ed0cad28434083fe7cccd17af4995381cdd9e4dfb685da5b14e802150074fb","src/unsound2.rs":"02b72de153d9f5fac901ea59a9ef3d1ce9b8e3e18bc80d9d19b2d6aa8c7b5022","src/unsound3.rs":"019ba913656558f91e9a160cbc05fe78b1e4a44acc1bb74d38281ebea71edd77","src/utils.rs":"d07e962bab8936d5396bc7542af7ce2812504358c4e68dd2322f521c066476cd","static/arc_1.png":"94ff0d24a15d5feda27f0316f8a1ca82291f816d8705b1d0743e03e39791bbe2","static/arc_2.png":"9932b1b8e7f44a833f4ffdb710af984199711d6c9c3349a51ab122a22d0ebbe7","static/cow_1.png":"f340e6d143589efdbbfb8c62c4fdddc97dcb213e0cff2c04f7f93bf380fd36f3","static/cow_2.png":"20f550b67109cd042170da95ff6faecda043d333c55f48ec19ced8bb9dce1eee","static/cow_3.png":"137a24e70196bd628522733b55ed1d92cf3f9936be39d9f0864201424a25bd88","static/cow_arc_1.png":"97a45ad9b55721381aff07e921fedc863209629a4ae4f8c160cad7059ecad795","static/cow_arc_2.png":"178e681ba6e2e0a33a7b6a08b9895b628dad74cda56e9e25b59288376e9f01ce","static/cow_arc_3.png":"37dac32e173b14faf37b502a110ab1e4f47f30710cfc65714b9fef0b79f64307","static/cow_arc_4.png":"f4b962b9ccd9b765523f50b752b9bb85525cbf8a4e6cdc15048f9363579e6719","static/cow_arc_5.png":"d6b122ec844d0d19312cc57667769f2955bc7b8667449b1c13a7359a4debc8a2","static/cow_arc_6.png":"847018f7f5e0813b26c2b636a2ca8549f475339de24a21dd2e0e21d90dbd77f1","static/cow_arc_7.png":"3df9b3d1153c7b1de52a30a46e9bdba75e2412ad51ef158437a356f16b3bd1be","static/cow_arc_8.png":"68f405191ef400b8f854102e98fac92ddd31c274bcff7739e47483a39dba9612","static/cow_arc_9.png":"eb60637be4fb951ac54a1e3de0fd33e0bb2f5a4d19c3519bd8f23c02b8fc240d"},"package":"dcc9816f5ac93ebd51c37f7f9a6bf2b40dfcd42978ad2aea5d542016e9244cf6"} -diff '--color=auto' -Nur 389-ds-base-2.0.13.orig/vendor/concread/Cargo.toml 389-ds-base-2.0.13/vendor/concread/Cargo.toml ---- 389-ds-base-2.0.13.orig/vendor/concread/Cargo.toml 2022-01-25 14:30:32.883759169 +0100 -+++ 389-ds-base-2.0.13/vendor/concread/Cargo.toml 2022-01-25 14:30:44.786439411 +0100 -@@ -10,7 +10,7 @@ - # See Cargo.toml.orig for the original contents. - - [package] --edition = "2021" -+edition = "2018" - name = "concread" - version = "0.2.21" - authors = ["William Brown "] diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..323fbd6 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,15 @@ +--- !Policy +product_versions: + - fedora-* +decision_contexts: [bodhi_update_push_testing] +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + +--- !Policy +product_versions: + - fedora-* +decision_contexts: [bodhi_update_push_stable] +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/main.fmf b/main.fmf new file mode 100644 index 0000000..76d16bf --- /dev/null +++ b/main.fmf @@ -0,0 +1,17 @@ +/plan: + summary: Basic test suite + discover: + how: fmf + execute: + how: tmt + prepare: + - name: install required packages + how: install + package: [389-ds-base, git, pytest] + - name: clone repo + how: shell + script: git clone https://github.com/389ds/389-ds-base /root/ds +/test: + /upstream_basic: + test: pytest -v /root/ds/dirsrvtests/tests/suites/basic/basic_test.py + duration: 30m diff --git a/sources b/sources index 73be96d..3ac5a9f 100644 --- a/sources +++ b/sources @@ -1,2 +1,3 @@ SHA512 (jemalloc-5.3.0.tar.bz2) = 22907bb052096e2caffb6e4e23548aecc5cc9283dce476896a2b1127eee64170e3562fa2e7db9571298814a7a2c7df6e8d1fbe152bd3f3b0c1abec22a2de34b1 -SHA512 (389-ds-base-3.0.2.tar.bz2) = e17ebc39a256848b6f7e601be3df7dafa38b1148f9b4112824f242839ad6bd9f0472dfb5518b1868ceb3b24a48f232ab3099f3176d31713281ec1f926bdacf88 +SHA512 (389-ds-base-3.0.4.tar.bz2) = 45ef03d288fc3c1e7a24474393fe769deb52413f57aa1517b71882fb4be653eeae041911d55e60b82079922e7995c55bb0653d3f1ea0a83622e84d6411c863fe +SHA512 (libdb-5.3.28-59.tar.bz2) = 731a434fa2e6487ebb05c458b0437456eb9f7991284beb08cb3e21931e23bdeddddbc95bfabe3a2f9f029fe69cd33a2d4f0f5ce6a9811e9c3b940cb6fde4bf79 diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 1878c82..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -- hosts: localhost - remote_user: root - vars: - ds_repo_url: https://github.com/389ds/389-ds-base.git - ds_repo_dir: ds - ds_tests: "{{ ds_repo_dir }}/dirsrvtests/tests" - pytest: py.test-3 - pytest_args: "-v --continue-on-collection-errors" - pytest_tests: "suites/basic" - artifacts: ./artifacts - roles: - - role: standard-test-basic - tags: - - classic - repositories: - - repo: "{{ ds_repo_url }}" - dest: "{{ ds_repo_dir }}" - tests: - - basic: - dir: "{{ ds_tests }}" - run: "{{ pytest }} {{ pytest_args }} {{ pytest_tests }}" - required_packages: - - python3-pytest - - 389-ds-base - - 389-ds-base-snmp From f0da45153f7dfe4060feddf6d8ff19b9b0cd05f5 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Tue, 30 Jul 2024 13:51:33 +0200 Subject: [PATCH 3/8] Replace lmdb with lmdb-libs in Requires --- 389-ds-base.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/389-ds-base.spec b/389-ds-base.spec index ef6dc60..cd101ec 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -460,7 +460,7 @@ Requires: cyrus-sasl-plain %if %{without bundle_libdb} Requires: libdb %endif -Requires: lmdb +Requires: lmdb-libs # Needed by logconv.pl %if %{without bundle_libdb} Requires: perl-DB_File From 26c233b7c5b6112d0d5989ba14fe9bde5570572a Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Tue, 15 Oct 2024 13:21:47 +0200 Subject: [PATCH 4/8] Resolves: VLV errors in Fedora 40 with RSNv3 and pruning enabled (rhbz#2317851) --- ...DB-after-an-update-the-impact-VLV-in.patch | 48 +++++++++++++++++++ 389-ds-base.spec | 2 + 2 files changed, 50 insertions(+) create mode 100644 0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch diff --git a/0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch b/0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch new file mode 100644 index 0000000..35a8b1f --- /dev/null +++ b/0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch @@ -0,0 +1,48 @@ +From 145e7f4aa9d9cf400751a16768b077b533f428cc Mon Sep 17 00:00:00 2001 +From: tbordaz +Date: Wed, 9 Oct 2024 15:20:48 +0200 +Subject: [PATCH] Issue 6356 - On LMDB, after an update the impact VLV index, + the vlv recno cache is not systematically cleared (#6357) + +Bug description: + The VLV manages/uses an index database. + In LMDB in addition to the index there is one 'recno cache' database per VLV index. + This recno cache, related to a given VLV index, is cleared when an update impacts the VLV index. + The recno cache is not systematically cleared upon update of the VLV index. + + The way to clear the cache is to delete the record with key "OK". + When the 'recno cache' does not contain this key, the next + lookup to the cache, clears all entries and rebuild the cache + from the vlv index. + The deletion is done with mdb_del with both KEY and DATA + refering to the same mdb_val. This means it deletes the records + matching if both KEY/DATA. + It should not match the DATA as the "OK" record is just + a flag and all entries with that key should be removed. + +Fix description: + The fix consist to call mdb_del only with key + +fixes: #6356 + +Reviewed by: Pierre Rogier (Thanks!!) +--- + ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c +index 9c2db199c..313eb35ae 100644 +--- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c ++++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c +@@ -2882,7 +2882,7 @@ dbmdb_public_clear_vlv_cache(Slapi_Backend *be, dbi_txn_t *txn, dbi_db_t *db) + ok.mv_size = 2; + rc = dbmdb_open_dbi_from_filename(&rcdbi, be, rcdbname, NULL, 0); + if (rc == 0) { +- rc = MDB_DEL(TXN(txn), rcdbi->dbi, &ok, &ok); ++ rc = MDB_DEL(TXN(txn), rcdbi->dbi, &ok, NULL); + } + slapi_ch_free_string(&rcdbname); + return rc; +-- +2.46.0 + diff --git a/389-ds-base.spec b/389-ds-base.spec index cd101ec..109ed45 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -488,6 +488,8 @@ Source4: 389-ds-base.sysusers Source5: https://fedorapeople.org/groups/389ds/libdb-5.3.28-59.tar.bz2 %endif +Patch1: 0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch + %description 389 Directory Server is an LDAPv3 compliant server. The base package includes the LDAP server and command line utilities for server administration. From b68bcd7b25db2bf227ca71ac4348079350e54ff9 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Mon, 16 Dec 2024 18:38:13 +0100 Subject: [PATCH 5/8] Update to 3.0.5 --- .gitignore | 1 + 389-ds-base.spec | 6 ++---- sources | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 3b3f16f..780374b 100644 --- a/.gitignore +++ b/.gitignore @@ -229,3 +229,4 @@ /389-ds-base-3.0.2.tar.bz2 /389-ds-base-3.0.4.tar.bz2 /libdb-5.3.28-59.tar.bz2 +/389-ds-base-3.0.5.tar.bz2 diff --git a/389-ds-base.spec b/389-ds-base.spec index 109ed45..39ea506 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -66,7 +66,7 @@ ExcludeArch: i686 Summary: 389 Directory Server (%{variant}) Name: 389-ds-base -Version: 3.0.4 +Version: 3.0.5 Release: %{autorelease -n %{?with_asan:-e asan}}%{?dist} License: GPL-3.0-or-later AND (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND PSF-2.0 URL: https://www.port389.org @@ -488,8 +488,6 @@ Source4: 389-ds-base.sysusers Source5: https://fedorapeople.org/groups/389ds/libdb-5.3.28-59.tar.bz2 %endif -Patch1: 0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch - %description 389 Directory Server is an LDAPv3 compliant server. The base package includes the LDAP server and command line utilities for server administration. @@ -614,7 +612,7 @@ A cockpit UI Plugin for configuring and administering the 389 Directory Server %endif %prep -%autosetup -p1 -v -n %{name}-%{version} +%autosetup -p1 -n %{name}-%{version} %if %{with bundle_jemalloc} %setup -q -n %{name}-%{version} -T -D -b 3 diff --git a/sources b/sources index 3ac5a9f..4f65d9a 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ +SHA512 (389-ds-base-3.0.5.tar.bz2) = 3f62e98779dcc6e3997846e6303622a76e34c6f290c4967ba54b708a9d3ac85216e96e88f744e7fda18133a509d4f7c18969b3836b88359a10886fb1182c3d1b SHA512 (jemalloc-5.3.0.tar.bz2) = 22907bb052096e2caffb6e4e23548aecc5cc9283dce476896a2b1127eee64170e3562fa2e7db9571298814a7a2c7df6e8d1fbe152bd3f3b0c1abec22a2de34b1 -SHA512 (389-ds-base-3.0.4.tar.bz2) = 45ef03d288fc3c1e7a24474393fe769deb52413f57aa1517b71882fb4be653eeae041911d55e60b82079922e7995c55bb0653d3f1ea0a83622e84d6411c863fe SHA512 (libdb-5.3.28-59.tar.bz2) = 731a434fa2e6487ebb05c458b0437456eb9f7991284beb08cb3e21931e23bdeddddbc95bfabe3a2f9f029fe69cd33a2d4f0f5ce6a9811e9c3b940cb6fde4bf79 From 67eabb81a4b98a74b253f37c80b3ccd884785423 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Mon, 16 Dec 2024 18:49:48 +0100 Subject: [PATCH 6/8] Update information about bundled npm and cargo packages --- 389-ds-base.spec | 78 +++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/389-ds-base.spec b/389-ds-base.spec index 39ea506..26e314e 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -68,101 +68,102 @@ Summary: 389 Directory Server (%{variant}) Name: 389-ds-base Version: 3.0.5 Release: %{autorelease -n %{?with_asan:-e asan}}%{?dist} -License: GPL-3.0-or-later AND (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-DFS-2016 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0 AND PSF-2.0 +License: GPL-3.0-or-later AND WITH GPL-3.0-389-ds-base-exception (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSD-2-Clause OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-3.0 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MIT AND ISC AND MPL-2.0 AND PSF-2.0 URL: https://www.port389.org Obsoletes: %{name}-legacy-tools < 1.4.4.6 Obsoletes: %{name}-legacy-tools-debuginfo < 1.4.4.6 Provides: ldif2ldbm >= 0 ##### Bundled cargo crates list - START ##### -Provides: bundled(crate(addr2line)) = 0.22.0 -Provides: bundled(crate(adler)) = 1.0.2 +Provides: bundled(crate(addr2line)) = 0.24.2 +Provides: bundled(crate(adler2)) = 2.0.0 Provides: bundled(crate(ahash)) = 0.7.8 Provides: bundled(crate(atty)) = 0.2.14 -Provides: bundled(crate(autocfg)) = 1.3.0 -Provides: bundled(crate(backtrace)) = 0.3.73 +Provides: bundled(crate(autocfg)) = 1.4.0 +Provides: bundled(crate(backtrace)) = 0.3.74 Provides: bundled(crate(base64)) = 0.13.1 Provides: bundled(crate(bitflags)) = 2.6.0 Provides: bundled(crate(byteorder)) = 1.5.0 Provides: bundled(crate(cbindgen)) = 0.26.0 -Provides: bundled(crate(cc)) = 1.1.7 +Provides: bundled(crate(cc)) = 1.2.4 Provides: bundled(crate(cfg-if)) = 1.0.0 Provides: bundled(crate(clap)) = 3.2.25 Provides: bundled(crate(clap_lex)) = 0.2.4 Provides: bundled(crate(concread)) = 0.2.21 Provides: bundled(crate(crossbeam)) = 0.8.4 -Provides: bundled(crate(crossbeam-channel)) = 0.5.13 -Provides: bundled(crate(crossbeam-deque)) = 0.8.5 +Provides: bundled(crate(crossbeam-channel)) = 0.5.14 +Provides: bundled(crate(crossbeam-deque)) = 0.8.6 Provides: bundled(crate(crossbeam-epoch)) = 0.9.18 -Provides: bundled(crate(crossbeam-queue)) = 0.3.11 -Provides: bundled(crate(crossbeam-utils)) = 0.8.20 -Provides: bundled(crate(errno)) = 0.3.9 -Provides: bundled(crate(fastrand)) = 2.1.0 +Provides: bundled(crate(crossbeam-queue)) = 0.3.12 +Provides: bundled(crate(crossbeam-utils)) = 0.8.21 +Provides: bundled(crate(errno)) = 0.3.10 +Provides: bundled(crate(fastrand)) = 2.3.0 Provides: bundled(crate(fernet)) = 0.1.4 Provides: bundled(crate(foreign-types)) = 0.3.2 Provides: bundled(crate(foreign-types-shared)) = 0.1.1 Provides: bundled(crate(getrandom)) = 0.2.15 -Provides: bundled(crate(gimli)) = 0.29.0 +Provides: bundled(crate(gimli)) = 0.31.1 Provides: bundled(crate(hashbrown)) = 0.12.3 Provides: bundled(crate(heck)) = 0.4.1 Provides: bundled(crate(hermit-abi)) = 0.1.19 Provides: bundled(crate(indexmap)) = 1.9.3 Provides: bundled(crate(instant)) = 0.1.13 -Provides: bundled(crate(itoa)) = 1.0.11 +Provides: bundled(crate(itoa)) = 1.0.14 Provides: bundled(crate(jobserver)) = 0.1.32 -Provides: bundled(crate(libc)) = 0.2.155 +Provides: bundled(crate(libc)) = 0.2.168 Provides: bundled(crate(linux-raw-sys)) = 0.4.14 Provides: bundled(crate(lock_api)) = 0.4.12 Provides: bundled(crate(log)) = 0.4.22 Provides: bundled(crate(lru)) = 0.7.8 Provides: bundled(crate(memchr)) = 2.7.4 -Provides: bundled(crate(miniz_oxide)) = 0.7.4 -Provides: bundled(crate(object)) = 0.36.2 -Provides: bundled(crate(once_cell)) = 1.19.0 -Provides: bundled(crate(openssl)) = 0.10.66 +Provides: bundled(crate(miniz_oxide)) = 0.8.0 +Provides: bundled(crate(object)) = 0.36.5 +Provides: bundled(crate(once_cell)) = 1.20.2 +Provides: bundled(crate(openssl)) = 0.10.68 Provides: bundled(crate(openssl-macros)) = 0.1.1 -Provides: bundled(crate(openssl-sys)) = 0.9.103 +Provides: bundled(crate(openssl-sys)) = 0.9.104 Provides: bundled(crate(os_str_bytes)) = 6.6.1 Provides: bundled(crate(parking_lot)) = 0.11.2 Provides: bundled(crate(parking_lot_core)) = 0.8.6 Provides: bundled(crate(paste)) = 0.1.18 Provides: bundled(crate(paste-impl)) = 0.1.18 -Provides: bundled(crate(pin-project-lite)) = 0.2.14 -Provides: bundled(crate(pkg-config)) = 0.3.30 -Provides: bundled(crate(ppv-lite86)) = 0.2.18 +Provides: bundled(crate(pin-project-lite)) = 0.2.15 +Provides: bundled(crate(pkg-config)) = 0.3.31 +Provides: bundled(crate(ppv-lite86)) = 0.2.20 Provides: bundled(crate(proc-macro-hack)) = 0.5.20+deprecated -Provides: bundled(crate(proc-macro2)) = 1.0.86 -Provides: bundled(crate(quote)) = 1.0.36 +Provides: bundled(crate(proc-macro2)) = 1.0.92 +Provides: bundled(crate(quote)) = 1.0.37 Provides: bundled(crate(rand)) = 0.8.5 Provides: bundled(crate(rand_chacha)) = 0.3.1 Provides: bundled(crate(rand_core)) = 0.6.4 Provides: bundled(crate(redox_syscall)) = 0.2.16 Provides: bundled(crate(rustc-demangle)) = 0.1.24 -Provides: bundled(crate(rustix)) = 0.38.34 +Provides: bundled(crate(rustix)) = 0.38.42 Provides: bundled(crate(ryu)) = 1.0.18 Provides: bundled(crate(scopeguard)) = 1.2.0 -Provides: bundled(crate(serde)) = 1.0.204 -Provides: bundled(crate(serde_derive)) = 1.0.204 -Provides: bundled(crate(serde_json)) = 1.0.121 +Provides: bundled(crate(serde)) = 1.0.216 +Provides: bundled(crate(serde_derive)) = 1.0.216 +Provides: bundled(crate(serde_json)) = 1.0.133 +Provides: bundled(crate(shlex)) = 1.3.0 Provides: bundled(crate(smallvec)) = 1.13.2 Provides: bundled(crate(strsim)) = 0.10.0 -Provides: bundled(crate(syn)) = 2.0.72 -Provides: bundled(crate(tempfile)) = 3.10.1 +Provides: bundled(crate(syn)) = 2.0.90 +Provides: bundled(crate(tempfile)) = 3.14.0 Provides: bundled(crate(termcolor)) = 1.4.1 Provides: bundled(crate(textwrap)) = 0.16.1 -Provides: bundled(crate(tokio)) = 1.39.2 +Provides: bundled(crate(tokio)) = 1.42.0 Provides: bundled(crate(tokio-macros)) = 2.4.0 Provides: bundled(crate(toml)) = 0.5.11 -Provides: bundled(crate(unicode-ident)) = 1.0.12 +Provides: bundled(crate(unicode-ident)) = 1.0.14 Provides: bundled(crate(uuid)) = 0.8.2 Provides: bundled(crate(vcpkg)) = 0.2.15 Provides: bundled(crate(version_check)) = 0.9.5 Provides: bundled(crate(wasi)) = 0.11.0+wasi_snapshot_preview1 Provides: bundled(crate(winapi)) = 0.3.9 Provides: bundled(crate(winapi-i686-pc-windows-gnu)) = 0.4.0 -Provides: bundled(crate(winapi-util)) = 0.1.8 +Provides: bundled(crate(winapi-util)) = 0.1.9 Provides: bundled(crate(winapi-x86_64-pc-windows-gnu)) = 0.4.0 -Provides: bundled(crate(windows-sys)) = 0.52.0 +Provides: bundled(crate(windows-sys)) = 0.59.0 Provides: bundled(crate(windows-targets)) = 0.52.6 Provides: bundled(crate(windows_aarch64_gnullvm)) = 0.52.6 Provides: bundled(crate(windows_aarch64_msvc)) = 0.52.6 @@ -172,8 +173,8 @@ Provides: bundled(crate(windows_i686_msvc)) = 0.52.6 Provides: bundled(crate(windows_x86_64_gnu)) = 0.52.6 Provides: bundled(crate(windows_x86_64_gnullvm)) = 0.52.6 Provides: bundled(crate(windows_x86_64_msvc)) = 0.52.6 -Provides: bundled(crate(zerocopy)) = 0.6.6 -Provides: bundled(crate(zerocopy-derive)) = 0.6.6 +Provides: bundled(crate(zerocopy)) = 0.7.35 +Provides: bundled(crate(zerocopy-derive)) = 0.7.35 Provides: bundled(crate(zeroize)) = 1.8.1 Provides: bundled(crate(zeroize_derive)) = 1.4.2 Provides: bundled(npm(@aashutoshrathi/word-wrap)) = 1.2.6 @@ -222,7 +223,7 @@ Provides: bundled(npm(color-convert)) = 2.0.1 Provides: bundled(npm(color-name)) = 1.1.4 Provides: bundled(npm(concat-map)) = 0.0.1 Provides: bundled(npm(core-js)) = 2.6.12 -Provides: bundled(npm(cross-spawn)) = 7.0.3 +Provides: bundled(npm(cross-spawn)) = 7.0.6 Provides: bundled(npm(d3-array)) = 3.2.4 Provides: bundled(npm(d3-color)) = 3.1.0 Provides: bundled(npm(d3-ease)) = 3.0.1 @@ -303,6 +304,7 @@ Provides: bundled(npm(path-is-absolute)) = 1.0.1 Provides: bundled(npm(path-key)) = 3.1.1 Provides: bundled(npm(popper.js)) = 1.16.1 Provides: bundled(npm(prelude-ls)) = 1.2.1 +Provides: bundled(npm(prettier)) = 3.3.3 Provides: bundled(npm(prop-types)) = 15.8.1 Provides: bundled(npm(prop-types-extra)) = 1.1.1 Provides: bundled(npm(punycode)) = 2.3.0 From 13f1ad3a1404455eb4bebdb923805fd7455ed791 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Thu, 23 Jan 2025 21:27:34 +0100 Subject: [PATCH 7/8] Update to 3.0.6 --- .gitignore | 232 +---------------------------------------------- 389-ds-base.spec | 219 ++++++++++++++++++++++++-------------------- sources | 2 +- 3 files changed, 122 insertions(+), 331 deletions(-) diff --git a/.gitignore b/.gitignore index 780374b..18ea466 100644 --- a/.gitignore +++ b/.gitignore @@ -1,232 +1,4 @@ *~ -/389-ds-base-1.2.7.2.tar.bz2 -/389-ds-base-1.2.7.3.tar.bz2 -/389-ds-base-1.2.7.4.tar.bz2 -/389-ds-base-1.2.7.5.tar.bz2 -/389-ds-base-1.2.8.a1.tar.bz2 -/389-ds-base-1.2.8.a2.tar.bz2 -/389-ds-base-1.2.8.a3.tar.bz2 -/389-ds-base-1.2.8.rc1.tar.bz2 -/389-ds-base-1.2.8.rc2.tar.bz2 -/389-ds-base-1.2.8.rc4.tar.bz2 -/389-ds-base-1.2.8.rc5.tar.bz2 -/389-ds-base-1.2.8.0.tar.bz2 -/389-ds-base-1.2.8.1.tar.bz2 -/389-ds-base-1.2.8.2.tar.bz2 -/389-ds-base-1.2.8.3.tar.bz2 -/389-ds-base-1.2.9.a1.tar.bz2 -/389-ds-base-1.2.9.a2.tar.bz2 -/389-ds-base-1.2.9.0.tar.bz2 -/389-ds-base-1.2.9.1.tar.bz2 -/389-ds-base-1.2.9.2.tar.bz2 -/389-ds-base-1.2.9.3.tar.bz2 -/389-ds-base-1.2.9.4.tar.bz2 -/389-ds-base-1.2.9.5.tar.bz2 -/389-ds-base-1.2.9.6.tar.bz2 -/389-ds-base-1.2.9.7.tar.bz2 -/389-ds-base-1.2.9.8.tar.bz2 -/389-ds-base-1.2.9.9.tar.bz2 -/389-ds-base-1.2.9.10.tar.bz2 -/389-ds-base-1.2.10.a1.tar.bz2 -/389-ds-base-1.2.10.a2.tar.bz2 -/389-ds-base-1.2.10.a3.tar.bz2 -/389-ds-base-1.2.10.a4.tar.bz2 -/389-ds-base-1.2.10.a5.tar.bz2 -/389-ds-base-1.2.10.a6.tar.bz2 -/389-ds-base-1.2.10.a7.tar.bz2 -/389-ds-base-1.2.10.a8.tar.bz2 -/389-ds-base-1.2.10.rc1.tar.bz2 -/389-ds-base-1.2.10.0.tar.bz2 -/389-ds-base-1.2.10.1.tar.bz2 -/389-ds-base-1.2.10.2.tar.bz2 -/389-ds-base-1.2.10.3.tar.bz2 -/389-ds-base-1.2.10.4.tar.bz2 -/389-ds-base-1.2.11.a1.tar.bz2 -/389-ds-base-1.2.11.1.tar.bz2 -/389-ds-base-1.2.11.2.tar.bz2 -/389-ds-base-1.2.11.3.tar.bz2 -/389-ds-base-1.2.11.4.tar.bz2 -/389-ds-base-1.2.11.5.tar.bz2 -/389-ds-base-1.2.11.6.tar.bz2 -/389-ds-base-1.2.11.7.tar.bz2 -/389-ds-base-1.2.11.8.tar.bz2 -/389-ds-base-1.2.11.9.tar.bz2 -/389-ds-base-1.2.11.10.tar.bz2 -/389-ds-base-1.2.11.11.tar.bz2 -/389-ds-base-1.2.11.12.tar.bz2 -/389-ds-base-1.2.11.13.tar.bz2 -/389-ds-base-1.2.11.14.tar.bz2 -/389-ds-base-1.2.11.15.tar.bz2 -/389-ds-base-1.3.0.a1.tar.bz2 -/389-ds-base-1.3.0.rc1.tar.bz2 -/389-ds-base-1.3.0.rc2.tar.bz2 -/389-ds-base-1.3.0.rc3.tar.bz2 -/389-ds-base-1.3.0.0.tar.bz2 -/389-ds-base-1.3.0.1.tar.bz2 -/389-ds-base-1.3.0.2.tar.bz2 -/389-ds-base-1.3.0.3.tar.bz2 -/389-ds-base-1.3.0.4.tar.bz2 -/389-ds-base-1.3.0.5.tar.bz2 -/389-ds-base-1.3.1.0.tar.bz2 -/389-ds-base-1.3.1.1.tar.bz2 -/389-ds-base-1.3.1.2.tar.bz2 -/389-ds-base-1.3.1.3.tar.bz2 -/389-ds-base-1.3.1.4.tar.bz2 -/389-ds-base-1.3.1.5.tar.bz2 -/389-ds-base-1.3.1.6.tar.bz2 -/389-ds-base-1.3.1.7.tar.bz2 -/389-ds-base-1.3.1.8.tar.bz2 -/389-ds-base-1.3.1.9.tar.bz2 -/389-ds-base-1.3.1.10.tar.bz2 -/389-ds-base-1.3.1.11.tar.bz2 -/389-ds-base-1.3.2.0.tar.bz2 -/389-ds-base-1.3.2.1.tar.bz2 -/389-ds-base-1.3.2.2.tar.bz2 -/389-ds-base-1.3.2.3.tar.bz2 -/389-ds-base-1.3.2.4.tar.bz2 -/389-ds-base-1.3.2.5.tar.bz2 -/389-ds-base-1.3.2.6.tar.bz2 -/389-ds-base-1.3.2.7.tar.bz2 -/389-ds-base-1.3.2.8.tar.bz2 -/389-ds-base-1.3.2.9.tar.bz2 -/389-ds-base-1.3.2.10.tar.bz2 -/389-ds-base-1.3.2.11.tar.bz2 -/389-ds-base-1.3.2.12.tar.bz2 -/389-ds-base-1.3.2.13.tar.bz2 -/389-ds-base-1.3.2.14.tar.bz2 -/389-ds-base-1.3.2.15.tar.bz2 -/389-ds-base-1.3.2.16.tar.bz2 -/389-ds-base-1.3.2.17.tar.bz2 -/389-ds-base-1.3.2.18.tar.bz2 -/389-ds-base-1.3.2.19.tar.bz2 -/389-ds-base-1.3.2.20.tar.bz2 -/389-ds-base-1.3.2.21.tar.bz2 -/389-ds-base-1.3.2.22.tar.bz2 -/389-ds-base-1.3.2.23.tar.bz2 -/389-ds-base-1.3.3.0.tar.bz2 -/389-ds-base-1.3.3.2.tar.bz2 -/389-ds-base-1.3.3.3.tar.bz2 -/389-ds-base-1.3.3.4.tar.bz2 -/389-ds-base-1.3.3.5.tar.bz2 -/389-ds-base-1.3.3.6.tar.bz2 -/389-ds-base-1.3.3.7.tar.bz2 -/389-ds-base-1.3.3.8.tar.bz2 -/389-ds-base-1.3.3.9.tar.bz2 -/389-ds-base-1.3.3.10.tar.bz2 -/389-ds-base-1.3.3.11.tar.bz2 -/389-ds-base-1.3.3.12.tar.bz2 -/389-ds-base-1.3.4.0.tar.bz2 -/nunc-stans-0.1.3.tar.bz2 -/nunc-stans-0.1.4.tar.bz2 -/389-ds-base-1.3.4.1.tar.bz2 -/nunc-stans-0.1.5.tar.bz2 -/389-ds-base-1.3.4.2.tar.bz2 -/389-ds-base-1.3.4.3.tar.bz2 -/389-ds-base-1.3.4.4.tar.bz2 -/389-ds-base-1.3.4.5.tar.bz2 -/389-ds-base-1.3.4.6.tar.bz2 -/389-ds-base-1.3.4.7.tar.bz2 -/389-ds-base-1.3.4.8.tar.bz2 -/389-ds-base-1.3.5.0.tar.bz2 -/nunc-stans-0.1.8.tar.bz2 -/389-ds-base-1.3.5.1.tar.bz2 -/389-ds-base-1.3.5.3.tar.bz2 -/389-ds-base-1.3.5.4.tar.bz2 -/389-ds-base-1.3.5.5.tar.bz2 -/389-ds-base-1.3.5.6.tar.bz2 -/389-ds-base-1.3.5.10.tar.bz2 -/389-ds-base-1.3.5.11.tar.bz2 -/389-ds-base-1.3.5.12.tar.bz2 -/389-ds-base-1.3.5.13.tar.bz2 -/389-ds-base-1.3.5.14.tar.bz2 -/nunc-stans-0.2.0.tar.bz2 -/389-ds-base-1.3.6.1.tar.bz2 -/389-ds-base-1.3.6.2.tar.bz2 -/389-ds-base-1.3.6.3.tar.bz2 -/389-ds-base-1.3.6.4.tar.bz2 -/389-ds-base-1.3.6.5.tar.bz2 -/389-ds-base-1.3.6.6.tar.bz2 -/389-ds-base-1.3.7.1.tar.bz2 -/389-ds-base-1.3.7.2.tar.bz2 -/389-ds-base-1.3.7.3.tar.bz2 -/389-ds-base-1.3.7.4.tar.bz2 -/389-ds-base-1.4.0.0.tar.bz2 -/389-ds-base-1.4.0.1.tar.bz2 -/389-ds-base-1.4.0.2.tar.bz2 -/389-ds-base-1.4.0.3.tar.bz2 -/389-ds-base-1.4.0.4.tar.bz2 -/389-ds-base-1.4.0.5.tar.bz2 -/389-ds-base-1.4.0.6.tar.bz2 -/389-ds-base-1.4.0.7.tar.bz2 -/389-ds-base-1.4.0.8.tar.bz2 -/389-ds-base-1.4.0.9.tar.bz2 -/389-ds-base-1.4.0.10.tar.bz2 -/jemalloc-5.0.1.tar.bz2 -/389-ds-base-1.4.0.11.tar.bz2 -/jemalloc-5.1.0.tar.bz2 -/389-ds-base-1.4.0.12.tar.bz2 -/389-ds-base-1.4.0.13.tar.bz2 -/389-ds-base-1.4.0.14.tar.bz2 -/389-ds-base-1.4.0.15.tar.bz2 -/389-ds-base-1.4.0.16.tar.bz2 -/389-ds-base-1.4.0.17.tar.bz2 -/389-ds-base-1.4.0.18.tar.bz2 -/389-ds-base-1.4.0.19.tar.bz2 -/389-ds-base-1.4.0.20.tar.bz2 -/389-ds-base-1.4.1.1.tar.bz2 -/389-ds-base-1.4.1.2.tar.bz2 -/389-ds-base-1.4.1.3.tar.bz2 -/389-ds-base-1.4.1.4.tar.bz2 -/389-ds-base-1.4.1.5.tar.bz2 -/jemalloc-5.2.0.tar.bz2 -/389-ds-base-1.4.1.6.tar.bz2 -/389-ds-base-1.4.2.1.tar.bz2 -/389-ds-base-1.4.2.2.tar.bz2 -/389-ds-base-1.4.2.3.tar.bz2 -/389-ds-base-1.4.2.4.tar.bz2 -/389-ds-base-1.4.2.5.tar.bz2 -/389-ds-base-1.4.3.1.tar.bz2 -/jemalloc-5.2.1.tar.bz2 -/389-ds-base-1.4.3.2.tar.bz2 -/389-ds-base-1.4.3.3.tar.bz2 -/389-ds-base-1.4.3.4.tar.bz2 -/389-ds-base-1.4.3.5.tar.bz2 -/389-ds-base-1.4.4.0.tar.bz2 -/389-ds-base-1.4.4.1.tar.bz2 -/389-ds-base-1.4.4.2.tar.bz2 -/389-ds-base-1.4.4.3.tar.bz2 -/389-ds-base-1.4.4.4.tar.bz2 -/389-ds-base-1.4.4.6.tar.bz2 -/389-ds-base-1.4.5.0.tar.bz2 -/389-ds-base-2.0.1.tar.bz2 -/389-ds-base-2.0.2.tar.bz2 -/389-ds-base-2.0.3.tar.bz2 -/389-ds-base-2.0.4.tar.bz2 -/389-ds-base-2.0.4.3.tar.bz2 -/389-ds-base-2.0.5.tar.bz2 -/389-ds-base-2.0.6.tar.bz2 -/389-ds-base-2.0.7.tar.bz2 -/389-ds-base-2.0.10.tar.bz2 -/389-ds-base-2.0.11.tar.bz2 -/389-ds-base-2.0.12.tar.bz2 -/389-ds-base-2.0.13.tar.bz2 -/389-ds-base-2.1.0.tar.bz2 -/389-ds-base-2.2.0.tar.bz2 -/389-ds-base-2.1.1.tar.bz2 -/jemalloc-5.3.0.tar.bz2 -/389-ds-base-2.2.1.tar.bz2 -/389-ds-base-2.2.2.tar.bz2 -/389-ds-base-2.3.0.tar.bz2 -/389-ds-base-2.3.1.tar.bz2 -/389-ds-base-2.3.2.tar.bz2 -/389-ds-base-2.4.0.tar.bz2 -/389-ds-base-2.4.1.tar.bz2 -/389-ds-base-2.4.2.tar.bz2 -/389-ds-base-2.4.3.tar.bz2 -/389-ds-base-2.4.4.tar.bz2 -/389-ds-base-2.4.5.tar.bz2 -/389-ds-base-3.0.1.tar.bz2 -/389-ds-base-3.0.2.tar.bz2 -/389-ds-base-3.0.4.tar.bz2 +/389-ds-base-*.tar.bz2 +/jemalloc-*.tar.bz2 /libdb-5.3.28-59.tar.bz2 -/389-ds-base-3.0.5.tar.bz2 diff --git a/389-ds-base.spec b/389-ds-base.spec index 26e314e..15c836e 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -66,9 +66,9 @@ ExcludeArch: i686 Summary: 389 Directory Server (%{variant}) Name: 389-ds-base -Version: 3.0.5 +Version: 3.0.6 Release: %{autorelease -n %{?with_asan:-e asan}}%{?dist} -License: GPL-3.0-or-later AND WITH GPL-3.0-389-ds-base-exception (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSD-2-Clause OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-3.0 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MIT AND ISC AND MPL-2.0 AND PSF-2.0 +License: GPL-3.0-or-later WITH GPL-3.0-389-ds-base-exception AND (0BSD OR Apache-2.0 OR MIT) AND (Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT) AND (Apache-2.0 OR BSD-2-Clause OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT OR Zlib) AND (Apache-2.0 OR MIT) AND (CC-BY-4.0 AND MIT) AND (MIT OR Apache-2.0) AND Unicode-3.0 AND (MIT OR CC0-1.0) AND (MIT OR Unlicense) AND 0BSD AND Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND ISC AND MIT AND MIT AND ISC AND MPL-2.0 AND PSF-2.0 URL: https://www.port389.org Obsoletes: %{name}-legacy-tools < 1.4.4.6 Obsoletes: %{name}-legacy-tools-debuginfo < 1.4.4.6 @@ -82,10 +82,10 @@ Provides: bundled(crate(atty)) = 0.2.14 Provides: bundled(crate(autocfg)) = 1.4.0 Provides: bundled(crate(backtrace)) = 0.3.74 Provides: bundled(crate(base64)) = 0.13.1 -Provides: bundled(crate(bitflags)) = 2.6.0 +Provides: bundled(crate(bitflags)) = 2.8.0 Provides: bundled(crate(byteorder)) = 1.5.0 Provides: bundled(crate(cbindgen)) = 0.26.0 -Provides: bundled(crate(cc)) = 1.2.4 +Provides: bundled(crate(cc)) = 1.2.10 Provides: bundled(crate(cfg-if)) = 1.0.0 Provides: bundled(crate(clap)) = 3.2.25 Provides: bundled(crate(clap_lex)) = 0.2.4 @@ -110,14 +110,14 @@ Provides: bundled(crate(indexmap)) = 1.9.3 Provides: bundled(crate(instant)) = 0.1.13 Provides: bundled(crate(itoa)) = 1.0.14 Provides: bundled(crate(jobserver)) = 0.1.32 -Provides: bundled(crate(libc)) = 0.2.168 -Provides: bundled(crate(linux-raw-sys)) = 0.4.14 +Provides: bundled(crate(libc)) = 0.2.169 +Provides: bundled(crate(linux-raw-sys)) = 0.4.15 Provides: bundled(crate(lock_api)) = 0.4.12 -Provides: bundled(crate(log)) = 0.4.22 +Provides: bundled(crate(log)) = 0.4.25 Provides: bundled(crate(lru)) = 0.7.8 Provides: bundled(crate(memchr)) = 2.7.4 -Provides: bundled(crate(miniz_oxide)) = 0.8.0 -Provides: bundled(crate(object)) = 0.36.5 +Provides: bundled(crate(miniz_oxide)) = 0.8.3 +Provides: bundled(crate(object)) = 0.36.7 Provides: bundled(crate(once_cell)) = 1.20.2 Provides: bundled(crate(openssl)) = 0.10.68 Provides: bundled(crate(openssl-macros)) = 0.1.1 @@ -127,34 +127,34 @@ Provides: bundled(crate(parking_lot)) = 0.11.2 Provides: bundled(crate(parking_lot_core)) = 0.8.6 Provides: bundled(crate(paste)) = 0.1.18 Provides: bundled(crate(paste-impl)) = 0.1.18 -Provides: bundled(crate(pin-project-lite)) = 0.2.15 +Provides: bundled(crate(pin-project-lite)) = 0.2.16 Provides: bundled(crate(pkg-config)) = 0.3.31 Provides: bundled(crate(ppv-lite86)) = 0.2.20 Provides: bundled(crate(proc-macro-hack)) = 0.5.20+deprecated -Provides: bundled(crate(proc-macro2)) = 1.0.92 -Provides: bundled(crate(quote)) = 1.0.37 +Provides: bundled(crate(proc-macro2)) = 1.0.93 +Provides: bundled(crate(quote)) = 1.0.38 Provides: bundled(crate(rand)) = 0.8.5 Provides: bundled(crate(rand_chacha)) = 0.3.1 Provides: bundled(crate(rand_core)) = 0.6.4 Provides: bundled(crate(redox_syscall)) = 0.2.16 Provides: bundled(crate(rustc-demangle)) = 0.1.24 -Provides: bundled(crate(rustix)) = 0.38.42 +Provides: bundled(crate(rustix)) = 0.38.44 Provides: bundled(crate(ryu)) = 1.0.18 Provides: bundled(crate(scopeguard)) = 1.2.0 -Provides: bundled(crate(serde)) = 1.0.216 -Provides: bundled(crate(serde_derive)) = 1.0.216 -Provides: bundled(crate(serde_json)) = 1.0.133 +Provides: bundled(crate(serde)) = 1.0.217 +Provides: bundled(crate(serde_derive)) = 1.0.217 +Provides: bundled(crate(serde_json)) = 1.0.137 Provides: bundled(crate(shlex)) = 1.3.0 Provides: bundled(crate(smallvec)) = 1.13.2 Provides: bundled(crate(strsim)) = 0.10.0 -Provides: bundled(crate(syn)) = 2.0.90 -Provides: bundled(crate(tempfile)) = 3.14.0 +Provides: bundled(crate(syn)) = 2.0.96 +Provides: bundled(crate(tempfile)) = 3.15.0 Provides: bundled(crate(termcolor)) = 1.4.1 Provides: bundled(crate(textwrap)) = 0.16.1 -Provides: bundled(crate(tokio)) = 1.42.0 -Provides: bundled(crate(tokio-macros)) = 2.4.0 +Provides: bundled(crate(tokio)) = 1.43.0 +Provides: bundled(crate(tokio-macros)) = 2.5.0 Provides: bundled(crate(toml)) = 0.5.11 -Provides: bundled(crate(unicode-ident)) = 1.0.14 +Provides: bundled(crate(unicode-ident)) = 1.0.15 Provides: bundled(crate(uuid)) = 0.8.2 Provides: bundled(crate(vcpkg)) = 0.2.15 Provides: bundled(crate(version_check)) = 0.9.5 @@ -177,44 +177,47 @@ Provides: bundled(crate(zerocopy)) = 0.7.35 Provides: bundled(crate(zerocopy-derive)) = 0.7.35 Provides: bundled(crate(zeroize)) = 1.8.1 Provides: bundled(crate(zeroize_derive)) = 1.4.2 -Provides: bundled(npm(@aashutoshrathi/word-wrap)) = 1.2.6 -Provides: bundled(npm(@eslint-community/eslint-utils)) = 4.4.0 -Provides: bundled(npm(@eslint-community/regexpp)) = 4.5.1 -Provides: bundled(npm(@eslint/eslintrc)) = 2.0.3 -Provides: bundled(npm(@eslint/js)) = 8.42.0 +Provides: bundled(npm(@eslint-community/eslint-utils)) = 4.4.1 +Provides: bundled(npm(@eslint-community/regexpp)) = 4.12.1 +Provides: bundled(npm(@eslint/eslintrc)) = 2.1.4 +Provides: bundled(npm(@eslint/js)) = 8.57.1 Provides: bundled(npm(@fortawesome/fontawesome-common-types)) = 0.2.36 Provides: bundled(npm(@fortawesome/fontawesome-svg-core)) = 1.2.36 Provides: bundled(npm(@fortawesome/free-solid-svg-icons)) = 5.15.4 Provides: bundled(npm(@fortawesome/react-fontawesome)) = 0.1.19 -Provides: bundled(npm(@humanwhocodes/config-array)) = 0.11.10 +Provides: bundled(npm(@humanwhocodes/config-array)) = 0.13.0 Provides: bundled(npm(@humanwhocodes/module-importer)) = 1.0.1 -Provides: bundled(npm(@humanwhocodes/object-schema)) = 1.2.1 +Provides: bundled(npm(@humanwhocodes/object-schema)) = 2.0.3 Provides: bundled(npm(@nodelib/fs.scandir)) = 2.1.5 Provides: bundled(npm(@nodelib/fs.stat)) = 2.0.5 Provides: bundled(npm(@nodelib/fs.walk)) = 1.2.8 -Provides: bundled(npm(@patternfly/patternfly)) = 4.224.2 -Provides: bundled(npm(@patternfly/react-charts)) = 6.94.19 -Provides: bundled(npm(@patternfly/react-core)) = 4.276.8 -Provides: bundled(npm(@patternfly/react-icons)) = 4.93.6 -Provides: bundled(npm(@patternfly/react-styles)) = 4.92.6 -Provides: bundled(npm(@patternfly/react-table)) = 4.113.0 -Provides: bundled(npm(@patternfly/react-tokens)) = 4.94.6 -Provides: bundled(npm(@types/d3-array)) = 3.0.5 -Provides: bundled(npm(@types/d3-color)) = 3.1.0 -Provides: bundled(npm(@types/d3-ease)) = 3.0.0 -Provides: bundled(npm(@types/d3-interpolate)) = 3.0.1 -Provides: bundled(npm(@types/d3-path)) = 3.0.0 -Provides: bundled(npm(@types/d3-scale)) = 4.0.3 -Provides: bundled(npm(@types/d3-shape)) = 3.1.1 -Provides: bundled(npm(@types/d3-time)) = 3.0.0 -Provides: bundled(npm(@types/d3-timer)) = 3.0.0 -Provides: bundled(npm(acorn)) = 8.8.2 +Provides: bundled(npm(@patternfly/patternfly)) = 5.4.1 +Provides: bundled(npm(@patternfly/react-charts)) = 7.4.3 +Provides: bundled(npm(@patternfly/react-core)) = 5.4.1 +Provides: bundled(npm(@patternfly/react-icons)) = 5.4.0 +Provides: bundled(npm(@patternfly/react-styles)) = 5.4.0 +Provides: bundled(npm(@patternfly/react-table)) = 5.4.1 +Provides: bundled(npm(@patternfly/react-tokens)) = 5.4.0 +Provides: bundled(npm(@types/d3-array)) = 3.2.1 +Provides: bundled(npm(@types/d3-color)) = 3.1.3 +Provides: bundled(npm(@types/d3-ease)) = 3.0.2 +Provides: bundled(npm(@types/d3-interpolate)) = 3.0.4 +Provides: bundled(npm(@types/d3-path)) = 3.1.0 +Provides: bundled(npm(@types/d3-scale)) = 4.0.8 +Provides: bundled(npm(@types/d3-shape)) = 3.1.7 +Provides: bundled(npm(@types/d3-time)) = 3.0.4 +Provides: bundled(npm(@types/d3-timer)) = 3.0.2 +Provides: bundled(npm(@ungap/structured-clone)) = 1.2.1 +Provides: bundled(npm(@xterm/addon-canvas)) = 0.7.0 +Provides: bundled(npm(@xterm/xterm)) = 5.5.0 +Provides: bundled(npm(acorn)) = 8.14.0 Provides: bundled(npm(acorn-jsx)) = 5.3.2 Provides: bundled(npm(ajv)) = 6.12.6 Provides: bundled(npm(ansi-regex)) = 5.0.1 Provides: bundled(npm(ansi-styles)) = 4.3.0 Provides: bundled(npm(argparse)) = 2.0.1 -Provides: bundled(npm(attr-accept)) = 1.1.3 +Provides: bundled(npm(attr-accept)) = 2.2.5 +Provides: bundled(npm(autolinker)) = 3.16.2 Provides: bundled(npm(balanced-match)) = 1.0.2 Provides: bundled(npm(brace-expansion)) = 1.1.11 Provides: bundled(npm(callsites)) = 3.1.0 @@ -222,7 +225,7 @@ Provides: bundled(npm(chalk)) = 4.1.2 Provides: bundled(npm(color-convert)) = 2.0.1 Provides: bundled(npm(color-name)) = 1.1.4 Provides: bundled(npm(concat-map)) = 0.0.1 -Provides: bundled(npm(core-js)) = 2.6.12 +Provides: bundled(npm(core-util-is)) = 1.0.3 Provides: bundled(npm(cross-spawn)) = 7.0.6 Provides: bundled(npm(d3-array)) = 3.2.4 Provides: bundled(npm(d3-color)) = 3.1.0 @@ -235,42 +238,43 @@ Provides: bundled(npm(d3-shape)) = 3.2.0 Provides: bundled(npm(d3-time)) = 3.1.0 Provides: bundled(npm(d3-time-format)) = 4.1.0 Provides: bundled(npm(d3-timer)) = 3.0.1 -Provides: bundled(npm(debug)) = 4.3.4 +Provides: bundled(npm(debug)) = 4.4.0 Provides: bundled(npm(deep-is)) = 0.1.4 Provides: bundled(npm(delaunator)) = 4.0.1 Provides: bundled(npm(delaunay-find)) = 0.0.6 +Provides: bundled(npm(dequal)) = 2.0.3 Provides: bundled(npm(doctrine)) = 3.0.0 Provides: bundled(npm(encoding)) = 0.1.13 Provides: bundled(npm(escape-string-regexp)) = 4.0.0 -Provides: bundled(npm(eslint)) = 8.42.0 -Provides: bundled(npm(eslint-plugin-react-hooks)) = 4.6.0 -Provides: bundled(npm(eslint-scope)) = 7.2.0 -Provides: bundled(npm(eslint-visitor-keys)) = 3.4.1 -Provides: bundled(npm(espree)) = 9.5.2 -Provides: bundled(npm(esquery)) = 1.5.0 +Provides: bundled(npm(eslint)) = 8.57.1 +Provides: bundled(npm(eslint-plugin-react-hooks)) = 4.6.2 +Provides: bundled(npm(eslint-scope)) = 7.2.2 +Provides: bundled(npm(eslint-visitor-keys)) = 3.4.3 +Provides: bundled(npm(espree)) = 9.6.1 +Provides: bundled(npm(esquery)) = 1.6.0 Provides: bundled(npm(esrecurse)) = 4.3.0 Provides: bundled(npm(estraverse)) = 5.3.0 Provides: bundled(npm(esutils)) = 2.0.3 Provides: bundled(npm(fast-deep-equal)) = 3.1.3 Provides: bundled(npm(fast-json-stable-stringify)) = 2.1.0 Provides: bundled(npm(fast-levenshtein)) = 2.0.6 -Provides: bundled(npm(fastq)) = 1.15.0 +Provides: bundled(npm(fastq)) = 1.18.0 Provides: bundled(npm(file-entry-cache)) = 6.0.1 -Provides: bundled(npm(file-selector)) = 0.1.19 +Provides: bundled(npm(file-selector)) = 2.1.2 Provides: bundled(npm(find-up)) = 5.0.0 -Provides: bundled(npm(flat-cache)) = 3.0.4 -Provides: bundled(npm(flatted)) = 3.2.7 -Provides: bundled(npm(focus-trap)) = 6.9.2 +Provides: bundled(npm(flat-cache)) = 3.2.0 +Provides: bundled(npm(flatted)) = 3.3.2 +Provides: bundled(npm(focus-trap)) = 7.5.4 Provides: bundled(npm(fs.realpath)) = 1.0.0 -Provides: bundled(npm(gettext-parser)) = 2.0.0 +Provides: bundled(npm(gettext-parser)) = 2.1.0 Provides: bundled(npm(glob)) = 7.2.3 Provides: bundled(npm(glob-parent)) = 6.0.2 -Provides: bundled(npm(globals)) = 13.20.0 +Provides: bundled(npm(globals)) = 13.24.0 Provides: bundled(npm(graphemer)) = 1.4.0 Provides: bundled(npm(has-flag)) = 4.0.0 Provides: bundled(npm(hoist-non-react-statics)) = 3.3.2 Provides: bundled(npm(iconv-lite)) = 0.6.3 -Provides: bundled(npm(ignore)) = 5.2.4 +Provides: bundled(npm(ignore)) = 5.3.2 Provides: bundled(npm(import-fresh)) = 3.3.0 Provides: bundled(npm(imurmurhash)) = 0.1.4 Provides: bundled(npm(inflight)) = 1.0.6 @@ -279,83 +283,94 @@ Provides: bundled(npm(internmap)) = 2.0.3 Provides: bundled(npm(is-extglob)) = 2.1.1 Provides: bundled(npm(is-glob)) = 4.0.3 Provides: bundled(npm(is-path-inside)) = 3.0.3 +Provides: bundled(npm(isarray)) = 1.0.0 Provides: bundled(npm(isexe)) = 2.0.0 +Provides: bundled(npm(js-sha1)) = 0.7.0 +Provides: bundled(npm(js-sha256)) = 0.11.0 Provides: bundled(npm(js-tokens)) = 4.0.0 Provides: bundled(npm(js-yaml)) = 4.1.0 +Provides: bundled(npm(json-buffer)) = 3.0.1 Provides: bundled(npm(json-schema-traverse)) = 0.4.1 Provides: bundled(npm(json-stable-stringify-without-jsonify)) = 1.0.1 Provides: bundled(npm(json-stringify-safe)) = 5.0.1 +Provides: bundled(npm(keyv)) = 4.5.4 Provides: bundled(npm(levn)) = 0.4.1 Provides: bundled(npm(locate-path)) = 6.0.0 Provides: bundled(npm(lodash)) = 4.17.21 Provides: bundled(npm(lodash.merge)) = 4.6.2 Provides: bundled(npm(loose-envify)) = 1.4.0 Provides: bundled(npm(minimatch)) = 3.1.2 -Provides: bundled(npm(ms)) = 2.1.2 +Provides: bundled(npm(ms)) = 2.1.3 Provides: bundled(npm(natural-compare)) = 1.4.0 Provides: bundled(npm(object-assign)) = 4.1.1 Provides: bundled(npm(once)) = 1.4.0 -Provides: bundled(npm(optionator)) = 0.9.3 +Provides: bundled(npm(optionator)) = 0.9.4 Provides: bundled(npm(p-limit)) = 3.1.0 Provides: bundled(npm(p-locate)) = 5.0.0 Provides: bundled(npm(parent-module)) = 1.0.1 Provides: bundled(npm(path-exists)) = 4.0.0 Provides: bundled(npm(path-is-absolute)) = 1.0.1 Provides: bundled(npm(path-key)) = 3.1.1 -Provides: bundled(npm(popper.js)) = 1.16.1 Provides: bundled(npm(prelude-ls)) = 1.2.1 -Provides: bundled(npm(prettier)) = 3.3.3 +Provides: bundled(npm(prettier)) = 3.4.2 +Provides: bundled(npm(process-nextick-args)) = 2.0.1 Provides: bundled(npm(prop-types)) = 15.8.1 -Provides: bundled(npm(prop-types-extra)) = 1.1.1 -Provides: bundled(npm(punycode)) = 2.3.0 +Provides: bundled(npm(punycode)) = 2.3.1 Provides: bundled(npm(queue-microtask)) = 1.2.3 -Provides: bundled(npm(react)) = 17.0.2 -Provides: bundled(npm(react-dom)) = 17.0.2 -Provides: bundled(npm(react-dropzone)) = 9.0.0 +Provides: bundled(npm(react)) = 18.3.1 +Provides: bundled(npm(react-dom)) = 18.3.1 +Provides: bundled(npm(react-dropzone)) = 14.3.5 Provides: bundled(npm(react-fast-compare)) = 3.2.2 Provides: bundled(npm(react-is)) = 16.13.1 +Provides: bundled(npm(readable-stream)) = 2.3.8 +Provides: bundled(npm(remarkable)) = 2.0.1 Provides: bundled(npm(resolve-from)) = 4.0.0 Provides: bundled(npm(reusify)) = 1.0.4 Provides: bundled(npm(rimraf)) = 3.0.2 Provides: bundled(npm(run-parallel)) = 1.2.0 Provides: bundled(npm(safe-buffer)) = 5.2.1 Provides: bundled(npm(safer-buffer)) = 2.1.2 -Provides: bundled(npm(scheduler)) = 0.20.2 +Provides: bundled(npm(scheduler)) = 0.23.2 Provides: bundled(npm(shebang-command)) = 2.0.0 Provides: bundled(npm(shebang-regex)) = 3.0.0 +Provides: bundled(npm(sprintf-js)) = 1.0.3 +Provides: bundled(npm(string_decoder)) = 1.1.1 Provides: bundled(npm(strip-ansi)) = 6.0.1 Provides: bundled(npm(strip-json-comments)) = 3.1.1 Provides: bundled(npm(supports-color)) = 7.2.0 -Provides: bundled(npm(tabbable)) = 5.3.3 +Provides: bundled(npm(tabbable)) = 6.2.0 Provides: bundled(npm(text-table)) = 0.2.0 -Provides: bundled(npm(tippy.js)) = 5.1.2 -Provides: bundled(npm(tslib)) = 2.5.3 +Provides: bundled(npm(throttle-debounce)) = 5.0.2 +Provides: bundled(npm(tslib)) = 2.8.1 Provides: bundled(npm(type-check)) = 0.4.0 Provides: bundled(npm(type-fest)) = 0.20.2 Provides: bundled(npm(uri-js)) = 4.4.1 -Provides: bundled(npm(victory-area)) = 36.6.10 -Provides: bundled(npm(victory-axis)) = 36.6.10 -Provides: bundled(npm(victory-bar)) = 36.6.10 -Provides: bundled(npm(victory-brush-container)) = 36.6.10 -Provides: bundled(npm(victory-chart)) = 36.6.10 -Provides: bundled(npm(victory-core)) = 36.6.10 -Provides: bundled(npm(victory-create-container)) = 36.6.10 -Provides: bundled(npm(victory-cursor-container)) = 36.6.10 -Provides: bundled(npm(victory-group)) = 36.6.10 -Provides: bundled(npm(victory-legend)) = 36.6.10 -Provides: bundled(npm(victory-line)) = 36.6.10 -Provides: bundled(npm(victory-pie)) = 36.6.10 -Provides: bundled(npm(victory-polar-axis)) = 36.6.10 -Provides: bundled(npm(victory-scatter)) = 36.6.10 -Provides: bundled(npm(victory-selection-container)) = 36.6.10 -Provides: bundled(npm(victory-shared-events)) = 36.6.10 -Provides: bundled(npm(victory-stack)) = 36.6.10 -Provides: bundled(npm(victory-tooltip)) = 36.6.10 -Provides: bundled(npm(victory-vendor)) = 36.6.10 -Provides: bundled(npm(victory-voronoi-container)) = 36.6.10 -Provides: bundled(npm(victory-zoom-container)) = 36.6.10 -Provides: bundled(npm(warning)) = 4.0.3 +Provides: bundled(npm(util-deprecate)) = 1.0.2 +Provides: bundled(npm(uuid)) = 10.0.0 +Provides: bundled(npm(victory-area)) = 37.3.5 +Provides: bundled(npm(victory-axis)) = 37.3.5 +Provides: bundled(npm(victory-bar)) = 37.3.5 +Provides: bundled(npm(victory-box-plot)) = 37.3.5 +Provides: bundled(npm(victory-brush-container)) = 37.3.5 +Provides: bundled(npm(victory-chart)) = 37.3.5 +Provides: bundled(npm(victory-core)) = 37.3.5 +Provides: bundled(npm(victory-create-container)) = 37.3.5 +Provides: bundled(npm(victory-cursor-container)) = 37.3.5 +Provides: bundled(npm(victory-group)) = 37.3.5 +Provides: bundled(npm(victory-legend)) = 37.3.5 +Provides: bundled(npm(victory-line)) = 37.3.5 +Provides: bundled(npm(victory-pie)) = 37.3.5 +Provides: bundled(npm(victory-polar-axis)) = 37.3.5 +Provides: bundled(npm(victory-scatter)) = 37.3.5 +Provides: bundled(npm(victory-selection-container)) = 37.3.5 +Provides: bundled(npm(victory-shared-events)) = 37.3.5 +Provides: bundled(npm(victory-stack)) = 37.3.5 +Provides: bundled(npm(victory-tooltip)) = 37.3.5 +Provides: bundled(npm(victory-vendor)) = 37.3.5 +Provides: bundled(npm(victory-voronoi-container)) = 37.3.5 +Provides: bundled(npm(victory-zoom-container)) = 37.3.5 Provides: bundled(npm(which)) = 2.0.2 +Provides: bundled(npm(word-wrap)) = 1.2.5 Provides: bundled(npm(wrappy)) = 1.0.2 Provides: bundled(npm(yocto-queue)) = 0.1.0 ##### Bundled cargo crates list - END ##### @@ -477,6 +492,8 @@ Requires: cracklib-dicts Requires: json-c # Log compression Requires: zlib-devel +# logconv.py, MIME type +Requires: python-magic # Picks up our systemd deps. %{?systemd_requires} @@ -680,7 +697,7 @@ pushd ../%{jemalloc_name}-%{jemalloc_ver} --libdir=%{_libdir}/%{pkgname}/lib \ --bindir=%{_libdir}/%{pkgname}/bin \ --enable-prof %{lg_page} %{lg_hugepage} -make %{?_smp_mflags} +%make_build popd %endif @@ -733,7 +750,7 @@ sed -i "1s/\"1\"/\"8\"/" %{_builddir}/%{name}-%{version}/src/lib389/man/dscreat # Generate symbolic info for debuggers export XCFLAGS=$RPM_OPT_FLAGS -make %{?_smp_mflags} +%make_build %install @@ -741,7 +758,7 @@ mkdir -p %{buildroot}%{_datadir}/gdb/auto-load%{_sbindir} %if %{with cockpit} mkdir -p %{buildroot}%{_datadir}/cockpit %endif -make DESTDIR="$RPM_BUILD_ROOT" install +%make_install %if %{with cockpit} find %{buildroot}%{_datadir}/cockpit/389-console -type d | sed -e "s@%{buildroot}@@" | sed -e 's/^/\%dir /' > cockpit.list @@ -920,6 +937,8 @@ exit 0 %{_mandir}/man1/ldclt.1.gz %{_bindir}/logconv.pl %{_mandir}/man1/logconv.pl.1.gz +%{_bindir}/logconv.py +%{_mandir}/man1/logconv.py.1.gz %{_bindir}/pwdhash %{_mandir}/man1/pwdhash.1.gz %{_sbindir}/ns-slapd diff --git a/sources b/sources index 4f65d9a..115a2a1 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (389-ds-base-3.0.5.tar.bz2) = 3f62e98779dcc6e3997846e6303622a76e34c6f290c4967ba54b708a9d3ac85216e96e88f744e7fda18133a509d4f7c18969b3836b88359a10886fb1182c3d1b +SHA512 (389-ds-base-3.0.6.tar.bz2) = 9091da9229f20446357fd713f4177a885faa3fb4f83fc7806bdd0590f959dd02e6ebb8bb4e573b19537efeb3cef96f43eedab565b98b2d155055ea579f09b474 SHA512 (jemalloc-5.3.0.tar.bz2) = 22907bb052096e2caffb6e4e23548aecc5cc9283dce476896a2b1127eee64170e3562fa2e7db9571298814a7a2c7df6e8d1fbe152bd3f3b0c1abec22a2de34b1 SHA512 (libdb-5.3.28-59.tar.bz2) = 731a434fa2e6487ebb05c458b0437456eb9f7991284beb08cb3e21931e23bdeddddbc95bfabe3a2f9f029fe69cd33a2d4f0f5ce6a9811e9c3b940cb6fde4bf79 From dcbf6ba789c3a7518aeb94f4def31e5c5ef07078 Mon Sep 17 00:00:00 2001 From: Viktor Ashirov Date: Fri, 14 Feb 2025 13:54:58 +0100 Subject: [PATCH 8/8] Update to 3.0.6-2 - Resolves: Issue 6544 - logconv.py: python3-magic conflicts with python3-file-magic - Resolves: Issue 6374 - nsslapd-mdb-max-dbs autotuning doesn't work properly - Resolves: Issue 6090 - Fix dbscan options and man pages - Resolves: Issue 6489 - After log rotation refresh the FD pointer - Resolves: Issue 6436 - MOD on a large group slow if substring index is present - Resolves: Issue 6566 - RI plugin failure to handle a modrdn for rename of member of multiple groups - Resolves: Issue 6229 - After an initial failure, subsequent online backups fail - Resolves: Issue 6554 - During import of entries without nsUniqueId, a supplier generates duplicate nsUniqueId (LMDB only) --- ...DB-after-an-update-the-impact-VLV-in.patch | 48 -- ...nv.py-python3-magic-conflicts-with-p.patch | 53 ++ ...pd-mdb-max-dbs-autotuning-doesn-t-wo.patch | 311 ++++++++++ ...ix-dbscan-options-and-man-pages-6315.patch | 72 +++ ...-log-rotation-refresh-the-FD-pointer.patch | 146 +++++ ...n-a-large-group-slow-if-substring-in.patch | 236 ++++++++ ...ugin-failure-to-handle-a-modrdn-for-.patch | 70 +++ ...-an-initial-failure-subsequent-onlin.patch | 566 ++++++++++++++++++ ...g-import-of-entries-without-nsUnique.patch | 165 +++++ 389-ds-base.spec | 11 +- 10 files changed, 1629 insertions(+), 49 deletions(-) delete mode 100644 0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch create mode 100644 0001-Issue-6544-logconv.py-python3-magic-conflicts-with-p.patch create mode 100644 0002-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch create mode 100644 0003-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch create mode 100644 0004-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch create mode 100644 0005-Issue-6436-MOD-on-a-large-group-slow-if-substring-in.patch create mode 100644 0006-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch create mode 100644 0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch create mode 100644 0008-Issue-6554-During-import-of-entries-without-nsUnique.patch diff --git a/0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch b/0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch deleted file mode 100644 index 35a8b1f..0000000 --- a/0001-Issue-6356-On-LMDB-after-an-update-the-impact-VLV-in.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 145e7f4aa9d9cf400751a16768b077b533f428cc Mon Sep 17 00:00:00 2001 -From: tbordaz -Date: Wed, 9 Oct 2024 15:20:48 +0200 -Subject: [PATCH] Issue 6356 - On LMDB, after an update the impact VLV index, - the vlv recno cache is not systematically cleared (#6357) - -Bug description: - The VLV manages/uses an index database. - In LMDB in addition to the index there is one 'recno cache' database per VLV index. - This recno cache, related to a given VLV index, is cleared when an update impacts the VLV index. - The recno cache is not systematically cleared upon update of the VLV index. - - The way to clear the cache is to delete the record with key "OK". - When the 'recno cache' does not contain this key, the next - lookup to the cache, clears all entries and rebuild the cache - from the vlv index. - The deletion is done with mdb_del with both KEY and DATA - refering to the same mdb_val. This means it deletes the records - matching if both KEY/DATA. - It should not match the DATA as the "OK" record is just - a flag and all entries with that key should be removed. - -Fix description: - The fix consist to call mdb_del only with key - -fixes: #6356 - -Reviewed by: Pierre Rogier (Thanks!!) ---- - ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c -index 9c2db199c..313eb35ae 100644 ---- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c -+++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c -@@ -2882,7 +2882,7 @@ dbmdb_public_clear_vlv_cache(Slapi_Backend *be, dbi_txn_t *txn, dbi_db_t *db) - ok.mv_size = 2; - rc = dbmdb_open_dbi_from_filename(&rcdbi, be, rcdbname, NULL, 0); - if (rc == 0) { -- rc = MDB_DEL(TXN(txn), rcdbi->dbi, &ok, &ok); -+ rc = MDB_DEL(TXN(txn), rcdbi->dbi, &ok, NULL); - } - slapi_ch_free_string(&rcdbname); - return rc; --- -2.46.0 - diff --git a/0001-Issue-6544-logconv.py-python3-magic-conflicts-with-p.patch b/0001-Issue-6544-logconv.py-python3-magic-conflicts-with-p.patch new file mode 100644 index 0000000..6657c79 --- /dev/null +++ b/0001-Issue-6544-logconv.py-python3-magic-conflicts-with-p.patch @@ -0,0 +1,53 @@ +From fc7f5aa01e245c7c2e35b01d171dbd5a6dc75db4 Mon Sep 17 00:00:00 2001 +From: Viktor Ashirov +Date: Sat, 25 Jan 2025 13:54:33 +0100 +Subject: [PATCH] Issue 6544 - logconv.py: python3-magic conflicts with + python3-file-magic + +Bug Description: +python3-magic and python3-file-magic can't be installed simultaneously, +python3-magic is not packaged for EL10. + +Fix Description: +Use python3-file-magic instead. + +Issue identified and fix suggested by Adam Williamson. + +Fixes: https://github.com/389ds/389-ds-base/issues/6544 + +Reviewed by: @mreynolds389 (Thanks!) +--- + ldap/admin/src/logconv.py | 3 +-- + rpm/389-ds-base.spec.in | 2 +- + 2 files changed, 2 insertions(+), 3 deletions(-) + +diff --git a/ldap/admin/src/logconv.py b/ldap/admin/src/logconv.py +index 566f9af38..2fb5bb8c1 100755 +--- a/ldap/admin/src/logconv.py ++++ b/ldap/admin/src/logconv.py +@@ -1798,8 +1798,7 @@ class logAnalyser: + return None + + try: +- mime = magic.Magic(mime=True) +- filetype = mime.from_file(filepath) ++ filetype = magic.detect_from_filename(filepath).mime_type + + # List of supported compression types + compressed_mime_types = [ +diff --git a/rpm/389-ds-base.spec.in b/rpm/389-ds-base.spec.in +index 3146b9186..3c6e95938 100644 +--- a/rpm/389-ds-base.spec.in ++++ b/rpm/389-ds-base.spec.in +@@ -298,7 +298,7 @@ Requires: json-c + # Log compression + Requires: zlib-devel + # logconv.py, MIME type +-Requires: python-magic ++Requires: python3-file-magic + # Picks up our systemd deps. + %{?systemd_requires} + +-- +2.48.0 + diff --git a/0002-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch b/0002-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch new file mode 100644 index 0000000..da75320 --- /dev/null +++ b/0002-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch @@ -0,0 +1,311 @@ +From 1aabba9b17f99eb1a460be3305aad4b7099b9fe6 Mon Sep 17 00:00:00 2001 +From: progier389 +Date: Wed, 13 Nov 2024 15:31:35 +0100 +Subject: [PATCH] Issue 6374 - nsslapd-mdb-max-dbs autotuning doesn't work + properly (#6400) + +* Issue 6374 - nsslapd-mdb-max-dbs autotuning doesn't work properly + +Several issues: + +After restarting the server nsslapd-mdb-max-dbs may not be high enough to add a new backend +because the value computation is wrong. +dbscan fails to open the database if nsslapd-mdb-max-dbs has been increased. +dbscan crashes when closing the database (typically when using -S) +When starting the instance the nsslapd-mdb-max-dbs parameter is increased to ensure that a new backend may be added. +When dse.ldif path is not specified, the db environment is now open using the INFO.mdb data instead of using the default values. +synchronization between thread closure and database context destruction is hardened +Issue: #6374 + +Reviewed by: @tbordaz , @vashirov (Thanks!) + +(cherry picked from commit 56cd3389da608a3f6eeee58d20dffbcd286a8033) +--- + .../tests/suites/config/config_test.py | 86 +++++++++++++++++++ + ldap/servers/slapd/back-ldbm/back-ldbm.h | 2 + + .../slapd/back-ldbm/db-mdb/mdb_config.c | 17 ++-- + .../back-ldbm/db-mdb/mdb_import_threads.c | 9 +- + .../slapd/back-ldbm/db-mdb/mdb_instance.c | 8 ++ + ldap/servers/slapd/back-ldbm/dbimpl.c | 2 +- + ldap/servers/slapd/back-ldbm/import.c | 14 ++- + 7 files changed, 128 insertions(+), 10 deletions(-) + +diff --git a/dirsrvtests/tests/suites/config/config_test.py b/dirsrvtests/tests/suites/config/config_test.py +index c3e26eed4..08544594f 100644 +--- a/dirsrvtests/tests/suites/config/config_test.py ++++ b/dirsrvtests/tests/suites/config/config_test.py +@@ -17,6 +17,7 @@ from lib389.topologies import topology_m2, topology_st as topo + from lib389.utils import * + from lib389._constants import DN_CONFIG, DEFAULT_SUFFIX, DEFAULT_BENAME + from lib389._mapped_object import DSLdapObjects ++from lib389.agreement import Agreements + from lib389.cli_base import FakeArgs + from lib389.cli_conf.backend import db_config_set + from lib389.idm.user import UserAccounts, TEST_USER_PROPERTIES +@@ -27,6 +28,8 @@ from lib389.cos import CosPointerDefinitions, CosTemplates + from lib389.backend import Backends, DatabaseConfig + from lib389.monitor import MonitorLDBM, Monitor + from lib389.plugins import ReferentialIntegrityPlugin ++from lib389.replica import BootstrapReplicationManager, Replicas ++from lib389.passwd import password_generate + + pytestmark = pytest.mark.tier0 + +@@ -36,6 +39,8 @@ PSTACK_CMD = '/usr/bin/pstack' + logging.getLogger(__name__).setLevel(logging.INFO) + log = logging.getLogger(__name__) + ++DEBUGGING = os.getenv("DEBUGGING", default=False) ++ + @pytest.fixture(scope="module") + def big_file(): + TEMP_BIG_FILE = '' +@@ -813,6 +818,87 @@ def test_numlisteners_limit(topo): + assert numlisteners[0] == '4' + + ++def bootstrap_replication(inst_from, inst_to, creds): ++ manager = BootstrapReplicationManager(inst_to) ++ rdn_val = 'replication manager' ++ if manager.exists(): ++ manager.delete() ++ manager.create(properties={ ++ 'cn': rdn_val, ++ 'uid': rdn_val, ++ 'userPassword': creds ++ }) ++ for replica in Replicas(inst_to).list(): ++ replica.remove_all('nsDS5ReplicaBindDNGroup') ++ replica.replace('nsDS5ReplicaBindDN', manager.dn) ++ for agmt in Agreements(inst_from).list(): ++ agmt.replace('nsDS5ReplicaBindDN', manager.dn) ++ agmt.replace('nsDS5ReplicaCredentials', creds) ++ ++ ++@pytest.mark.skipif(get_default_db_lib() != "mdb", reason="This test requires lmdb") ++def test_lmdb_autotuned_maxdbs(topology_m2, request): ++ """Verify that after restart, nsslapd-mdb-max-dbs is large enough to add a new backend. ++ ++ :id: 0272d432-9080-11ef-8f40-482ae39447e5 ++ :setup: Two suppliers configuration ++ :steps: ++ 1. loop 20 times ++ 3. In 1 loop: restart instance ++ 3. In 1 loop: add a new backend ++ 4. In 1 loop: check that instance is still alive ++ :expectedresults: ++ 1. Success ++ 2. Success ++ 3. Success ++ 4. Success ++ """ ++ ++ s1 = topology_m2.ms["supplier1"] ++ s2 = topology_m2.ms["supplier2"] ++ ++ backends = Backends(s1) ++ db_config = DatabaseConfig(s1) ++ # Generate the teardown finalizer ++ belist = [] ++ creds=password_generate() ++ bootstrap_replication(s2, s1, creds) ++ bootstrap_replication(s1, s2, creds) ++ ++ def fin(): ++ s1.start() ++ for be in belist: ++ be.delete() ++ ++ if not DEBUGGING: ++ request.addfinalizer(fin) ++ ++ # 1. Set autotuning (off-line to be able to decrease the value) ++ s1.stop() ++ dse_ldif = DSEldif(s1) ++ dse_ldif.replace(db_config.dn, 'nsslapd-mdb-max-dbs', '0') ++ os.remove(f'{s1.dbdir}/data.mdb') ++ s1.start() ++ ++ # 2. Reinitialize the db: ++ log.info("Bulk import...") ++ agmt = Agreements(s2).list()[0] ++ agmt.begin_reinit() ++ (done, error) = agmt.wait_reinit() ++ log.info(f'Bulk importresult is ({done}, {error})') ++ assert done is True ++ assert error is False ++ ++ # 3. loop 20 times ++ for idx in range(20): ++ s1.restart() ++ log.info(f'Adding backend test{idx}') ++ belist.append(backends.create(properties={'cn': f'test{idx}', ++ 'nsslapd-suffix': f'dc=test{idx}'})) ++ assert s1.status() ++ ++ ++ + if __name__ == '__main__': + # Run isolated + # -s for DEBUG mode +diff --git a/ldap/servers/slapd/back-ldbm/back-ldbm.h b/ldap/servers/slapd/back-ldbm/back-ldbm.h +index 8fea63e35..35d0ece04 100644 +--- a/ldap/servers/slapd/back-ldbm/back-ldbm.h ++++ b/ldap/servers/slapd/back-ldbm/back-ldbm.h +@@ -896,4 +896,6 @@ typedef struct _back_search_result_set + ((L)->size == (R)->size && !memcmp((L)->data, (R)->data, (L)->size)) + + typedef int backend_implement_init_fn(struct ldbminfo *li, config_info *config_array); ++ ++pthread_mutex_t *get_import_ctx_mutex(); + #endif /* _back_ldbm_h_ */ +diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c +index 351f54037..1f7b71442 100644 +--- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c ++++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_config.c +@@ -83,7 +83,7 @@ dbmdb_compute_limits(struct ldbminfo *li) + uint64_t total_space = 0; + uint64_t avail_space = 0; + uint64_t cur_dbsize = 0; +- int nbchangelogs = 0; ++ int nbvlvs = 0; + int nbsuffixes = 0; + int nbindexes = 0; + int nbagmt = 0; +@@ -99,8 +99,8 @@ dbmdb_compute_limits(struct ldbminfo *li) + * But some tunable may be autotuned. + */ + if (dbmdb_count_config_entries("(objectClass=nsMappingTree)", &nbsuffixes) || +- dbmdb_count_config_entries("(objectClass=nsIndex)", &nbsuffixes) || +- dbmdb_count_config_entries("(&(objectClass=nsds5Replica)(nsDS5Flags=1))", &nbchangelogs) || ++ dbmdb_count_config_entries("(objectClass=nsIndex)", &nbindexes) || ++ dbmdb_count_config_entries("(objectClass=vlvIndex)", &nbvlvs) || + dbmdb_count_config_entries("(objectClass=nsds5replicationagreement)", &nbagmt)) { + /* error message is already logged */ + return 1; +@@ -120,8 +120,15 @@ dbmdb_compute_limits(struct ldbminfo *li) + + info->pagesize = sysconf(_SC_PAGE_SIZE); + limits->min_readers = config_get_threadnumber() + nbagmt + DBMDB_READERS_MARGIN; +- /* Default indexes are counted in "nbindexes" so we should always have enough resource to add 1 new suffix */ +- limits->min_dbs = nbsuffixes + nbindexes + nbchangelogs + DBMDB_DBS_MARGIN; ++ /* ++ * For each suffix there are 4 databases instances: ++ * long-entryrdn, replication_changelog, id2entry and ancestorid ++ * then the indexes and the vlv and vlv cache ++ * ++ * Default indexes are counted in "nbindexes" so we should always have enough ++ * resource to add 1 new suffix ++ */ ++ limits->min_dbs = 4*nbsuffixes + nbindexes + 2*nbvlvs + DBMDB_DBS_MARGIN; + + total_space = ((uint64_t)(buf.f_blocks)) * ((uint64_t)(buf.f_bsize)); + avail_space = ((uint64_t)(buf.f_bavail)) * ((uint64_t)(buf.f_bsize)); +diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c +index 8c879da31..707a110c5 100644 +--- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c ++++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c +@@ -4312,9 +4312,12 @@ dbmdb_import_init_writer(ImportJob *job, ImportRole_t role) + void + dbmdb_free_import_ctx(ImportJob *job) + { +- if (job->writer_ctx) { +- ImportCtx_t *ctx = job->writer_ctx; +- job->writer_ctx = NULL; ++ ImportCtx_t *ctx = NULL; ++ pthread_mutex_lock(get_import_ctx_mutex()); ++ ctx = job->writer_ctx; ++ job->writer_ctx = NULL; ++ pthread_mutex_unlock(get_import_ctx_mutex()); ++ if (ctx) { + pthread_mutex_destroy(&ctx->workerq.mutex); + pthread_cond_destroy(&ctx->workerq.cv); + slapi_ch_free((void**)&ctx->workerq.slots); +diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c +index 6386ecf06..05f1e348d 100644 +--- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c ++++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_instance.c +@@ -287,6 +287,13 @@ int add_dbi(dbi_open_ctx_t *octx, backend *be, const char *fname, int flags) + slapi_ch_free((void**)&treekey.dbname); + return octx->rc; + } ++ if (treekey.dbi >= ctx->dsecfg.max_dbs) { ++ octx->rc = MDB_DBS_FULL; ++ slapi_log_err(SLAPI_LOG_ERR, "add_dbi", "Failed to open database instance %s slots: %d/%d. Error is %d: %s.\n", ++ treekey.dbname, treekey.dbi, ctx->dsecfg.max_dbs, octx->rc, mdb_strerror(octx->rc)); ++ slapi_ch_free((void**)&treekey.dbname); ++ return octx->rc; ++ } + if (octx->ai && octx->ai->ai_key_cmp_fn) { + octx->rc = dbmdb_update_dbi_cmp_fn(ctx, &treekey, octx->ai->ai_key_cmp_fn, octx->txn); + if (octx->rc) { +@@ -689,6 +696,7 @@ int dbmdb_make_env(dbmdb_ctx_t *ctx, int readOnly, mdb_mode_t mode) + rc = dbmdb_write_infofile(ctx); + } else { + /* No Config ==> read it from info file */ ++ ctx->dsecfg = ctx->startcfg; + } + if (rc) { + return rc; +diff --git a/ldap/servers/slapd/back-ldbm/dbimpl.c b/ldap/servers/slapd/back-ldbm/dbimpl.c +index 86df986bd..f3bf68a9f 100644 +--- a/ldap/servers/slapd/back-ldbm/dbimpl.c ++++ b/ldap/servers/slapd/back-ldbm/dbimpl.c +@@ -505,7 +505,7 @@ int dblayer_show_statistics(const char *dbimpl_name, const char *dbhome, FILE *f + li->li_plugin = be->be_database; + li->li_plugin->plg_name = (char*) "back-ldbm-dbimpl"; + li->li_plugin->plg_libpath = (char*) "libback-ldbm"; +- li->li_directory = (char*)dbhome; ++ li->li_directory = get_li_directory(dbhome); + + /* Initialize database plugin */ + rc = dbimpl_setup(li, dbimpl_name); +diff --git a/ldap/servers/slapd/back-ldbm/import.c b/ldap/servers/slapd/back-ldbm/import.c +index 2bb8cb581..30ec462fa 100644 +--- a/ldap/servers/slapd/back-ldbm/import.c ++++ b/ldap/servers/slapd/back-ldbm/import.c +@@ -27,6 +27,9 @@ + #define NEED_DN_NORM_SP -25 + #define NEED_DN_NORM_BT -26 + ++/* Protect against import context destruction */ ++static pthread_mutex_t import_ctx_mutex = PTHREAD_MUTEX_INITIALIZER; ++ + + /********** routines to manipulate the entry fifo **********/ + +@@ -143,6 +146,14 @@ ldbm_back_wire_import(Slapi_PBlock *pb) + + /* Threads management */ + ++/* Return the mutex that protects against import context destruction */ ++pthread_mutex_t * ++get_import_ctx_mutex() ++{ ++ return &import_ctx_mutex; ++} ++ ++ + /* tell all the threads to abort */ + void + import_abort_all(ImportJob *job, int wait_for_them) +@@ -151,7 +162,7 @@ import_abort_all(ImportJob *job, int wait_for_them) + + /* tell all the worker threads to abort */ + job->flags |= FLAG_ABORT; +- ++ pthread_mutex_lock(&import_ctx_mutex); + for (worker = job->worker_list; worker; worker = worker->next) + worker->command = ABORT; + +@@ -167,6 +178,7 @@ import_abort_all(ImportJob *job, int wait_for_them) + } + } + } ++ pthread_mutex_unlock(&import_ctx_mutex); + } + + +-- +2.48.0 + diff --git a/0003-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch b/0003-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch new file mode 100644 index 0000000..db5eb9a --- /dev/null +++ b/0003-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch @@ -0,0 +1,72 @@ +From 6b80ba631161219093267e8e4c885bfc392d3d61 Mon Sep 17 00:00:00 2001 +From: progier389 +Date: Fri, 6 Sep 2024 14:45:06 +0200 +Subject: [PATCH] Issue 6090 - Fix dbscan options and man pages (#6315) + +* Issue 6090 - Fix dbscan options and man pages + +dbscan -d option is dangerously confusing as it removes a database instance while in db_stat it identify the database +(cf issue #5609 ). +This fix implements long options in dbscan, rename -d in --remove, and requires a new --do-it option for action that change the database content. +The fix should also align both the usage and the dbscan man page with the new set of options + +Issue: #6090 + +Reviewed by: @tbordaz, @droideck (Thanks!) + +(cherry picked from commit 25e1d16887ebd299dfe0088080b9ee0deec1e41f) +--- + ldap/servers/slapd/back-ldbm/dbimpl.c | 5 ++++- + src/lib389/lib389/cli_ctl/dblib.py | 13 ++++++++++++- + 2 files changed, 16 insertions(+), 2 deletions(-) + +diff --git a/ldap/servers/slapd/back-ldbm/dbimpl.c b/ldap/servers/slapd/back-ldbm/dbimpl.c +index f3bf68a9f..83662df8c 100644 +--- a/ldap/servers/slapd/back-ldbm/dbimpl.c ++++ b/ldap/servers/slapd/back-ldbm/dbimpl.c +@@ -481,7 +481,10 @@ int dblayer_private_close(Slapi_Backend **be, dbi_env_t **env, dbi_db_t **db) + slapi_ch_free_string(&li->li_directory); + slapi_ch_free((void**)&li->li_dblayer_private); + slapi_ch_free((void**)&li->li_dblayer_config); +- ldbm_config_destroy(li); ++ if (dblayer_is_lmdb(*be)) { ++ /* Generate use after free and double free in bdb case */ ++ ldbm_config_destroy(li); ++ } + slapi_ch_free((void**)&(*be)->be_database); + slapi_ch_free((void**)&(*be)->be_instance_info); + slapi_ch_free((void**)be); +diff --git a/src/lib389/lib389/cli_ctl/dblib.py b/src/lib389/lib389/cli_ctl/dblib.py +index 053a72d61..318ae5ae9 100644 +--- a/src/lib389/lib389/cli_ctl/dblib.py ++++ b/src/lib389/lib389/cli_ctl/dblib.py +@@ -199,6 +199,14 @@ def run_dbscan(args): + return output + + ++def does_dbscan_need_do_it(): ++ prefix = os.environ.get('PREFIX', "") ++ prog = f'{prefix}/bin/dbscan' ++ args = [ prog, '-h' ] ++ output = subprocess.run(args, encoding='utf-8', stdout=subprocess.PIPE, stderr=subprocess.STDOUT) ++ return '--do-it' in output.stdout ++ ++ + def export_changelog(be, dblib): + # Export backend changelog + if not be['has_changelog']: +@@ -217,7 +225,10 @@ def import_changelog(be, dblib): + try: + cl5dbname = be['eccl5dbname'] if dblib == "bdb" else be['cl5dbname'] + _log.info(f"Importing changelog {cl5dbname} from {be['cl5name']}") +- run_dbscan(['-D', dblib, '-f', cl5dbname, '--import', be['cl5name'], '--do-it']) ++ if does_dbscan_need_do_it(): ++ run_dbscan(['-D', dblib, '-f', cl5dbname, '-I', be['cl5name'], '--do-it']) ++ else: ++ run_dbscan(['-D', dblib, '-f', cl5dbname, '-I', be['cl5name']]) + return True + except subprocess.CalledProcessError as e: + return False +-- +2.48.0 + diff --git a/0004-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch b/0004-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch new file mode 100644 index 0000000..61c21ff --- /dev/null +++ b/0004-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch @@ -0,0 +1,146 @@ +From dc8032856d51c382e266eea72f66284e70a0e40c Mon Sep 17 00:00:00 2001 +From: Mark Reynolds +Date: Fri, 31 Jan 2025 08:54:27 -0500 +Subject: [PATCH] Issue 6489 - After log rotation refresh the FD pointer + +Description: + +When flushing a log buffer we get a FD for log prior to checking if the +log should be rotated. If the log is rotated that FD reference is now +invalid, and it needs to be refrehed before proceeding + +Relates: https://github.com/389ds/389-ds-base/issues/6489 + +Reviewed by: tbordaz(Thanks!) +--- + .../suites/logging/log_flush_rotation_test.py | 81 +++++++++++++++++++ + ldap/servers/slapd/log.c | 18 +++++ + 2 files changed, 99 insertions(+) + create mode 100644 dirsrvtests/tests/suites/logging/log_flush_rotation_test.py + +diff --git a/dirsrvtests/tests/suites/logging/log_flush_rotation_test.py b/dirsrvtests/tests/suites/logging/log_flush_rotation_test.py +new file mode 100644 +index 000000000..b33a622e1 +--- /dev/null ++++ b/dirsrvtests/tests/suites/logging/log_flush_rotation_test.py +@@ -0,0 +1,81 @@ ++# --- BEGIN COPYRIGHT BLOCK --- ++# Copyright (C) 2025 Red Hat, Inc. ++# All rights reserved. ++# ++# License: GPL (version 3 or any later version). ++# See LICENSE for details. ++# --- END COPYRIGHT BLOCK --- ++# ++import os ++import logging ++import time ++import pytest ++from lib389._constants import DEFAULT_SUFFIX, PW_DM ++from lib389.tasks import ImportTask ++from lib389.idm.user import UserAccounts ++from lib389.topologies import topology_st as topo ++ ++ ++log = logging.getLogger(__name__) ++ ++ ++def test_log_flush_and_rotation_crash(topo): ++ """Make sure server does not crash whening flushing a buffer and rotating ++ the log at the same time ++ ++ :id: d4b0af2f-48b2-45f5-ae8b-f06f692c3133 ++ :setup: Standalone Instance ++ :steps: ++ 1. Enable all logs ++ 2. Enable log buffering for all logs ++ 3. Set rotation time unit to 1 minute ++ 4. Make sure server is still running after 1 minute ++ :expectedresults: ++ 1. Success ++ 2. Success ++ 3. Success ++ 4. Success ++ """ ++ ++ inst = topo.standalone ++ ++ # Enable logging and buffering ++ inst.config.set("nsslapd-auditlog-logging-enabled", "on") ++ inst.config.set("nsslapd-accesslog-logbuffering", "on") ++ inst.config.set("nsslapd-auditlog-logbuffering", "on") ++ inst.config.set("nsslapd-errorlog-logbuffering", "on") ++ inst.config.set("nsslapd-securitylog-logbuffering", "on") ++ ++ # Set rotation policy to trigger rotation asap ++ inst.config.set("nsslapd-accesslog-logrotationtimeunit", "minute") ++ inst.config.set("nsslapd-auditlog-logrotationtimeunit", "minute") ++ inst.config.set("nsslapd-errorlog-logrotationtimeunit", "minute") ++ inst.config.set("nsslapd-securitylog-logrotationtimeunit", "minute") ++ ++ # ++ # Performs ops to populate all the logs ++ # ++ # Access & audit log ++ users = UserAccounts(topo.standalone, DEFAULT_SUFFIX) ++ user = users.create_test_user() ++ user.set("userPassword", PW_DM) ++ # Security log ++ user.bind(PW_DM) ++ # Error log ++ import_task = ImportTask(inst) ++ import_task.import_suffix_from_ldif(ldiffile="/not/here", ++ suffix=DEFAULT_SUFFIX) ++ ++ # Wait a minute and make sure the server did not crash ++ log.info("Sleep until logs are flushed and rotated") ++ time.sleep(61) ++ ++ assert inst.status() ++ ++ ++if __name__ == '__main__': ++ # Run isolated ++ # -s for DEBUG mode ++ CURRENT_FILE = os.path.realpath(__file__) ++ pytest.main(["-s", CURRENT_FILE]) ++ +diff --git a/ldap/servers/slapd/log.c b/ldap/servers/slapd/log.c +index 76f2b6768..7e2c980a4 100644 +--- a/ldap/servers/slapd/log.c ++++ b/ldap/servers/slapd/log.c +@@ -6746,6 +6746,23 @@ log_refresh_state(int32_t log_type) + return 0; + } + } ++static LOGFD ++log_refresh_fd(int32_t log_type) ++{ ++ switch (log_type) { ++ case SLAPD_ACCESS_LOG: ++ return loginfo.log_access_fdes; ++ case SLAPD_SECURITY_LOG: ++ return loginfo.log_security_fdes; ++ case SLAPD_AUDIT_LOG: ++ return loginfo.log_audit_fdes; ++ case SLAPD_AUDITFAIL_LOG: ++ return loginfo.log_auditfail_fdes; ++ case SLAPD_ERROR_LOG: ++ return loginfo.log_error_fdes; ++ } ++ return NULL; ++} + + /* this function assumes the lock is already acquired */ + /* if sync_now is non-zero, data is flushed to physical storage */ +@@ -6857,6 +6874,7 @@ log_flush_buffer(LogBufferInfo *lbi, int log_type, int sync_now, int locked) + rotationtime_secs); + } + log_state = log_refresh_state(log_type); ++ fd = log_refresh_fd(log_type); + } + + if (log_state & LOGGING_NEED_TITLE) { +-- +2.48.0 + diff --git a/0005-Issue-6436-MOD-on-a-large-group-slow-if-substring-in.patch b/0005-Issue-6436-MOD-on-a-large-group-slow-if-substring-in.patch new file mode 100644 index 0000000..067a418 --- /dev/null +++ b/0005-Issue-6436-MOD-on-a-large-group-slow-if-substring-in.patch @@ -0,0 +1,236 @@ +From 90460bfa66fb77118967927963572f69e097c4eb Mon Sep 17 00:00:00 2001 +From: James Chapman +Date: Wed, 29 Jan 2025 17:41:55 +0000 +Subject: [PATCH] Issue 6436 - MOD on a large group slow if substring index is + present (#6437) + +Bug Description: If the substring index is configured for the group +membership attribute ( member or uniqueMember ), the removal of a +member from a large static group is pretty slow. + +Fix Description: A solution to this issue would be to introduce +a new index to track a membership atttribute index. In the interm, +we add a check to healthcheck to inform the user of the implications +of this configuration. + +Fixes: https://github.com/389ds/389-ds-base/issues/6436 + +Reviewed by: @Firstyear, @tbordaz, @droideck (Thanks) +--- + .../suites/healthcheck/health_config_test.py | 89 ++++++++++++++++++- + src/lib389/lib389/lint.py | 15 ++++ + src/lib389/lib389/plugins.py | 37 +++++++- + 3 files changed, 137 insertions(+), 4 deletions(-) + +diff --git a/dirsrvtests/tests/suites/healthcheck/health_config_test.py b/dirsrvtests/tests/suites/healthcheck/health_config_test.py +index e1e5398ab..f09bc8bb8 100644 +--- a/dirsrvtests/tests/suites/healthcheck/health_config_test.py ++++ b/dirsrvtests/tests/suites/healthcheck/health_config_test.py +@@ -167,6 +167,7 @@ def test_healthcheck_RI_plugin_missing_indexes(topology_st): + MEMBER_DN = 'cn=member,cn=index,cn=userroot,cn=ldbm database,cn=plugins,cn=config' + + standalone = topology_st.standalone ++ standalone.config.set("nsslapd-accesslog-logbuffering", "on") + + log.info('Enable RI plugin') + plugin = ReferentialIntegrityPlugin(standalone) +@@ -188,7 +189,7 @@ def test_healthcheck_RI_plugin_missing_indexes(topology_st): + + + def test_healthcheck_MO_plugin_missing_indexes(topology_st): +- """Check if HealthCheck returns DSMOLE0002 code ++ """Check if HealthCheck returns DSMOLE0001 code + + :id: 236b0ec2-13da-48fb-b65a-db7406d56d5d + :setup: Standalone instance +@@ -203,8 +204,8 @@ def test_healthcheck_MO_plugin_missing_indexes(topology_st): + :expectedresults: + 1. Success + 2. Success +- 3. Healthcheck reports DSMOLE0002 code and related details +- 4. Healthcheck reports DSMOLE0002 code and related details ++ 3. Healthcheck reports DSMOLE0001 code and related details ++ 4. Healthcheck reports DSMOLE0001 code and related details + 5. Success + 6. Healthcheck reports no issue found + 7. Healthcheck reports no issue found +@@ -214,6 +215,7 @@ def test_healthcheck_MO_plugin_missing_indexes(topology_st): + MO_GROUP_ATTR = 'creatorsname' + + standalone = topology_st.standalone ++ standalone.config.set("nsslapd-accesslog-logbuffering", "on") + + log.info('Enable MO plugin') + plugin = MemberOfPlugin(standalone) +@@ -236,6 +238,87 @@ def test_healthcheck_MO_plugin_missing_indexes(topology_st): + standalone.restart() + + ++def test_healthcheck_MO_plugin_substring_index(topology_st): ++ """Check if HealthCheck returns DSMOLE0002 code when the ++ member, uniquemember attribute contains a substring index type ++ ++ :id: 10954811-24ac-4886-8183-e30892f8e02d ++ :setup: Standalone instance ++ :steps: ++ 1. Create DS instance ++ 2. Configure the instance with MO Plugin ++ 3. Change index type to substring for member attribute ++ 4. Use HealthCheck without --json option ++ 5. Use HealthCheck with --json option ++ 6. Change index type back to equality for member attribute ++ 7. Use HealthCheck without --json option ++ 8. Use HealthCheck with --json option ++ 9. Change index type to substring for uniquemember attribute ++ 10. Use HealthCheck without --json option ++ 11. Use HealthCheck with --json option ++ 12. Change index type back to equality for uniquemember attribute ++ 13. Use HealthCheck without --json option ++ 14. Use HealthCheck with --json option ++ ++ :expectedresults: ++ 1. Success ++ 2. Success ++ 3. Success ++ 4. Healthcheck reports DSMOLE0002 code and related details ++ 5. Healthcheck reports DSMOLE0002 code and related details ++ 6. Success ++ 7. Healthcheck reports no issue found ++ 8. Healthcheck reports no issue found ++ 9. Success ++ 10. Healthcheck reports DSMOLE0002 code and related details ++ 11. Healthcheck reports DSMOLE0002 code and related details ++ 12. Success ++ 13. Healthcheck reports no issue found ++ 14. Healthcheck reports no issue found ++ """ ++ ++ RET_CODE = 'DSMOLE0002' ++ MEMBER_DN = 'cn=member,cn=index,cn=userroot,cn=ldbm database,cn=plugins,cn=config' ++ UNIQUE_MEMBER_DN = 'cn=uniquemember,cn=index,cn=userroot,cn=ldbm database,cn=plugins,cn=config' ++ ++ standalone = topology_st.standalone ++ standalone.config.set("nsslapd-accesslog-logbuffering", "on") ++ ++ log.info('Enable MO plugin') ++ plugin = MemberOfPlugin(standalone) ++ plugin.disable() ++ plugin.enable() ++ ++ log.info('Change the index type of the member attribute index to substring') ++ index = Index(topology_st.standalone, MEMBER_DN) ++ index.replace('nsIndexType', 'sub') ++ ++ run_healthcheck_and_flush_log(topology_st, standalone, json=False, searched_code=RET_CODE) ++ run_healthcheck_and_flush_log(topology_st, standalone, json=True, searched_code=RET_CODE) ++ ++ log.info('Set the index type of the member attribute index back to eq') ++ index.replace('nsIndexType', 'eq') ++ ++ run_healthcheck_and_flush_log(topology_st, standalone, json=False, searched_code=CMD_OUTPUT) ++ run_healthcheck_and_flush_log(topology_st, standalone, json=True, searched_code=JSON_OUTPUT) ++ ++ log.info('Change the index type of the uniquemember attribute index to substring') ++ index = Index(topology_st.standalone, UNIQUE_MEMBER_DN) ++ index.replace('nsIndexType', 'sub') ++ ++ run_healthcheck_and_flush_log(topology_st, standalone, json=False, searched_code=RET_CODE) ++ run_healthcheck_and_flush_log(topology_st, standalone, json=True, searched_code=RET_CODE) ++ ++ log.info('Set the index type of the uniquemember attribute index back to eq') ++ index.replace('nsIndexType', 'eq') ++ ++ run_healthcheck_and_flush_log(topology_st, standalone, json=False, searched_code=CMD_OUTPUT) ++ run_healthcheck_and_flush_log(topology_st, standalone, json=True, searched_code=JSON_OUTPUT) ++ ++ # Restart the instance after changing the plugin to avoid breaking the other tests ++ standalone.restart() ++ ++ + @pytest.mark.xfail(ds_is_older("1.4.1"), reason="Not implemented") + def test_healthcheck_virtual_attr_incorrectly_indexed(topology_st): + """Check if HealthCheck returns DSVIRTLE0001 code +diff --git a/src/lib389/lib389/lint.py b/src/lib389/lib389/lint.py +index d0747f0f4..460bf64fc 100644 +--- a/src/lib389/lib389/lint.py ++++ b/src/lib389/lib389/lint.py +@@ -270,6 +270,21 @@ database after adding the missing index type. Here is an example using dsconf: + """ + } + ++DSMOLE0002 = { ++ 'dsle': 'DSMOLE0002', ++ 'severity': 'LOW', ++ 'description': 'Removal of a member can be slow ', ++ 'items': ['cn=memberof plugin,cn=plugins,cn=config', ], ++ 'detail': """If the substring index is configured for a membership attribute. The removal of a member ++from the large group can be slow. ++ ++""", ++ 'fix': """If not required, you can remove the substring index type using dsconf: ++ ++ # dsconf slapd-YOUR_INSTANCE backend index set --attr=ATTR BACKEND --del-type=sub ++""" ++} ++ + # Disk Space check. Note - PARTITION is replaced by the calling function + DSDSLE0001 = { + 'dsle': 'DSDSLE0001', +diff --git a/src/lib389/lib389/plugins.py b/src/lib389/lib389/plugins.py +index 67af93a14..31bbfa502 100644 +--- a/src/lib389/lib389/plugins.py ++++ b/src/lib389/lib389/plugins.py +@@ -12,7 +12,7 @@ import copy + import os.path + from lib389 import tasks + from lib389._mapped_object import DSLdapObjects, DSLdapObject +-from lib389.lint import DSRILE0001, DSRILE0002, DSMOLE0001 ++from lib389.lint import DSRILE0001, DSRILE0002, DSMOLE0001, DSMOLE0002 + from lib389.utils import ensure_str, ensure_list_bytes + from lib389.schema import Schema + from lib389._constants import ( +@@ -827,6 +827,41 @@ class MemberOfPlugin(Plugin): + report['check'] = f'memberof:attr_indexes' + yield report + ++ def _lint_member_substring_index(self): ++ if self.status(): ++ from lib389.backend import Backends ++ backends = Backends(self._instance).list() ++ membership_attrs = ['member', 'uniquemember'] ++ container = self.get_attr_val_utf8_l("nsslapd-plugincontainerscope") ++ for backend in backends: ++ suffix = backend.get_attr_val_utf8_l('nsslapd-suffix') ++ if suffix == "cn=changelog": ++ # Always skip retro changelog ++ continue ++ if container is not None: ++ # Check if this backend is in the scope ++ if not container.endswith(suffix): ++ # skip this backend that is not in the scope ++ continue ++ indexes = backend.get_indexes() ++ for attr in membership_attrs: ++ report = copy.deepcopy(DSMOLE0002) ++ try: ++ index = indexes.get(attr) ++ types = index.get_attr_vals_utf8_l("nsIndexType") ++ if "sub" in types: ++ report['detail'] = report['detail'].replace('ATTR', attr) ++ report['detail'] = report['detail'].replace('BACKEND', suffix) ++ report['fix'] = report['fix'].replace('ATTR', attr) ++ report['fix'] = report['fix'].replace('BACKEND', suffix) ++ report['fix'] = report['fix'].replace('YOUR_INSTANCE', self._instance.serverid) ++ report['items'].append(suffix) ++ report['items'].append(attr) ++ report['check'] = f'attr:substring_index' ++ yield report ++ except KeyError: ++ continue ++ + def get_attr(self): + """Get memberofattr attribute""" + +-- +2.48.0 + diff --git a/0006-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch b/0006-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch new file mode 100644 index 0000000..5173452 --- /dev/null +++ b/0006-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch @@ -0,0 +1,70 @@ +From dcb6298db5bfef4b2541f7c52682d153b424bfa7 Mon Sep 17 00:00:00 2001 +From: James Chapman +Date: Tue, 4 Feb 2025 15:40:16 +0000 +Subject: [PATCH] Issue 6566 - RI plugin failure to handle a modrdn for rename + of member of multiple groups (#6567) + +Bug description: +With AM and RI plugins enabled, the rename of a user that is part of multiple groups +fails with a "value exists" error. + +Fix description: +For a modrdn the RI plugin creates a new DN, before a modify is attempted check +if the new DN already exists in the attr being updated. + +Fixes: https://github.com/389ds/389-ds-base/issues/6566 + +Reviewed by: @progier389 , @tbordaz (Thank you) +--- + ldap/servers/plugins/referint/referint.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/ldap/servers/plugins/referint/referint.c b/ldap/servers/plugins/referint/referint.c +index 468fdc239..218863ea5 100644 +--- a/ldap/servers/plugins/referint/referint.c ++++ b/ldap/servers/plugins/referint/referint.c +@@ -924,6 +924,7 @@ _update_all_per_mod(Slapi_DN *entrySDN, /* DN of the searched entry */ + { + Slapi_Mods *smods = NULL; + char *newDN = NULL; ++ struct berval bv = {0}; + char **dnParts = NULL; + char *sval = NULL; + char *newvalue = NULL; +@@ -1026,22 +1027,30 @@ _update_all_per_mod(Slapi_DN *entrySDN, /* DN of the searched entry */ + } + /* else: normalize_rc < 0) Ignore the DN normalization error for now. */ + ++ bv.bv_val = newDN; ++ bv.bv_len = strlen(newDN); + p = PL_strstr(sval, slapi_sdn_get_ndn(origDN)); + if (p == sval) { + /* (case 1) */ + slapi_mods_add_string(smods, LDAP_MOD_DELETE, attrName, sval); +- slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newDN); +- ++ /* Add only if the attr value does not exist */ ++ if (VALUE_PRESENT != attr_value_find_wsi(attr, &bv, &v)) { ++ slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newDN); ++ } + } else if (p) { + /* (case 2) */ + slapi_mods_add_string(smods, LDAP_MOD_DELETE, attrName, sval); + *p = '\0'; + newvalue = slapi_ch_smprintf("%s%s", sval, newDN); +- slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newvalue); ++ /* Add only if the attr value does not exist */ ++ if (VALUE_PRESENT != attr_value_find_wsi(attr, &bv, &v)) { ++ slapi_mods_add_string(smods, LDAP_MOD_ADD, attrName, newvalue); ++ } + slapi_ch_free_string(&newvalue); + } + /* else: value does not include the modified DN. Ignore it. */ + slapi_ch_free_string(&sval); ++ bv = (struct berval){0}; + } + rc = _do_modify(mod_pb, entrySDN, slapi_mods_get_ldapmods_byref(smods)); + if (rc) { +-- +2.48.0 + diff --git a/0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch b/0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch new file mode 100644 index 0000000..d9528d1 --- /dev/null +++ b/0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch @@ -0,0 +1,566 @@ +From 8e3a484f88fc9f9a3fcdfdd685d4ad2ed3cbe5d9 Mon Sep 17 00:00:00 2001 +From: progier389 +Date: Fri, 28 Jun 2024 18:56:49 +0200 +Subject: [PATCH] Issue 6229 - After an initial failure, subsequent online + backups fail (#6230) + +* Issue 6229 - After an initial failure, subsequent online backups will not work + +Several issues related to backup task error handling: +Backends stay busy after the failure +Exit code is 0 in some cases +Crash if failing to open the backup directory +And a more general one: +lib389 Task DN collision + +Solutions: +Always reset the busy flags that have been set +Ensure that 0 is not returned in error case +Avoid closing NULL directory descriptor +Use a timestamp having milliseconds precision to create the task DN + +Issue: #6229 + +Reviewed by: @droideck (Thanks!) + +(cherry picked from commit 04a0b6ac776a1d588ec2e10ff651e5015078ad21) +--- + ldap/servers/slapd/back-ldbm/archive.c | 45 +++++----- + .../slapd/back-ldbm/db-mdb/mdb_layer.c | 3 + + src/lib389/lib389/__init__.py | 10 +-- + src/lib389/lib389/tasks.py | 82 +++++++++---------- + 4 files changed, 70 insertions(+), 70 deletions(-) + +diff --git a/ldap/servers/slapd/back-ldbm/archive.c b/ldap/servers/slapd/back-ldbm/archive.c +index 0460a42f6..6658cc80a 100644 +--- a/ldap/servers/slapd/back-ldbm/archive.c ++++ b/ldap/servers/slapd/back-ldbm/archive.c +@@ -16,6 +16,8 @@ + #include "back-ldbm.h" + #include "dblayer.h" + ++#define NO_OBJECT ((Object*)-1) ++ + int + ldbm_temporary_close_all_instances(Slapi_PBlock *pb) + { +@@ -270,6 +272,7 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) + int run_from_cmdline = 0; + Slapi_Task *task; + struct stat sbuf; ++ Object *last_busy_inst_obj = NO_OBJECT; + + slapi_pblock_get(pb, SLAPI_PLUGIN_PRIVATE, &li); + slapi_pblock_get(pb, SLAPI_SEQ_VAL, &rawdirectory); +@@ -380,13 +383,12 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) + + /* to avoid conflict w/ import, do this check for commandline, as well */ + { +- Object *inst_obj, *inst_obj2; + ldbm_instance *inst = NULL; + + /* server is up -- mark all backends busy */ +- for (inst_obj = objset_first_obj(li->li_instance_set); inst_obj; +- inst_obj = objset_next_obj(li->li_instance_set, inst_obj)) { +- inst = (ldbm_instance *)object_get_data(inst_obj); ++ for (last_busy_inst_obj = objset_first_obj(li->li_instance_set); last_busy_inst_obj; ++ last_busy_inst_obj = objset_next_obj(li->li_instance_set, last_busy_inst_obj)) { ++ inst = (ldbm_instance *)object_get_data(last_busy_inst_obj); + + /* check if an import/restore is already ongoing... */ + if (instance_set_busy(inst) != 0 || dblayer_in_import(inst) != 0) { +@@ -400,20 +402,6 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) + "another task and cannot be disturbed.", + inst->inst_name); + } +- +- /* painfully, we have to clear the BUSY flags on the +- * backends we'd already marked... +- */ +- for (inst_obj2 = objset_first_obj(li->li_instance_set); +- inst_obj2 && (inst_obj2 != inst_obj); +- inst_obj2 = objset_next_obj(li->li_instance_set, +- inst_obj2)) { +- inst = (ldbm_instance *)object_get_data(inst_obj2); +- instance_set_not_busy(inst); +- } +- if (inst_obj2 && inst_obj2 != inst_obj) +- object_release(inst_obj2); +- object_release(inst_obj); + goto err; + } + } +@@ -427,18 +415,26 @@ ldbm_back_ldbm2archive(Slapi_PBlock *pb) + goto err; + } + +- if (!run_from_cmdline) { ++err: ++ /* Clear all BUSY flags that have been previously set */ ++ if (last_busy_inst_obj != NO_OBJECT) { + ldbm_instance *inst; + Object *inst_obj; + +- /* none of these backends are busy anymore */ +- for (inst_obj = objset_first_obj(li->li_instance_set); inst_obj; ++ for (inst_obj = objset_first_obj(li->li_instance_set); ++ inst_obj && (inst_obj != last_busy_inst_obj); + inst_obj = objset_next_obj(li->li_instance_set, inst_obj)) { + inst = (ldbm_instance *)object_get_data(inst_obj); + instance_set_not_busy(inst); + } ++ if (last_busy_inst_obj != NULL) { ++ /* release last seen object for aborted objset_next_obj iterations */ ++ if (inst_obj != NULL) { ++ object_release(inst_obj); ++ } ++ object_release(last_busy_inst_obj); ++ } + } +-err: + if (return_value) { + if (dir_bak) { + slapi_log_err(SLAPI_LOG_ERR, +@@ -727,7 +723,10 @@ ldbm_archive_config(char *bakdir, Slapi_Task *task) + } + + error: +- PR_CloseDir(dirhandle); ++ if (NULL != dirhandle) { ++ PR_CloseDir(dirhandle); ++ dirhandle = NULL; ++ } + dse_backup_unlock(); + slapi_ch_free_string(&backup_config_dir); + slapi_ch_free_string(&dse_file); +diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c +index 4a7beedeb..3ecc47170 100644 +--- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c ++++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_layer.c +@@ -983,6 +983,9 @@ dbmdb_backup(struct ldbminfo *li, char *dest_dir, Slapi_Task *task) + if (ldbm_archive_config(dest_dir, task) != 0) { + slapi_log_err(SLAPI_LOG_ERR, "dbmdb_backup", + "Backup of config files failed or is incomplete\n"); ++ if (0 == return_value) { ++ return_value = -1; ++ } + } + + goto bail; +diff --git a/src/lib389/lib389/__init__.py b/src/lib389/lib389/__init__.py +index 368741a66..cb372c138 100644 +--- a/src/lib389/lib389/__init__.py ++++ b/src/lib389/lib389/__init__.py +@@ -69,7 +69,7 @@ from lib389.utils import ( + get_user_is_root) + from lib389.paths import Paths + from lib389.nss_ssl import NssSsl +-from lib389.tasks import BackupTask, RestoreTask ++from lib389.tasks import BackupTask, RestoreTask, Task + from lib389.dseldif import DSEldif + + # mixin +@@ -1424,7 +1424,7 @@ class DirSrv(SimpleLDAPObject, object): + name, self.ds_paths.prefix) + + # create the archive +- name = "backup_%s_%s.tar.gz" % (self.serverid, time.strftime("%m%d%Y_%H%M%S")) ++ name = "backup_%s_%s.tar.gz" % (self.serverid, Task.get_timestamp()) + backup_file = os.path.join(backup_dir, name) + tar = tarfile.open(backup_file, "w:gz") + tar.extraction_filter = (lambda member, path: member) +@@ -2810,7 +2810,7 @@ class DirSrv(SimpleLDAPObject, object): + else: + # No output file specified. Use the default ldif location/name + cmd.append('-a') +- tnow = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") ++ tnow = Task.get_timestamp() + if bename: + ldifname = os.path.join(self.ds_paths.ldif_dir, "%s-%s-%s.ldif" % (self.serverid, bename, tnow)) + else: +@@ -2881,7 +2881,7 @@ class DirSrv(SimpleLDAPObject, object): + + if archive_dir is None: + # Use the instance name and date/time as the default backup name +- tnow = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") ++ tnow = Task.get_timestamp() + archive_dir = os.path.join(self.ds_paths.backup_dir, "%s-%s" % (self.serverid, tnow)) + elif not archive_dir.startswith("/"): + # Relative path, append it to the bak directory +@@ -3506,7 +3506,7 @@ class DirSrv(SimpleLDAPObject, object): + + if archive is None: + # Use the instance name and date/time as the default backup name +- tnow = datetime.now().strftime("%Y_%m_%d_%H_%M_%S") ++ tnow = Task.get_timestamp() + if self.serverid is not None: + backup_dir_name = "%s-%s" % (self.serverid, tnow) + else: +diff --git a/src/lib389/lib389/tasks.py b/src/lib389/lib389/tasks.py +index 6c2adb5b2..6bf302862 100644 +--- a/src/lib389/lib389/tasks.py ++++ b/src/lib389/lib389/tasks.py +@@ -118,7 +118,7 @@ class Task(DSLdapObject): + return super(Task, self).create(rdn, properties, basedn) + + @staticmethod +- def _get_task_date(): ++ def get_timestamp(): + """Return a timestamp to use in naming new task entries.""" + + return datetime.now().isoformat() +@@ -132,7 +132,7 @@ class AutomemberRebuildMembershipTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'automember_rebuild_' + Task._get_task_date() ++ self.cn = 'automember_rebuild_' + Task.get_timestamp() + dn = "cn=" + self.cn + "," + DN_AUTOMEMBER_REBUILD_TASK + + super(AutomemberRebuildMembershipTask, self).__init__(instance, dn) +@@ -147,7 +147,7 @@ class AutomemberAbortRebuildTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'automember_abort_' + Task._get_task_date() ++ self.cn = 'automember_abort_' + Task.get_timestamp() + dn = "cn=" + self.cn + "," + DN_AUTOMEMBER_ABORT_REBUILD_TASK + + super(AutomemberAbortRebuildTask, self).__init__(instance, dn) +@@ -161,7 +161,7 @@ class FixupLinkedAttributesTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'fixup_linked_attrs_' + Task._get_task_date() ++ self.cn = 'fixup_linked_attrs_' + Task.get_timestamp() + dn = "cn=" + self.cn + "," + DN_FIXUP_LINKED_ATTIBUTES + + super(FixupLinkedAttributesTask, self).__init__(instance, dn) +@@ -175,7 +175,7 @@ class MemberUidFixupTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'memberUid_fixup_' + Task._get_task_date() ++ self.cn = 'memberUid_fixup_' + Task.get_timestamp() + dn = f"cn={self.cn},cn=memberuid task,cn=tasks,cn=config" + + super(MemberUidFixupTask, self).__init__(instance, dn) +@@ -190,7 +190,7 @@ class MemberOfFixupTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'memberOf_fixup_' + Task._get_task_date() ++ self.cn = 'memberOf_fixup_' + Task.get_timestamp() + dn = "cn=" + self.cn + "," + DN_MBO_TASK + + super(MemberOfFixupTask, self).__init__(instance, dn) +@@ -205,7 +205,7 @@ class USNTombstoneCleanupTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'usn_cleanup_' + Task._get_task_date() ++ self.cn = 'usn_cleanup_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=USN tombstone cleanup task," + DN_TASKS + + super(USNTombstoneCleanupTask, self).__init__(instance, dn) +@@ -225,7 +225,7 @@ class csngenTestTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'csngenTest_' + Task._get_task_date() ++ self.cn = 'csngenTest_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=csngen_test," + DN_TASKS + super(csngenTestTask, self).__init__(instance, dn) + +@@ -238,7 +238,7 @@ class EntryUUIDFixupTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'entryuuid_fixup_' + Task._get_task_date() ++ self.cn = 'entryuuid_fixup_' + Task.get_timestamp() + dn = "cn=" + self.cn + "," + DN_EUUID_TASK + super(EntryUUIDFixupTask, self).__init__(instance, dn) + self._must_attributes.extend(['basedn']) +@@ -252,7 +252,7 @@ class DBCompactTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'compact_db_' + Task._get_task_date() ++ self.cn = 'compact_db_' + Task.get_timestamp() + dn = "cn=" + self.cn + "," + DN_COMPACTDB_TASK + super(DBCompactTask, self).__init__(instance, dn) + +@@ -265,7 +265,7 @@ class SchemaReloadTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'schema_reload_' + Task._get_task_date() ++ self.cn = 'schema_reload_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=schema reload task," + DN_TASKS + super(SchemaReloadTask, self).__init__(instance, dn) + +@@ -278,7 +278,7 @@ class SyntaxValidateTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'syntax_validate_' + Task._get_task_date() ++ self.cn = 'syntax_validate_' + Task.get_timestamp() + dn = f"cn={self.cn},cn=syntax validate,cn=tasks,cn=config" + + super(SyntaxValidateTask, self).__init__(instance, dn) +@@ -295,7 +295,7 @@ class AbortCleanAllRUVTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'abortcleanallruv_' + Task._get_task_date() ++ self.cn = 'abortcleanallruv_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=abort cleanallruv," + DN_TASKS + + super(AbortCleanAllRUVTask, self).__init__(instance, dn) +@@ -312,7 +312,7 @@ class CleanAllRUVTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'cleanallruv_' + Task._get_task_date() ++ self.cn = 'cleanallruv_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=cleanallruv," + DN_TASKS + self._properties = None + +@@ -359,7 +359,7 @@ class ImportTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'import_' + Task._get_task_date() ++ self.cn = 'import_' + Task.get_timestamp() + dn = "cn=%s,%s" % (self.cn, DN_IMPORT_TASK) + self._properties = None + +@@ -388,7 +388,7 @@ class ExportTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'export_' + Task._get_task_date() ++ self.cn = 'export_' + Task.get_timestamp() + dn = "cn=%s,%s" % (self.cn, DN_EXPORT_TASK) + self._properties = None + +@@ -411,7 +411,7 @@ class BackupTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'backup_' + Task._get_task_date() ++ self.cn = 'backup_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=backup," + DN_TASKS + self._properties = None + +@@ -426,7 +426,7 @@ class RestoreTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'restore_' + Task._get_task_date() ++ self.cn = 'restore_' + Task.get_timestamp() + dn = "cn=" + self.cn + ",cn=restore," + DN_TASKS + self._properties = None + +@@ -513,7 +513,7 @@ class Tasks(object): + raise ValueError("Import file (%s) does not exist" % input_file) + + # Prepare the task entry +- cn = "import_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = "import_" + Task.get_timestamp() + dn = "cn=%s,%s" % (cn, DN_IMPORT_TASK) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -581,7 +581,7 @@ class Tasks(object): + raise ValueError("output_file is mandatory") + + # Prepare the task entry +- cn = "export_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = "export_" + Task.get_timestamp() + dn = "cn=%s,%s" % (cn, DN_EXPORT_TASK) + entry = Entry(dn) + entry.update({ +@@ -637,7 +637,7 @@ class Tasks(object): + raise ValueError("You must specify a backup directory.") + + # build the task entry +- cn = "backup_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = "backup_" + Task.get_timestamp() + dn = "cn=%s,%s" % (cn, DN_BACKUP_TASK) + entry = Entry(dn) + entry.update({ +@@ -694,7 +694,7 @@ class Tasks(object): + raise ValueError("Backup file (%s) does not exist" % backup_dir) + + # build the task entry +- cn = "restore_" + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = "restore_" + Task.get_timestamp() + dn = "cn=%s,%s" % (cn, DN_RESTORE_TASK) + entry = Entry(dn) + entry.update({ +@@ -789,7 +789,7 @@ class Tasks(object): + attrs.append(attr) + else: + attrs.append(attrname) +- cn = "index_vlv_%s" % (time.strftime("%m%d%Y_%H%M%S", time.localtime())) ++ cn = "index_vlv_%s" % (Task.get_timestamp()) + dn = "cn=%s,%s" % (cn, DN_INDEX_TASK) + entry = Entry(dn) + entry.update({ +@@ -803,7 +803,7 @@ class Tasks(object): + # + # Reindex all attributes - gather them first... + # +- cn = "index_all_%s" % (time.strftime("%m%d%Y_%H%M%S", time.localtime())) ++ cn = "index_all_%s" % (Task.get_timestamp()) + dn = ('cn=%s,cn=ldbm database,cn=plugins,cn=config' % backend) + try: + indexes = self.conn.search_s(dn, ldap.SCOPE_SUBTREE, '(objectclass=nsIndex)') +@@ -815,7 +815,7 @@ class Tasks(object): + # + # Reindex specific attributes + # +- cn = "index_attrs_%s" % (time.strftime("%m%d%Y_%H%M%S", time.localtime())) ++ cn = "index_attrs_%s" % (Task.get_timestamp()) + if isinstance(attrname, (tuple, list)): + # Need to guarantee this is a list (and not a tuple) + for attr in attrname: +@@ -903,8 +903,7 @@ class Tasks(object): + + suffix = ents[0].getValue(attr) + +- cn = "fixupmemberof_" + time.strftime("%m%d%Y_%H%M%S", +- time.localtime()) ++ cn = "fixupmemberof_" + Task.get_timestamp() + dn = "cn=%s,%s" % (cn, DN_MBO_TASK) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -965,8 +964,7 @@ class Tasks(object): + if len(ents) != 1: + raise ValueError("invalid backend name: %s" % bename) + +- cn = "fixupTombstone_" + time.strftime("%m%d%Y_%H%M%S", +- time.localtime()) ++ cn = "fixupTombstone_" + Task.get_timestamp() + dn = "cn=%s,%s" % (cn, DN_TOMB_FIXUP_TASK) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1019,7 +1017,7 @@ class Tasks(object): + @return exit code + ''' + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=automember rebuild membership,cn=tasks,cn=config' % cn) + + entry = Entry(dn) +@@ -1077,7 +1075,7 @@ class Tasks(object): + if not ldif_out: + raise ValueError("Missing ldif_out") + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=automember export updates,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1129,7 +1127,7 @@ class Tasks(object): + if not ldif_out or not ldif_in: + raise ValueError("Missing ldif_out and/or ldif_in") + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=automember map updates,cn=tasks,cn=config' % cn) + + entry = Entry(dn) +@@ -1175,7 +1173,7 @@ class Tasks(object): + @return exit code + ''' + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=fixup linked attributes,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1219,7 +1217,7 @@ class Tasks(object): + @return exit code + ''' + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=schema reload task,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1264,7 +1262,7 @@ class Tasks(object): + @return exit code + ''' + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=memberuid task,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1311,7 +1309,7 @@ class Tasks(object): + @return exit code + ''' + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=syntax validate,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1358,7 +1356,7 @@ class Tasks(object): + @return exit code + ''' + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=USN tombstone cleanup task,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1413,7 +1411,7 @@ class Tasks(object): + if not configfile: + raise ValueError("Missing required paramter: configfile") + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=sysconfig reload,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1464,7 +1462,7 @@ class Tasks(object): + if not suffix: + raise ValueError("Missing required paramter: suffix") + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=cleanallruv,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1516,7 +1514,7 @@ class Tasks(object): + if not suffix: + raise ValueError("Missing required paramter: suffix") + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=abort cleanallruv,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1571,7 +1569,7 @@ class Tasks(object): + if not nsArchiveDir: + raise ValueError("Missing required paramter: nsArchiveDir") + +- cn = 'task-' + time.strftime("%m%d%Y_%H%M%S", time.localtime()) ++ cn = 'task-' + Task.get_timestamp() + dn = ('cn=%s,cn=upgradedb,cn=tasks,cn=config' % cn) + entry = Entry(dn) + entry.setValues('objectclass', 'top', 'extensibleObject') +@@ -1616,6 +1614,6 @@ class LDAPIMappingReloadTask(Task): + """ + + def __init__(self, instance, dn=None): +- self.cn = 'reload-' + Task._get_task_date() ++ self.cn = 'reload-' + Task.get_timestamp() + dn = f'cn={self.cn},cn=reload ldapi mappings,cn=tasks,cn=config' + super(LDAPIMappingReloadTask, self).__init__(instance, dn) +-- +2.48.0 + diff --git a/0008-Issue-6554-During-import-of-entries-without-nsUnique.patch b/0008-Issue-6554-During-import-of-entries-without-nsUnique.patch new file mode 100644 index 0000000..90a7c52 --- /dev/null +++ b/0008-Issue-6554-During-import-of-entries-without-nsUnique.patch @@ -0,0 +1,165 @@ +From 2b1b2db90c9d337166fa28e313f60828cd43de09 Mon Sep 17 00:00:00 2001 +From: tbordaz +Date: Thu, 6 Feb 2025 18:25:36 +0100 +Subject: [PATCH] Issue 6554 - During import of entries without nsUniqueId, a + supplier generates duplicate nsUniqueId (LMDB only) (#6582) + +Bug description: + During an import the entry is prepared (schema, operational + attributes, password encryption,...) before starting the + update of the database and indexes. + A step of the preparation is to assign a value to 'nsuniqueid' + operational attribute. 'nsuniqueid' must be unique. + In LMDB the preparation is done by multiple threads (workers). + In such case the 'nsuniqueid' are generated in parallel and + as it is time based several values can be duplicated. + +Fix description: + To prevent that the routine dbmdb_import_generate_uniqueid + should make sure to synchronize the workers. + +fixes: #6554 + +Reviewed by: Pierre Rogier +--- + .../tests/suites/import/import_test.py | 79 ++++++++++++++++++- + .../back-ldbm/db-mdb/mdb_import_threads.c | 11 +++ + 2 files changed, 89 insertions(+), 1 deletion(-) + +diff --git a/dirsrvtests/tests/suites/import/import_test.py b/dirsrvtests/tests/suites/import/import_test.py +index dbd921924..54d304753 100644 +--- a/dirsrvtests/tests/suites/import/import_test.py ++++ b/dirsrvtests/tests/suites/import/import_test.py +@@ -14,11 +14,13 @@ import os + import pytest + import time + import glob ++import re + import logging + import subprocess + from datetime import datetime + from lib389.topologies import topology_st as topo +-from lib389._constants import DEFAULT_SUFFIX, TaskWarning ++from lib389.topologies import topology_m2 as topo_m2 ++from lib389._constants import DEFAULT_BENAME, DEFAULT_SUFFIX, TaskWarning + from lib389.dbgen import dbgen_users + from lib389.tasks import ImportTask + from lib389.index import Indexes +@@ -688,6 +690,81 @@ def test_online_import_under_load(topo): + assert import_task.get_exit_code() == 0 + + ++def test_duplicate_nsuniqueid(topo_m2, request): ++ """Test that after an offline import all ++ nsuniqueid are different ++ ++ :id: a2541677-a288-4633-bacf-4050cc56016d ++ :setup: MMR with 2 suppliers ++ :steps: ++ 1. stop the instance to do offline operations ++ 2. Generate a 5K users LDIF file ++ 3. Check that no uniqueid are present in the generated file ++ 4. import the generated LDIF ++ 5. export the database ++ 6. Check that that exported LDIF contains more than 5K nsuniqueid ++ 7. Check that there is no duplicate nsuniqued in exported LDIF ++ :expectedresults: ++ 1. Should succeeds ++ 2. Should succeeds ++ 3. Should succeeds ++ 4. Should succeeds ++ 5. Should succeeds ++ 6. Should succeeds ++ 7. Should succeeds ++ """ ++ m1 = topo_m2.ms["supplier1"] ++ ++ # Stop the instance ++ m1.stop() ++ ++ # Generate a test ldif (5k entries) ++ log.info("Generating LDIF...") ++ ldif_dir = m1.get_ldif_dir() ++ import_ldif = ldif_dir + '/5k_users_import.ldif' ++ dbgen_users(m1, 5000, import_ldif, DEFAULT_SUFFIX) ++ ++ # Check that the generated LDIF does not contain nsuniqueid ++ all_nsuniqueid = [] ++ with open(import_ldif, 'r') as file: ++ for line in file: ++ if line.lower().startswith("nsuniqueid: "): ++ all_nsuniqueid.append(line.split(': ')[1]) ++ log.info("import file contains " + str(len(all_nsuniqueid)) + " nsuniqueid") ++ assert len(all_nsuniqueid) == 0 ++ ++ # Import the "nsuniquied free" LDIF file ++ if not m1.ldif2db('userRoot', None, None, None, import_ldif): ++ assert False ++ ++ # Export the DB that now should contain nsuniqueid ++ export_ldif = ldif_dir + '/5k_user_export.ldif' ++ log.info("export to file " + export_ldif) ++ m1.db2ldif(bename=DEFAULT_BENAME, suffixes=[DEFAULT_SUFFIX], ++ excludeSuffixes=None, repl_data=False, ++ outputfile=export_ldif, encrypt=False) ++ ++ # Check that the export LDIF contain nsuniqueid ++ all_nsuniqueid = [] ++ with open(export_ldif, 'r') as file: ++ for line in file: ++ if line.lower().startswith("nsuniqueid: "): ++ all_nsuniqueid.append(line.split(': ')[1]) ++ log.info("export file " + export_ldif + " contains " + str(len(all_nsuniqueid)) + " nsuniqueid") ++ assert len(all_nsuniqueid) >= 5000 ++ ++ # Check that the nsuniqueid are unique ++ assert len(set(all_nsuniqueid)) == len(all_nsuniqueid) ++ ++ def fin(): ++ if os.path.exists(import_ldif): ++ os.remove(import_ldif) ++ if os.path.exists(export_ldif): ++ os.remove(export_ldif) ++ m1.start ++ ++ request.addfinalizer(fin) ++ + if __name__ == '__main__': + # Run isolated + # -s for DEBUG mode +diff --git a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c +index 707a110c5..0f445bb56 100644 +--- a/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c ++++ b/ldap/servers/slapd/back-ldbm/db-mdb/mdb_import_threads.c +@@ -610,10 +610,20 @@ dbmdb_import_generate_uniqueid(ImportJob *job, Slapi_Entry *e) + { + const char *uniqueid = slapi_entry_get_uniqueid(e); + int rc = UID_SUCCESS; ++ static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; + + if (!uniqueid && (job->uuid_gen_type != SLAPI_UNIQUEID_GENERATE_NONE)) { + char *newuniqueid; + ++ /* With 'mdb' we have several workers generating nsuniqueid ++ * we need to serialize them to prevent generating duplicate value ++ * From performance pov it only impacts import ++ * The default value is SLAPI_UNIQUEID_GENERATE_TIME_BASED so ++ * the only syscall is clock_gettime and then string formating ++ * that should limit contention ++ */ ++ pthread_mutex_lock(&mutex); ++ + /* generate id based on dn */ + if (job->uuid_gen_type == SLAPI_UNIQUEID_GENERATE_NAME_BASED) { + char *dn = slapi_entry_get_dn(e); +@@ -624,6 +634,7 @@ dbmdb_import_generate_uniqueid(ImportJob *job, Slapi_Entry *e) + /* time based */ + rc = slapi_uniqueIDGenerateString(&newuniqueid); + } ++ pthread_mutex_unlock(&mutex); + + if (rc == UID_SUCCESS) { + slapi_entry_set_uniqueid(e, newuniqueid); +-- +2.48.0 + diff --git a/389-ds-base.spec b/389-ds-base.spec index 15c836e..57992bb 100644 --- a/389-ds-base.spec +++ b/389-ds-base.spec @@ -493,7 +493,7 @@ Requires: json-c # Log compression Requires: zlib-devel # logconv.py, MIME type -Requires: python-magic +Requires: python3-file-magic # Picks up our systemd deps. %{?systemd_requires} @@ -507,6 +507,15 @@ Source4: 389-ds-base.sysusers Source5: https://fedorapeople.org/groups/389ds/libdb-5.3.28-59.tar.bz2 %endif +Patch: 0001-Issue-6544-logconv.py-python3-magic-conflicts-with-p.patch +Patch: 0002-Issue-6374-nsslapd-mdb-max-dbs-autotuning-doesn-t-wo.patch +Patch: 0003-Issue-6090-Fix-dbscan-options-and-man-pages-6315.patch +Patch: 0004-Issue-6489-After-log-rotation-refresh-the-FD-pointer.patch +Patch: 0005-Issue-6436-MOD-on-a-large-group-slow-if-substring-in.patch +Patch: 0006-Issue-6566-RI-plugin-failure-to-handle-a-modrdn-for-.patch +Patch: 0007-Issue-6229-After-an-initial-failure-subsequent-onlin.patch +Patch: 0008-Issue-6554-During-import-of-entries-without-nsUnique.patch + %description 389 Directory Server is an LDAPv3 compliant server. The base package includes the LDAP server and command line utilities for server administration.