Date: Wed, 24 Nov 2004 03:31:20 GMT From: Gustavo De Nardin <nardin@inf.ufsc.br> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/74312: [patch] cups-lpr does not fully replaces the standard lpr binaries Message-ID: <200411240331.iAO3VKq02904@juno.inf.ufsc.br> Resent-Message-ID: <200411240440.iAO4eWsV009759@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 74312 >Category: ports >Synopsis: [patch] cups-lpr does not fully replaces the standard lpr binaries >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Nov 24 04:40:32 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Gustavo De Nardin >Release: FreeBSD 5.3-RELEASE i386 >Organization: >Environment: System: FreeBSD lenore.brujeria 5.3-RELEASE FreeBSD 5.3-RELEASE #0: Fri Nov 5 04:19:18 UTC 2004 root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 >Description: Apparently, there are programs (at least the native FreeBSD JDK port) that, when running on BSD systems, rely on the existence of the lpr system binaries at their standard locations (/usr/{bin,sbin}/{lpc,lpr}) to check/provide a printing system. print/cups-lpr, when instructed to replace the base lpr system (CUPS_OVERWRITE_BASE=yes), only moves the base lpr utils "out of way", making it's binaries available instead, by mere effect of $PATH search. This is not enough to satisfy java/jdk14 (and possibly more programs?), which look for the binaries at their specific paths (e.g. '/usr/sbin/lpc'). Thus, the replacement should be done by symlinks substituting the binaries at the original locations, then behaving more like the original ones. Additionally, print/cups-lpr's 'lpc' command does not behave like the real lpc, treating 'all' as a printer name in the command 'status all', and so listing no printers, or possibly only a printer named 'all'. The 'status all' command is also needed for the java/jdk14 printing system to work. This has already been reported to the CUPS project (http://www.cups.org/str.php?L1004), but not corrected yet. >How-To-Repeat: Install java/jdk14. Install print/cups-lpr with CUPS_OVERWRITE_BASE=yes. Configure a printer not named 'all'. Run any Java program that uses the JDK printing system. Try to print something on it. >Fix: Apply these patches to print/cups-lpr. --- pkg-install.diff begins here --- --- cups-lpr.orig/pkg-install Sun Nov 14 21:09:33 2004 +++ cups-lpr/pkg-install Thu Nov 18 00:59:59 2004 @@ -10,7 +10,7 @@ case $2 in POST-INSTALL) for FILE in ${REPLACES_BINARIES}; do - [ -e "${FILE}" ] && chmod 000 "${FILE}" + [ -e "${FILE}" ] && mv "${FILE}" "${FILE}.bak" && ln -s "/usr/local/${FILE#/usr/}" "${FILE}" done ;; esac --- pkg-install.diff ends here --- --- pkg-deinstall.diff begins here --- --- cups-lpr.orig/pkg-deinstall Thu Dec 4 08:05:06 2003 +++ cups-lpr/pkg-deinstall Thu Nov 18 01:04:50 2004 @@ -10,6 +10,7 @@ case $2 in POST-DEINSTALL) for FILE in ${REPLACES_BINARIES}; do + [ -L "${FILE}" ] && rm "${FILE}" [ -e "${FILE}.bak" ] && mv "${FILE}.bak" "${FILE}" done ;; --- pkg-deinstall.diff ends here --- --- patch-berkeley::lpc.c begins here --- --- cups-lpr.orig/files/patch-berkeley::lpc.c__status_all Wed Dec 31 21:00:00 1969 +++ cups-lpr/files/patch-berkeley::lpc.c__status_all Mon Nov 15 17:57:00 2004 @@ -0,0 +1,18 @@ +--- berkeley/lpc.c.orig Wed Feb 25 17:14:50 2004 ++++ berkeley/lpc.c Mon Nov 15 17:54:38 2004 +@@ -339,6 +339,15 @@ + } + + /* ++ * A single 'all' printer name is special, meaning all printers. ++ */ ++ ++ if (dests != NULL && compare_strings(dests, "all", 3) == 0) ++ { ++ dests = NULL; ++ } ++ ++ /* + * See if this is a printer we're interested in... + */ + --- patch-berkeley::lpc.c ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411240331.iAO3VKq02904>