Bug 40488 - CUPS now relies on a special version of Ghostscript for printing on non-PS printers
Summary: CUPS now relies on a special version of Ghostscript for printing on non-PS pr...
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Alan Eldridge
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-07-12 16:50 UTC by Kirk Strauser
Modified: 2002-07-25 13:40 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kirk Strauser 2002-07-12 16:50:01 UTC
As of version 1.1.15, the CUPS team has moved the 'pstoraster' out of "CUPS proper" and into their own version of Ghostscript (see http://www.cups.org/ghostscript.html for details).  The practical upshot is that users with non-Postscript printers will not be able to print on FreeBSD CUPS servers until the issue is somehow resolved.

Fix: 

Port "ESP Postscript" to FreeBSD, although I don't know how that's going to effect programs that rely on GNU Ghostscript, or what the differences are between the two.
How-To-Repeat: Upgrade to cups-* version 1.1.15.
Comment 1 Alan Eldridge 2002-07-12 19:35:31 UTC
On Fri, Jul 12, 2002 at 08:41:03AM -0700, Kirk Strauser wrote:
>
>>Number:         40488
>>Category:       ports
>>Synopsis:       CUPS now relies on a special version of Ghostscript for printing on non-PS printers

I am in the process of patching ghostscript-gnu. Unfortunately, life has
taken precedence for the last few days.

Beware: this means the ghostscript-gnu will now depend on cups-base. I
don't like this, but it is an unfortunate consequence of the decisions
made by the cups author(s).

This does not mean that cups-base will have to be installed. It will be
used only at build time. So please, let's not start a "I don't want
cups" war over this.
-- 
AlanE
Comment 2 Alan Eldridge freebsd_committer freebsd_triage 2002-07-12 19:37:08 UTC
Responsible Changed
From-To: freebsd-ports->alane

I'll handle this. Expect a patch by Sunday.
Comment 3 Alan Eldridge 2002-07-12 23:04:08 UTC
On Fri, Jul 12, 2002 at 01:45:02PM -0500, Kirk Strauser wrote:
>
>At 2002-07-12T18:35:31Z, Alan E <alane@geeksrus.net> writes:
>> Beware: this means the ghostscript-gnu will now depend on cups-base. I
>> don't like this, but it is an unfortunate consequence of the decisions
>> made by the cups author(s).
>
>I don't know enough about the programs involved to understand why moving
>pstoraster out of CUPS and into Ghostscript is a good thing.  I know you're
>busy, but do you have time to give an informed opinion?

Previously, cups actually installed a private version of ghostscript
with only one driver -- that's what pstoraster *was*. 

Since some Linux distros (not the guy in the fedora) want cups as
standard, and only wanted one ghostscript, Mike Sweet (head dude and
hacker at ESP) decided to produce an ESP ghostscript, which is just GNU
gs with patches and an additional driver.

There are also instructions for patching the driver into the existing
ghostscript-gnu framework. All I have to do is figure out how that fits
in with the 69 other extra drivers we (optionally) install.

The cups-base port will only be used at build time, AFAIK. It should not
be required to be built and installed. Essentially, we're moving
pstoraster into ghostscript-gnu. Not because I want to, but because Mike
has given us no real alternative option other than freezing our version
of cups at 1.1.14, something that is not an option in my opinion.

Does that help clarify things, Kirk?

-- 
AlanE
Comment 4 dai_fugo 2002-07-13 01:51:04 UTC
> There are also instructions for patching the driver into the existing
> ghostscript-gnu framework. All I have to do is figure out how that fits
> in with the 69 other extra drivers we (optionally) install.

I suppose the most rational way to import ESP ghostscript into
FreeBSD ports tree should be:

- build a binary with enabling pstoraster driver only
- install a binary named as 'pstoraster' (for example).

Fonts and other resources can be shared with ghostscript-gnu.
Comment 5 Alan Eldridge 2002-07-13 01:53:23 UTC
On Sat, Jul 13, 2002 at 09:51:04AM +0900, KATO Tsuguru wrote:
>> There are also instructions for patching the driver into the existing
>> ghostscript-gnu framework. All I have to do is figure out how that fits
>> in with the 69 other extra drivers we (optionally) install.
>
>I suppose the most rational way to import ESP ghostscript into
>FreeBSD ports tree should be:

I do not think that is necessary. I prefer to add the driver to the
existing ghostscript-gnu. Everybody's got ghostscript-gnu installed,
anyway. I think it's less hassle this way.

-- 
AlanE
Comment 6 Kirk Strauser 2002-07-13 03:35:01 UTC
At 2002-07-12T22:04:08Z, Alan E <alane@geeksrus.net> writes:

> Previously, cups actually installed a private version of ghostscript with
> only one driver -- that's what pstoraster *was*.

Ahhh....  That explains much.

> Since some Linux distros (not the guy in the fedora) want cups as
> standard, and only wanted one ghostscript, Mike Sweet (head dude and
> hacker at ESP) decided to produce an ESP ghostscript, which is just GNU gs
> with patches and an additional driver.

Well, I guess that makes sense.  I could see that maintaining multiple
parallel versions of something that complex could be a headache.

> There are also instructions for patching the driver into the existing
> ghostscript-gnu framework. All I have to do is figure out how that fits
> in with the 69 other extra drivers we (optionally) install.

That's all?  And you don't have it done yet?  ;)

> The cups-base port will only be used at build time, AFAIK.

Sort of like the Linux JDK and Java, eh?

> Does that help clarify things, Kirk?

Tremendously.  Thanks for the information, Alan, and thanks for all the work
you've done for us users so far.
-- 
Kirk Strauser
The Strauser Group - http://www.strausergroup.com/
Comment 7 tkato 2002-07-13 09:24:24 UTC
> I do not think that is necessary. I prefer to add the driver to the
> existing ghostscript-gnu. Everybody's got ghostscript-gnu installed,
> anyway. I think it's less hassle this way.

Since there is no valid method to control *_DEPENDS, it
shouldn't be so easy to add third-party drivers which
require external libraries to current ghostscript-gnu
port without drastic restructure.

Setting aside that issue, CUPS rasterizer is not necessary
for every FreeBSD user. Ghostscript users who has no printer
don't need CUPS rasterizer. CUPS users who has no non-PS
printer also don't need CUPS rasterizer.

Moreover, there is no actually usable CUPS driver package
for non-PS printers except Gimp-Print at present. I guess
it's pretty reasonable to separating CUPS rasterizer from
existing ghostscript-gnu package.

Here is an experimental implimentation of CUPS rasterizer
port. I would like you to utilize it if my opinion is
acceptable.


# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	cups-pstoraster
#	cups-pstoraster/Makefile
#	cups-pstoraster/distinfo
#	cups-pstoraster/files
#	cups-pstoraster/files/patch-lib:gs_res.ps
#	cups-pstoraster/files/patch-src:genarch.c
#	cups-pstoraster/pkg-comment
#	cups-pstoraster/pkg-descr
#	cups-pstoraster/pkg-plist
#
echo c - cups-pstoraster
mkdir -p cups-pstoraster > /dev/null 2>&1
echo x - cups-pstoraster/Makefile
sed 's/^X//' >cups-pstoraster/Makefile << 'END-of-cups-pstoraster/Makefile'
X# New ports collection makefile for:	cups-pstoraster
X# Date created:		Jul 13 2002
X# Whom:			ports@FreeBSD.org
X#
X# $FreeBSD$
X#
X
XPORTNAME=	pstoraster
XPORTVERSION=	7.05.3
XCATEGORIES=	print
XMASTER_SITES=	${MASTER_SITE_SOURCEFORGE} \
X		ftp://ftp.easysw.com/pub/ghostscript/
XMASTER_SITE_SUBDIR=	espgs
XPKGNAMEPREFIX=	cups-
XDISTNAME=	espgs-${PORTVERSION}-source
X
XMAINTAINER=	ports@FreeBSD.org
X
XLIB_DEPENDS=	cups.2:${PORTSDIR}/print/cups
XRUN_DEPENDS=	${LOCALBASE}/share/ghostscript/fonts/fonts.scale:${PORTSDIR}/print/ghostscript-gnu
X
XWRKSRC=		${WRKDIR}/espgs-${PORTVERSION}
X
XUSE_BZIP2=	yes
XUSE_GMAKE=	yes
XGNU_CONFIGURE=	yes
XCONFIGURE_TARGET=	--build=${ARCH}-portbld-freebsd${OSREL}
XCONFIGURE_ENV=	CPPFLAGS="-I${LOCALBASE}/include" \
X		LDFLAGS="-L${LOCALBASE}/lib"
XCONFIGURE_ARGS=	--without-x --without-ijs --without-gimp-print \
X		--with-drivers=cups --with-gs=espgs \
X		--with-fontpath=${LOCALBASE}/share/ghostscript/fonts \
X		--enable-compiled-inits
X
Xpost-patch:
X	@${MV} ${WRKSRC}/lib/gs_res.ps ${WRKSRC}/lib/gs_res.ps.pre_sed
X	@${SED} -e 's|%%DATADIR%%|${LOCALBASE}/share/ghostscript|g' \
X		${WRKSRC}/lib/gs_res.ps.pre_sed > ${WRKSRC}/lib/gs_res.ps
X
Xpre-build:
X	@${MKDIR} ${WRKSRC}/bin
X	@${MKDIR} ${WRKSRC}/obj
X
Xdo-install:
X	${INSTALL_PROGRAM} ${WRKSRC}/bin/espgs ${PREFIX}/bin
X	${INSTALL_DATA} ${WRKSRC}/pstoraster/pstoraster.convs \
X		${PREFIX}/etc/cups
X	${INSTALL_DATA} ${WRKSRC}/pstoraster/pstoraster \
X		${PREFIX}/libexec/cups/filter
X
X.include <bsd.port.mk>
END-of-cups-pstoraster/Makefile
echo x - cups-pstoraster/distinfo
sed 's/^X//' >cups-pstoraster/distinfo << 'END-of-cups-pstoraster/distinfo'
XMD5 (espgs-7.05.3-source.tar.bz2) = e21697ae9c4aa82d16e48f202ba6f69c
END-of-cups-pstoraster/distinfo
echo c - cups-pstoraster/files
mkdir -p cups-pstoraster/files > /dev/null 2>&1
echo x - cups-pstoraster/files/patch-lib:gs_res.ps
sed 's/^X//' >cups-pstoraster/files/patch-lib:gs_res.ps << 'END-of-cups-pstoraster/files/patch-lib:gs_res.ps'
X--- lib/gs_res.ps.orig	Mon Jul 16 01:09:41 2001
X+++ lib/gs_res.ps	Fri Feb  8 07:12:09 2002
X@@ -248,8 +248,8 @@
X   /pssystemparams 10 dict readonly def
X } if
X pssystemparams begin
X-  /FontResourceDir (/Resource/Font/) readonly .forcedef	% pssys'params is r-o
X-  /GenericResourceDir (/Resource/) readonly .forcedef	% pssys'params is r-o
X+  /FontResourceDir (%%DATADIR%%/Resource/Font/) readonly .forcedef	% pssys'params is r-o
X+  /GenericResourceDir (%%DATADIR%%/Resource/) readonly .forcedef	% pssys'params is r-o
X   /GenericResourcePathSep (/) readonly .forcedef	% pssys'params is r-o
X end
X end
END-of-cups-pstoraster/files/patch-lib:gs_res.ps
echo x - cups-pstoraster/files/patch-src:genarch.c
sed 's/^X//' >cups-pstoraster/files/patch-src:genarch.c << 'END-of-cups-pstoraster/files/patch-src:genarch.c'
X--- src/genarch.c.orig	Tue Jun  5 15:38:57 2001
X+++ src/genarch.c	Wed Jun 20 04:17:42 2001
X@@ -41,6 +41,7 @@
X     fprintf(f, "\n\t /* ---------------- %s ---------------- */\n\n", str);
X }
X 
X+#ifndef __FreeBSD__
X private clock_t
X time_clear(char *buf, int bsize, int nreps)
X {
X@@ -51,6 +52,7 @@
X 	memset(buf, 0, bsize);
X     return clock() - t;
X }
X+#endif /* __FreeBSD__ */
X 
X private void
X define(FILE *f, const char *str)
X@@ -181,6 +183,7 @@
X     fprintf(f, "((unsigned long)~0L + (unsigned long)0)\n");
X #undef PRINT_MAX
X 
X+#ifndef __FreeBSD__
X     section(f, "Cache sizes");
X 
X     /*
X@@ -241,6 +244,7 @@
X 	}
X 	define_int(f, "ARCH_CACHE2_SIZE", bsize >> 1);
X     }
X+#endif /* __FreeBSD__ */
X 
X     section(f, "Miscellaneous");
X 
END-of-cups-pstoraster/files/patch-src:genarch.c
echo x - cups-pstoraster/pkg-comment
sed 's/^X//' >cups-pstoraster/pkg-comment << 'END-of-cups-pstoraster/pkg-comment'
XGNU Postscript interprinter for using with CUPS
END-of-cups-pstoraster/pkg-comment
echo x - cups-pstoraster/pkg-descr
sed 's/^X//' >cups-pstoraster/pkg-descr << 'END-of-cups-pstoraster/pkg-descr'
XGhostscript is the well-known PostScript interpreter which is available for
Xall common and most esoteric platforms and supports many different printers
Xand some displays.
X
XVersions entitled "GNU Ghostscript" are distributed with the GNU General
XPublic License, which allows free use, and free copying and redistribution
Xunder certain conditions (including, in some cases, commercial distribution).
X
XThis distribution is based on GNU Ghostscript and provides the "driver" for
XCUPS that supports non-PostScript printer drivers within CUPS.
X
XWWW: http://www.cups.org/ghostscript.html
END-of-cups-pstoraster/pkg-descr
echo x - cups-pstoraster/pkg-plist
sed 's/^X//' >cups-pstoraster/pkg-plist << 'END-of-cups-pstoraster/pkg-plist'
Xbin/espgs
Xetc/cups/pstoraster.convs
Xlibexec/cups/filter/pstoraster
END-of-cups-pstoraster/pkg-plist
exit
Comment 8 Alan Eldridge 2002-07-13 10:44:47 UTC
On Sat, Jul 13, 2002 at 05:24:24PM +0900, KATO Tsuguru wrote:
>> I do not think that is necessary. I prefer to add the driver to the
>> existing ghostscript-gnu. Everybody's got ghostscript-gnu installed,
>> anyway. I think it's less hassle this way.
>
>Since there is no valid method to control *_DEPENDS, it
>shouldn't be so easy to add third-party drivers which
>require external libraries to current ghostscript-gnu
>port without drastic restructure.

Well, the patch was larger than this port, and I hadn't got to the
install part yet. 

>Setting aside that issue, CUPS rasterizer is not necessary
>for every FreeBSD user. Ghostscript users who has no printer
>don't need CUPS rasterizer. CUPS users who has no non-PS
>printer also don't need CUPS rasterizer.

Very true: e.g., I have an HP PS printer. I was going to have a
WITHOUT_CUPS knob to turn it off, but ..

>Moreover, there is no actually usable CUPS driver package
>for non-PS printers except Gimp-Print at present. I guess
>it's pretty reasonable to separating CUPS rasterizer from
>existing ghostscript-gnu package.

It's starting to look like you're correct on this one.

>
>Here is an experimental implimentation of CUPS rasterizer
>port. I would like you to utilize it if my opinion is
>acceptable.
>

I'll patch up a couple minor glitches (e.g., lib depends on cups-base).
I'm a little leery of patching the postscript code, but let me try this
out.

If it works, then thanks very much. You've saved me a lot of work. :)

-- 
AlanE
Comment 9 Alan Eldridge 2002-07-13 16:50:41 UTC
On Sat, Jul 13, 2002 at 05:44:47AM -0400, Alan E wrote:
>On Sat, Jul 13, 2002 at 05:24:24PM +0900, KATO Tsuguru wrote:
>>Here is an experimental implimentation of CUPS rasterizer
>>port. I would like you to utilize it if my opinion is
>>acceptable.
>
>I'll patch up a couple minor glitches (e.g., lib depends on cups-base).
>I'm a little leery of patching the postscript code, but let me try this
>out.
>
>If it works, then thanks very much. You've saved me a lot of work. :)

I'm sorry. I left something out: if this works, and it looks like it
should, not only have you save me a lot of work but come up with a
better solution, too. 8=)

-- 
AlanE
Comment 10 Alan Eldridge freebsd_committer freebsd_triage 2002-07-25 04:02:43 UTC
State Changed
From-To: open->closed

Committed a modified version of Kato's suggest port. I maintain. Now for 
people to test it.
Comment 11 throw2 2002-07-25 13:31:52 UTC
Installed the cups-pstoraster port, printing fine now.  Thanks everyone.