1. 21 Jul, 2020 1 commit
    • Ondřej Surý's avatar
      Remove OpenSSL based SipHash 2-4 implementation · 21d751df
      Ondřej Surý authored
      Creation of EVP_MD_CTX and EVP_PKEY is quite expensive, so until we fix the code
      to reuse the OpenSSL contexts and keys we'll use our own implementation of
      siphash instead of trying to integrate with OpenSSL.
  2. 15 Jul, 2020 1 commit
  3. 24 Jun, 2020 1 commit
    • Michał Kępień's avatar
      Fix libtool initialization · a7982d14
      Michał Kępień authored
      The LT_INIT() call in configure.ac is effectively a no-op because it is
      preceded by a call to AC_PROG_LIBTOOL(), which is the previous name of
      LT_INIT() used in older libtool versions.  Replace AC_PROG_LIBTOOL()
      with AC_PATH_PROG() to look for libtool in PATH without initializing it,
      which is the originally intended behavior.
      Without this change, --enable-static is used by default, which causes a
      plain ./configure invocation to fail because static linking is now
      disallowed.  Drop --disable-static from the ./configure invocations used
      in GitLab CI to test this scenario continuously.
  4. 23 Jun, 2020 1 commit
    • Ondřej Surý's avatar
      Disable and disallow static linking · a7bed568
      Ondřej Surý authored
      Linking BIND 9 programs and libraries statically disables several
      important features:
        * dlopen() - relied on by dynamic loading of modules, dlz, and dyndb,
        * RELRO (read-only relocations) and ASLR (address space layout
          randomization) - security features which are important for any
          program interacting with the network and/or user input.
      Disable and disallow linking BIND 9 binaries statically, thus enforcing
      dlopen() support and allowing use of RELRO and ASLR by default.
  5. 22 Jun, 2020 2 commits
    • Michal Nowak's avatar
      Do not create gzip tarball · c76c826f
      Michal Nowak authored
      'make dist' does not need to create gzip tarball as we always ship the
      XZ one.
    • Ondřej Surý's avatar
      Enable maintainer mode by default only when building from git · 7ff77bb6
      Ondřej Surý authored
      When maintainer mode is enabled (./configure --enable-maintainer-mode)
      it enables rebuild of documentation source files that require extra
      tools to be installed or compiled.  For a convenience, those files are
      already committed into the repository and their rebuild is not required
      to build BIND 9 from sources.
  6. 18 Jun, 2020 1 commit
  7. 09 Jun, 2020 1 commit
    • Michał Kępień's avatar
      Revise "srcid" file handling · ed212e9c
      Michał Kępień authored
      The "srcid" file present in each BIND source tarball contains a
      shortened hash of the Git commit corresponding to a given BIND release.
      This allows a Git reference to be included in an archive that otherwise
      lacks any Git information.
      Before the move to Automake, if an "srcid" file was present in the root
      source directory at the time ./configure was run, its contents were used
      as the value of a compile-time constant which was then baked into BIND
      binaries; otherwise, "git rev-parse" was used to determine the value of
      that constant.
      With Automake, a similar approach was attempted that required the
      "srcid" file to be present at autoreconf time in order for it to be
      used.  However, note that this means that even if that file is present
      in a source tarball created using "make dist", its contents are not
      going to influence the value of the aforementioned compile-time constant
      because autoreconf hardcodes the output of "git rev-parse" into the
      configure script at autoreconf time.
      To make things more clear, always use "git rev-parse" for determining
      the value of the PACKAGE_SRCID compile-time constant when running
      autoreconf.  This causes "srcid" to be an empty string in source
      tarballs built from other source tarballs, but that is not deemed to be
      much of an issue as "make dist" is expected to be run from Git
      repository clones.  Remove stderr redirections to /dev/null to ensure
      errors caused e.g. by running "make dist" from outside a Git repository
      clone are not hidden.  Trim the Git commit hash to 7 characters for
      consistency between Unix and Windows systems.
      Despite the above, ensure the "srcid" file is present in source tarballs
      created using "make dist" as that file is used by the build process on
  8. 05 Jun, 2020 1 commit
    • Michal Nowak's avatar
      Fix "make dist" · 5bbc6dd7
      Michal Nowak authored
      Make various adjustments necessary to enable "make dist" to build a BIND
      source tarball whose contents are complete enough to build binaries, run
      unit & system tests, and generate documentation on Unix systems.
      Known outstanding issues:
        - "make distcheck" does not work yet.
        - Tests do not work for out-of-tree source-tarball-based builds.
        - Source tarballs are not complete enough for building on Windows.
      All of the above will be addressed in due course.
  9. 28 May, 2020 1 commit
  10. 26 May, 2020 1 commit
    • Evan Hunt's avatar
      add a quick-and-dirty method of debugging a single query · 249184e0
      Evan Hunt authored
      when built with "configure --enable-singletrace", named will produce
      detailed query logging at the highest debug level for any query with
      query ID zero.
      this enables monitoring of the progress of a single query by specifying
      the QID using "dig +qid=0". the "client" logging category should be set
      to a low severity level to suppress logging of other queries. (the
      chance of another query using QID=0 at the same time is only 1 in 2^16.)
      "--enable-singletrace" turns on "--enable-querytrace" as well, so if the
      logging severity is not lowered, all other queries will be logged
      verbosely as well. compiling with either of these options will impair
      query performance; they should only be turned on when testing or
  11. 21 May, 2020 2 commits
    • Michal Nowak's avatar
      Provide unit test driver · bfa6ecb7
      Michal Nowak authored
      This adds a unit test driver for BIND with Automake.  It runs the unit
      test program provided as its sole command line argument and then looks
      for a core dump generated by that test program.  If one is found, the
      driver prints the backtrace into the test log.
    • Michał Kępień's avatar
      Add py.test-3 to the list of tested pytest names · d5562a3e
      Michał Kępień authored
      Some operating systems (e.g. CentOS, OpenBSD) install the main pytest
      script as "py.test-3".  Add that name to the list of names passed to
      AC_PATH_PROGS() in order for pytest to be properly detected on a broader
      range of operating systems.
  12. 07 May, 2020 2 commits
  13. 01 May, 2020 1 commit
  14. 29 Apr, 2020 2 commits
  15. 27 Apr, 2020 1 commit
  16. 24 Apr, 2020 2 commits
    • Ondřej Surý's avatar
      Improve the LOG_DRIVER and LOG_COMPILER for the system tests · 58138180
      Ondřej Surý authored
      There are several improvements over the default/previous behaviour of
      the test log driver and log compiler:
       * The system-test-driver.sh was dropped (it was used incorrectly)
       * The run.sh script is now both log compiler and cli script to run
         individual tests
       * The custom-test-driver was added as extended version of the automake
         test-driver with capability to tee the test output to stdout when
         `--verbose yes` is passed to it (you can use LOG_DRIVER_FLAGS to
         add the option by default)
       * Makefile.am has been extended to honor V=1 for the system tests
         test-driver (e.g. V=1 adds `--verbose yes` to AM_LOG_DRIVER_FLAGS)
    • Michał Kępień's avatar
      Ensure fstrm_capture is looked for · 51188b33
      Michał Kępień authored
      fstrm_capture is not an essential utility, but its corresponding
      Makefile token needs to substituted even if it is not found in PATH or
      else the "dnstap" system test will consistently fail.
  17. 21 Apr, 2020 2 commits
    • Ondřej Surý's avatar
      Complete rewrite the BIND 9 build system · 978c7b2e
      Ondřej Surý authored
      The rewrite of BIND 9 build system is a large work and cannot be reasonable
      split into separate merge requests.  Addition of the automake has a positive
      effect on the readability and maintainability of the build system as it is more
      declarative, it allows conditional and we are able to drop all of the custom
      make code that BIND 9 developed over the years to overcome the deficiencies of
      autoconf + custom Makefile.in files.
      This squashed commit contains following changes:
      - conversion (or rather fresh rewrite) of all Makefile.in files to Makefile.am
        by using automake
      - the libtool is now properly integrated with automake (the way we used it
        was rather hackish as the only official way how to use libtool is via
      - the dynamic module loading was rewritten from a custom patchwork to libtool's
        libltdl (which includes the patchwork to support module loading on different
        systems internally)
      - conversion of the unit test executor from kyua to automake parallel driver
      - conversion of the system test executor from custom make/shell to automake
        parallel driver
      - The GSSAPI has been refactored, the custom SPNEGO on the basis that
        all major KRB5/GSSAPI (mit-krb5, heimdal and Windows) implementations
        support SPNEGO mechanism.
      - The various defunct tests from bin/tests have been removed:
        bin/tests/optional and bin/tests/pkcs11
      - The text files generated from the MD files have been removed, the
        MarkDown has been designed to be readable by both humans and computers
      - The xsl header is now generated by a simple sed command instead of
        perl helper
      - The <irs/platform.h> header has been removed
      - cleanups of configure.ac script to make it more simpler, addition of multiple
        macros (there's still work to be done though)
      - the tarball can now be prepared with `make dist`
      - the system tests are partially able to run in oot build
      Here's a list of unfinished work that needs to be completed in subsequent merge
      - `make distcheck` doesn't yet work (because of system tests oot run is not yet
      - documentation is not yet built, there's a different merge request with docbook
        to sphinx-build rst conversion that needs to be rebased and adapted on top of
        the automake
      - msvc build is non functional yet and we need to decide whether we will just
        cross-compile bind9 using mingw-w64 or fix the msvc build
      - contributed dlz modules are not included neither in the autoconf nor automake
    • Ondřej Surý's avatar
      Remove python based tools (dnssec-keymgr, dnssec-coverage, dnssec-checkds) · 98b3b937
      Ondřej Surý authored
      With the introduction of dnssec-policy, the aforementioned tools were
      either rendered obsolete, or they will be replaced with dnssec-policy
      based tools.  Remove the tools and the requirement to have Python
      installed.  Python 3 is still being used for tests, so keep the autoconf
      test, but make it much simpler.
  18. 20 Apr, 2020 1 commit
  19. 17 Apr, 2020 1 commit
    • Michał Kępień's avatar
      Make ISC rwlock implementation the default again · 17101fd0
      Michał Kępień authored
      Revert the change from ad03c22e as
      further testing has shown that with hyper-threading disabled, named with
      ISC rwlocks outperforms named with pthread rwlocks in cold cache testing
      scenarios.  Since building named with pthread rwlocks might still be a
      better choice for some workloads, keep the compile-time option which
      enables that.
  20. 16 Mar, 2020 1 commit
  21. 11 Mar, 2020 3 commits
    • Ondřej Surý's avatar
      Improve the backtrace to print symbols when backtrace_symbols() is available · e8475918
      Ondřej Surý authored
      The previous commit removed the code related to the internal symbol
      table.  On platforms where available, we can now use backtrace_symbols()
      to print more verbose symbols table to the output.
      As there's now general availability of backtrace() and
      backtrace_symbols() functions (see below), the commit also removes the
      usage of glibc internals and the custom stack tracing.
      * backtrace(), backtrace_symbols(), and backtrace_symbols_fd() are
        provided in glibc since version 2.1.
      * backtrace(), backtrace_symbols(), and backtrace_symbols_fd() first
        appeared in Mac OS X 10.5.
      * The backtrace() library of functions first appeared in NetBSD 7.0 and
        FreeBSD 10.0.
    • Ondřej Surý's avatar
      Remove configure option to compile without libtool · 1628f586
      Ondřej Surý authored
      libtool is a requirement to use automake (see GL #4), so this commit
      removes the ability to compile BIND 9 without libtool.
    • Ondřej Surý's avatar
      Remove the ability to generate internal symbol table · c4638089
      Ondřej Surý authored
      The internal symbol table cannot be generated when libtool is in use,
      which is going to be a mandatory in the next commit.
  22. 06 Mar, 2020 1 commit
  23. 05 Mar, 2020 1 commit
  24. 04 Mar, 2020 1 commit
  25. 25 Feb, 2020 1 commit
    • Evan Hunt's avatar
      minor cosmetic fixes · beda680f
      Evan Hunt authored
      - the configuration summary reported zlib compression was not
        supported even when it was.
      - when bind.keys.h was regenerated it violated clang-format style.
  26. 24 Feb, 2020 3 commits
  27. 21 Feb, 2020 1 commit
    • Michał Kępień's avatar
      Clean up --with-tuning=large remnants · a5fc3a63
      Michał Kępień authored
      The change introduced by commit be159f55
      was not fully complete.  Adjust ./configure summary so that it reflects
      the new way the --with-tuning switch works, fixing the Autoconf variable
      used for determining the value of that switch.  Fix win32utils/Configure
      so that it behaves the same way as its Unix counterpart.
  28. 18 Feb, 2020 1 commit
  29. 07 Feb, 2020 2 commits