summaryrefslogtreecommitdiff
path: root/sys-fs
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2012-01-02 22:10:27 +0000
committerMike Frysinger <vapier@gentoo.org>2012-01-02 22:10:27 +0000
commit6e6ac95b8d932630bede3f1e37b0c2a15526ace0 (patch)
tree00c2690172b76a280e50f205f596e1c977bc5aa6 /sys-fs
parentVersion bump (diff)
downloadgentoo-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/ChangeLog6
-rw-r--r--sys-fs/udev/files/udev-175-zlib.patch94
-rw-r--r--sys-fs/udev/udev-175-r1.ebuild12
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"/' \