public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Anthony G. Basile" <blueness@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-dns/avahi/files/, net-dns/avahi/
Date: Mon, 13 Jan 2020 17:36:31 +0000 (UTC)	[thread overview]
Message-ID: <1578936979.ecb1d2b716b08a3ea9d7aaaf5afc3fcaabbb55ef.blueness@gentoo> (raw)

commit:     ecb1d2b716b08a3ea9d7aaaf5afc3fcaabbb55ef
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 29 18:41:08 2019 +0000
Commit:     Anthony G. Basile <blueness <AT> gentoo <DOT> org>
CommitDate: Mon Jan 13 17:36:19 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ecb1d2b7

net-dns/avahi: python3_7 support, drop obsolete eutils and multilib

Drop >py-compile, seemingly not necessary anymore.
Make more use of myconf array.
Tests passed, fwiw.

Closes: https://bugs.gentoo.org/704200
Package-Manager: Portage-2.3.84, Repoman-2.3.20
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
Signed-off-by: Anthony G. Basile <blueness <AT> gentoo.org>

 net-dns/avahi/avahi-0.7-r5.ebuild                  | 217 +++++++++++++++++++
 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 +++++++
 5 files changed, 773 insertions(+)

diff --git a/net-dns/avahi/avahi-0.7-r5.ebuild b/net-dns/avahi/avahi-0.7-r5.ebuild
new file mode 100644
index 00000000000..edac01c62ae
--- /dev/null
+++ b/net-dns/avahi/avahi-0.7-r5.ebuild
@@ -0,0 +1,217 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+PYTHON_COMPAT=( python3_7 )
+PYTHON_REQ_USE="gdbm"
+inherit autotools flag-o-matic multilib-minimal mono-env python-r1 systemd
+
+DESCRIPTION="System which facilitates service discovery on a local network"
+HOMEPAGE="http://avahi.org/"
+SRC_URI="https://github.com/lathiat/avahi/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE="autoipd bookmarks dbus doc gdbm gtk gtk3 howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat mono nls python qt5 selinux systemd test"
+
+REQUIRED_USE="
+	python? ( dbus gdbm ${PYTHON_REQUIRED_USE} )
+	mono? ( dbus )
+	howl-compat? ( dbus )
+	mdnsresponder-compat? ( dbus )
+	systemd? ( dbus )
+"
+
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	dev-libs/libdaemon
+	dev-libs/expat
+	dev-libs/glib:2[${MULTILIB_USEDEP}]
+	gdbm? ( sys-libs/gdbm:=[${MULTILIB_USEDEP}] )
+	qt5? ( dev-qt/qtcore:5 )
+	gtk? ( x11-libs/gtk+:2[${MULTILIB_USEDEP}] )
+	gtk3? ( x11-libs/gtk+:3[${MULTILIB_USEDEP}] )
+	dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
+	kernel_linux? ( sys-libs/libcap )
+	introspection? ( dev-libs/gobject-introspection:= )
+	mono? (
+		dev-lang/mono
+		gtk? ( dev-dotnet/gtk-sharp:2 )
+	)
+	python? (
+		${PYTHON_DEPS}
+		dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
+		introspection? ( dev-python/pygobject:3[${PYTHON_USEDEP}] )
+	)
+	bookmarks? (
+		${PYTHON_DEPS}
+		>=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
+	)
+"
+RDEPEND="
+	acct-user/avahi
+	acct-group/avahi
+	acct-group/netdev
+	autoipd? (
+		acct-user/avahi-autoipd
+		acct-group/avahi-autoipd
+	)
+	${DEPEND}
+	howl-compat? ( !net-misc/howl )
+	mdnsresponder-compat? ( !net-misc/mDNSResponder )
+	selinux? ( sec-policy/selinux-avahi )
+"
+BDEPEND="
+	dev-util/glib-utils
+	doc? ( app-doc/doxygen )
+	app-doc/xmltoman
+	dev-util/intltool
+	virtual/pkgconfig[${MULTILIB_USEDEP}]
+"
+
+MULTILIB_WRAPPED_HEADERS=( /usr/include/avahi-qt5/qt-watch.h )
+
+PATCHES=(
+	"${FILESDIR}/${P}-qt5.patch"
+	"${FILESDIR}/${P}-CVE-2017-6519.patch"
+	"${FILESDIR}/${P}-remove-empty-avahi_discover.patch"
+	"${FILESDIR}/${P}-python3.patch"
+	"${FILESDIR}/${P}-python3-unittest.patch"
+	"${FILESDIR}/${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
+
+	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-monodoc
+		--disable-python-dbus
+		--disable-qt3
+		--disable-qt4
+		--disable-static
+		--enable-manpages
+		--enable-glib
+		--enable-gobject
+		--enable-xmltoman
+		--localstatedir="${EPREFIX}/var"
+		--with-distro=gentoo
+		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+		$(use_enable dbus)
+		$(use_enable gdbm)
+		$(use_enable gtk)
+		$(use_enable gtk3)
+		$(use_enable howl-compat compat-howl)
+		$(use_enable mdnsresponder-compat compat-libdns_sd)
+		$(use_enable nls)
+		$(multilib_native_use_enable autoipd)
+		$(multilib_native_use_enable doc doxygen-doc)
+		$(multilib_native_use_enable introspection)
+		$(multilib_native_use_enable mono)
+		$(multilib_native_use_enable python)
+		$(multilib_native_use_enable test tests)
+	)
+
+	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
+
+	myconf+=( $(multilib_native_use_enable qt5) )
+
+	econf "${myconf[@]}"
+}
+
+multilib_src_compile() {
+	emake
+
+	multilib_is_native_abi && use doc && emake avahi.devhelp
+}
+
+multilib_src_install() {
+	emake install DESTDIR="${D}"
+	use bookmarks && use python && use dbus && use gtk || \
+		rm -f "${ED}"/usr/bin/avahi-bookmarks
+
+	# 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
+	fi
+
+	# The build system creates an empty "/run" directory, so we clean it up here
+	rmdir "${ED}"/run || die
+}
+
+multilib_src_install_all() {
+	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
+}

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 00000000000..3976b8df2e7
--- /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)" <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("#"):

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 00000000000..9d735a1780c
--- /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 <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()

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 00000000000..a4bb3402996
--- /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 <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

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 00000000000..702499e2218
--- /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 <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.


             reply	other threads:[~2020-01-13 17:36 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-13 17:36 Anthony G. Basile [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-01-06 22:58 [gentoo-commits] repo/gentoo:master commit in: net-dns/avahi/files/, net-dns/avahi/ Andreas Sturmlechner
2024-02-15 19:09 Patrick McLean
2022-11-06  1:49 Sam James
2021-04-24 15:49 Andreas Sturmlechner
2020-09-19 11:28 Michał Górny
2018-01-21  3:33 Anthony G. Basile
2018-01-11 22:32 Andreas Sturmlechner
2015-09-25  2:03 Anthony G. Basile

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1578936979.ecb1d2b716b08a3ea9d7aaaf5afc3fcaabbb55ef.blueness@gentoo \
    --to=blueness@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox