net-dns/avahi-base: Bump v.0.7-r3
This commit is contained in:
@@ -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.
|
||||
Reference in New Issue
Block a user