From 21435953e16cda318a82334ddbadb3b5c36d9ea7 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Wed, 15 Jan 2020 15:51:32 +0000 Subject: gentoo resync : 15.01.2020 --- net-dns/avahi/files/avahi-0.7-python3-gdbm.patch | 234 +++++++++++++++++++++ .../avahi/files/avahi-0.7-python3-unittest.patch | 151 +++++++++++++ net-dns/avahi/files/avahi-0.7-python3.patch | 94 +++++++++ .../avahi-0.7-remove-empty-avahi_discover.patch | 77 +++++++ 4 files changed, 556 insertions(+) create mode 100644 net-dns/avahi/files/avahi-0.7-python3-gdbm.patch create mode 100644 net-dns/avahi/files/avahi-0.7-python3-unittest.patch create mode 100644 net-dns/avahi/files/avahi-0.7-python3.patch create mode 100644 net-dns/avahi/files/avahi-0.7-remove-empty-avahi_discover.patch (limited to 'net-dns/avahi/files') diff --git a/net-dns/avahi/files/avahi-0.7-python3-gdbm.patch b/net-dns/avahi/files/avahi-0.7-python3-gdbm.patch new file mode 100644 index 000000000000..3976b8df2e76 --- /dev/null +++ b/net-dns/avahi/files/avahi-0.7-python3-gdbm.patch @@ -0,0 +1,234 @@ +From 63750f1be96ad08c407193b08bf3b9ee74310e2d Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Tue, 11 Jul 2017 21:52:37 +0200 +Subject: [PATCH] avahi-python: Use the agnostic DBM interface + +Also fixes configure failing if Python 3 is the build python and GDBM is +enabled, since Py3 only has anydbm under the name of 'dbm'. + +Not enough to make ServiceTypeDatabase.py compatible with Py3, but it's +a start. +--- + avahi-python/avahi/Makefile.am | 15 +-------- + avahi-python/avahi/ServiceTypeDatabase.py.in | 33 ++++++++++++++----- + configure.ac | 9 +++-- + service-type-database/.gitignore | 1 - + service-type-database/Makefile.am | 18 +++------- + .../{build-db.in => build-db} | 13 +++++--- + 6 files changed, 42 insertions(+), 47 deletions(-) + rename service-type-database/{build-db.in => build-db} (87%) + +diff --git a/avahi-python/avahi/Makefile.am b/avahi-python/avahi/Makefile.am +index 3eb67d0d..c906b9bf 100644 +--- a/avahi-python/avahi/Makefile.am ++++ b/avahi-python/avahi/Makefile.am +@@ -25,29 +25,16 @@ avahidir = $(pythondir)/avahi + + if HAVE_GDBM + nodist_avahi_SCRIPTS = ServiceTypeDatabase.py +- +-ServiceTypeDatabase.py: ServiceTypeDatabase.py.in +- $(AM_V_GEN)sed -e 's,@PYTHON\@,$(PYTHON),g' \ +- -e 's,@DBM\@,gdbm,g' \ +- -e 's,@FIRST_KEY\@,key = self.db.firstkey(),g' \ +- -e 's,@CHECK_KEY\@,while key is not None:,g' \ +- -e 's,@NEXT_KEY\@,key = self.db.nextkey(key),g' \ +- -e 's,@pkglibdatadir\@,$(pkglibdatadir),g' $< > $@ && \ +- chmod +x $@ + endif + + if HAVE_DBM + nodist_avahi_SCRIPTS = ServiceTypeDatabase.py ++endif + + ServiceTypeDatabase.py: ServiceTypeDatabase.py.in + $(AM_V_GEN)sed -e 's,@PYTHON\@,$(PYTHON),g' \ +- -e 's,@DBM\@,dbm,g' \ +- -e 's,@FIRST_KEY\@,keys = self.db.keys(),g' \ +- -e 's,@CHECK_KEY\@,for key in keys:,g' \ +- -e 's,@NEXT_KEY\@,,g' \ + -e 's,@pkglibdatadir\@,$(pkglibdatadir),g' $< > $@ && \ + chmod +x $@ +-endif + + avahi_PYTHON = $(avahi_SCRIPTS) + +diff --git a/avahi-python/avahi/ServiceTypeDatabase.py.in b/avahi-python/avahi/ServiceTypeDatabase.py.in +index 4ddd6544..d7f9969b 100644 +--- a/avahi-python/avahi/ServiceTypeDatabase.py.in ++++ b/avahi-python/avahi/ServiceTypeDatabase.py.in +@@ -17,7 +17,11 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA. + +-import @DBM@ ++try: ++ import anydbm as dbm ++except ImportError: ++ import dbm ++ + import locale + import re + +@@ -28,7 +32,7 @@ class ServiceTypeDatabase: + + def __init__(self, filename = "@pkglibdatadir@/service-types.db"): + +- self.db = @DBM@.open(filename, "r") ++ self.db = dbm.open(filename, "r") + + l = locale.getlocale(locale.LC_MESSAGES) + +@@ -90,13 +94,24 @@ class ServiceTypeDatabase: + + def __iter__(self): + +- @FIRST_KEY@ +- @CHECK_KEY@ +- +- if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key): +- yield key +- +- @NEXT_KEY@ ++ def want_key(key): ++ if not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key): ++ return False ++ if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key): ++ return False ++ return True ++ ++ try: ++ key = self.db.firstkey() ++ except AttributeError: ++ for key in self.db.keys(): ++ if want_key(key): ++ yield key ++ else: ++ while key is not None: ++ if want_key(key): ++ yield key ++ key = self.db.nextkey(key) + + def __len__(self): + +diff --git a/configure.ac b/configure.ac +index 66789718..fbbf7cf3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -824,11 +824,10 @@ 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"; then +- AM_CHECK_PYMOD(gdbm,,,[AC_MSG_ERROR(Could not find Python module gdbm)]) +- fi +- if test "x$HAVE_DBM" = "xyes"; then +- AM_CHECK_PYMOD(dbm,,,[AC_MSG_ERROR(Could not find Python module dbm)]) ++ 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)]) ++ ]) + fi + fi + fi +diff --git a/service-type-database/.gitignore b/service-type-database/.gitignore +index 581f1929..51b02600 100644 +--- a/service-type-database/.gitignore ++++ b/service-type-database/.gitignore +@@ -1,4 +1,3 @@ + Makefile + Makefile.in + service-types.db +-build-db +diff --git a/service-type-database/Makefile.am b/service-type-database/Makefile.am +index d184fde3..f9fa0825 100644 +--- a/service-type-database/Makefile.am ++++ b/service-type-database/Makefile.am +@@ -15,7 +15,7 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA. + +-EXTRA_DIST=build-db.in service-types ++EXTRA_DIST=service-types + + pkglibdatadir=$(libdir)/avahi + +@@ -27,16 +27,11 @@ if HAVE_GDBM + noinst_SCRIPTS=build-db + pkglibdata_DATA+=service-types.db + +-build-db: build-db.in +- $(AM_V_GEN)sed -e 's,@PYTHON\@,$(PYTHON),g' \ +- -e 's,@DBM\@,gdbm,g' $< > $@ && \ +- chmod +x $@ +- +-service-types.db: service-types build-db ++service-types.db: service-types + $(AM_V_GEN)$(PYTHON) build-db $< $@.coming && \ + mv $@.coming $@ + +-CLEANFILES = service-types.db build-db ++CLEANFILES = service-types.db + + endif + if HAVE_DBM +@@ -44,11 +39,6 @@ if HAVE_DBM + noinst_SCRIPTS=build-db + pkglibdata_DATA+=service-types.db.pag service-types.db.dir + +-build-db: build-db.in +- $(AM_V_GEN)sed -e 's,@PYTHON\@,$(PYTHON),g' \ +- -e 's,@DBM\@,dbm,g' $< > $@ && \ +- chmod +x $@ +- + service-types.db.pag: service-types.db + $(AM_V_GEN)mv service-types.db.coming.pag service-types.db.pag + service-types.db.dir: service-types.db +@@ -57,7 +47,7 @@ service-types.db: service-types build-db + $(AM_V_GEN)$(PYTHON) build-db $< $@.coming && \ + if test -f "$@.coming"; then mv $@.coming $@; fi + +-CLEANFILES = service-types.db* build-db ++CLEANFILES = service-types.db* + + endif + endif +diff --git a/service-type-database/build-db.in b/service-type-database/build-db +similarity index 87% +rename from service-type-database/build-db.in +rename to service-type-database/build-db +index 4cda4253..78ee892f 100755 +--- a/service-type-database/build-db.in ++++ b/service-type-database/build-db +@@ -1,4 +1,4 @@ +-#!@PYTHON@ ++#!/usr/bin/env python + # -*-python-*- + # This file is part of avahi. + # +@@ -17,7 +17,12 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + # USA. + +-import @DBM@, sys ++try: ++ import anydbm as dbm ++except ImportError: ++ import dbm ++ ++import sys + + if len(sys.argv) > 1: + infn = sys.argv[1] +@@ -29,9 +34,9 @@ if len(sys.argv) > 2: + else: + outfn = infn + ".db" + +-db = @DBM@.open(outfn, "n") ++db = dbm.open(outfn, "n") + +-for ln in file(infn, "r"): ++for ln in open(infn, "r"): + ln = ln.strip(" \r\n\t") + + if ln == "" or ln.startswith("#"): diff --git a/net-dns/avahi/files/avahi-0.7-python3-unittest.patch b/net-dns/avahi/files/avahi-0.7-python3-unittest.patch new file mode 100644 index 000000000000..9d735a1780c2 --- /dev/null +++ b/net-dns/avahi/files/avahi-0.7-python3-unittest.patch @@ -0,0 +1,151 @@ +From 62fe263662b52a462895fd8d21cf29b2fa22fe86 Mon Sep 17 00:00:00 2001 +From: Simon McVittie +Date: Fri, 27 Apr 2018 11:10:57 +0100 +Subject: [PATCH] avahi-python: Add a unit test for string and bytestring + conversions + +Signed-off-by: Simon McVittie +--- + .gitignore | 1 + + avahi-python/avahi/.gitignore | 5 ++ + avahi-python/avahi/Makefile.am | 7 +++ + avahi-python/avahi/test.py | 85 ++++++++++++++++++++++++++++++++++ + 4 files changed, 98 insertions(+) + create mode 100755 avahi-python/avahi/test.py + +diff --git a/.gitignore b/.gitignore +index beab8d94..06565f06 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -32,3 +32,4 @@ ltmain.sh + missing + py-compile + stamp-h1 ++test-driver +diff --git a/avahi-python/avahi/.gitignore b/avahi-python/avahi/.gitignore +index 118a34de..9b0f6e3c 100644 +--- a/avahi-python/avahi/.gitignore ++++ b/avahi-python/avahi/.gitignore +@@ -1 +1,6 @@ ++*.log ++*.pyc ++*.pyo ++*.trs + ServiceTypeDatabase.py ++__pycache__/ +diff --git a/avahi-python/avahi/Makefile.am b/avahi-python/avahi/Makefile.am +index 3eb67d0d..cf527aff 100644 +--- a/avahi-python/avahi/Makefile.am ++++ b/avahi-python/avahi/Makefile.am +@@ -16,6 +16,11 @@ + # USA. + + EXTRA_DIST = __init__.py ServiceTypeDatabase.py.in ++EXTRA_DIST += test.py ++ ++TESTS = ++TEST_EXTENSIONS = .py ++PY_LOG_COMPILER = $(PYTHON) + + pkglibdatadir=$(libdir)/avahi + +@@ -55,6 +60,8 @@ if HAVE_PYTHON_DBUS + + avahi_PYTHON += __init__.py + ++TESTS += test.py ++ + endif + endif + +diff --git a/avahi-python/avahi/test.py b/avahi-python/avahi/test.py +new file mode 100755 +index 00000000..7afc4809 +--- /dev/null ++++ b/avahi-python/avahi/test.py +@@ -0,0 +1,85 @@ ++#!/usr/bin/python ++# ++# Copyright 2018 Simon McVittie ++# ++# This file is part of avahi. ++# ++# avahi is free software; you can redistribute it and/or modify it ++# under the terms of the GNU Lesser General Public License as ++# published by the Free Software Foundation; either version 2 of the ++# License, or (at your option) any later version. ++# ++# avahi is distributed in the hope that it will be useful, but WITHOUT ++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ++# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ++# License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with avahi; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++# USA. ++ ++import os ++import os.path ++import sys ++import unittest ++from collections import OrderedDict ++ ++sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.pardir)) ++ ++import avahi ++import dbus ++ ++class TestUtilityMethods(unittest.TestCase): ++ def test_byte_array_to_string(self): ++ self.assertEqual( ++ avahi.byte_array_to_string([1, 2, 127, 128]), ++ '....') ++ self.assertEqual( ++ avahi.byte_array_to_string([ord('a'), ord(' '), ord('b')]), ++ 'a b') ++ ++ def test_txt_array_to_string_array(self): ++ self.assertEqual( ++ avahi.txt_array_to_string_array([[1, 2], [ord('a'), ord('b')]]), ++ ['..', 'ab']) ++ ++ def test_string_to_byte_array(self): ++ self.assertEqual( ++ avahi.string_to_byte_array('abc'), ++ [dbus.Byte(97), dbus.Byte(98), dbus.Byte(99)]) ++ self.assertIsInstance( ++ avahi.string_to_byte_array('abc')[0], ++ dbus.Byte) ++ self.assertEqual( ++ avahi.string_to_byte_array(b'\x01\xff'), ++ [dbus.Byte(0x01), dbus.Byte(0xff)]) ++ self.assertEqual( ++ avahi.string_to_byte_array(u'\u00e1'), ++ [dbus.Byte(0xc3), dbus.Byte(0xa1)]) ++ ++ def test_string_array_to_txt_array(self): ++ self.assertEqual( ++ avahi.string_array_to_txt_array(['abc', b'\x01', u'\u00e1']), ++ [ ++ [dbus.Byte(97), dbus.Byte(98), dbus.Byte(99)], ++ [dbus.Byte(0x01)], ++ [dbus.Byte(0xc3), dbus.Byte(0xa1)]]) ++ self.assertIsInstance( ++ avahi.string_array_to_txt_array(['abc'])[0][0], ++ dbus.Byte) ++ ++ def test_dict_to_txt_array(self): ++ self.assertEqual( ++ avahi.dict_to_txt_array( ++ OrderedDict((('a', 'abc'), ('b', b'\x01'), ('c', u'\u00e1')))), ++ [ ++ [dbus.Byte(97), dbus.Byte(ord('=')), dbus.Byte(97), dbus.Byte(98), dbus.Byte(99)], ++ [dbus.Byte(98), dbus.Byte(ord('=')), dbus.Byte(0x01)], ++ [dbus.Byte(99), dbus.Byte(ord('=')), dbus.Byte(0xc3), dbus.Byte(0xa1)]]) ++ self.assertIsInstance( ++ avahi.dict_to_txt_array({'a': 'abc'})[0][0], ++ dbus.Byte) ++ ++if __name__ == '__main__': ++ unittest.main() diff --git a/net-dns/avahi/files/avahi-0.7-python3.patch b/net-dns/avahi/files/avahi-0.7-python3.patch new file mode 100644 index 000000000000..a4bb34029964 --- /dev/null +++ b/net-dns/avahi/files/avahi-0.7-python3.patch @@ -0,0 +1,94 @@ +From 169e85dbc13dcaae8a699618883e512614f540b7 Mon Sep 17 00:00:00 2001 +From: Simon McVittie +Date: Fri, 27 Apr 2018 11:09:07 +0100 +Subject: [PATCH] avahi-python: Encode unicode strings as UTF-8 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Previously, we would effectively encode anything representable in +Latin-1 as Latin-1, and crash on anything not representable in Latin-1: + +>>> import avahi +>>> avahi.string_to_byte_array(u'©') +[dbus.Byte(169)] +>>> avahi.string_to_byte_array(u'\ufeff') +Traceback (most recent call last): + File "", line 1, in + File "/usr/lib/python2.7/dist-packages/avahi/__init__.py", line 94, in string_to_byte_array + r.append(dbus.Byte(ord(c))) +ValueError: Integer outside range 0-255 + +This is particularly important for Python 3, where the str type +is a Unicode string. + +The b'' syntax for bytestrings is supported since at least Python 2.7. + +These functions now accept either Unicode strings (Python 2 unicode, +Python 3 str), which are encoded in UTF-8, or bytestrings +(Python 2 str, Python 3 bytes) which are taken as-is. + +Signed-off-by: Simon McVittie +--- + avahi-python/avahi/__init__.py | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/avahi-python/avahi/__init__.py b/avahi-python/avahi/__init__.py +index 7b450293..02305b02 100644 +--- a/avahi-python/avahi/__init__.py ++++ b/avahi-python/avahi/__init__.py +@@ -17,6 +17,8 @@ + + # Some definitions matching those in avahi-common/defs.h + ++import sys ++ + import dbus + + SERVER_INVALID, SERVER_REGISTERING, SERVER_RUNNING, SERVER_COLLISION, SERVER_FAILURE = range(0, 5) +@@ -66,6 +68,9 @@ + DBUS_INTERFACE_SERVICE_RESOLVER = DBUS_NAME + ".ServiceResolver" + DBUS_INTERFACE_RECORD_BROWSER = DBUS_NAME + ".RecordBrowser" + ++if sys.version_info[0] >= 3: ++ unicode = str ++ + def byte_array_to_string(s): + r = "" + +@@ -86,12 +91,19 @@ def txt_array_to_string_array(t): + + return l + +- + def string_to_byte_array(s): ++ if isinstance(s, unicode): ++ s = s.encode('utf-8') ++ + r = [] + + for c in s: +- r.append(dbus.Byte(ord(c))) ++ if isinstance(c, int): ++ # Python 3: iterating over bytes yields ints ++ r.append(dbus.Byte(c)) ++ else: ++ # Python 2: iterating over str yields str ++ r.append(dbus.Byte(ord(c))) + + return r + +@@ -107,6 +119,12 @@ def dict_to_txt_array(txt_dict): + l = [] + + for k,v in txt_dict.items(): +- l.append(string_to_byte_array("%s=%s" % (k,v))) ++ if isinstance(k, unicode): ++ k = k.encode('utf-8') ++ ++ if isinstance(v, unicode): ++ v = v.encode('utf-8') ++ ++ l.append(string_to_byte_array(b"%s=%s" % (k,v))) + + return l diff --git a/net-dns/avahi/files/avahi-0.7-remove-empty-avahi_discover.patch b/net-dns/avahi/files/avahi-0.7-remove-empty-avahi_discover.patch new file mode 100644 index 000000000000..702499e22185 --- /dev/null +++ b/net-dns/avahi/files/avahi-0.7-remove-empty-avahi_discover.patch @@ -0,0 +1,77 @@ +From ffb19d8f3c7f1fe4f31f79f8601dd3079730401b Mon Sep 17 00:00:00 2001 +From: Simon McVittie +Date: Fri, 27 Apr 2018 09:01:13 +0100 +Subject: [PATCH] Remove empty avahi_discover Python module + +The avahi-discover tool no longer has any code outside its main +executable, so it does not need to install library modules. Its only +library code was avahi_discover.SimpleGladeApp, which was removed +in 2009. + +Signed-off-by: Simon McVittie +--- + avahi-python/avahi-discover/Makefile.am | 6 ------ + avahi-python/avahi-discover/__init__.py | 18 ------------------ + 2 files changed, 24 deletions(-) + delete mode 100755 avahi-python/avahi-discover/__init__.py + +diff --git a/avahi-python/avahi-discover/Makefile.am b/avahi-python/avahi-discover/Makefile.am +index 5fc4b25f..bb4d7172 100644 +--- a/avahi-python/avahi-discover/Makefile.am ++++ b/avahi-python/avahi-discover/Makefile.am +@@ -18,7 +18,6 @@ + AM_CFLAGS=-I$(top_srcdir) + + EXTRA_DIST = \ +- __init__.py \ + avahi-discover.py \ + avahi-discover.desktop.in.in + +@@ -31,15 +30,11 @@ pythonscripts = + desktopdir = $(datadir)/applications + desktop_DATA = + +-avahi_discoverdir = $(pythondir)/avahi_discover +-avahi_discover_PYTHON = +- + if HAVE_GDBM + pythonscripts += \ + avahi-discover + desktop_DATA += avahi-discover.desktop + @INTLTOOL_DESKTOP_RULE@ +-avahi_discover_PYTHON += __init__.py + endif + + if HAVE_DBM +@@ -47,7 +42,6 @@ pythonscripts += \ + avahi-discover + desktop_DATA += avahi-discover.desktop + @INTLTOOL_DESKTOP_RULE@ +-avahi_discover_PYTHON += __init__.py + endif + + avahi-discover.desktop.in: avahi-discover.desktop.in.in +diff --git a/avahi-python/avahi-discover/__init__.py b/avahi-python/avahi-discover/__init__.py +deleted file mode 100755 +index 6f3ec7f9..00000000 +--- a/avahi-python/avahi-discover/__init__.py ++++ /dev/null +@@ -1,18 +0,0 @@ +-#!@PYTHON@ +-# -*-python-*- +-# This file is part of avahi. +-# +-# avahi is free software; you can redistribute it and/or modify it +-# under the terms of the GNU Lesser General Public License as +-# published by the Free Software Foundation; either version 2 of the +-# License, or (at your option) any later version. +-# +-# avahi is distributed in the hope that it will be useful, but WITHOUT +-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +-# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +-# License for more details. +-# +-# You should have received a copy of the GNU Lesser General Public +-# License along with avahi; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +-# USA. -- cgit v1.2.3