net-dns/avahi-base: Bump v.0.7-r3

This commit is contained in:
Daniele Rondina
2020-02-25 12:19:13 +01:00
parent 9106044ee4
commit 9eeedc2b99
5 changed files with 782 additions and 0 deletions
+226
View File
@@ -0,0 +1,226 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
AVAHI_MODULE="${AVAHI_MODULE:-${PN/avahi-}}"
MY_P=${P/-${AVAHI_MODULE}}
MY_PN=${PN/-${AVAHI_MODULE}}
PYTHON_COMPAT=( python3_{6,7} )
PYTHON_REQ_USE="gdbm"
inherit autotools flag-o-matic multilib-minimal python-r1 systemd mono-env
DESCRIPTION="System which facilitates service discovery on a local network (base pkg)"
HOMEPAGE="http://avahi.org/"
SRC_URI="https://github.com/lathiat/avahi/archive/v${PV}.tar.gz -> ${MY_P}.tar.gz"
LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-linux"
IUSE="autoipd bookmarks dbus doc gdbm howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat nls python selinux test mono"
S="${WORKDIR}/${MY_P}"
REQUIRED_USE="
python? ( dbus gdbm ${PYTHON_REQUIRED_USE} )
mono? ( dbus )
howl-compat? ( dbus )
mdnsresponder-compat? ( dbus )
"
COMMON_DEPEND="
dev-libs/libdaemon
dev-libs/expat
dev-libs/glib:2[${MULTILIB_USEDEP}]
gdbm? ( sys-libs/gdbm:=[${MULTILIB_USEDEP}] )
dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
kernel_linux? ( sys-libs/libcap )
introspection? ( dev-libs/gobject-introspection:= )
python? (
${PYTHON_DEPS}
dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
introspection? ( dev-python/pygobject:3[${PYTHON_USEDEP}] )
)
mono? (
dev-lang/mono
)
bookmarks? (
${PYTHON_DEPS}
>=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
)
"
DEPEND="
${COMMON_DEPEND}
dev-util/glib-utils
doc? ( app-doc/doxygen )
app-doc/xmltoman
dev-util/intltool
virtual/pkgconfig[${MULTILIB_USEDEP}]
"
RDEPEND="
acct-user/avahi
acct-group/avahi
acct-group/netdev
autoipd? (
acct-user/avahi-autoipd
acct-group/avahi-autoipd
)
${COMMON_DEPEND}
howl-compat? ( !net-misc/howl )
mdnsresponder-compat? ( !net-misc/mDNSResponder )
selinux? ( sec-policy/selinux-avahi )
"
MULTILIB_WRAPPED_HEADERS=( /usr/include/avahi-qt5/qt-watch.h )
PATCHES=(
"${FILESDIR}/${MY_P}-qt5.patch"
"${FILESDIR}/${MY_P}-CVE-2017-6519.patch"
"${FILESDIR}/${MY_P}-remove-empty-avahi_discover.patch"
"${FILESDIR}/${MY_P}-python3.patch"
"${FILESDIR}/${MY_P}-python3-unittest.patch"
"${FILESDIR}/${MY_P}-python3-gdbm.patch"
)
pkg_setup() {
use mono && mono-env_pkg_setup
use python || use bookmarks && python_setup
}
src_prepare() {
default
if ! use ipv6; then
sed -i \
-e s/use-ipv6=yes/use-ipv6=no/ \
avahi-daemon/avahi-daemon.conf || die
fi
sed -i\
-e "s:\\.\\./\\.\\./\\.\\./doc/avahi-docs/html/:../../../doc/${PF}/html/:" \
doxygen_to_devhelp.xsl || die
# Prevent .pyc files in DESTDIR
>py-compile
eautoreconf
# bundled manpages
multilib_copy_sources
}
src_configure() {
# those steps should be done once-per-ebuild rather than per-ABI
use sh && replace-flags -O? -O0
multilib-minimal_src_configure
}
multilib_src_configure() {
local myconf=(
--disable-static
--localstatedir="${EPREFIX}/var"
--with-distro=gentoo
--enable-manpages
--enable-xmltoman
--disable-monodoc
--enable-glib
--enable-gobject
$(multilib_native_use_enable test tests)
$(multilib_native_use_enable autoipd)
$(use_enable mdnsresponder-compat compat-libdns_sd)
$(use_enable howl-compat compat-howl)
$(multilib_native_use_enable doc doxygen-doc)
$(use_enable dbus)
$(multilib_native_use_enable python)
$(use_enable nls)
$(multilib_native_use_enable introspection)
--disable-qt3
--disable-qt4
--disable-qt5
--disable-gtk
--disable-gtk3
$(use_enable gdbm)
--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
)
if use python; then
myconf+=(
$(multilib_native_use_enable dbus python-dbus)
$(multilib_native_use_enable introspection pygobject)
)
fi
if use mono; then
myconf+=( $(multilib_native_use_enable doc monodoc) )
fi
if ! multilib_is_native_abi; then
myconf+=(
# used by daemons only
--disable-libdaemon
--with-xml=none
)
fi
econf "${myconf[@]}"
}
multilib_src_compile() {
emake
multilib_is_native_abi && use doc && emake avahi.devhelp
}
multilib_src_install() {
emake install DESTDIR="${D}"
# https://github.com/lathiat/avahi/issues/28
use howl-compat && dosym avahi-compat-howl.pc /usr/$(get_libdir)/pkgconfig/howl.pc
use mdnsresponder-compat && dosym avahi-compat-libdns_sd/dns_sd.h /usr/include/dns_sd.h
if multilib_is_native_abi && use doc; then
docinto html
dodoc -r doxygen/html/.
insinto /usr/share/devhelp/books/avahi
doins avahi.devhelp || die
fi
# The build system creates an empty "/run" directory, so we clean it up here
rmdir "${ED}"/run
}
multilib_src_install_all() {
if use bookmarks; then
rm "${ED}/usr/bin/avahi-bookmarks" || die
fi
rm "${ED}/usr/bin/avahi-discover" \
"${ED}/usr/share/applications/avahi-discover.desktop" \
|| die
find "${ED}"/usr/lib*/python* -type d -empty -delete
if use autoipd; then
insinto /lib/rcscripts/net
doins "${FILESDIR}"/autoipd.sh
insinto /lib/netifrc/net
newins "${FILESDIR}"/autoipd-openrc.sh autoipd.sh
fi
dodoc docs/{AUTHORS,NEWS,README,TODO}
find "${ED}" -name '*.la' -type f -delete || die
}
pkg_postinst() {
if use autoipd; then
elog
elog "To use avahi-autoipd to configure your interfaces with IPv4LL (RFC3927)"
elog "addresses, just set config_<interface>=( autoipd ) in /etc/conf.d/net!"
elog
fi
}
@@ -0,0 +1,234 @@
From 63750f1be96ad08c407193b08bf3b9ee74310e2d Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
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("#"):
@@ -0,0 +1,151 @@
From 62fe263662b52a462895fd8d21cf29b2fa22fe86 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
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 <smcv@debian.org>
---
.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()
@@ -0,0 +1,94 @@
From 169e85dbc13dcaae8a699618883e512614f540b7 Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
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 "<stdin>", line 1, in <module>
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 <smcv@debian.org>
---
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
@@ -0,0 +1,77 @@
From ffb19d8f3c7f1fe4f31f79f8601dd3079730401b Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@debian.org>
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 <smcv@debian.org>
---
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.