diff options
author | Christopher Brannon <teiresias@gentoo.org> | 2014-02-21 19:46:35 +0000 |
---|---|---|
committer | Christopher Brannon <teiresias@gentoo.org> | 2014-02-21 19:46:35 +0000 |
commit | 0204b4d8fe1cc4390d6415ed6dd5faf754df53c4 (patch) | |
tree | b79eb54bea97eabb130512223934e2f1667b6ac6 /media-gfx/sane-backends | |
parent | Version bump; Drop old. (diff) | |
download | gentoo-2-0204b4d8fe1cc4390d6415ed6dd5faf754df53c4.tar.gz gentoo-2-0204b4d8fe1cc4390d6415ed6dd5faf754df53c4.tar.bz2 gentoo-2-0204b4d8fe1cc4390d6415ed6dd5faf754df53c4.zip |
Fix an avahi-related segfault in the kodakaio backend.
Closes bug #501902.
The patch is from upstream's git repository, and the commit ID is
37523b867d411c2f82d08128246be7e38bc9812c.
(Portage version: 2.2.7/cvs/Linux x86_64, signed Manifest commit with key 0x6521e06d)
Diffstat (limited to 'media-gfx/sane-backends')
-rw-r--r-- | media-gfx/sane-backends/ChangeLog | 9 | ||||
-rw-r--r-- | media-gfx/sane-backends/files/sane-backends-1.0.24-kodakaio_avahi.patch | 84 | ||||
-rw-r--r-- | media-gfx/sane-backends/sane-backends-1.0.24-r2.ebuild | 293 |
3 files changed, 385 insertions, 1 deletions
diff --git a/media-gfx/sane-backends/ChangeLog b/media-gfx/sane-backends/ChangeLog index 39c011315fca..679d16f5aa93 100644 --- a/media-gfx/sane-backends/ChangeLog +++ b/media-gfx/sane-backends/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for media-gfx/sane-backends # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-gfx/sane-backends/ChangeLog,v 1.239 2014/01/26 12:21:35 ago Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-gfx/sane-backends/ChangeLog,v 1.240 2014/02/21 19:46:35 teiresias Exp $ + +*sane-backends-1.0.24-r2 (21 Feb 2014) + + 21 Feb 2014; Christopher Brannon <teiresias@gentoo.org> + +sane-backends-1.0.24-r2.ebuild, + +files/sane-backends-1.0.24-kodakaio_avahi.patch: + Fix avahi-related segfault in kodakaio. 26 Jan 2014; Agostino Sarubbo <ago@gentoo.org> sane-backends-1.0.24-r1.ebuild: Stable for sparc, wrt bug #497460 diff --git a/media-gfx/sane-backends/files/sane-backends-1.0.24-kodakaio_avahi.patch b/media-gfx/sane-backends/files/sane-backends-1.0.24-kodakaio_avahi.patch new file mode 100644 index 000000000000..e6f52ad6c242 --- /dev/null +++ b/media-gfx/sane-backends/files/sane-backends-1.0.24-kodakaio_avahi.patch @@ -0,0 +1,84 @@ +diff --git a/backend/kodakaio.c b/backend/kodakaio.c +index 8c4583a..b442e50 100644 +--- a/backend/kodakaio.c ++++ b/backend/kodakaio.c +@@ -127,7 +127,7 @@ for ubuntu 12.10 + + #define KODAKAIO_VERSION 02 + #define KODAKAIO_REVISION 4 +-#define KODAKAIO_BUILD 6 ++#define KODAKAIO_BUILD 7 + + /* for usb (but also used for net though it's not required). */ + #define MAX_BLOCK_SIZE 32768 +@@ -2184,6 +2184,7 @@ static void resolve_callback( + AvahiLookupResultFlags flags, + AVAHI_GCC_UNUSED void* userdata) { + ++ AvahiStringList *vid_pair_list = NULL, *pid_pair_list = NULL; + char *pidkey, *pidvalue; + char *vidkey, *vidvalue; + size_t valuesize; +@@ -2204,20 +2205,40 @@ static void resolve_callback( + avahi_address_snprint(a, sizeof(a), address); + + /* Output short for Kodak ESP */ +- DBG(min(10,DBG_AUTO), "%s:%u %s ", a,port,host_name); +- avahi_string_list_get_pair(avahi_string_list_find(txt, "vid"), +- &vidkey, &vidvalue, &valuesize); +- DBG(min(10,DBG_AUTO), "%s=%s ", vidkey, vidvalue); +- avahi_string_list_get_pair(avahi_string_list_find(txt, "pid"), +- &pidkey, &pidvalue, &valuesize); +- DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue); ++ DBG(min(10,DBG_AUTO), "%s:%u %s\n", a,port,host_name); + ++ vid_pair_list = avahi_string_list_find(txt, "vid"); ++ if(vid_pair_list != NULL) { ++ avahi_string_list_get_pair(vid_pair_list, &vidkey, &vidvalue, &valuesize); ++ DBG(min(10,DBG_AUTO), "%s=%s ", vidkey, vidvalue); ++ } ++ else DBG(min(10,DBG_AUTO), "failed to find key vid\n"); ++ ++ pid_pair_list = avahi_string_list_find(txt, "pid"); ++ if(pid_pair_list != NULL) { ++ avahi_string_list_get_pair(pid_pair_list, &pidkey, &pidvalue, &valuesize); ++ DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue); ++ } ++ else DBG(min(10,DBG_AUTO), "failed to find key pid\n"); ++ ++ if(pid_pair_list != NULL && vid_pair_list != NULL) { + ProcessAvahiDevice(name, vidvalue, pidvalue, a); +- avahi_free(vidkey); avahi_free(vidvalue); +- avahi_free(pidkey); avahi_free(pidvalue); ++ } ++ else DBG(min(10,DBG_AUTO), "didn't call ProcessAvahiDevice\n"); ++ ++ if(vid_pair_list != NULL) { ++ avahi_free(vidkey); ++ avahi_free(vidvalue); ++ DBG(min(15,DBG_AUTO), "vidkey and vidvalue freed\n"); ++ } ++ if(pid_pair_list != NULL) { ++ avahi_free(pidkey); ++ avahi_free(pidvalue); ++ DBG(min(15,DBG_AUTO), "pidkey and pidvalue freed\n"); ++ } + } + } +- ++ DBG(min(10,DBG_AUTO), "ending resolve_callback\n"); + avahi_service_resolver_free(r); + } + +diff --git a/doc/descriptions/kodakaio.desc b/doc/descriptions/kodakaio.desc +index 7882513..5fb18ed 100644 +--- a/doc/descriptions/kodakaio.desc ++++ b/doc/descriptions/kodakaio.desc +@@ -1,6 +1,6 @@ + :backend "kodakaio" + :url "http://sourceforge.net/projects/cupsdriverkodak/" +-:version "2.4.6" ++:version "2.4.7" + :manpage "sane-kodakaio" + :comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10" + :devicetype :scanner diff --git a/media-gfx/sane-backends/sane-backends-1.0.24-r2.ebuild b/media-gfx/sane-backends/sane-backends-1.0.24-r2.ebuild new file mode 100644 index 000000000000..27df7aed1e69 --- /dev/null +++ b/media-gfx/sane-backends/sane-backends-1.0.24-r2.ebuild @@ -0,0 +1,293 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-gfx/sane-backends/sane-backends-1.0.24-r2.ebuild,v 1.1 2014/02/21 19:46:35 teiresias Exp $ + +EAPI="5" + +inherit autotools eutils flag-o-matic multilib udev user toolchain-funcs + +# gphoto and v4l are handled by their usual USE flags. +# The pint backend was disabled because I could not get it to compile. +IUSE_SANE_BACKENDS=" + abaton + agfafocus + apple + artec + artec_eplus48u + as6e + avision + bh + canon + canon630u + canon_dr + canon_pp + cardscan + coolscan + coolscan2 + coolscan3 + dc210 + dc240 + dc25 + dell1600n_net + dmc + epjitsu + epson + epson2 + fujitsu + genesys + gt68xx + hp + hp3500 + hp3900 + hp4200 + hp5400 + hp5590 + hpljm1005 + hpsj5s + hs2p + ibm + kodak + kodakaio + kvs1025 + kvs20xx + kvs40xx + leo + lexmark + ma1509 + magicolor + matsushita + microtek + microtek2 + mustek + mustek_pp + mustek_usb + mustek_usb2 + nec + net + niash + p5 + pie + pixma + plustek + plustek_pp + pnm + qcam + ricoh + rts8891 + s9036 + sceptre + sharp + sm3600 + sm3840 + snapscan + sp15c + st400 + stv680 + tamarack + teco1 + teco2 + teco3 + test + u12 + umax + umax1220u + umax_pp + xerox_mfp" + +IUSE="avahi doc gphoto2 ipv6 threads usb v4l xinetd snmp systemd" + +for backend in ${IUSE_SANE_BACKENDS}; do + if [ ${backend} = pnm ]; then + IUSE="${IUSE} -sane_backends_pnm" + elif [ ${backend} = mustek_usb2 -o ${backend} = kvs40xx ]; then + IUSE="${IUSE} sane_backends_${backend}" + else + IUSE="${IUSE} +sane_backends_${backend}" + fi +done + +REQUIRED_USE=" + sane_backends_mustek_usb2? ( threads ) + sane_backends_kvs40xx? ( threads ) +" + +DESCRIPTION="Scanner Access Now Easy - Backends" +HOMEPAGE="http://www.sane-project.org/" +SRC_URI="https://alioth.debian.org/frs/download.php/file/3958/${P}.tar.gz" + +LICENSE="GPL-2 public-domain" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux" + +RDEPEND=" + sane_backends_dc210? ( virtual/jpeg ) + sane_backends_dc240? ( virtual/jpeg ) + sane_backends_dell1600n_net? ( virtual/jpeg + media-libs/tiff ) + avahi? ( >=net-dns/avahi-0.6.24 ) + sane_backends_canon_pp? ( sys-libs/libieee1284 ) + sane_backends_hpsj5s? ( sys-libs/libieee1284 ) + sane_backends_mustek_pp? ( sys-libs/libieee1284 ) + usb? ( virtual/libusb:1 ) + gphoto2? ( + media-libs/libgphoto2:= + virtual/jpeg + ) + v4l? ( media-libs/libv4l ) + xinetd? ( sys-apps/xinetd ) + snmp? ( net-analyzer/net-snmp ) + systemd? ( sys-apps/systemd ) +" + +DEPEND="${RDEPEND} + v4l? ( sys-kernel/linux-headers ) + doc? ( + virtual/latex-base + dev-texlive/texlive-latexextra + ) + >=sys-apps/sed-4 + + virtual/pkgconfig" + +# We now use new syntax construct (SUBSYSTEMS!="usb|usb_device) +RDEPEND="${RDEPEND} + !<sys-fs/udev-114" + +pkg_setup() { + enewgroup scanner + enewuser saned -1 -1 -1 scanner +} + +src_prepare() { + cat >> backend/dll.conf.in <<-EOF + # Add support for the HP-specific backend. Needs net-print/hplip installed. + hpaio + # Add support for the Epson-specific backend. Needs media-gfx/iscan installed. + epkowa + EOF + epatch "${FILESDIR}"/niash_array_index.patch \ + "${FILESDIR}"/${P}-unused-cups.patch \ + "${FILESDIR}"/${P}-automagic_systemd.patch \ + "${FILESDIR}"/${P}-kodakaio_avahi.patch \ + "${FILESDIR}"/${P}-saned_pidfile_location.patch + # Fix for "make check". + sed -i -e 's/sane-backends 1.0.24git/sane-backends 1.0.24/' testsuite/tools/data/html* + AT_NOELIBTOOLIZE=yes eautoreconf +} + +src_configure() { + append-flags -fno-strict-aliasing + + # the blank is intended - an empty string would result in building ALL backends. + local BACKENDS=" " + + use gphoto2 && BACKENDS="gphoto2" + use v4l && BACKENDS="${BACKENDS} v4l" + for backend in ${IUSE_SANE_BACKENDS}; do + if use "sane_backends_${backend}" && [ ${backend} != pnm ]; then + BACKENDS="${BACKENDS} ${backend}" + fi + done + + local myconf="$(use_enable usb libusb_1_0) $(use_with snmp)" + # you can only enable this backend, not disable it... + if use sane_backends_pnm; then + myconf="${myconf} --enable-pnm-backend" + fi + if ! use doc; then + myconf="${myconf} --disable-latex" + fi + if use sane_backends_mustek_pp; then + myconf="${myconf} --enable-parport-directio" + fi + if ! ( use sane_backends_canon_pp || use sane_backends_hpsj5s || use sane_backends_mustek_pp ); then + myconf="${myconf} sane_cv_use_libieee1284=no" + fi + # if LINGUAS is set, just use the listed and supported localizations. + if [ "${LINGUAS-NoLocalesSet}" != NoLocalesSet ]; then + echo > po/LINGUAS + for lang in ${LINGUAS}; do + if [ -a po/${lang}.po ]; then + echo ${lang} >> po/LINGUAS + fi + done + fi + SANEI_JPEG="sanei_jpeg.o" SANEI_JPEG_LO="sanei_jpeg.lo" \ + BACKENDS="${BACKENDS}" econf \ + $(use_with gphoto2) \ + $(use_with systemd) \ + $(use_with v4l) \ + $(use_enable avahi) \ + $(use_enable ipv6) \ + $(use_enable threads pthread) \ + ${myconf} +} + +src_compile() { + emake VARTEXFONTS="${T}/fonts" + + if use usb; then + cd tools/hotplug + grep -v '^$' libsane.usermap > libsane.usermap.new + mv libsane.usermap.new libsane.usermap + fi + + if tc-is-cross-compiler; then + # The build system sucks and doesn't handle this properly. + # https://alioth.debian.org/tracker/index.php?func=detail&aid=314236&group_id=30186&atid=410366 + tc-export_build_env BUILD_CC + cd "${S}"/tools + ${BUILD_CC} ${BUILD_CPPFLAGS} ${BUILD_CFLAGS} -I. -I../include \ + ../sanei/sanei_config.c ../sanei/sanei_constrain_value.c \ + ../sanei/sanei_init_debug.c sane-desc.c -o sane-desc || die + local dirs=( hal hotplug hotplug-ng udev ) + local targets=( + hal/libsane.fdi + hotplug/libsane.usermap + hotplug-ng/libsane.db + udev/libsane.rules + ) + mkdir -p "${dirs[@]}" || die + emake "${targets[@]}" + fi +} + +src_install () { + emake INSTALL_LOCKPATH="" DESTDIR="${D}" install \ + docdir="${EPREFIX}"/usr/share/doc/${PF} + keepdir /var/lib/lock/sane + fowners root:scanner /var/lib/lock/sane + fperms g+w /var/lib/lock/sane + dodir /etc/env.d + + if use usb; then + insinto /etc/hotplug/usb + exeinto /etc/hotplug/usb + doins tools/hotplug/libsane.usermap + doexe tools/hotplug/libusbscanner + newdoc tools/hotplug/README README.hotplug + fi + udev_newrules tools/udev/libsane.rules 41-libsane.rules + insinto "/usr/share/pkgconfig" + doins tools/sane-backends.pc + + dodoc NEWS AUTHORS ChangeLog* PROBLEMS README README.linux + find "${ED}" -name "*.la" | while read file; do rm "${file}"; done + if use xinetd; then + insinto /etc/xinetd.d + doins "${FILESDIR}"/saned + fi + + newinitd "${FILESDIR}"/saned.initd saned + newconfd "${FILESDIR}"/saned.confd saned +} + +pkg_postinst() { + if use xinetd; then + elog "If you want remote clients to connect, edit" + elog "/etc/sane.d/saned.conf and /etc/hosts.allow" + fi + + elog "If you are using a USB scanner, add all users who want" + elog "to access your scanner to the \"scanner\" group." +} |