diff options
author | Daniel Pielmeier <billie@gentoo.org> | 2012-05-06 11:42:46 +0000 |
---|---|---|
committer | Daniel Pielmeier <billie@gentoo.org> | 2012-05-06 11:42:46 +0000 |
commit | 25225f3ee02f1f09b7671010350932e6ed238c98 (patch) | |
tree | 12b00cdd19678ba8017e4d75c5b25ccac1772986 /net-print | |
parent | also apply sol2-conf patchset (diff) | |
download | gentoo-2-25225f3ee02f1f09b7671010350932e6ed238c98.tar.gz gentoo-2-25225f3ee02f1f09b7671010350932e6ed238c98.tar.bz2 gentoo-2-25225f3ee02f1f09b7671010350932e6ed238c98.zip |
Use patch tarball.
(Portage version: 2.1.10.49/cvs/Linux i686)
Diffstat (limited to 'net-print')
-rw-r--r-- | net-print/hplip/ChangeLog | 9 | ||||
-rw-r--r-- | net-print/hplip/files/hplip-3.11.12-black-stripes-pcl5c.patch | 11 | ||||
-rw-r--r-- | net-print/hplip/files/hplip-3.11.12-fast-pp.patch | 855 | ||||
-rw-r--r-- | net-print/hplip/files/hplip-3.11.12-udev-rules.patch | 15 | ||||
-rw-r--r-- | net-print/hplip/files/hplip-3.12.2-minimal.patch | 25 | ||||
-rw-r--r-- | net-print/hplip/files/hplip-3.12.2-sane.patch | 11 | ||||
-rw-r--r-- | net-print/hplip/hplip-3.12.2-r2.ebuild | 51 | ||||
-rw-r--r-- | net-print/hplip/hplip-3.12.4.ebuild | 11 |
8 files changed, 20 insertions, 968 deletions
diff --git a/net-print/hplip/ChangeLog b/net-print/hplip/ChangeLog index 933378ed56f2..619bbf8f4c5c 100644 --- a/net-print/hplip/ChangeLog +++ b/net-print/hplip/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for net-print/hplip # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-print/hplip/ChangeLog,v 1.225 2012/05/06 11:00:22 billie Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-print/hplip/ChangeLog,v 1.226 2012/05/06 11:42:45 billie Exp $ + + 06 May 2012; Daniel Pielmeier <billie@gentoo.org> + -files/hplip-3.11.12-black-stripes-pcl5c.patch, + -files/hplip-3.11.12-fast-pp.patch, -files/hplip-3.11.12-udev-rules.patch, + hplip-3.12.2-r2.ebuild, -files/hplip-3.12.2-minimal.patch, + -files/hplip-3.12.2-sane.patch, hplip-3.12.4.ebuild: + Use patch tarball. 06 May 2012; Daniel Pielmeier <billie@gentoo.org> hplip-3.12.4.ebuild, -files/hplip-3.12.4-cupsddk.patch, -files/hplip-3.12.4-desktop.patch, diff --git a/net-print/hplip/files/hplip-3.11.12-black-stripes-pcl5c.patch b/net-print/hplip/files/hplip-3.11.12-black-stripes-pcl5c.patch deleted file mode 100644 index 288a887a7a44..000000000000 --- a/net-print/hplip/files/hplip-3.11.12-black-stripes-pcl5c.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up hplip-3.10.2/prnt/hpcups/LJColor.h.skip-blank-lines hplip-3.10.2/prnt/hpcups/LJColor.h ---- hplip-3.10.2/prnt/hpcups/LJColor.h.skip-blank-lines 2010-02-24 23:04:09.000000000 +0000 -+++ hplip-3.10.2/prnt/hpcups/LJColor.h 2010-04-15 21:46:48.375754707 +0100 -@@ -48,6 +48,7 @@ public: - DRIVER_ERROR Configure(Pipeline **pipeline); - DRIVER_ERROR EndJob(); - DRIVER_ERROR FormFeed(); -+ bool CanSkipRasters() {return false;} - protected: - virtual DRIVER_ERROR addJobSettings(); - void configureRasterData(); diff --git a/net-print/hplip/files/hplip-3.11.12-fast-pp.patch b/net-print/hplip/files/hplip-3.11.12-fast-pp.patch deleted file mode 100644 index 95170e9f514b..000000000000 --- a/net-print/hplip/files/hplip-3.11.12-fast-pp.patch +++ /dev/null @@ -1,855 +0,0 @@ -Speed up HPLIP's parallel port I/O - -HPLIP should stop emulating IEE1284 ECP in userspace; that requires so many -ioctls that it's uncomfortably (and sometimes unusably) slow, even on fast -systems. Instead, it should use ppdev read/write calls, working around ppdev -quirks/bugs as necessary. - -Until now, we avoided this because we feared that using ppdev would make us -susceptible to variations in PC parallel port hardware. However, it turns out -that the kernel already addresses that problem: on PCs, the kernel defaults to -software-emulated ECP, which is exactly what the current HPLIP code does. -Using the kernel code avoids the massive ioctl overhead, and it makes it -possible to use hardware-accelerated ECP in those cases where it works. - -To apply this patch, 'cd' into the unpacked hplip source directory and run: -$ patch -p1 <../hplip-fast-pp-v2.patch -$ libtoolize --force -$ AUTOMAKE="automake --foreign" autoreconf -(Remember to use the --enable-pp-build option with ./configure) - -Patch by Daniel Gnoutcheff <daniel@gnoutcheff.name> -Thanks to Daniel Pielmeir for figuring out the autotools bits - -diff -ur hplip-3.12.2/configure.in hplip-3.12.2-fast-pp/configure.in ---- hplip-3.12.2/configure.in 2012-02-01 06:56:29.000000000 -0500 -+++ hplip-3.12.2-fast-pp/configure.in 2012-02-20 21:09:45.850744922 -0500 -@@ -222,6 +222,7 @@ - else - AC_MSG_RESULT(no) - fi -+AM_CONDITIONAL(PP_BUILD, test x$pp_build = xyes) - - AC_MSG_CHECKING([for scanner build]) - AC_ARG_ENABLE(scan_build, -diff -ur hplip-3.12.2/io/hpmud/pp.c hplip-3.12.2-fast-pp/io/hpmud/pp.c ---- hplip-3.12.2/io/hpmud/pp.c 2012-02-01 06:53:52.000000000 -0500 -+++ hplip-3.12.2-fast-pp/io/hpmud/pp.c 2012-02-20 19:28:27.990747569 -0500 -@@ -28,6 +28,8 @@ - - #include "hpmud.h" - #include "hpmudi.h" -+#include <signal.h> -+#include <time.h> - - mud_device_vf __attribute__ ((visibility ("hidden"))) pp_mud_device_vf = - { -@@ -67,17 +69,6 @@ - .channel_read = musb_dot4_channel_read - }; - --static int frob_control(int fd, unsigned char mask, unsigned char val) --{ -- struct ppdev_frob_struct frob; -- -- /* Convert ieee1284 control values to PC-style (invert Strobe, AutoFd and Select) . */ -- frob.val = val ^ (mask & (PARPORT_CONTROL_STROBE | PARPORT_CONTROL_AUTOFD | PARPORT_CONTROL_SELECT)); -- -- frob.mask = mask; -- return ioctl(fd, PPFCONTROL, &frob); --} -- - static unsigned char read_status(int fd) - { - unsigned char status; -@@ -88,493 +79,6 @@ - return (status ^ PARPORT_STATUS_BUSY); - } - --static int wait_status(int fd, unsigned char mask, unsigned char val, int usec) --{ -- struct timeval tmo, now; -- struct timespec min; -- unsigned char status; -- int cnt=0; -- -- gettimeofday (&tmo, NULL); -- tmo.tv_usec += usec; -- tmo.tv_sec += tmo.tv_usec / 1000000; -- tmo.tv_usec %= 1000000; -- -- min.tv_sec = 0; -- min.tv_nsec = 5000000; /* 5ms */ -- -- while (1) -- { -- status = read_status(fd); -- if ((status & mask) == val) -- { -- // bug("found status=%x mask=%x val=%x cnt=%d: %s %d\n", status, mask, val, cnt, __FILE__, __LINE__); -- return 0; -- } -- cnt++; -- // nanosleep(&min, NULL); -- gettimeofday(&now, NULL); -- if ((now.tv_sec > tmo.tv_sec) || (now.tv_sec == tmo.tv_sec && now.tv_usec > tmo.tv_usec)) -- { -- DBG("wait_status timeout status=%x mask=%x val=%x us=%d\n", status, mask, val, usec); -- return -1; /* timeout */ -- } -- } --} -- --static int wait(int usec) --{ -- struct timeval tmo, now; -- int cnt=0; -- -- gettimeofday (&tmo, NULL); -- tmo.tv_usec += usec; -- tmo.tv_sec += tmo.tv_usec / 1000000; -- tmo.tv_usec %= 1000000; -- -- while (1) -- { -- cnt++; -- gettimeofday(&now, NULL); -- if ((now.tv_sec > tmo.tv_sec) || (now.tv_sec == tmo.tv_sec && now.tv_usec > tmo.tv_usec)) -- { -- return 0; /* timeout */ -- } -- } --} -- --static int ecp_is_fwd(int fd) --{ -- unsigned char status; -- -- status = read_status(fd); -- if ((status & PARPORT_STATUS_PAPEROUT) == PARPORT_STATUS_PAPEROUT) -- return 1; -- return 0; --} -- --static int ecp_is_rev(int fd) --{ -- unsigned char status; -- -- status = read_status(fd); -- if ((status & PARPORT_STATUS_PAPEROUT) == 0) -- return 1; -- return 0; --} -- --static int ecp_rev_to_fwd(int fd) --{ -- int dir=0; -- -- if (ecp_is_fwd(fd)) -- return 0; -- -- /* Event 47: write NReverseRequest/nInit=1 */ -- frob_control(fd, PARPORT_CONTROL_INIT, PARPORT_CONTROL_INIT); -- -- /* Event 48: wait PeriphClk/nAck=1, PeriphAck/Busy=0 */ -- // wait_status(fd, PARPORT_STATUS_PAPEROUT | PARPORT_STATUS_BUSY, PARPORT_STATUS_PAPEROUT, SIGNAL_TIMEOUT); -- -- /* Event 49: wait nAckReverse/PError=1 */ -- wait_status(fd, PARPORT_STATUS_PAPEROUT, PARPORT_STATUS_PAPEROUT, PP_SIGNAL_TIMEOUT); -- -- ioctl(fd, PPDATADIR, &dir); -- -- return 0; --} -- --static int ecp_fwd_to_rev(int fd) --{ -- int dir=1; -- -- if (ecp_is_rev(fd)) -- return 0; -- -- /* Event 33: NPeriphRequest/nFault=0, PeriphAck/Busy=0 */ -- wait_status(fd, PARPORT_STATUS_BUSY | PARPORT_STATUS_ERROR, 0, PP_DEVICE_TIMEOUT); -- -- /* Event 38: write HostAck/nAutoFd=0 */ -- ioctl(fd, PPDATADIR, &dir); -- frob_control(fd, PARPORT_CONTROL_AUTOFD, 0); -- wait(PP_SETUP_TIMEOUT); -- -- /* Event 39: write NReverseRequest/nInit=0 (start bus reversal) */ -- frob_control(fd, PARPORT_CONTROL_INIT, 0); -- -- /* Event 40: wait nAckReverse/PError=0 */ -- wait_status(fd, PARPORT_STATUS_PAPEROUT, 0, PP_SIGNAL_TIMEOUT); -- -- return 0; --} -- --static int ecp_write_addr(int fd, unsigned char data) --{ -- int cnt=0, len=0; -- unsigned d=(data | 0x80); /* set channel address bit */ -- -- ecp_rev_to_fwd(fd); -- -- /* Event 33: PeriphAck/Busy=0 */ -- if (wait_status(fd, PARPORT_STATUS_BUSY, 0, PP_SIGNAL_TIMEOUT)) -- { -- BUG("ecp_write_addr transfer stalled\n"); -- goto bugout; -- } -- -- while (1) -- { -- /* Event 34: write HostAck/nAutoFD=0 (channel command), data */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, 0); -- ioctl(fd, PPWDATA, &d); -- -- /* Event 35: write HostClk/NStrobe=0 */ -- frob_control(fd, PARPORT_CONTROL_STROBE, 0); -- -- /* Event 36: wait PeriphAck/Busy=1 */ -- if (wait_status(fd, PARPORT_STATUS_BUSY, PARPORT_STATUS_BUSY, PP_SIGNAL_TIMEOUT)) -- { -- -- /* Event 72: write NReverseRequest/nInit=0 (Host Transfer Recovery) */ -- frob_control(fd, PARPORT_CONTROL_INIT, 0); -- -- /* Event 73: wait nAckReverse/PError=0 */ -- wait_status(fd, PARPORT_STATUS_PAPEROUT, 0, PP_SIGNAL_TIMEOUT); -- -- /* Event 74: write NReverseRequest/nInit=1 */ -- frob_control(fd, PARPORT_CONTROL_INIT, PARPORT_CONTROL_INIT); -- -- /* Event 75: wait nAckReverse/PError=1 */ -- wait_status(fd, PARPORT_STATUS_PAPEROUT, PARPORT_STATUS_PAPEROUT, PP_SIGNAL_TIMEOUT); -- -- cnt++; -- if (cnt > 4) -- { -- BUG("ecp_write_addr transfer stalled\n"); -- goto bugout; -- } -- BUG("ecp_write_addr host transfer recovery cnt=%d\n", cnt); -- continue; /* retry */ -- } -- break; /* done */ -- } /* while (1) */ -- -- len = 1; -- --bugout: -- -- /* Event 37: write HostClk/NStrobe=1 */ -- frob_control(fd, PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE); -- -- return len; --} -- --static int ecp_write_data(int fd, unsigned char data) --{ -- int cnt=0, len=0; -- -- // ecp_rev_to_fwd(fd); -- -- /* Event 33: check PeriphAck/Busy=0 */ -- if (wait_status(fd, PARPORT_STATUS_BUSY, 0, PP_SIGNAL_TIMEOUT)) -- { -- BUG("ecp_write_data transfer stalled\n"); -- goto bugout; -- } -- -- while (1) -- { -- /* Event 34: write HostAck/nAutoFD=1 (channel data), data */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD); -- ioctl(fd, PPWDATA, &data); -- -- /* Event 35: write HostClk/NStrobe=0 */ -- frob_control(fd, PARPORT_CONTROL_STROBE, 0); -- -- /* Event 36: wait PeriphAck/Busy=1 */ -- if (wait_status(fd, PARPORT_STATUS_BUSY, PARPORT_STATUS_BUSY, PP_SIGNAL_TIMEOUT)) -- { -- -- /* Event 72: write NReverseRequest/nInit=0 (Host Transfer Recovery) */ -- frob_control(fd, PARPORT_CONTROL_INIT, 0); -- -- /* Event 73: wait nAckReverse/PError=0 */ -- wait_status(fd, PARPORT_STATUS_PAPEROUT, 0, PP_SIGNAL_TIMEOUT); -- -- /* Event 74: write NReverseRequest/nInit=1 */ -- frob_control(fd, PARPORT_CONTROL_INIT, PARPORT_CONTROL_INIT); -- -- /* Event 75: wait nAckReverse/PError=1 */ -- wait_status(fd, PARPORT_STATUS_PAPEROUT, PARPORT_STATUS_PAPEROUT, PP_SIGNAL_TIMEOUT); -- -- cnt++; -- if (cnt > 4) -- { -- BUG("ecp_write_data transfer stalled\n"); -- goto bugout; -- } -- BUG("ecp_write_data host transfer recovery cnt=%d\n", cnt); -- continue; /* retry */ -- } -- break; /* done */ -- } /* while (1) */ -- -- len = 1; -- --bugout: -- -- /* Event 37: write HostClk/NStrobe=1 */ -- frob_control(fd, PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE); -- -- return len; --} -- --static int ecp_read_data(int fd, unsigned char *data) --{ -- int len=0; -- -- // ecp_fwd_to_rev(fd); -- -- /* Event 43: wait PeriphClk/NAck=0 */ -- if (wait_status(fd, PARPORT_STATUS_ACK, 0, PP_SIGNAL_TIMEOUT)) -- { -- len = -1; -- goto bugout; -- } -- ioctl(fd, PPRDATA, data); -- -- /* Event 44: write HostAck/nAutoFd=1 */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD); -- -- /* Event 45: wait PeriphClk/NAck=1 */ -- wait_status(fd, PARPORT_STATUS_ACK, PARPORT_STATUS_ACK, PP_SIGNAL_TIMEOUT); -- -- /* Event 46: write HostAck/nAutoFd=0 */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, 0); -- -- len = 1; -- --bugout: -- -- return len; --} -- --static int ecp_read(int fd, void *buffer, int size, int usec) --{ -- int i=0; -- unsigned char *p = (unsigned char *)buffer; -- -- ecp_fwd_to_rev(fd); -- -- while (i < size) -- { -- if (ecp_read_data(fd, p+i) != 1) -- { -- usec-=PP_SIGNAL_TIMEOUT; -- if (usec > 0) -- continue; -- --// return -1; -- return -ETIMEDOUT; /* timeout */ -- } -- i++; -- } -- return i; --} -- --static int ecp_write(int fd, const void *buffer, int size) --{ -- int i; -- unsigned char *p = (unsigned char *)buffer; -- static int timeout=0; -- -- if (timeout) -- { -- timeout=0; -- return -1; /* report timeout */ -- } -- -- ecp_rev_to_fwd(fd); -- -- for (i=0; i < size; i++) -- { -- if (ecp_write_data(fd, p[i]) != 1) -- { -- if (i) -- timeout=1; /* save timeout, report bytes written */ -- else -- i=-1; /* report timeout */ -- break; -- } -- } -- return i; --} -- --static int nibble_read_data(int fd, unsigned char *data) --{ -- int len=0; -- unsigned char nibble; -- -- /* Event 7: write HostBusy/nAutoFd=0 */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, 0); -- -- /* Event 8: peripheral sets low-order nibble. */ -- -- /* Event 9: wait PtrClk/NAck=0 */ -- if (wait_status(fd, PARPORT_STATUS_ACK, 0, PP_SIGNAL_TIMEOUT)) -- { -- len = -1; -- goto bugout; -- } -- nibble = read_status(fd) >> 3; -- nibble = ((nibble & 0x10) >> 1) | (nibble & 0x7); -- *data = nibble; -- -- /* Event 10: write HostBusy/nAutoFd=1 */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD); -- -- /* Event 11: wait PtrClk/NAck=1 */ -- wait_status(fd, PARPORT_STATUS_ACK, PARPORT_STATUS_ACK, PP_SIGNAL_TIMEOUT); -- -- /* Event 7: write HostBusy/nAutoFd=0 */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, 0); -- -- /* Event 8: peripheral sets high-order nibble. */ -- -- /* Event 9: wait PtrClk/NAck=0 */ -- if (wait_status(fd, PARPORT_STATUS_ACK, 0, PP_SIGNAL_TIMEOUT)) -- { -- len = -1; -- goto bugout; -- } -- nibble = read_status(fd) >> 3; -- nibble = ((nibble & 0x10) >> 1) | (nibble & 0x7); -- *data |= (nibble<<4); -- -- /* Event 10: write HostBusy/nAutoFd=1 */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, PARPORT_CONTROL_AUTOFD); -- -- /* Event 11: wait PtrClk/NAck=1 */ -- wait_status(fd, PARPORT_STATUS_ACK, PARPORT_STATUS_ACK, PP_SIGNAL_TIMEOUT); -- -- len = 1; -- --bugout: -- -- return len; --} -- --static int nibble_read(int fd, int flag, void *buffer, int size, int usec) --{ -- int i=0; -- unsigned char *p = (unsigned char *)buffer; -- int m = IEEE1284_MODE_NIBBLE | flag; -- int mc = IEEE1284_MODE_COMPAT; -- unsigned char status; -- -- ioctl (fd, PPNEGOT, &mc); -- if (ioctl (fd, PPNEGOT, &m)) -- { -- DBG("nibble_read negotiation failed: %m\n"); -- return -1; -- } -- -- while (i < size) -- { -- if (nibble_read_data(fd, p+i) != 1) -- { -- usec-=PP_SIGNAL_TIMEOUT; -- if (usec > 0) -- continue; -- --// return -1; -- return -ETIMEDOUT; /* timeout */ -- } -- -- i++; -- -- /* More data? */ -- status = read_status(fd); -- if (status & PARPORT_STATUS_ERROR) -- { -- /* Event 7: write HostBusy/nAutoFd=0, idle phase */ -- frob_control(fd, PARPORT_CONTROL_AUTOFD, 0); -- -- break; /* done */ -- } -- } -- -- return i; --} -- --static int compat_write_data(int fd, unsigned char data) --{ -- int len=0; -- -- /* wait Busy=0 */ -- if (wait_status(fd, PARPORT_STATUS_BUSY, 0, PP_DEVICE_TIMEOUT)) -- { -- BUG("compat_write_data transfer stalled\n"); -- goto bugout; -- } -- -- ioctl(fd, PPWDATA, &data); -- wait(PP_SETUP_TIMEOUT); -- -- /* write NStrobe=0 */ -- frob_control(fd, PARPORT_CONTROL_STROBE, 0); -- -- /* wait Busy=1 */ -- if (wait_status(fd, PARPORT_STATUS_BUSY, PARPORT_STATUS_BUSY, PP_SIGNAL_TIMEOUT)) -- { -- BUG("compat_write_data transfer stalled\n"); -- goto bugout; -- } -- -- /* write nStrobe=1 */ -- frob_control(fd, PARPORT_CONTROL_STROBE, PARPORT_CONTROL_STROBE); -- -- len = 1; -- --bugout: -- return len; --} -- --static int compat_write(int fd, const void *buffer, int size) --{ -- int i=0; -- unsigned char *p = (unsigned char *)buffer; -- int m = IEEE1284_MODE_COMPAT; -- static int timeout=0; -- -- if (timeout) -- { -- timeout=0; -- return -1; /* report timeout */ -- } -- -- if (ioctl(fd, PPNEGOT, &m)) -- { -- BUG("compat_write failed: %m\n"); -- goto bugout; -- } -- -- for (i=0; i < size; i++) -- { -- if (compat_write_data(fd, p[i]) != 1) -- { -- if (i) -- timeout=1; /* save timeout, report bytes written */ -- else -- i=-1; /* report timeout */ -- break; -- } -- } -- --bugout: -- return i; --} -- - static int claim_pp(int fd) - { - int stat=1; -@@ -617,11 +121,23 @@ - - static int device_id(int fd, char *buffer, int size) - { -- int len=0, maxSize; -+ int len=0, maxSize, mode; - - maxSize = (size > 1024) ? 1024 : size; /* RH8 has a size limit for device id */ - -- len = nibble_read(fd, IEEE1284_DEVICEID, buffer, maxSize, 0); -+ /* reset (in case someone else stopped in the middle of reading the device -+ * ID) */ -+ mode = IEEE1284_MODE_COMPAT; -+ ioctl(fd, PPNEGOT, &mode); -+ -+ mode = IEEE1284_MODE_NIBBLE | IEEE1284_DEVICEID; -+ ioctl(fd, PPNEGOT, &mode); -+ len = read(fd, buffer, maxSize); -+ -+ /* Reset (for safety) */ -+ mode = IEEE1284_MODE_COMPAT; -+ ioctl(fd, PPNEGOT, &mode); -+ - if (len < 0) - { - BUG("unable to read device-id ret=%d\n", len); -@@ -720,24 +236,134 @@ - return 0; - } - -+static int ecp_write_addr(int fd, unsigned char addr) -+{ -+ /* Currently, PPSETMODE always resets the kernel's idea of the current phase -+ * to equal that of the inital phase of the given mode (i.e. -+ * IEEE1284_PH_FWD_IDLE for ECP). However, we're not actually changing the -+ * mode, we're just modifying the "send command bytes" flag; thus, we do -+ * *not* want the phase to change. We workaround the kernel's bad behavor by -+ * forcibly refreshing its phase setting whenever we call PPSETMODE. -+ */ -+ int mode, phase, cmdmode, len, retval; -+ -+ /* To send an address, we send an ECP command byte with the high bit set -+ * and the address in the other 7 bits. */ -+ unsigned char command = addr | 0x80; -+ -+ /* Enable command mode */ -+ ioctl(fd, PPGETMODE, &mode); -+ cmdmode = mode | IEEE1284_ADDR; -+ ioctl(fd, PPGETPHASE, &phase); -+ ioctl(fd, PPSETMODE, &cmdmode); -+ ioctl(fd, PPSETPHASE, &phase); -+ -+ len = write(fd, &command, 1); -+ -+ /* Restore original mode */ -+ ioctl(fd, PPGETPHASE, &phase); -+ ioctl(fd, PPSETMODE, &mode); -+ ioctl(fd, PPSETPHASE, &phase); -+ -+ if (len == 1) -+ retval = len; -+ else -+ { -+ BUG("ecp_write_addr transfer failed\n"); -+ retval = -errno; -+ } -+ -+ return retval; -+} -+ -+static void setup_timeout(int timeout_usec, timer_t *timeout_timer) -+{ -+ struct sigevent timeout_sigevent = -+ { -+ .sigev_notify = SIGEV_NONE -+ }; -+ struct itimerspec timeout = -+ { -+ .it_value = -+ { -+ .tv_sec = timeout_usec / 1000000, -+ .tv_nsec = (timeout_usec % 1000000) * 1000 -+ }, -+ .it_interval = -+ { -+ .tv_sec = 0, -+ .tv_nsec = 0 -+ } -+ }; -+ -+ timer_create(CLOCK_MONOTONIC, &timeout_sigevent, timeout_timer); -+ timer_settime(*timeout_timer, 0, &timeout, NULL); -+} -+ -+static int timeout_not_expired(timer_t *timer) -+{ -+ struct itimerspec timeout; -+ timer_gettime(*timer, &timeout); -+ return timeout.it_value.tv_sec > 0 || timeout.it_value.tv_nsec > 0; -+} -+ -+enum io_operation -+{ -+ IO_READ, -+ IO_WRITE -+}; -+ -+static int ppdev_io_with_timeout(enum io_operation operation, -+ int fd, void *buf, int buf_size, int timeout_usec) -+{ -+ /* As of Linux 2.6.39, ppdev's read and write implementations do not honor -+ * the timeout values given by PPSETTIME ioctls. Furthermore, when using -+ * blocking IO, ppdev reads and writes will block forever until at least one -+ * byte is transfered, which is a problem if, say, the peripheral has lost -+ * power and will never respond. To avoid these issues, we use non-blocking -+ * IO and we implement the timeout ourselves. */ -+ -+ int offset = 0, retval = 0, error = 0; -+ timer_t timeout_timer; -+ -+ setup_timeout(timeout_usec, &timeout_timer); -+ -+ do { -+ switch (operation) -+ { -+ case IO_READ: -+ retval = read(fd, buf + offset, buf_size - offset); -+ break; -+ case IO_WRITE: -+ retval = write(fd, buf + offset, buf_size - offset); -+ break; -+ } -+ -+ if (retval >= 0) -+ offset += retval; -+ else if (errno != EAGAIN) -+ error = errno; -+ } while (!error && offset < buf_size && timeout_not_expired(&timeout_timer)); -+ -+ timer_delete(timeout_timer); -+ -+ if (error) -+ return -error; -+ else if (offset == 0) -+ return -ETIMEDOUT; -+ else -+ return offset; -+} -+ - /********************************************************************************************************************************* - * Parallel port mud_device functions. - */ - - int __attribute__ ((visibility ("hidden"))) pp_write(int fd, const void *buf, int size, int usec) - { -- int len=0, m; -+ int len; - -- ioctl(fd, PPGETMODE, &m); -- -- if (m & (IEEE1284_MODE_ECPSWE | IEEE1284_MODE_ECP)) -- { -- len = ecp_write(fd, buf, size); -- } -- else -- { -- len = compat_write(fd, buf, size); -- } -+ len = ppdev_io_with_timeout(IO_WRITE, fd, (void *)buf, size, usec); - - DBG("write fd=%d len=%d size=%d\n", fd, len, size); - DBG_DUMP(buf, len < 32 ? len : 32); -@@ -747,19 +373,9 @@ - - int __attribute__ ((visibility ("hidden"))) pp_read(int fd, void *buf, int size, int usec) - { -- int len=0, m; --// int sec = usec/1000000; -- -- ioctl(fd, PPGETMODE, &m); -+ int len; - -- if (m & (IEEE1284_MODE_ECPSWE | IEEE1284_MODE_ECP)) -- { -- len = ecp_read(fd, buf, size, usec); -- } -- else -- { -- len = nibble_read(fd, 0, buf, size, usec); -- } -+ len = ppdev_io_with_timeout(IO_READ, fd, buf, size, usec); - - DBG("read fd=%d len=%d size=%d usec=%d\n", fd, len, size, usec); - DBG_DUMP(buf, len < 32 ? len : 32); -@@ -779,9 +395,11 @@ - - if (pd->id[0] == 0) - { -- /* First client, open actual kernal device, use blocking i/o. */ -+ /* First client, open actual kernal device, use non-blocking i/o. See -+ * comment in ppdev_io_with_timeout() for why we use non-blocking i/o. -+ */ - hpmud_get_uri_datalink(pd->uri, dev, sizeof(dev)); -- if ((fd = open(dev, O_RDWR | O_NOCTTY)) < 0) -+ if ((fd = open(dev, O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) - { - BUG("unable to open %s: %m\n", pd->uri); - goto bugout; -@@ -1037,7 +655,7 @@ - goto bugout; - - /* Negotiate ECP mode. */ -- m = IEEE1284_MODE_ECPSWE; -+ m = IEEE1284_MODE_ECP; - if (ioctl(pd->open_fd, PPNEGOT, &m)) - { - BUG("unable to negotiate %s ECP mode: %m\n", pd->uri); -@@ -1046,7 +664,7 @@ - - /* Enable MLC mode with ECP channel-77. */ - ecp_write_addr(pd->open_fd, 78); -- ecp_write(pd->open_fd, "\0", 1); -+ write(pd->open_fd, "\0", 1); - ecp_write_addr(pd->open_fd, 77); - - /* MLC initialize */ -@@ -1099,7 +717,7 @@ - pd->mlc_up=0; - - ecp_write_addr(pd->mlc_fd, 78); /* disable MLC mode with ECP channel-78 */ -- ecp_write(pd->mlc_fd, "\0", 1); -+ write(pd->mlc_fd, "\0", 1); - - m = IEEE1284_MODE_NIBBLE; - ioctl(pd->mlc_fd, PPNEGOT, &m); -@@ -1129,7 +747,7 @@ - goto bugout; - - /* Negotiate ECP mode. */ -- m = IEEE1284_MODE_ECPSWE; -+ m = IEEE1284_MODE_ECP; - if (ioctl(pd->open_fd, PPNEGOT, &m)) - { - BUG("unable to negotiate %s ECP mode: %m\n", pd->uri); -@@ -1138,7 +756,7 @@ - - /* Enable MLC mode with ECP channel-77. */ - ecp_write_addr(pd->open_fd, 78); -- ecp_write(pd->open_fd, "\0", 1); -+ write(pd->open_fd, "\0", 1); - ecp_write_addr(pd->open_fd, 77); - - /* DOT4 initialize */ -@@ -1191,7 +809,7 @@ - pd->mlc_up=0; - - ecp_write_addr(pd->mlc_fd, 78); /* disable MLC mode with ECP channel-78 */ -- ecp_write(pd->mlc_fd, "\0", 1); -+ write(pd->mlc_fd, "\0", 1); - - m = IEEE1284_MODE_NIBBLE; - ioctl(pd->mlc_fd, PPNEGOT, &m); -diff -ur hplip-3.12.2/io/hpmud/pp.h hplip-3.12.2-fast-pp/io/hpmud/pp.h ---- hplip-3.12.2/io/hpmud/pp.h 2012-02-01 06:53:52.000000000 -0500 -+++ hplip-3.12.2-fast-pp/io/hpmud/pp.h 2012-02-20 19:28:27.990747569 -0500 -@@ -60,18 +60,11 @@ - * 0 - Strobe * - * - * * inverted -- * -- * Notes: -- * For ECP mode use low-level parport ioctl instead of high-level parport read/writes because its more reliable. High-level support -- * for Compatible and Nibble modes are probably ok, but for consistency low-level parport ioctl is used. -- * - */ - --#define PP_DEVICE_TIMEOUT 30000000 /* device timeout (us) */ - //#define PP_SIGNAL_TIMEOUT 1000000 /* signal timeout (us), too long for 1ms timeout, DES 8/18/08 */ - //#define PP_SIGNAL_TIMEOUT 1000 /* signal timeout (us), too short for DJ540, DES 8/18/08 */ - #define PP_SIGNAL_TIMEOUT 100000 /* signal timeout (us), DES 8/18/08 */ --#define PP_SETUP_TIMEOUT 10 /* setup timeout (us) */ - - struct _mud_device; - struct _mud_channel; -diff -ur hplip-3.12.2/Makefile.am hplip-3.12.2-fast-pp/Makefile.am ---- hplip-3.12.2/Makefile.am 2012-02-01 06:53:57.000000000 -0500 -+++ hplip-3.12.2-fast-pp/Makefile.am 2012-02-20 21:26:21.210745149 -0500 -@@ -73,6 +73,9 @@ - libhpmud_la_LDFLAGS = -version-info 0:6:0 -lusb -lpthread
- endif
- libhpmud_la_CFLAGS = -DMUDNAME=\"$(MUDNAME)\" -DCONFDIR=\"$(hplip_confdir)\"
-+if PP_BUILD
-+libhpmud_la_LDFLAGS += -lrt
-+endif
-
- # ip library
- lib_LTLIBRARIES += libhpip.la
diff --git a/net-print/hplip/files/hplip-3.11.12-udev-rules.patch b/net-print/hplip/files/hplip-3.11.12-udev-rules.patch deleted file mode 100644 index 912b49905705..000000000000 --- a/net-print/hplip/files/hplip-3.11.12-udev-rules.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff -Naur hplip-3.11.12-old/data/rules/56-hpmud_support.rules hplip-3.11.12/data/rules/56-hpmud_support.rules ---- hplip-3.11.12-old/data/rules/56-hpmud_support.rules 2011-12-16 22:32:05.047473799 +0100 -+++ hplip-3.11.12/data/rules/56-hpmud_support.rules 2011-12-16 22:33:45.759355234 +0100 -@@ -7,9 +7,9 @@ - LABEL="pid_test" - - # Check for LaserJet products (0x03f0xx17). --ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="??17", ENV{hp_model}="$attrs{product}", ENV{hp_test}="yes" -+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="??17", RUN+="/bin/sh -c 'hp_model=%E{ID_MODEL} /usr/bin/hp-mkuri -c &'" - # Check for LaserJet products (0x03f0xx2a). --ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="??2a", ENV{hp_model}="$attrs{product}", ENV{hp_test}="yes" -+ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="??2a", RUN+="/bin/sh -c 'hp_model=%E{ID_MODEL} /usr/bin/hp-mkuri -c &'" - ENV{hp_test}=="yes", RUN+="/bin/sh -c '/usr/bin/hp-mkuri -c &'" - - LABEL="hpmud_rules_end" diff --git a/net-print/hplip/files/hplip-3.12.2-minimal.patch b/net-print/hplip/files/hplip-3.12.2-minimal.patch deleted file mode 100644 index a33b7286fcde..000000000000 --- a/net-print/hplip/files/hplip-3.12.2-minimal.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- configure.in 2012-02-01 12:56:29.000000000 +0100 -+++ configure.in 2012-02-13 20:06:15.570726513 +0100 -@@ -472,7 +472,7 @@ - - # Check conditional packages. - --if test "$hpijs_only_build" = "no" && test "$network_build" = "yes"; then -+if test "$hpijs_only_build" = "no" && test "$network_build" = "yes" && test "$hpcups_only_build" = "no"; then - # AC_CHECK_LIB([crypto], [CRYPTO_free], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find net-snmp support (or --disable-network-build)], 4)]) - # AC_CHECK_LIB([netsnmp], [snmp_timeout], [LIBS="$LIBS" AC_DEFINE([HAVE_LIBNETSNMP])], [AC_MSG_ERROR([cannot find net-snmp support (or --disable-network-build)], 4)]) - # AC_CHECK_HEADERS(net-snmp/net-snmp-config.h,, [AC_MSG_ERROR([cannot find net-snmp-devel support (or --disable-network-build)], 5)]) -@@ -489,11 +489,11 @@ - fi - fi - --if test "$hpijs_only_build" = "no" && test "$pp_build" = "yes"; then -+if test "$hpijs_only_build" = "no" && test "$pp_build" = "yes" && test "$hpcups_only_build" = "no"; then - AC_CHECK_HEADERS(linux/ppdev.h, ,[AC_MSG_ERROR([cannot find ppdev-devel support (or --disable-pp-build)], 8)]) - fi - --if test "$hpijs_only_build" = "no"; then -+if test "$hpijs_only_build" = "no" && test "$hpcups_only_build" = "no"; then - AC_CHECK_LIB([cups], [cupsDoFileRequest], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libcups support], 9)]) - AC_CHECK_HEADERS(cups/cups.h, ,[AC_MSG_ERROR([cannot find cups-devel support], 3)]) - AC_CHECK_LIB([usb], [usb_init], [LIBS="$LIBS"], [AC_MSG_ERROR([cannot find libusb support], 2)]) diff --git a/net-print/hplip/files/hplip-3.12.2-sane.patch b/net-print/hplip/files/hplip-3.12.2-sane.patch deleted file mode 100644 index 14d15b4a348e..000000000000 --- a/net-print/hplip/files/hplip-3.12.2-sane.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -Naur hplip-3.12.2-old/scan/sane.py hplip-3.12.2/scan/sane.py ---- hplip-3.12.2-old/scan/sane.py 2012-02-28 18:32:25.237883282 +0100 -+++ hplip-3.12.2/scan/sane.py 2012-02-28 18:34:00.899673377 +0100 -@@ -272,6 +272,7 @@ - self.last_opt = self.dev.setOption(opt.index, value) - except scanext.error: - log.error("Unable to set option %s to value %s" % (key, value)) -+ return - - # do binary AND to find if we have to reload options: - if self.last_opt & scanext.INFO_RELOAD_OPTIONS: diff --git a/net-print/hplip/hplip-3.12.2-r2.ebuild b/net-print/hplip/hplip-3.12.2-r2.ebuild index cfe36db99576..5692db70dd24 100644 --- a/net-print/hplip/hplip-3.12.2-r2.ebuild +++ b/net-print/hplip/hplip-3.12.2-r2.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-print/hplip/hplip-3.12.2-r2.ebuild,v 1.4 2012/05/05 15:50:38 billie Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-print/hplip/hplip-3.12.2-r2.ebuild,v 1.5 2012/05/06 11:42:45 billie Exp $ EAPI=4 @@ -12,7 +12,8 @@ inherit fdo-mime linux-info python autotools DESCRIPTION="HP Linux Imaging and Printing. Includes printer, scanner, fax drivers and service tools." HOMEPAGE="http://hplipopensource.com/hplip-web/index.html" -SRC_URI="mirror://sourceforge/hplip/${P}.tar.gz" +SRC_URI="mirror://sourceforge/hplip/${P}.tar.gz + http://dev.gentoo.org/~billie/distfiles/${P}-patches-1.tar.xz" LICENSE="GPL-2" SLOT="0" @@ -95,53 +96,15 @@ pkg_setup() { src_prepare() { use !minimal && python_convert_shebangs -q -r 2 . + EPATCH_SUFFIX="patch" \ + EPATCH_FORCE="yes" \ + epatch "${WORKDIR}" + # Fix for Gentoo bug #345725 sed -i -e "s|/etc/udev/rules.d|/lib/udev/rules.d|" \ $(find ./ -type f -exec grep -l '/etc/udev/rules.d' '{}' '+') \ || die - # Do not install desktop files if there is no gui - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/452113 - epatch "${FILESDIR}"/${PN}-3.11.1-desktop.patch - - # Browser detection through xdg-open - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/482674 - epatch "${FILESDIR}"/${PN}-3.9.10-browser.patch - - # Use cups-config when checking for cupsddk - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/483136 - epatch "${FILESDIR}"/${PN}-3.9.12-cupsddk.patch - - # Htmldocs are not installed under docdir/html so enable htmldir configure - # switch - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/483217 - epatch "${FILESDIR}"/${PN}-3.11.1-htmldir.patch - - # Let 56-hpmud_support.rules call hp-mkuri to make it work with newer udev - # Upstream bug: None - epatch "${FILESDIR}"/${PN}-3.11.12-udev-rules.patch - - # CVE-2010-4267 SNMP Response Processing Buffer Overflow Vulnerability - # http://secunia.com/advisories/42956/ - # https://bugzilla.redhat.com/show_bug.cgi?id=662740 - epatch "${FILESDIR}"/${PN}-3.10.9-cve-2010-4267.patch - - # Fix black stripes on pcl5c printouts - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/561264 - epatch "${FILESDIR}"/${PN}-3.11.12-black-stripes-pcl5c.patch - - # Fix parallel port cpu usage - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/750796 - epatch "${FILESDIR}"/${PN}-3.11.12-fast-pp.patch - - # Fix minmal/hpijs_only/hpcups_only install - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/932918 - epatch "${FILESDIR}"/${P}-minimal.patch - - # Fix Option parsing in sane/scan.py - # Upstream bug: https://bugs.launchpad.net/hplip/+bug/927708 - epatch "${FILESDIR}"/${P}-sane.patch - # Force recognition of Gentoo distro by hp-check sed -i \ -e "s:file('/etc/issue', 'r').read():'Gentoo':" \ diff --git a/net-print/hplip/hplip-3.12.4.ebuild b/net-print/hplip/hplip-3.12.4.ebuild index 53b21f69b2a4..d25a768c0403 100644 --- a/net-print/hplip/hplip-3.12.4.ebuild +++ b/net-print/hplip/hplip-3.12.4.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-print/hplip/hplip-3.12.4.ebuild,v 1.5 2012/05/06 11:00:22 billie Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-print/hplip/hplip-3.12.4.ebuild,v 1.6 2012/05/06 11:42:45 billie Exp $ EAPI=4 @@ -94,18 +94,17 @@ pkg_setup() { } src_prepare() { - use !minimal && python_convert_shebangs -q -r 2 . + EPATCH_SUFFIX="patch" \ + EPATCH_FORCE="yes" \ + epatch "${WORKDIR}" + # Fix for Gentoo bug #345725 sed -i -e "s|/etc/udev/rules.d|/lib/udev/rules.d|" \ $(find ./ -type f -exec grep -l '/etc/udev/rules.d' '{}' '+') \ || die - EPATCH_SUFFIX="patch" \ - EPATCH_FORCE="yes" \ - epatch "${WORKDIR}" - # Force recognition of Gentoo distro by hp-check sed -i \ -e "s:file('/etc/issue', 'r').read():'Gentoo':" \ |