diff options
Diffstat (limited to 'network/avahi/patches/build-db-Use-the-same-database-format-that-the-C-code-exp.patch')
-rw-r--r-- | network/avahi/patches/build-db-Use-the-same-database-format-that-the-C-code-exp.patch | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/network/avahi/patches/build-db-Use-the-same-database-format-that-the-C-code-exp.patch b/network/avahi/patches/build-db-Use-the-same-database-format-that-the-C-code-exp.patch new file mode 100644 index 0000000000..3017043d47 --- /dev/null +++ b/network/avahi/patches/build-db-Use-the-same-database-format-that-the-C-code-exp.patch @@ -0,0 +1,106 @@ +From: Simon McVittie <smcv@debian.org> +Date: Thu, 7 May 2020 12:13:56 +0100 +Subject: build-db: Use the same database format that the C code expects + +Otherwise, Python 2 anydbm will preferentially choose Berkeley DB format +(dbhash/bsddb), which is neither GNU gdbm nor traditional Unix (n)dbm. + +Signed-off-by: Simon McVittie <smcv@debian.org> +Fixes: https://github.com/lathiat/avahi/issues/260 +--- + configure.ac | 11 ++++++++--- + service-type-database/Makefile.am | 4 ++-- + service-type-database/build-db | 27 +++++++++++++++++++++------ + 3 files changed, 31 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 58db8c7..5aea4e7 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -871,9 +871,14 @@ if test "x$HAVE_PYTHON" = "xyes" ; then + fi + + AM_CHECK_PYMOD(socket,,,[AC_MSG_ERROR(Could not find Python module socket)]) +- if test "x$HAVE_GDBM" = "xyes" || test "x$HAVE_DBM" = "xyes"; then +- AM_CHECK_PYMOD(anydbm,,,[ +- AM_CHECK_PYMOD(dbm,,,[AC_MSG_ERROR(Could not find Python module dbm)]) ++ if test "x$HAVE_GDBM" = "xyes"; then ++ AM_CHECK_PYMOD([dbm.gnu], [], [], [ ++ AM_CHECK_PYMOD([gdbm], [], [], [AC_MSG_ERROR(Could not find Python module dbm.gnu or gdbm)]) ++ ]) ++ fi ++ if test "x$HAVE_DBM" = "xyes"; then ++ AM_CHECK_PYMOD([dbm.ndbm], [], [], [ ++ AM_CHECK_PYMOD([dbm], [], [], [AC_MSG_ERROR(Could not find Python module dbm.ndbm or dbm)]) + ]) + fi + fi +diff --git a/service-type-database/Makefile.am b/service-type-database/Makefile.am +index f9fa082..0ead0f6 100644 +--- a/service-type-database/Makefile.am ++++ b/service-type-database/Makefile.am +@@ -28,7 +28,7 @@ noinst_SCRIPTS=build-db + pkglibdata_DATA+=service-types.db + + service-types.db: service-types +- $(AM_V_GEN)$(PYTHON) build-db $< $@.coming && \ ++ $(AM_V_GEN)$(PYTHON) build-db --gnu $< $@.coming && \ + mv $@.coming $@ + + CLEANFILES = service-types.db +@@ -44,7 +44,7 @@ service-types.db.pag: service-types.db + service-types.db.dir: service-types.db + $(AM_V_GEN)mv service-types.db.coming.dir service-types.db.dir + service-types.db: service-types build-db +- $(AM_V_GEN)$(PYTHON) build-db $< $@.coming && \ ++ $(AM_V_GEN)$(PYTHON) build-db --ndbm $< $@.coming && \ + if test -f "$@.coming"; then mv $@.coming $@; fi + + CLEANFILES = service-types.db* +diff --git a/service-type-database/build-db b/service-type-database/build-db +index 78ee892..6415d27 100755 +--- a/service-type-database/build-db ++++ b/service-type-database/build-db +@@ -17,13 +17,28 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA. + +-try: +- import anydbm as dbm +-except ImportError: +- import dbm +- + import sys + ++if sys.argv[1] == '--gnu': ++ if sys.version_info >= (3,): ++ import dbm.gnu as chosen_dbm ++ else: ++ import gdbm as chosen_dbm ++ ++ sys.argv[1:] = sys.argv[2:] ++elif sys.argv[1] == '--ndbm': ++ if sys.version_info >= (3,): ++ import dbm.ndbm as chosen_dbm ++ else: ++ import dbm as chosen_dbm ++ ++ sys.argv[1:] = sys.argv[2:] ++else: ++ if sys.version_info >= (3,): ++ import dbm as chosen_dbm ++ else: ++ import anydbm as chosen_dbm ++ + if len(sys.argv) > 1: + infn = sys.argv[1] + else: +@@ -34,7 +49,7 @@ if len(sys.argv) > 2: + else: + outfn = infn + ".db" + +-db = dbm.open(outfn, "n") ++db = chosen_dbm.open(outfn, "n") + + for ln in open(infn, "r"): + ln = ln.strip(" \r\n\t") |