diff options
author | 2012-01-02 22:10:27 +0000 | |
---|---|---|
committer | 2012-01-02 22:10:27 +0000 | |
commit | 6e6ac95b8d932630bede3f1e37b0c2a15526ace0 (patch) | |
tree | 00c2690172b76a280e50f205f596e1c977bc5aa6 /sys-fs | |
parent | Version bump (diff) | |
download | gentoo-2-6e6ac95b8d932630bede3f1e37b0c2a15526ace0.tar.gz gentoo-2-6e6ac95b8d932630bede3f1e37b0c2a15526ace0.tar.bz2 gentoo-2-6e6ac95b8d932630bede3f1e37b0c2a15526ace0.zip |
Support reading of compressed pci/usb databases #360849 by Samuli Suominen.
(Portage version: 2.2.0_alpha81/cvs/Linux x86_64)
Diffstat (limited to 'sys-fs')
-rw-r--r-- | sys-fs/udev/ChangeLog | 6 | ||||
-rw-r--r-- | sys-fs/udev/files/udev-175-zlib.patch | 94 | ||||
-rw-r--r-- | sys-fs/udev/udev-175-r1.ebuild | 12 |
3 files changed, 106 insertions, 6 deletions
diff --git a/sys-fs/udev/ChangeLog b/sys-fs/udev/ChangeLog index 51de8a4759df..667fe24f523c 100644 --- a/sys-fs/udev/ChangeLog +++ b/sys-fs/udev/ChangeLog @@ -1,6 +1,10 @@ # ChangeLog for sys-fs/udev # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.629 2012/01/01 21:49:17 dilfridge Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.630 2012/01/02 22:10:27 vapier Exp $ + + 02 Jan 2012; Mike Frysinger <vapier@gentoo.org> udev-175-r1.ebuild, + +files/udev-175-zlib.patch: + Support reading of compressed pci/usb databases #360849 by Samuli Suominen. 01 Jan 2012; Andreas K. Huettel <dilfridge@gentoo.org> +ChangeLog-2009: Split ChangeLog. diff --git a/sys-fs/udev/files/udev-175-zlib.patch b/sys-fs/udev/files/udev-175-zlib.patch new file mode 100644 index 000000000000..d6886d9abac7 --- /dev/null +++ b/sys-fs/udev/files/udev-175-zlib.patch @@ -0,0 +1,94 @@ +https://bugs.gentoo.org/360849 + +support opening the compressed pci/usb databases + +--- a/extras/usb-db/usb-db.c ++++ b/extras/usb-db/usb-db.c +@@ -90,19 +90,60 @@ + #define HEXCHARS "0123456789abcdefABCDEF" + #define WHITESPACE " \t\n\r" + ++#ifdef USE_ZLIB ++ ++#include <zlib.h> ++ ++static ssize_t gz_getline(char **lineptr, size_t *n, void *stream) ++{ ++ if (!*lineptr) ++ *lineptr = malloc(*n = 4096); ++ if (!*lineptr) ++ return -1; ++ if (gzgets(stream, *lineptr, *n - 1)) { ++ (*lineptr)[*n - 1] = '\0'; ++ /* should return strlen(*lineptr), but caller doesn't care */ ++ return 0; ++ } ++ return -1; ++} ++static int gz_fclose(void *stream) ++{ ++ return gzclose(stream); ++} ++ ++static ssize_t stdio_getline(char **lineptr, size_t *n, void *stream) ++{ ++ return getline(lineptr, n, stream); ++} ++static int stdio_fclose(void *stream) ++{ ++ return fclose(stream); ++} ++ ++#endif ++ + static int lookup_vid_pid( + uint16_t vid, + uint16_t pid, + char **vendor, + char **product) { + +- FILE *f; ++ void *f; + int ret = -1; + int found_vendor = 0; + char *line = NULL; + + *vendor = *product = NULL; + ++#ifdef USE_ZLIB ++ ssize_t (*getline)(char **lineptr, size_t *n, void *stream) = stdio_getline; ++ int (*fclose)(void *stream) = stdio_fclose; ++ if ((f = gzopen(DATABASE ".gz", "r"))) { ++ getline = gz_getline; ++ fclose = gz_fclose; ++ } else ++#endif + if (!(f = fopen(DATABASE, "r"))) { + fprintf(stderr, "Failed to open database file "DATABASE": %s\n", strerror(errno)); + return -1; +@@ -111,11 +152,6 @@ + for (;;) { + size_t n; + +- if (line) { +- free(line); +- line = NULL; +- } +- + if (getline(&line, &n, f) < 0) + break; + +--- a/Makefile.in ++++ b/Makefile.in +@@ -987,7 +987,7 @@ + # ------------------------------------------------------------------------------ + @ENABLE_HWDB_TRUE@extras_usb_db_usb_db_SOURCES = extras/usb-db/usb-db.c +-@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_CPPFLAGS = $(AM_CPPFLAGS) -DUSB_DATABASE=\"$(USB_DATABASE)\" -DBUILD_FOR_USB ++@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_CPPFLAGS = $(AM_CPPFLAGS) -DUSB_DATABASE=\"$(USB_DATABASE)\" -DBUILD_FOR_USB -DUSE_ZLIB +-@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_LDADD = libudev/libudev-private.la ++@ENABLE_HWDB_TRUE@extras_usb_db_usb_db_LDADD = libudev/libudev-private.la -lz + @ENABLE_HWDB_TRUE@extras_usb_db_pci_db_SOURCES = extras/usb-db/usb-db.c +-@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_CPPFLAGS = $(AM_CPPFLAGS) -DPCI_DATABASE=\"$(PCI_DATABASE)\" -DBUILD_FOR_PCI ++@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_CPPFLAGS = $(AM_CPPFLAGS) -DPCI_DATABASE=\"$(PCI_DATABASE)\" -DBUILD_FOR_PCI -DUSE_ZLIB +-@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_LDADD = libudev/libudev-private.la ++@ENABLE_HWDB_TRUE@extras_usb_db_pci_db_LDADD = libudev/libudev-private.la -lz diff --git a/sys-fs/udev/udev-175-r1.ebuild b/sys-fs/udev/udev-175-r1.ebuild index 4487eeb3cb56..7b2477a5f66e 100644 --- a/sys-fs/udev/udev-175-r1.ebuild +++ b/sys-fs/udev/udev-175-r1.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2011 Gentoo Foundation +# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/udev-175-r1.ebuild,v 1.3 2011/12/29 19:32:46 williamh Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/udev-175-r1.ebuild,v 1.4 2012/01/02 22:10:27 vapier Exp $ EAPI=4 @@ -34,14 +34,15 @@ HOMEPAGE="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html" LICENSE="GPL-2" SLOT="0" IUSE="build selinux debug +rule_generator hwdb acl gudev introspection - keymap floppy edd doc" + keymap floppy edd doc +zlib" COMMON_DEPEND="selinux? ( sys-libs/libselinux ) acl? ( sys-apps/acl dev-libs/glib:2 ) gudev? ( dev-libs/glib:2 ) introspection? ( dev-libs/gobject-introspection ) >=sys-apps/util-linux-2.16 - >=sys-libs/glibc-2.10" + >=sys-libs/glibc-2.10 + zlib? ( sys-libs/zlib )" DEPEND="${COMMON_DEPEND} keymap? ( dev-util/gperf ) @@ -62,7 +63,7 @@ else fi RDEPEND="${COMMON_DEPEND} - hwdb? ( >=sys-apps/usbutils-0.82 sys-apps/pciutils[-zlib] ) + hwdb? ( >=sys-apps/usbutils-0.82 sys-apps/pciutils ) acl? ( sys-apps/coreutils[acl] ) !sys-apps/coldplug !<sys-fs/lvm2-2.02.45 @@ -131,6 +132,7 @@ src_prepare() EPATCH_SOURCE="${WORKDIR}/${patchset}" EPATCH_SUFFIX="patch" \ EPATCH_FORCE="yes" epatch fi + use zlib && epatch "${FILESDIR}"/${PN}-175-zlib.patch #360849 # change rules back to group uucp instead of dialout for now sed -e 's/GROUP="dialout"/GROUP="uucp"/' \ |