#232 build issue with bind 9.16.48 under debian
Closed: fixed by abbra. Opened by davama.

Good Day,

Hope I'm doing this right...

Problem

What does not work as expected?

I am trying to see if I can move from a local installation from my rocky9 OS, to a docker container with a debian 11.8 image.

When I attempt to build bind-dyndb-ldap-v9.11 I get the below error:

ldap_driver.c: In function 'allrdatasets':
ldap_driver.c:470:64: error: passing argument 5 of 'dns_db_allrdatasets' makes integer from pointer without a cast [-Werror=int-conversion]
  470 |  return dns_db_allrdatasets(ldapdb->rbtdb, node, version, now, iteratorp);
      |                                                                ^~~~~~~~~
      |                                                                |
      |                                                                dns_rdatasetiter_t ** {aka struct dns_rdatasetiter **}
In file included from ldap_driver.c:20:
/usr/include/dns/db.h:1183:43: note: expected 'isc_stdtime_t' {aka 'unsigned int'} but argument is of type 'dns_rdatasetiter_t **' {aka 'struct dns_rdatasetiter **'}
 1183 |       unsigned int options, isc_stdtime_t now,
      |                             ~~~~~~~~~~~~~~^~~
ldap_driver.c:470:9: error: too few arguments to function 'dns_db_allrdatasets'
  470 |  return dns_db_allrdatasets(ldapdb->rbtdb, node, version, now, iteratorp);
      |         ^~~~~~~~~~~~~~~~~~~
In file included from ldap_driver.c:20:
/usr/include/dns/db.h:1182:1: note: declared here
 1182 | dns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
      | ^~~~~~~~~~~~~~~~~~~
ldap_driver.c: In function 'node_isempty':
ldap_driver.c:513:55: error: passing argument 5 of 'dns_db_allrdatasets' makes integer from pointer without a cast [-Werror=int-conversion]
  513 |  result = dns_db_allrdatasets(db, node, version, now, &rds_iter);
      |                                                       ^~~~~~~~~
      |                                                       |
      |                                                       dns_rdatasetiter_t ** {aka struct dns_rdatasetiter **}
In file included from ldap_driver.c:20:
/usr/include/dns/db.h:1183:43: note: expected 'isc_stdtime_t' {aka 'unsigned int'} but argument is of type 'dns_rdatasetiter_t **' {aka 'struct dns_rdatasetiter **'}
 1183 |       unsigned int options, isc_stdtime_t now,
      |                             ~~~~~~~~~~~~~~^~~
ldap_driver.c:513:11: error: too few arguments to function 'dns_db_allrdatasets'
  513 |  result = dns_db_allrdatasets(db, node, version, now, &rds_iter);
      |           ^~~~~~~~~~~~~~~~~~~
In file included from ldap_driver.c:20:
/usr/include/dns/db.h:1182:1: note: declared here
 1182 | dns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
      | ^~~~~~~~~~~~~~~~~~~
ldap_driver.c: At top level:
ldap_driver.c:932:2: error: initialization of 'isc_result_t (*)(dns_db_t *, dns_dbnode_t *, dns_dbversion_t *, unsigned int,  isc_stdtime_t,  dns_rdatasetiter_t **)' {aka 'unsigned int (*)(struct dns_db *, void *, void *, unsigned int,  unsigned int,  struct dns_rdatasetiter **)'} from incompatible pointer type 'isc_result_t (*)(dns_db_t *, dns_dbnode_t *, dns_dbversion_t *, isc_stdtime_t,  dns_rdatasetiter_t **)' {aka 'unsigned int (*)(struct dns_db *, void *, void *, unsigned int,  struct dns_rdatasetiter **)'} [-Werror=incompatible-pointer-types]
  932 |  allrdatasets,
      |  ^~~~~~~~~~~~
ldap_driver.c:932:2: note: (near initialization for 'ldapdb_methods.allrdatasets')
ldap_driver.c: In function 'dyndb_init':
ldap_driver.c:1164:10: error: 'dns_dyndbctx_t' {aka 'const struct dns_dyndbctx'} has no member named 'refvar'
 1164 |  if (dctx->refvar != &isc_bind9) {
      |          ^~
In file included from util.h:17,
                 from bindcfg.h:10,
                 from ldap_driver.c:37:
ldap_driver.c:1169:79: error: 'dns_dyndbctx_t' {aka 'const struct dns_dyndbctx'} has no member named 'refvar'
 1169 |   log_debug(5, "registering library from dynamic ldap driver, %p != %p.", dctx->refvar, &isc_bind9);
      |                                                                               ^~
log.h:44:44: note: in definition of macro 'log_debug'
   44 |  log_write(GET_LOG_LEVEL(level), format, ##__VA_ARGS__)
      |                                            ^~~~~~~~~~~
ldap_driver.c: In function 'allrdatasets':
ldap_driver.c:471:1: error: control reaches end of non-void function [-Werror=return-type]
  471 | }
      | ^
cc1: all warnings being treated as errors
make[2]: *** [Makefile:594: ldap_la-ldap_driver.lo] Error 1
make[2]: Leaving directory '/tmp/bind-dyndb-ldap-v11.9/src'
make[1]: *** [Makefile:452: all-recursive] Error 1
make[1]: Leaving directory '/tmp/bind-dyndb-ldap-v11.9'
make: *** [Makefile:363: all] Error 2

Steps to Reproduce

  • wget https://pagure.io/bind-dyndb-ldap/archive/v11.9/bind-dyndb-ldap-v11.9.tar.gz -O /tmp/bind-dyndb-ldap-v11.9.tar.gz
  • cd /tmp/ && tar xf /tmp/bind-dyndb-ldap-v11.9.tar.gz && cd bind-dyndb-ldap-v11.9
  • autoreconf -fvi
  • ./configure --libdir=/opt/bitnami/openldap/lib/
  • make

Environment

  • Plugin version: 11.9

  • Version of BIND: 9.16.48

bind9-dev/oldstable-security,now 1:9.16.48-1 amd64 [installed]
bind9-libs/oldstable-security,now 1:9.16.48-1 amd64 [installed,automatic]
bind9-utils/oldstable-security,now 1:9.16.48-1 amd64 [installed,automatic]
bind9/oldstable-security,now 1:9.16.48-1 amd64 [installed]
  • Distribution and version (i.e. including updates): Debian 11.8

  • Architecture: x86_64

  • Do you use bind-dyndb-ldap as part of FreeIPA installation? No If you answered no: Which LDAP server you use? Which version? Openldap 2.6.6

I also tried building plugin version v11.10 but get slightly different log errors.

ldap_driver.c: In function 'allrdatasets':
ldap_driver.c:474:64: error: passing argument 5 of 'dns_db_allrdatasets' makes integer from pointer without a cast [-Werror=int-conversion]
  474 |  return dns_db_allrdatasets(ldapdb->rbtdb, node, version, now, iteratorp);
      |                                                                ^~~~~~~~~
      |                                                                |
      |                                                                dns_rdatasetiter_t ** {aka struct dns_rdatasetiter **}
In file included from ldap_driver.c:22:
/usr/include/dns/db.h:1183:43: note: expected 'isc_stdtime_t' {aka 'unsigned int'} but argument is of type 'dns_rdatasetiter_t **' {aka 'struct dns_rdatasetiter **'}
 1183 |       unsigned int options, isc_stdtime_t now,
      |                             ~~~~~~~~~~~~~~^~~
ldap_driver.c:474:9: error: too few arguments to function 'dns_db_allrdatasets'
  474 |  return dns_db_allrdatasets(ldapdb->rbtdb, node, version, now, iteratorp);
      |         ^~~~~~~~~~~~~~~~~~~
In file included from ldap_driver.c:22:
/usr/include/dns/db.h:1182:1: note: declared here
 1182 | dns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
      | ^~~~~~~~~~~~~~~~~~~
ldap_driver.c: In function 'node_isempty':
ldap_driver.c:517:55: error: passing argument 5 of 'dns_db_allrdatasets' makes integer from pointer without a cast [-Werror=int-conversion]
  517 |  result = dns_db_allrdatasets(db, node, version, now, &rds_iter);
      |                                                       ^~~~~~~~~
      |                                                       |
      |                                                       dns_rdatasetiter_t ** {aka struct dns_rdatasetiter **}
In file included from ldap_driver.c:22:
/usr/include/dns/db.h:1183:43: note: expected 'isc_stdtime_t' {aka 'unsigned int'} but argument is of type 'dns_rdatasetiter_t **' {aka 'struct dns_rdatasetiter **'}
 1183 |       unsigned int options, isc_stdtime_t now,
      |                             ~~~~~~~~~~~~~~^~~
ldap_driver.c:517:11: error: too few arguments to function 'dns_db_allrdatasets'
  517 |  result = dns_db_allrdatasets(db, node, version, now, &rds_iter);
      |           ^~~~~~~~~~~~~~~~~~~
In file included from ldap_driver.c:22:
/usr/include/dns/db.h:1182:1: note: declared here
 1182 | dns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
      | ^~~~~~~~~~~~~~~~~~~
ldap_driver.c: At top level:
ldap_driver.c:950:2: error: initialization of 'isc_result_t (*)(dns_db_t *, dns_dbnode_t *, dns_dbversion_t *, unsigned int,  isc_stdtime_t,  dns_rdatasetiter_t **)' {aka 'unsigned int (*)(struct dns_db *, void *, void *, unsigned int,  unsigned int,  struct dns_rdatasetiter **)'} from incompatible pointer type 'isc_result_t (*)(dns_db_t *, dns_dbnode_t *, dns_dbversion_t *, isc_stdtime_t,  dns_rdatasetiter_t **)' {aka 'unsigned int (*)(struct dns_db *, void *, void *, unsigned int,  struct dns_rdatasetiter **)'} [-Werror=incompatible-pointer-types]
  950 |  allrdatasets,
      |  ^~~~~~~~~~~~
ldap_driver.c:950:2: note: (near initialization for 'ldapdb_methods.allrdatasets')
ldap_driver.c: In function 'allrdatasets':
ldap_driver.c:475:1: error: control reaches end of non-void function [-Werror=return-type]
  475 | }
      | ^
cc1: all warnings being treated as errors
make[2]: *** [Makefile:594: ldap_la-ldap_driver.lo] Error 1
make[2]: Leaving directory '/tmp/bind-dyndb-ldap-v11.10/src'
make[1]: *** [Makefile:452: all-recursive] Error 1
make[1]: Leaving directory '/tmp/bind-dyndb-ldap-v11.10'
make: *** [Makefile:363: all] Error 2

Is there something I am missing?
Any input is much appreciated!

Best,
Dave


This sounds the same as https://pagure.io/bind-dyndb-ldap/issue/230. Did you try the current git master?

I released 11.11 which includes all patches required to build for current 9.16 and 9.18. We do not support 9.19+ at the moment but this issues should already be solved.

Metadata Update from @abbra:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

Log in to comment on this ticket.

Metadata