[Pkg-fedora-ds-maintainers] 389-ds-base: Changes to 'master'

Timo Aaltonen tjaalton at moszumanska.debian.org
Tue Dec 12 15:33:08 UTC 2017


 Makefile.am                                                     |   19 
 VERSION.sh                                                      |    2 
 debian/changelog                                                |    9 
 debian/control                                                  |   26 
 debian/python3-dirsrvtests.install                              |    2 
 debian/python3-lib389.install                                   |    2 
 debian/rules                                                    |   14 
 dirsrvtests/tests/data/ticket49441/binary.ldif                  |  858 ++
 dirsrvtests/tests/suites/config/removed_config_49298_test.py    |   81 
 dirsrvtests/tests/suites/cos/indirect_cos_test.py               |  172 
 dirsrvtests/tests/suites/replication/changelog_trimming_test.py |  173 
 dirsrvtests/tests/suites/replication/replica_config_test.py     |  397 +
 dirsrvtests/tests/suites/schema/schema_reload_test.py           |  153 
 dirsrvtests/tests/tickets/ticket49064_test.py                   |  261 
 dirsrvtests/tests/tickets/ticket49386_test.py                   |  150 
 dirsrvtests/tests/tickets/ticket49441_test.py                   |   74 
 ldap/admin/src/logconv.pl                                       |   12 
 ldap/admin/src/scripts/50removeLegacyReplication.ldif           |    2 
 ldap/admin/src/scripts/60removeLegacyReplication.ldif           |    2 
 ldap/admin/src/scripts/DSUtil.pm.in                             |   18 
 ldap/admin/src/scripts/ns-activate.pl.in                        |    9 
 ldap/admin/src/scripts/repl-monitor.pl.in                       |    4 
 ldap/admin/src/scripts/status-dirsrv.in                         |    4 
 ldap/schema/01core389.ldif                                      |    3 
 ldap/servers/plugins/cos/cos_cache.c                            |   34 
 ldap/servers/plugins/http/http_impl.c                           |    1 
 ldap/servers/plugins/memberof/memberof.c                        |  346 -
 ldap/servers/plugins/memberof/memberof.h                        |   19 
 ldap/servers/plugins/memberof/memberof_config.c                 |  166 
 ldap/servers/plugins/replication/cl5_api.c                      |   39 
 ldap/servers/plugins/replication/repl5.h                        |   55 
 ldap/servers/plugins/replication/repl5_agmt.c                   |  173 
 ldap/servers/plugins/replication/repl5_replica.c                |  310 
 ldap/servers/plugins/replication/repl5_replica_config.c         |  164 
 ldap/servers/plugins/replication/repl5_ruv.c                    |   13 
 ldap/servers/plugins/replication/replutil.c                     |   26 
 ldap/servers/plugins/replication/urp.c                          |   10 
 ldap/servers/plugins/roles/roles_cache.c                        |    8 
 ldap/servers/plugins/syntaxes/string.c                          |    1 
 ldap/servers/slapd/attrsyntax.c                                 |    8 
 ldap/servers/slapd/back-ldbm/dblayer.c                          |   66 
 ldap/servers/slapd/back-ldbm/dbversion.c                        |    2 
 ldap/servers/slapd/back-ldbm/idl_set.c                          |    5 
 ldap/servers/slapd/back-ldbm/import.c                           |    2 
 ldap/servers/slapd/back-ldbm/index.c                            |   24 
 ldap/servers/slapd/back-ldbm/ldbm_config.c                      |    2 
 ldap/servers/slapd/config.c                                     |   15 
 ldap/servers/slapd/connection.c                                 |   14 
 ldap/servers/slapd/conntable.c                                  |    2 
 ldap/servers/slapd/dse.c                                        |   42 
 ldap/servers/slapd/entry.c                                      |   11 
 ldap/servers/slapd/libglobs.c                                   |  173 
 ldap/servers/slapd/log.c                                        |   68 
 ldap/servers/slapd/mapping_tree.c                               |   26 
 ldap/servers/slapd/modify.c                                     |    1 
 ldap/servers/slapd/object.c                                     |    7 
 ldap/servers/slapd/pblock.c                                     |  166 
 ldap/servers/slapd/plugin.c                                     |    3 
 ldap/servers/slapd/proto-slap.h                                 |    1 
 ldap/servers/slapd/psearch.c                                    |    6 
 ldap/servers/slapd/referral.c                                   |   18 
 ldap/servers/slapd/security_wrappers.c                          |    6 
 ldap/servers/slapd/slapi-plugin.h                               |   83 
 ldap/servers/slapd/slapi_counter.c                              |  113 
 ldap/servers/slapd/slapi_pal.c                                  |   11 
 ldap/servers/slapd/ssl.c                                        |   24 
 ldap/servers/slapd/task.c                                       |    8 
 ldap/servers/slapd/thread_data.c                                |    2 
 ldap/servers/slapd/valueset.c                                   |  175 
 ldap/servers/slapd/vattr.c                                      |   28 
 ldap/servers/snmp/main.c                                        |   13 
 rpm/389-ds-base.spec.in                                         |   98 
 src/lib389/.coveragerc                                          |    2 
 src/lib389/.gitignore                                           |   10 
 src/lib389/LICENSE                                              |  675 ++
 src/lib389/MANIFEST.in                                          |    2 
 src/lib389/Makefile                                             |   33 
 src/lib389/README.md                                            |   26 
 src/lib389/VERSION                                              |    1 
 src/lib389/bug_harness.py                                       |  107 
 src/lib389/cli/dsconf                                           |  124 
 src/lib389/cli/dscreate                                         |   84 
 src/lib389/cli/dsctl                                            |  101 
 src/lib389/cli/dsidm                                            |  116 
 src/lib389/doc/Makefile                                         |  230 
 src/lib389/doc/source/accesscontrol.rst                         |    6 
 src/lib389/doc/source/aci.rst                                   |   66 
 src/lib389/doc/source/agreement.rst                             |   27 
 src/lib389/doc/source/backend.rst                               |   49 
 src/lib389/doc/source/changelog.rst                             |   22 
 src/lib389/doc/source/conf.py                                   |  335 +
 src/lib389/doc/source/config.rst                                |   47 
 src/lib389/doc/source/databases.rst                             |    7 
 src/lib389/doc/source/dirsrv_log.rst                            |   30 
 src/lib389/doc/source/domain.rst                                |   21 
 src/lib389/doc/source/dseldif.rst                               |   30 
 src/lib389/doc/source/group.rst                                 |   43 
 src/lib389/doc/source/guidelines.rst                            |  599 +
 src/lib389/doc/source/identitymanagement.rst                    |   10 
 src/lib389/doc/source/index.rst                                 |   51 
 src/lib389/doc/source/indexes.rst                               |   42 
 src/lib389/doc/source/ldclt.rst                                 |   42 
 src/lib389/doc/source/mappingtree.rst                           |   31 
 src/lib389/doc/source/monitor.rst                               |   19 
 src/lib389/doc/source/need_to_be_triaged.rst                    |   20 
 src/lib389/doc/source/organisationalunit.rst                    |   41 
 src/lib389/doc/source/passwd.rst                                |   33 
 src/lib389/doc/source/paths.rst                                 |   42 
 src/lib389/doc/source/plugin.rst                                |   35 
 src/lib389/doc/source/replica.rst                               |   59 
 src/lib389/doc/source/replication.rst                           |    9 
 src/lib389/doc/source/repltools.rst                             |   43 
 src/lib389/doc/source/rootdse.rst                               |   25 
 src/lib389/doc/source/schema.rst                                |   62 
 src/lib389/doc/source/services.rst                              |   40 
 src/lib389/doc/source/task.rst                                  |   59 
 src/lib389/doc/source/user.rst                                  |   50 
 src/lib389/doc/source/utils.rst                                 |   23 
 src/lib389/dsadmin.pylintrc                                     |  236 
 src/lib389/lib389/__init__.py                                   | 3189 ++++++++++
 src/lib389/lib389/_constants.py                                 |  309 
 src/lib389/lib389/_controls.py                                  |  137 
 src/lib389/lib389/_entry.py                                     |  631 +
 src/lib389/lib389/_ldifconn.py                                  |   53 
 src/lib389/lib389/_mapped_object.py                             |  840 ++
 src/lib389/lib389/_replication.py                               |  202 
 src/lib389/lib389/aci.py                                        |  240 
 src/lib389/lib389/agreement.py                                  |  756 ++
 src/lib389/lib389/backend.py                                    |  576 +
 src/lib389/lib389/changelog.py                                  |  153 
 src/lib389/lib389/cli_base/__init__.py                          |  170 
 src/lib389/lib389/cli_base/dsrc.py                              |  118 
 src/lib389/lib389/cli_conf/__init__.py                          |    8 
 src/lib389/lib389/cli_conf/backend.py                           |   76 
 src/lib389/lib389/cli_conf/health.py                            |   61 
 src/lib389/lib389/cli_conf/plugin.py                            |  124 
 src/lib389/lib389/cli_conf/plugins/memberof.py                  |  276 
 src/lib389/lib389/cli_conf/plugins/referint.py                  |  197 
 src/lib389/lib389/cli_conf/plugins/rootdn_ac.py                 |  229 
 src/lib389/lib389/cli_conf/plugins/usn.py                       |   56 
 src/lib389/lib389/cli_conf/plugins/whoami.py                    |   16 
 src/lib389/lib389/cli_conf/schema.py                            |   53 
 src/lib389/lib389/cli_ctl/__init__.py                           |    8 
 src/lib389/lib389/cli_ctl/dbtasks.py                            |   56 
 src/lib389/lib389/cli_ctl/instance.py                           |  133 
 src/lib389/lib389/cli_idm/__init__.py                           |  114 
 src/lib389/lib389/cli_idm/account.py                            |   64 
 src/lib389/lib389/cli_idm/group.py                              |   76 
 src/lib389/lib389/cli_idm/initialise.py                         |   21 
 src/lib389/lib389/cli_idm/organisationalunit.py                 |   76 
 src/lib389/lib389/cli_idm/posixgroup.py                         |   77 
 src/lib389/lib389/cli_idm/user.py                               |   76 
 src/lib389/lib389/clitools/__init__.py                          |   79 
 src/lib389/lib389/clitools/ds_aci_lint                          |   41 
 src/lib389/lib389/clitools/ds_backend_getattr                   |   42 
 src/lib389/lib389/clitools/ds_backend_list                      |   39 
 src/lib389/lib389/clitools/ds_backend_setattr                   |   43 
 src/lib389/lib389/clitools/ds_krb_create_keytab                 |   40 
 src/lib389/lib389/clitools/ds_krb_create_principal              |   38 
 src/lib389/lib389/clitools/ds_krb_create_realm                  |   34 
 src/lib389/lib389/clitools/ds_krb_destroy_realm                 |   34 
 src/lib389/lib389/clitools/ds_monitor_backend                   |   39 
 src/lib389/lib389/clitools/ds_monitor_server                    |   35 
 src/lib389/lib389/clitools/ds_schema_attributetype_list         |   33 
 src/lib389/lib389/clitools/ds_schema_attributetype_query        |   46 
 src/lib389/lib389/clitools/ds_setup                             |   78 
 src/lib389/lib389/config.py                                     |  353 +
 src/lib389/lib389/configurations/__init__.py                    |   25 
 src/lib389/lib389/configurations/config.py                      |   44 
 src/lib389/lib389/configurations/config_001003006.py            |  139 
 src/lib389/lib389/configurations/sample.py                      |   21 
 src/lib389/lib389/dbgen.py                                      |  191 
 src/lib389/lib389/dirsrv_log.py                                 |  271 
 src/lib389/lib389/ds_instance.py                                |   97 
 src/lib389/lib389/dseldif.py                                    |  101 
 src/lib389/lib389/exceptions.py                                 |   43 
 src/lib389/lib389/extended_operations.py                        |   67 
 src/lib389/lib389/idm/account.py                                |   50 
 src/lib389/lib389/idm/domain.py                                 |   21 
 src/lib389/lib389/idm/group.py                                  |   89 
 src/lib389/lib389/idm/organisationalunit.py                     |   38 
 src/lib389/lib389/idm/posixgroup.py                             |   52 
 src/lib389/lib389/idm/services.py                               |   36 
 src/lib389/lib389/idm/user.py                                   |   85 
 src/lib389/lib389/index.py                                      |  124 
 src/lib389/lib389/instance/__init__.py                          |    7 
 src/lib389/lib389/instance/options.py                           |  301 
 src/lib389/lib389/instance/remove.py                            |   54 
 src/lib389/lib389/instance/setup.py                             |  454 +
 src/lib389/lib389/ldclt.py                                      |  130 
 src/lib389/lib389/lint.py                                       |  131 
 src/lib389/lib389/mappingTree.py                                |  420 +
 src/lib389/lib389/mit_krb5.py                                   |  226 
 src/lib389/lib389/monitor.py                                    |   94 
 src/lib389/lib389/ns-slapd.valgrind                             |   29 
 src/lib389/lib389/nss_ssl.py                                    |  371 +
 src/lib389/lib389/passwd.py                                     |   51 
 src/lib389/lib389/paths.py                                      |  186 
 src/lib389/lib389/plugins.py                                    |  813 ++
 src/lib389/lib389/properties.py                                 |  498 +
 src/lib389/lib389/referral.py                                   |   35 
 src/lib389/lib389/replica.py                                    | 1452 ++++
 src/lib389/lib389/repltools.py                                  |  298 
 src/lib389/lib389/rootdse.py                                    |   47 
 src/lib389/lib389/sasl.py                                       |   36 
 src/lib389/lib389/schema.py                                     |  236 
 src/lib389/lib389/suffix.py                                     |   98 
 src/lib389/lib389/tasks.py                                      | 1195 +++
 src/lib389/lib389/tests/__init__.py                             |    7 
 src/lib389/lib389/tests/aci_test.py                             |  122 
 src/lib389/lib389/tests/agreement_test.py                       |  362 +
 src/lib389/lib389/tests/backend_test.py                         |  282 
 src/lib389/lib389/tests/cli/__init__.py                         |  104 
 src/lib389/lib389/tests/cli/adm_instance_test.py                |   31 
 src/lib389/lib389/tests/cli/conf_backend_test.py                |   52 
 src/lib389/lib389/tests/cli/conf_plugin_test.py                 |   53 
 src/lib389/lib389/tests/cli/conf_plugins/memberof_test.py       |  490 +
 src/lib389/lib389/tests/cli/conf_plugins/referint_test.py       |  119 
 src/lib389/lib389/tests/cli/conf_plugins/rootdn_ac_test.py      |  281 
 src/lib389/lib389/tests/cli/conf_plugins/usn_test.py            |   53 
 src/lib389/lib389/tests/cli/ctl_dbtasks_test.py                 |   71 
 src/lib389/lib389/tests/cli/dsrc_test.py                        |  180 
 src/lib389/lib389/tests/config.py                               |   40 
 src/lib389/lib389/tests/config_compare_test.py                  |   56 
 src/lib389/lib389/tests/config_test.py                          |   87 
 src/lib389/lib389/tests/configurations/config_001003006_test.py |   98 
 src/lib389/lib389/tests/conftest.py                             |  121 
 src/lib389/lib389/tests/dereference_test.py                     |   99 
 src/lib389/lib389/tests/dirsrv_log_test.py                      |  123 
 src/lib389/lib389/tests/dirsrv_test.py                          |  215 
 src/lib389/lib389/tests/dsadmin_basic_test.py                   |  126 
 src/lib389/lib389/tests/dsadmin_create_remove_test.py           |   97 
 src/lib389/lib389/tests/dsadmin_test.py                         |  263 
 src/lib389/lib389/tests/dseldif_test.py                         |  130 
 src/lib389/lib389/tests/effective_rights_test.py                |   93 
 src/lib389/lib389/tests/entry_test.py                           |   98 
 src/lib389/lib389/tests/healthcheck_test.py                     |   61 
 src/lib389/lib389/tests/idm/account_test.py                     |   70 
 src/lib389/lib389/tests/idm/services_test.py                    |   55 
 src/lib389/lib389/tests/idm/user_and_group_test.py              |   93 
 src/lib389/lib389/tests/idm/user_compare_i2_test.py             |   67 
 src/lib389/lib389/tests/idm/user_compare_m2Repl_test.py         |   83 
 src/lib389/lib389/tests/idm/user_compare_st_test.py             |   92 
 src/lib389/lib389/tests/index_test.py                           |   69 
 src/lib389/lib389/tests/instance/__init__.py                    |    8 
 src/lib389/lib389/tests/instance/setup_test.py                  |  121 
 src/lib389/lib389/tests/krb5_create_test.py                     |  147 
 src/lib389/lib389/tests/ldclt_test.py                           |   64 
 src/lib389/lib389/tests/mapped_object_test.py                   |   23 
 src/lib389/lib389/tests/mappingTreeLegacy_test.py               |  271 
 src/lib389/lib389/tests/mappingtree_test.py                     |   64 
 src/lib389/lib389/tests/nss_ssl_test.py                         |   74 
 src/lib389/lib389/tests/paths_test.py                           |   36 
 src/lib389/lib389/tests/plugin_test.py                          |  137 
 src/lib389/lib389/tests/plugins/memberof_test.py                |  354 +
 src/lib389/lib389/tests/plugins/referint_test.py                |   83 
 src/lib389/lib389/tests/plugins/usn_test.py                     |  240 
 src/lib389/lib389/tests/plugins/utils.py                        |  124 
 src/lib389/lib389/tests/referral_test.py                        |   36 
 src/lib389/lib389/tests/replicaLegacy_test.py                   |  457 +
 src/lib389/lib389/tests/replica_test.py                         |  375 +
 src/lib389/lib389/tests/schema_test.py                          |   72 
 src/lib389/lib389/tests/suffix_test.py                          |  105 
 src/lib389/lib389/tests/test_module_proxy.py                    |   79 
 src/lib389/lib389/tests/tls_external_test.py                    |   82 
 src/lib389/lib389/tests/utils_test.py                           |  139 
 src/lib389/lib389/tools.py                                      | 1008 +++
 src/lib389/lib389/topologies.py                                 |  382 +
 src/lib389/lib389/utils.py                                      |  873 ++
 src/lib389/python-lib389.spec                                   |  239 
 src/lib389/requirements.txt                                     |    9 
 src/lib389/setup.cfg                                            |    3 
 src/lib389/setup.py                                             |   66 
 src/lib389/tox.ini                                              |    6 
 src/libsds/external/csiphash/csiphash.c                         |   52 
 src/libsds/test/test_sds_csiphash.c                             |   43 
 src/nunc-stans/include/nunc-stans.h                             |   12 
 src/nunc-stans/ns/ns_event_fw.h                                 |    3 
 src/nunc-stans/ns/ns_thrpool.c                                  |  192 
 src/nunc-stans/test/test_nuncstans.c                            |  156 
 src/nunc-stans/test/test_nuncstans_stress_core.c                |   42 
 wrappers/systemd.template.asan.service.in                       |    2 
 wrappers/systemd.template.service.in                            |    2 
 283 files changed, 36988 insertions(+), 1237 deletions(-)

New commits:
commit b602e827e988386bc42038b6758535010ca6ff60
Author: Timo Aaltonen <tjaalton at debian.org>
Date:   Tue Dec 12 17:32:34 2017 +0200

    releasing package 389-ds-base version 1.3.7.8-1

diff --git a/debian/changelog b/debian/changelog
index 533003e..8a9930c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,11 @@
-389-ds-base (1.3.7.8-1) UNRELEASED; urgency=medium
+389-ds-base (1.3.7.8-1) unstable; urgency=medium
 
   * New upstream release.
   * Package python3-lib389 and python3-dirsrvtests.
   * control: Add python3 depends to 389-ds-base, since it ships a few
     python scripts.
 
- -- Timo Aaltonen <tjaalton at debian.org>  Tue, 12 Dec 2017 13:42:27 +0200
+ -- Timo Aaltonen <tjaalton at debian.org>  Tue, 12 Dec 2017 17:32:27 +0200
 
 389-ds-base (1.3.7.5-1) unstable; urgency=medium
 

commit 4b19af0824aed96f35ab07b55a046cc98fcbc5f2
Author: Timo Aaltonen <tjaalton at debian.org>
Date:   Tue Dec 12 17:32:01 2017 +0200

    control: Add python3 depends to 389-ds-base, since it ships a few python scripts.

diff --git a/debian/changelog b/debian/changelog
index 76f3d52..533003e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,8 @@
 
   * New upstream release.
   * Package python3-lib389 and python3-dirsrvtests.
+  * control: Add python3 depends to 389-ds-base, since it ships a few
+    python scripts.
 
  -- Timo Aaltonen <tjaalton at debian.org>  Tue, 12 Dec 2017 13:42:27 +0200
 
diff --git a/debian/control b/debian/control
index dc5eb4c..3af8d77 100644
--- a/debian/control
+++ b/debian/control
@@ -111,6 +111,7 @@ Depends:
  systemd,
  ${misc:Depends},
  ${shlibs:Depends},
+ ${python3:Depends},
 Description: 389 Directory Server suite - server
  Based on the Lightweight Directory Access Protocol (LDAP), the 389
  Directory Server is designed to manage large directories of users and

commit 028f82607f7a02602aa691aeddd063acdeee106b
Author: Timo Aaltonen <tjaalton at debian.org>
Date:   Tue Dec 12 17:29:13 2017 +0200

    Package python3-lib389 and python3-dirsrvtests.

diff --git a/debian/changelog b/debian/changelog
index 39fc930..76f3d52 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
 389-ds-base (1.3.7.8-1) UNRELEASED; urgency=medium
 
   * New upstream release.
+  * Package python3-lib389 and python3-dirsrvtests.
 
  -- Timo Aaltonen <tjaalton at debian.org>  Tue, 12 Dec 2017 13:42:27 +0200
 
diff --git a/debian/control b/debian/control
index a40a65f..dc5eb4c 100644
--- a/debian/control
+++ b/debian/control
@@ -9,6 +9,7 @@ Build-Depends:
  libcmocka-dev,
  debhelper (>= 9),
  dh-autoreconf,
+ dh-python,
  dh-systemd,
  doxygen,
  libbz2-dev,
@@ -30,6 +31,8 @@ Build-Depends:
  libsvrcore-dev (>= 1:4.1.2+dfsg1-3),
  libsystemd-dev,
  pkg-config,
+ python3-all-dev,
+ python3-setuptools,
  zlib1g-dev,
 Standards-Version: 4.1.0
 Vcs-Git: git://anonscm.debian.org/pkg-fedora-ds/389-ds-base.git
@@ -124,3 +127,25 @@ Description: 389 Directory Server suite - server
   * on-line, zero downtime update of schema, configuration, and
     in-tree Access Control Information.
 
+Package: python3-lib389
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends},
+ python3-dateutil,
+ python3-ldap,
+ python3-pyasn1,
+ python3-pyasn1-modules,
+ python3-pytest,
+ python3-six,
+Conflicts: python-lib389 (<< 1.3.7.8)
+Replaces: python-lib389 (<< 1.3.7.8)
+Description: Python3 module for accessing and configuring the 389 Directory Server
+ This Python3 module contains tools and libraries for accessing, testing,
+ and configuring the 389 Directory Server.
+
+Package: python3-dirsrvtests
+Architecture: all
+Depends: ${misc:Depends}, ${python3:Depends},
+ python3-lib389,
+Description: Python3 module for 389 Directory Server Continuous Integration testing
+ This Python3 module contains Continuous Integration tests that can be
+ run against an instance of 389 Directory Server.
diff --git a/debian/python3-dirsrvtests.install b/debian/python3-dirsrvtests.install
new file mode 100644
index 0000000..4d5b1a8
--- /dev/null
+++ b/debian/python3-dirsrvtests.install
@@ -0,0 +1,2 @@
+usr/lib/python3/dist-packages/dirsrvtests-*
+usr/lib/python3/dist-packages/dirsrvtests/
diff --git a/debian/python3-lib389.install b/debian/python3-lib389.install
new file mode 100644
index 0000000..df60f94
--- /dev/null
+++ b/debian/python3-lib389.install
@@ -0,0 +1,2 @@
+usr/lib/python3/dist-packages/lib389-*
+usr/lib/python3/dist-packages/lib389/
diff --git a/debian/rules b/debian/rules
index 3bacd9a..5df57f4 100755
--- a/debian/rules
+++ b/debian/rules
@@ -47,7 +47,7 @@ REALFILE_ONLINE = \
 	share/man/man8/ldif2db.pl.8
 
 %:
-	dh $@ --parallel --with autoreconf,systemd --builddir build/
+	dh $@ --parallel --with autoreconf,systemd,python3 --builddir build/
 
 override_dh_auto_configure:
 	dh_auto_configure -- \
@@ -60,7 +60,19 @@ override_dh_auto_configure:
 		--enable-autobind \
 		--enable-cmocka
 
+	(cd build && make setup.py)
+
+override_dh_auto_build:
+	(cd build && python3 setup.py build)
+	python3 src/lib389/setup.py build
+	dh_auto_build
+
 override_dh_auto_install:
+	(cd build && python3 setup.py install --install-layout=deb --root ../debian/tmp)
+	# stupid build
+	cp -r build/lib/dirsrvtests/ debian/tmp/usr/lib/python3/dist-packages
+	(cd src/lib389 && python3 setup.py install --install-layout=deb --root ../../debian/tmp)
+
 	dh_auto_install --max-parallel=1
 
 override_dh_install:

commit 3e189a6c8217cd7cf71c79722fb2351bac4be42b
Author: Timo Aaltonen <tjaalton at debian.org>
Date:   Tue Dec 12 13:48:20 2017 +0200

    update changelog

diff --git a/debian/changelog b/debian/changelog
index bad2e80..39fc930 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+389-ds-base (1.3.7.8-1) UNRELEASED; urgency=medium
+
+  * New upstream release.
+
+ -- Timo Aaltonen <tjaalton at debian.org>  Tue, 12 Dec 2017 13:42:27 +0200
+
 389-ds-base (1.3.7.5-1) unstable; urgency=medium
 
   * New upstream release.

commit 4234a5f89bda4e3442c232c9c70212b714e97ccf
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Mon Nov 20 11:16:57 2017 -0500

    Bump version to 1.3.7.8

diff --git a/VERSION.sh b/VERSION.sh
index e41c046..b54771a 100644
--- a/VERSION.sh
+++ b/VERSION.sh
@@ -10,7 +10,7 @@ vendor="389 Project"
 # PACKAGE_VERSION is constructed from these
 VERSION_MAJOR=1
 VERSION_MINOR=3
-VERSION_MAINT=7.7
+VERSION_MAINT=7.8
 # NOTE: VERSION_PREREL is automatically set for builds made out of a git tree
 VERSION_PREREL=
 VERSION_DATE=$(date -u +%Y%m%d)

commit 928e5a4809717f0393c338e22d2aa58ed6d222f4
Author: William Brown <firstyear at redhat.com>
Date:   Fri Nov 17 11:43:36 2017 +1000

    Ticket 49298 - fix complier warn
    
    Bug Description:  Extra argument to error log in dse.c
    
    Fix Description:  Remove extra argument.
    
    https://pagure.io/389-ds-base/issue/49298
    
    Author: wibrown
    
    Review by: oneline rule.

diff --git a/ldap/servers/slapd/dse.c b/ldap/servers/slapd/dse.c
index 653009f..662e91a 100644
--- a/ldap/servers/slapd/dse.c
+++ b/ldap/servers/slapd/dse.c
@@ -613,7 +613,7 @@ dse_check_file(char *filename, char *backupname)
             return 1;
         } else {
             slapi_log_err(SLAPI_LOG_INFO, "dse_check_file",
-                          "The config %s has zero length. Attempting restore ... \n", filename, rc);
+                          "The config %s has zero length. Attempting restore ... \n", filename);
             rc = PR_Delete(filename);
         }
     } else {

commit 3cd1ab4159d14fa52dbe84c95561e328653610cd
Author: William Brown <firstyear at redhat.com>
Date:   Wed Nov 15 13:44:02 2017 +1000

    Ticket 49298 - Correct error codes with config restore.
    
    Bug Description:  The piece of code uses 0 as an error - not 1,
    and in some cases did not even check the codes or use the
    correct logic.
    
    Fix Description:  Cleanup dse_check_file to better check the
    content of files and communicate issues to the admin. Correct
    slapd_bootstrap_config to correctly handle the cases of removal
    and restore.
    
    https://pagure.io/389-ds-base/issue/49298
    
    Author: wibrown
    
    Review by: mreynoolds & spichugi
    
    Signed-off-by: Mark Reynolds <mreynolds at redhat.com>
    (cherry picked from commit 75e55e26579955adf058e8adcba9a28779583b7b)

diff --git a/dirsrvtests/tests/suites/config/removed_config_49298_test.py b/dirsrvtests/tests/suites/config/removed_config_49298_test.py
new file mode 100644
index 0000000..e652369
--- /dev/null
+++ b/dirsrvtests/tests/suites/config/removed_config_49298_test.py
@@ -0,0 +1,81 @@
+# --- BEGIN COPYRIGHT BLOCK ---
+# Copyright (C) 2017 Red Hat, Inc.
+# All rights reserved.
+#
+# License: GPL (version 3 or any later version).
+# See LICENSE for details.
+# --- END COPYRIGHT BLOCK ---
+#
+import pytest
+import os
+import logging
+import subprocess
+
+from lib389.topologies import topology_st as topo
+
+DEBUGGING = os.getenv("DEBUGGING", default=False)
+if DEBUGGING:
+    logging.getLogger(__name__).setLevel(logging.DEBUG)
+else:
+    logging.getLogger(__name__).setLevel(logging.INFO)
+log = logging.getLogger(__name__)
+
+def test_restore_config(topo):
+    """
+    Check that if a dse.ldif and backup are removed, that the server still starts.
+
+    :id: e1c38fa7-30bc-46f2-a934-f8336f387581
+    :setup: Standalone instance
+    :steps:
+        1. Stop the instance
+        2. Delete 'dse.ldif'
+        3. Start the instance
+    :expectedresults:
+        1. Steps 1 and 2 succeed.
+        2. Server will succeed to start with restored cfg.
+    """
+    topo.standalone.stop()
+
+    dse_path = topo.standalone.get_config_dir()
+
+    log.info(dse_path)
+
+    for i in ('dse.ldif', 'dse.ldif.startOK'):
+        p = os.path.join(dse_path, i)
+        os.remove(p)
+
+    # This will pass.
+    topo.standalone.start()
+
+def test_removed_config(topo):
+    """
+    Check that if a dse.ldif and backup are removed, that the server
+    exits better than "segfault".
+
+    :id: b45272d1-c197-473e-872f-07257fcb2ec0
+    :setup: Standalone instance
+    :steps:
+        1. Stop the instance
+        2. Delete 'dse.ldif', 'dse.ldif.bak', 'dse.ldif.startOK'
+        3. Start the instance
+    :expectedresults:
+        1. Steps 1 and 2 succeed.
+        2. Server will fail to start, but will not crash.
+    """
+    topo.standalone.stop()
+
+    dse_path = topo.standalone.get_config_dir()
+
+    log.info(dse_path)
+
+    for i in ('dse.ldif', 'dse.ldif.bak', 'dse.ldif.startOK'):
+        p = os.path.join(dse_path, i)
+        os.remove(p)
+
+    # We actually can't check the log output, because it can't read dse.ldif,
+    # don't know where to write it yet! All we want is the server fail to
+    # start here, rather than infinite run + segfault.
+    with pytest.raises(subprocess.CalledProcessError):
+        topo.standalone.start()
+
+
diff --git a/ldap/servers/slapd/config.c b/ldap/servers/slapd/config.c
index afe07df..c8d57e7 100644
--- a/ldap/servers/slapd/config.c
+++ b/ldap/servers/slapd/config.c
@@ -121,14 +121,13 @@ slapd_bootstrap_config(const char *configdir)
                       "Passed null config directory\n");
         return rc; /* Fail */
     }
-    PR_snprintf(configfile, sizeof(configfile), "%s/%s", configdir,
-                CONFIG_FILENAME);
-    PR_snprintf(tmpfile, sizeof(tmpfile), "%s/%s.tmp", configdir,
-                CONFIG_FILENAME);
-    if ((rc = dse_check_file(configfile, tmpfile)) == 0) {
-        PR_snprintf(tmpfile, sizeof(tmpfile), "%s/%s.bak", configdir,
-                    CONFIG_FILENAME);
-        rc = dse_check_file(configfile, tmpfile);
+    PR_snprintf(configfile, sizeof(configfile), "%s/%s", configdir, CONFIG_FILENAME);
+    PR_snprintf(tmpfile, sizeof(tmpfile), "%s/%s.bak", configdir, CONFIG_FILENAME);
+    rc = dse_check_file(configfile, tmpfile);
+    if (rc == 0) {
+        /* EVERYTHING IS GOING WRONG, ARRGHHHHHH */
+        slapi_log_err(SLAPI_LOG_ERR, "slapd_bootstrap_config", "No valid configurations can be accessed! You must restore %s from backup!\n", configfile);
+        return 0;
     }
 
     if ((rc = PR_GetFileInfo64(configfile, &prfinfo)) != PR_SUCCESS) {
diff --git a/ldap/servers/slapd/dse.c b/ldap/servers/slapd/dse.c
index 420248c..653009f 100644
--- a/ldap/servers/slapd/dse.c
+++ b/ldap/servers/slapd/dse.c
@@ -609,29 +609,49 @@ dse_check_file(char *filename, char *backupname)
 
     if (PR_GetFileInfo64(filename, &prfinfo) == PR_SUCCESS) {
         if (prfinfo.size > 0) {
-            return (1);
+            /* File exists and has content. */
+            return 1;
         } else {
+            slapi_log_err(SLAPI_LOG_INFO, "dse_check_file",
+                          "The config %s has zero length. Attempting restore ... \n", filename, rc);
             rc = PR_Delete(filename);
         }
+    } else {
+        slapi_log_err(SLAPI_LOG_INFO, "dse_check_file",
+                      "The config %s can not be accessed. Attempting restore ... (reason: %d)\n", filename, rc);
     }
 
     if (backupname) {
+
+        if (PR_GetFileInfo64(backupname, &prfinfo) != PR_SUCCESS) {
+            slapi_log_err(SLAPI_LOG_INFO, "dse_check_file",
+                          "The backup %s can not be accessed. Check it exists and permissions.\n", backupname);
+            return 0;
+        }
+
+        if (prfinfo.size <= 0) {
+            slapi_log_err(SLAPI_LOG_ERR, "dse_check_file",
+                      "The backup file %s has zero length, refusing to restore it.\n", backupname);
+            return 0;
+        }
+
         rc = PR_Rename(backupname, filename);
-    } else {
-        return (0);
-    }
+        if (rc != PR_SUCCESS) {
+            slapi_log_err(SLAPI_LOG_INFO, "dse_check_file",
+                      "The configuration file %s was NOT able to be restored from %s, error %d\n", filename, backupname, rc);
+            return 0;
+        }
 
-    if (PR_GetFileInfo64(filename, &prfinfo) == PR_SUCCESS && prfinfo.size > 0) {
         slapi_log_err(SLAPI_LOG_INFO, "dse_check_file",
-                      "The configuration file %s was restored from backup %s\n", filename, backupname);
-        return (1);
+                  "The configuration file %s was restored from backup %s\n", filename, backupname);
+        return 1;
+
     } else {
-        slapi_log_err(SLAPI_LOG_ERR, "dse_check_file",
-                      "The configuration file %s was not restored from backup %s, error %d\n",
-                      filename, backupname, rc);
-        return (0);
+        slapi_log_err(SLAPI_LOG_INFO, "dse_check_file", "No backup filename provided.\n");
+        return 0;
     }
 }
+
 static int
 dse_read_one_file(struct dse *pdse, const char *filename, Slapi_PBlock *pb, int primary_file)
 {

commit d67e8aea264bc000c41843b88a03654aa675b04f
Author: William Brown <firstyear at redhat.com>
Date:   Mon Nov 6 08:56:01 2017 +1000

    Ticket 49435 - Fix NS race condition on loaded test systems
    
    Bug Description:  During a test run, on a heavily loaded systems
    some events would time out before they could occur correctly.
    
    Fix Description:  Change the structure of events to mitigate
    a deref performance hit, and add a ns_job_wait conditional
    that allows blocking on a job to complete so that tests do not
    require time based checks.
    
    https://pagure.io/389-ds-base/issue/49435
    
    Author: wibrown
    
    Review by: mreynolds (Thanks!)
    
    (cherry picked from commit 11974a08f7bb083a48590cdc26652934fa74c0cb)

diff --git a/src/nunc-stans/include/nunc-stans.h b/src/nunc-stans/include/nunc-stans.h
index 386a8d2..192e38e 100644
--- a/src/nunc-stans/include/nunc-stans.h
+++ b/src/nunc-stans/include/nunc-stans.h
@@ -77,6 +77,10 @@ typedef enum _ns_result_t {
      * This occurs when a lower level OS issue occurs, generally thread related.
      */
     NS_THREAD_FAILURE = 5,
+    /**
+     * The job is being deleted
+     */
+    NS_DELETING = 6,
 } ns_result_t;
 
 /**
@@ -837,6 +841,14 @@ ns_job_type_t ns_job_get_output_type(struct ns_job_t *job);
 ns_result_t ns_job_set_done_cb(struct ns_job_t *job, ns_job_func_t func);
 
 /**
+ * Block until a job is completed. This returns the next state of the job as as a return.
+ *
+ * \param job The job to set the callback for.
+ * \retval ns_job_state_t The next state the job will move to. IE, WAITING, DELETED, ARMED.
+ */
+ns_result_t ns_job_wait(struct ns_job_t *job);
+
+/**
  * Creates a new thread pool
  *
  * Must be called with a struct ns_thrpool_config that has been
diff --git a/src/nunc-stans/ns/ns_event_fw.h b/src/nunc-stans/ns/ns_event_fw.h
index 436b282..88997b2 100644
--- a/src/nunc-stans/ns/ns_event_fw.h
+++ b/src/nunc-stans/ns/ns_event_fw.h
@@ -80,7 +80,8 @@ typedef enum _ns_job_state {
    interface between the app/thread pool/event framework */
 typedef struct ns_job_t
 {
-    pthread_mutex_t *monitor;
+    pthread_mutex_t monitor;
+    pthread_cond_t notify;
     struct ns_thrpool_t *tp;
     ns_job_func_t func;
     struct ns_job_data_t *data;
diff --git a/src/nunc-stans/ns/ns_thrpool.c b/src/nunc-stans/ns/ns_thrpool.c
index 2ad0bd7..1d8bb03 100644
--- a/src/nunc-stans/ns/ns_thrpool.c
+++ b/src/nunc-stans/ns/ns_thrpool.c
@@ -214,7 +214,7 @@ job_queue_cleanup(void *arg)
 static void
 internal_ns_job_done(ns_job_t *job)
 {
-    pthread_mutex_lock(job->monitor);
+    pthread_mutex_lock(&(job->monitor));
 #ifdef DEBUG
     ns_log(LOG_DEBUG, "internal_ns_job_done %x state %d moving to NS_JOB_DELETED\n", job, job->state);
 #endif
@@ -239,9 +239,9 @@ internal_ns_job_done(ns_job_t *job)
         job->done_cb(job);
     }
 
-    pthread_mutex_unlock(job->monitor);
-    pthread_mutex_destroy(job->monitor);
-    ns_free(job->monitor);
+    pthread_mutex_unlock(&(job->monitor));
+    pthread_mutex_destroy(&(job->monitor));
+    pthread_cond_destroy(&(job->notify));
 
     ns_free(job);
 }
@@ -250,7 +250,7 @@ internal_ns_job_done(ns_job_t *job)
 static void
 internal_ns_job_rearm(ns_job_t *job)
 {
-    pthread_mutex_lock(job->monitor);
+    pthread_mutex_lock(&(job->monitor));
     PR_ASSERT(job->state == NS_JOB_NEEDS_ARM);
 /* Don't think I need to check persistence here, it could be the first arm ... */
 #ifdef DEBUG
@@ -267,7 +267,7 @@ internal_ns_job_rearm(ns_job_t *job)
         /* Prevents an un-necessary queue / dequeue to the event_q */
         work_q_notify(job);
     }
-    pthread_mutex_unlock(job->monitor);
+    pthread_mutex_unlock(&(job->monitor));
 }
 
 static void
@@ -281,7 +281,7 @@ work_job_execute(ns_job_t *job)
      * DELETED! Crashes abound, you have been warned ...
      */
     PR_ASSERT(job);
-    pthread_mutex_lock(job->monitor);
+    pthread_mutex_lock(&(job->monitor));
 #ifdef DEBUG
     ns_log(LOG_DEBUG, "work_job_execute %x state %d moving to NS_JOB_RUNNING\n", job, job->state);
 #endif
@@ -303,7 +303,12 @@ work_job_execute(ns_job_t *job)
 #ifdef DEBUG
         ns_log(LOG_DEBUG, "work_job_execute %x state %d job func complete, sending to job_done...\n", job, job->state);
 #endif
-        pthread_mutex_unlock(job->monitor);
+        /*
+         * Let waiters know we are done, they'll pick up once
+         * we unlock.
+         */
+        pthread_cond_signal(&(job->notify));
+        pthread_mutex_unlock(&(job->monitor));
         internal_ns_job_done(job);
         /* MUST NOT ACCESS JOB AGAIN.*/
     } else if (job->state == NS_JOB_NEEDS_ARM) {
@@ -311,7 +316,8 @@ work_job_execute(ns_job_t *job)
         ns_log(LOG_DEBUG, "work_job_execute %x state %d job func complete, sending to rearm...\n", job, job->state);
 #endif
         /* Rearm the job! */
-        pthread_mutex_unlock(job->monitor);
+        /* We *don't* notify here because we ARE NOT done! */
+        pthread_mutex_unlock(&(job->monitor));
         internal_ns_job_rearm(job);
     } else {
 #ifdef DEBUG
@@ -321,7 +327,12 @@ work_job_execute(ns_job_t *job)
         PR_ASSERT(!NS_JOB_IS_PERSIST(job->job_type));
         /* We are now idle, set waiting. */
         job->state = NS_JOB_WAITING;
-        pthread_mutex_unlock(job->monitor);
+        /*
+         * Let waiters know we are done, they'll pick up once
+         * we unlock.
+         */
+        pthread_cond_signal(&(job->notify));
+        pthread_mutex_unlock(&(job->monitor));
     }
     /* MUST NOT ACCESS JOB AGAIN */
 }
@@ -338,7 +349,7 @@ static void
 work_q_notify(ns_job_t *job)
 {
     PR_ASSERT(job);
-    pthread_mutex_lock(job->monitor);
+    pthread_mutex_lock(&(job->monitor));
 #ifdef DEBUG
     ns_log(LOG_DEBUG, "work_q_notify %x state %d\n", job, job->state);
 #endif
@@ -346,12 +357,12 @@ work_q_notify(ns_job_t *job)
     if (job->state != NS_JOB_ARMED) {
         /* Maybe we should return some error here? */
         ns_log(LOG_ERR, "work_q_notify %x state %d is not ARMED, cannot queue!\n", job, job->state);
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         return;
     }
     /* MUST NOT ACCESS job after enqueue. So we stash tp.*/
     ns_thrpool_t *ltp = job->tp;
-    pthread_mutex_unlock(job->monitor);
+    pthread_mutex_unlock(&(job->monitor));
     sds_lqueue_enqueue(ltp->work_q, (void *)job);
     pthread_mutex_lock(&(ltp->work_q_lock));
     pthread_cond_signal(&(ltp->work_q_cv));
@@ -411,13 +422,13 @@ static void
 update_event(ns_job_t *job)
 {
     PR_ASSERT(job);
-    pthread_mutex_lock(job->monitor);
+    pthread_mutex_lock(&(job->monitor));
 #ifdef DEBUG
     ns_log(LOG_DEBUG, "update_event %x state %d\n", job, job->state);
 #endif
     PR_ASSERT(job->state == NS_JOB_NEEDS_DELETE || job->state == NS_JOB_ARMED);
     if (job->state == NS_JOB_NEEDS_DELETE) {
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         internal_ns_job_done(job);
         return;
     } else if (NS_JOB_IS_IO(job->job_type) || job->ns_event_fw_fd) {
@@ -426,7 +437,7 @@ update_event(ns_job_t *job)
         } else {
             job->tp->ns_event_fw->ns_event_fw_mod_io(job->tp->ns_event_fw_ctx, job);
         }
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         /* We need these returns to prevent a race on the next else if condition when we release job->monitor */
         return;
     } else if (NS_JOB_IS_TIMER(job->job_type) || job->ns_event_fw_time) {
@@ -435,7 +446,7 @@ update_event(ns_job_t *job)
         } else {
             job->tp->ns_event_fw->ns_event_fw_mod_timer(job->tp->ns_event_fw_ctx, job);
         }
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         return;
     } else if (NS_JOB_IS_SIGNAL(job->job_type) || job->ns_event_fw_sig) {
         if (!job->ns_event_fw_sig) {
@@ -443,15 +454,15 @@ update_event(ns_job_t *job)
         } else {
             job->tp->ns_event_fw->ns_event_fw_mod_signal(job->tp->ns_event_fw_ctx, job);
         }
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         return;
     } else {
         /* It's a "run now" job. */
         if (NS_JOB_IS_THREAD(job->job_type)) {
-            pthread_mutex_unlock(job->monitor);
+            pthread_mutex_unlock(&(job->monitor));
             work_q_notify(job);
         } else {
-            pthread_mutex_unlock(job->monitor);
+            pthread_mutex_unlock(&(job->monitor));
             event_q_notify(job);
         }
     }
@@ -602,14 +613,14 @@ event_cb(ns_job_t *job)
      */
 
     /* There is no guarantee this won't be called once we start to enter the shutdown, especially with timers .... */
-    pthread_mutex_lock(job->monitor);
+    pthread_mutex_lock(&(job->monitor));
 
     PR_ASSERT(job->state == NS_JOB_ARMED || job->state == NS_JOB_NEEDS_DELETE);
     if (job->state == NS_JOB_ARMED && NS_JOB_IS_THREAD(job->job_type)) {
 #ifdef DEBUG
         ns_log(LOG_DEBUG, "event_cb %x state %d threaded, send to work_q\n", job, job->state);
 #endif
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         work_q_notify(job);
     } else if (job->state == NS_JOB_NEEDS_DELETE) {
 #ifdef DEBUG
@@ -620,14 +631,14 @@ event_cb(ns_job_t *job)
          * It's here because it's been QUEUED for deletion and *may* be coming
          * from the thrpool destroy thread!
          */
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
 
     } else {
 #ifdef DEBUG
         ns_log(LOG_DEBUG, "event_cb %x state %d non-threaded, execute right meow\n", job, job->state);
 #endif
         /* Not threaded, execute now! */
-        pthread_mutex_unlock(job->monitor);
+        pthread_mutex_unlock(&(job->monitor));
         work_job_execute(job);
         /* MUST NOT ACCESS JOB FROM THIS POINT */
     }



More information about the Pkg-fedora-ds-maintainers mailing list