forked from mirrors/nixpkgs
Updated GNU ghostscript to version 9.04.1.
- Merged the builder.sh file into the expression itself. - Need to force "-lz" flag to fix linker errors. This is probably a bug in the build system, so further updates may not need that hack. - Need to force "-rpath=${freetype}/lib" flag to fix run-time errors because gs can't find the libfreetype.so.6 library. I don't quite understand why that path isn't hard-coded to begin with. svn path=/nixpkgs/trunk/; revision=31247
This commit is contained in:
parent
5386b47ead
commit
b916544651
|
@ -1,19 +0,0 @@
|
||||||
source $stdenv/setup
|
|
||||||
|
|
||||||
preConfigure() {
|
|
||||||
# "ijs" is impure: it contains symlinks to /usr/share/automake etc.!
|
|
||||||
rm -rf ijs/ltmain.sh
|
|
||||||
|
|
||||||
# Don't install stuff in the Cups store path.
|
|
||||||
makeFlagsArray=(CUPSSERVERBIN=$out/lib/cups CUPSSERVERROOT=$out/etc/cups CUPSDATA=$out/share/cups)
|
|
||||||
}
|
|
||||||
|
|
||||||
installTargets="install install-so install-data install-doc install-man"
|
|
||||||
|
|
||||||
postInstall() {
|
|
||||||
for i in $fonts; do
|
|
||||||
(cd $out/share/ghostscript && tar xvfz $i)
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
genericBuild
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ stdenv, fetchurl, libjpeg, libpng, libtiff, zlib, pkgconfig, fontconfig, openssl
|
{ stdenv, fetchurl, libjpeg, libpng, libtiff, zlib, pkgconfig, fontconfig, openssl, lcms, freetype
|
||||||
, x11Support, x11 ? null
|
, x11Support, x11 ? null
|
||||||
, cupsSupport ? false, cups ? null
|
, cupsSupport ? false, cups ? null
|
||||||
, gnuFork ? true
|
, gnuFork ? true
|
||||||
|
@ -28,10 +28,10 @@ let
|
||||||
};
|
};
|
||||||
|
|
||||||
gnuForkData = rec {
|
gnuForkData = rec {
|
||||||
name = "ghostscript-8.71.1";
|
name = "ghostscript-9.04.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/ghostscript/gnu-${name}.tar.bz2";
|
url = "mirror://gnu/ghostscript/gnu-${name}.tar.bz2";
|
||||||
sha256 = "0vab9905h6sl5s5miai4vhhwdacjlkxqmykfr42x32sr25wjqgvl";
|
sha256 = "0zqa6ggbkdqiszsywgrra4ij0sddlmrfa50bx2mh568qid4ga0a2";
|
||||||
};
|
};
|
||||||
|
|
||||||
inherit meta;
|
inherit meta;
|
||||||
|
@ -56,8 +56,6 @@ in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
inherit (variant) name src meta;
|
inherit (variant) name src meta;
|
||||||
|
|
||||||
builder = ./builder.sh;
|
|
||||||
|
|
||||||
fonts = [
|
fonts = [
|
||||||
(fetchurl {
|
(fetchurl {
|
||||||
url = mirror://gnu/ghostscript/gnu-gs-fonts-std-6.0.tar.gz;
|
url = mirror://gnu/ghostscript/gnu-gs-fonts-std-6.0.tar.gz;
|
||||||
|
@ -70,17 +68,30 @@ stdenv.mkDerivation rec {
|
||||||
# ... add other fonts here
|
# ... add other fonts here
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [libjpeg libpng libtiff zlib pkgconfig fontconfig openssl]
|
buildInputs = [libjpeg libpng libtiff zlib pkgconfig fontconfig openssl lcms]
|
||||||
++ stdenv.lib.optional x11Support x11
|
++ stdenv.lib.optionals x11Support [x11 freetype]
|
||||||
++ stdenv.lib.optional cupsSupport cups;
|
++ stdenv.lib.optional cupsSupport cups;
|
||||||
|
|
||||||
configureFlags =
|
|
||||||
if x11Support then [ "--with-x" ] else [ "--without-x" ];
|
|
||||||
|
|
||||||
CFLAGS = "-fPIC";
|
CFLAGS = "-fPIC";
|
||||||
|
NIX_LDFLAGS = "-lz -rpath=${freetype}/lib";
|
||||||
|
|
||||||
patches = [ ./purity.patch ./urw-font-files.patch ]
|
patches = [ ./purity.patch ./urw-font-files.patch ];
|
||||||
++ stdenv.lib.optional gnuFork ./pstoraster.patch;
|
|
||||||
|
preConfigure = ''
|
||||||
|
# "ijs" is impure: it contains symlinks to /usr/share/automake etc.!
|
||||||
|
rm -rf ijs/ltmain.sh
|
||||||
|
|
||||||
|
# Don't install stuff in the Cups store path.
|
||||||
|
makeFlagsArray=(CUPSSERVERBIN=$out/lib/cups CUPSSERVERROOT=$out/etc/cups CUPSDATA=$out/share/cups)
|
||||||
|
'';
|
||||||
|
|
||||||
|
configureFlags = if x11Support then [ "--with-x" ] else [ "--without-x" ];
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
for i in $fonts; do
|
||||||
|
(cd $out/share/ghostscript && tar xvfz $i)
|
||||||
|
done
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
Upstream issue: http://bugs.ghostscript.com/show_bug.cgi?id=691108
|
|
||||||
e.g. printing a test page prints only black
|
|
||||||
|
|
||||||
Patch: https://bugs.archlinux.org/task/18339
|
|
||||||
|
|
||||||
--- a/cups/gdevcups.c
|
|
||||||
+++ b/cups/gdevcups.c
|
|
||||||
@@ -975,7 +975,8 @@ cups_map_cmyk(gx_device *pdev, /* I - Device info */
|
|
||||||
frac k, /* I - Black value */
|
|
||||||
frac *out) /* O - Device colors */
|
|
||||||
{
|
|
||||||
- int c0, c1, c2, c3; /* Temporary color values */
|
|
||||||
+ int c0 = 0, c1 = 0,
|
|
||||||
+ c2 = 0, c3 = 0; /* Temporary color values */
|
|
||||||
float rr, rg, rb, /* Real RGB colors */
|
|
||||||
ciex, ciey, ciez, /* CIE XYZ colors */
|
|
||||||
ciey_yn, /* Normalized luminance */
|
|
||||||
@@ -2703,9 +2704,13 @@ cups_put_params(gx_device *pdev, /* I - Device info */
|
|
||||||
int color_set; /* Were the color attrs set? */
|
|
||||||
gdev_prn_space_params sp; /* Space parameter data */
|
|
||||||
int width, /* New width of page */
|
|
||||||
- height; /* New height of page */
|
|
||||||
+ height, /* New height of page */
|
|
||||||
+ colorspace, /* New color space */
|
|
||||||
+ bitspercolor; /* New bits per color */
|
|
||||||
static int width_old = 0, /* Previous width */
|
|
||||||
- height_old = 0; /* Previous height */
|
|
||||||
+ height_old = 0, /* Previous height */
|
|
||||||
+ colorspace_old = 0,/* Previous color space */
|
|
||||||
+ bitspercolor_old = 0;/* Previous bits per color */
|
|
||||||
ppd_attr_t *backside = NULL,
|
|
||||||
*backsiderequiresflippedmargins = NULL;
|
|
||||||
float swap;
|
|
||||||
@@ -2800,9 +2805,10 @@ cups_put_params(gx_device *pdev, /* I - Device info */
|
|
||||||
else if (code == 0) \
|
|
||||||
{ \
|
|
||||||
dprintf1("DEBUG: Setting %s to", sname); \
|
|
||||||
- for (i = 0; i < count; i ++) \
|
|
||||||
- dprintf1(" %d", (unsigned)(arrayval.data[i])); \
|
|
||||||
- cups->header.name[i] = (unsigned)arrayval.data[i]; \
|
|
||||||
+ for (i = 0; i < count; i ++) { \
|
|
||||||
+ dprintf1(" %d", (unsigned)(arrayval.data[i])); \
|
|
||||||
+ cups->header.name[i] = (unsigned)(arrayval.data[i]); \
|
|
||||||
+ } \
|
|
||||||
dprintf("...\n"); \
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -3243,23 +3249,31 @@ cups_put_params(gx_device *pdev, /* I - Device info */
|
|
||||||
}
|
|
||||||
#endif /* CUPS_RASTER_SYNCv1 */
|
|
||||||
|
|
||||||
+ colorspace = cups->header.cupsColorSpace;
|
|
||||||
+ bitspercolor = cups->header.cupsBitsPerColor;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Don't reallocate memory unless the device has been opened...
|
|
||||||
* Also reallocate only if the size has actually changed...
|
|
||||||
*/
|
|
||||||
|
|
||||||
- if (pdev->is_open && (width != width_old || height != height_old))
|
|
||||||
+ if (pdev->is_open &&
|
|
||||||
+ (width != width_old || height != height_old ||
|
|
||||||
+ colorspace != colorspace_old || bitspercolor != bitspercolor_old))
|
|
||||||
{
|
|
||||||
|
|
||||||
width_old = width;
|
|
||||||
height_old = height;
|
|
||||||
+ colorspace_old = colorspace;
|
|
||||||
+ bitspercolor_old = bitspercolor;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Device is open and size has changed, so reallocate...
|
|
||||||
*/
|
|
||||||
|
|
||||||
- dprintf4("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels...\n",
|
|
||||||
- pdev->MediaSize[0], pdev->MediaSize[1], width, height);
|
|
||||||
+ dprintf6("DEBUG2: Reallocating memory, [%.0f %.0f] = %dx%d pixels, color space: %d, bits per color: %d...\n",
|
|
||||||
+ pdev->MediaSize[0], pdev->MediaSize[1], width, height,
|
|
||||||
+ colorspace, bitspercolor);
|
|
||||||
|
|
||||||
sp = ((gx_device_printer *)pdev)->space_params;
|
|
Loading…
Reference in a new issue