1. 30 Jul, 2020 1 commit
  2. 24 Jul, 2020 1 commit
  3. 15 Jul, 2020 1 commit
  4. 14 Jul, 2020 1 commit
  5. 10 Jul, 2020 1 commit
    • Michał Kępień's avatar
      Fix locking for LMDB 0.9.26 · 53120279
      Michał Kępień authored
      When "rndc reconfig" is run, named first configures a fresh set of views
      and then tears down the old views.  Consider what happens for a single
      view with LMDB enabled; "envA" is the pointer to the LMDB environment
      used by the original/old version of the view, "envB" is the pointer to
      the same LMDB environment used by the new version of that view:
      
       1. mdb_env_open(envA) is called when the view is first created.
       2. "rndc reconfig" is called.
       3. mdb_env_open(envB) is called for the new instance of the view.
       4. mdb_env_close(envA) is called for the old instance of the view.
      
      This seems to have worked so far.  However, an upstream change [1] in
      LMDB which will be part of its 0.9.26 release prevents the above
      sequence of calls from working as intended because the locktable mutexes
      will now get destroyed by the mdb_env_close() call in step 4 above,
      causing any subsequent mdb_txn_begin() calls to fail (because all of the
      above steps are happening within a single named process).
      
      Preventing the above scenario from happening would require either
      redesigning the way we use LMDB in BIND, which is not something we can
      easily backport, or redesigning the way BIND carries out its
      reconfiguration process, which would be an even more severe change.
      
      To work around the problem, set MDB_NOLOCK when calling mdb_env_open()
      to stop LMDB from controlling concurrent access to the database and do
      the necessary locking in named instead.  Reuse the view->new_zone_lock
      mutex for this purpose to prevent the need for modifying struct dns_view
      (which would necessitate library API version bumps).  Drop use of
      MDB_NOTLS as it is made redundant by MDB_NOLOCK: MDB_NOTLS only affects
      where LMDB reader locktable slots are stored while MDB_NOLOCK prevents
      the reader locktable from being used altogether.
      
      [1] https://git.openldap.org/openldap/openldap/-/commit/2fd44e325195ae81664eb5dc36e7d265927c5ebc
      53120279
  6. 08 Jul, 2020 1 commit
    • Ondřej Surý's avatar
      Fail the build if it updates any of the files in the git repository · 3da99094
      Ondřej Surý authored
      There are still some pregenerated files left in the git
      repository (cleaned up during `make maintainer-clean`) and we currently
      don't notice if any of those needs to be updated in the git repository
      because we ignore changes in the repository done during the build.
      
      This commit adds a safeguard that fails the build job if the contents of
      the git repository gets modified during the build.
      3da99094
  7. 29 Jun, 2020 6 commits
  8. 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.
      a7982d14
  9. 22 Jun, 2020 1 commit
  10. 18 Jun, 2020 2 commits
  11. 17 Jun, 2020 1 commit
  12. 16 Jun, 2020 1 commit
  13. 09 Jun, 2020 3 commits
    • Michał Kępień's avatar
      Restore GitLab CI job building release tarballs · 03c874c2
      Michał Kępień authored
      With "make dist" producing usable source tarballs and documentation
      building working again, restore the script which allows a release
      tarball to be built by a GitLab CI job, only making minimal adjustments
      required due to the changes in the documentation building process and
      due to dropping the "version" file.
      03c874c2
    • Michał Kępień's avatar
      Fix respdiff job in GitLab CI · b36b7e86
      Michał Kępień authored
      As the "configure" script is no longer stored in the Git repository, run
      "autoreconf -fi" at the beginning of the respdiff job in GitLab CI in
      order to enable that job to work properly.
      b36b7e86
    • Michał Kępień's avatar
      Fix source tarball creation job in GitLab CI · 03adbac3
      Michał Kępień authored
      For the time being, "make all" needs to be run before "make dist" can
      succeed as parts of the documentation are generated by programs compiled
      during the regular build process.
      
      As only one source tarball is published for each BIND release, make sure
      the tarball creation job in GitLab CI only contains one tarball in the
      desired format among its artifacts.
      
      Drop the TARBALL_COMPRESSOR .gitlab-ci.yml variable as it is no longer
      used in the source tarball creation process.
      03adbac3
  14. 04 Jun, 2020 3 commits
  15. 03 Jun, 2020 1 commit
  16. 01 Jun, 2020 1 commit
    • Michał Kępień's avatar
      Add Danger Python to GitLab CI · 36bb45a8
      Michał Kępień authored
      Certain rules of the BIND development process are not codified anywhere
      and/or are used inconsistently.  In an attempt to improve this
      situation, add a GitLab CI job which uses Danger Python to add comments
      to merge requests when certain expectations are not met.  Two categories
      of feedback are used, only one of which - fail() - causes the GitLab CI
      job to fail.  Exclude dangerfile.py from Python QA checks as the way the
      contents of that file are evaluated triggers a lot of Flake8 and PyLint
      warnings.
      36bb45a8
  17. 28 May, 2020 2 commits
  18. 21 May, 2020 2 commits
  19. 18 May, 2020 3 commits
    • Michał Kępień's avatar
      Work around cppcheck 2.0 uninitvar false positives · 481fa34e
      Michał Kępień authored
      cppcheck 2.0 reports false positives about uninitialized variables in a
      lot of places throughout BIND source code, e.g.:
      
          bin/dnssec/dnssec-cds.c:283:6: error: Uninitialized variable: length [uninitvar]
           if (isc_buffer_availablelength(&buf) <= len) {
               ^
      
      Apparently cppcheck 2.0 has issues with processing (&var)->field syntax,
      which is what the macros from lib/isc/include/isc/buffer.h are evaluated
      to.  This issue was reported upstream [1] and will hopefully be
      addressed in a future cppcheck release.
      
      In the meantime, to avoid modifying BIND source code in multiple places
      just because of a static checker false positive, work around the issue
      by adding intermediate variables to buffer macro definitions using a sed
      invocation in the cppcheck job script.
      
      [1] https://sourceforge.net/p/cppcheck/discussion/general/thread/122153e3c1/
      481fa34e
    • Michał Kępień's avatar
      Make GCC version extraction work with GCC 10 · 3b48eec7
      Michał Kępień authored
      Add whitespace to the regular expression used for extracting the GCC
      version from "gcc --version" output so that it works properly with
      multi-digit major version numbers.
      3b48eec7
    • Michał Kępień's avatar
      Ensure cppcheck creates a HTML report upon failure · cb2037ee
      Michał Kępień authored
      Commit ec72d110 broke the cppcheck job
      in GitLab CI: when cppcheck fails, the script is immediately
      interrupted, preventing cppcheck-htmlreport from being run.  To ensure
      the HTML report is generated when cppcheck fails, revert to invoking
      cppcheck-htmlreport in the "after_script" part of the job.
      cb2037ee
  20. 15 May, 2020 1 commit
    • Michal Nowak's avatar
      Collect TXT and HTML reports produced by ABI checker · b5ccf95b
      Michal Nowak authored
      Although in util/api-checker.sh we create textual reports, we don't
      preserve them in job artifacts, but we should.
      
      We don't want to keep all HTML pages present in the project root, but
      just those produced by ABI checker.
      b5ccf95b
  21. 10 May, 2020 2 commits
  22. 07 May, 2020 1 commit
    • Ondřej Surý's avatar
      Convert the documentation to Sphinx documentation format · 9fb6d11a
      Ondřej Surý authored
      The ARM and the manpages have been converted into Sphinx documentation
      format.
      
      Sphinx uses reStructuredText as its markup language, and many of its
      strengths come from the power and straightforwardness of
      reStructuredText and its parsing and translating suite, the Docutils.
      9fb6d11a
  23. 30 Apr, 2020 2 commits
  24. 29 Apr, 2020 1 commit