Skip to content

Commit

Permalink
ghostscript: reduce size significantly, /cc #8990
Browse files Browse the repository at this point in the history
- Don't use static bin/gs.
- Split docs into a separate output.
- Split fonts into another derivation, so they're not reinstalled when
  something changes.
- Drop --disable-sse2
  e723c512c#commitcomment-12361078
- Some cleanups.
  • Loading branch information
vcunat committed Jul 26, 2015
1 parent a951f11 commit 3465ffa
Showing 1 changed file with 45 additions and 32 deletions.
77 changes: 45 additions & 32 deletions pkgs/misc/ghostscript/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,43 @@

assert x11Support -> x11 != null;
assert cupsSupport -> cups != null;
let
version = "9.15";
sha256 = "0p1isp6ssfay141klirn7n9s8b546vcz6paksfmksbwy0ljsypg6";

fonts = stdenv.mkDerivation {
name = "ghostscript-fonts";

srcs = [
(fetchurl {
url = "mirror://sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz";
sha256 = "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf";
})
(fetchurl {
url = "mirror://gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz";
sha256 = "1cxaah3r52qq152bbkiyj2f7dx1rf38vsihlhjmrvzlr8v6cqil1";
})
# ... add other fonts here
];

installPhase = ''
mkdir "$out"
mv -v * "$out/"
'';
};

in
stdenv.mkDerivation rec {
name = "ghostscript-9.15";
name = "ghostscript-${version}";

src = fetchurl {
url = "http://downloads.ghostscript.com/public/${name}.tar.bz2";
sha256 = "0p1isp6ssfay141klirn7n9s8b546vcz6paksfmksbwy0ljsypg6";
inherit sha256;
};

fonts = [
(fetchurl {
url = "mirror://sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz";
sha256 = "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf";
})
(fetchurl {
url = "mirror://gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz";
sha256 = "1cxaah3r52qq152bbkiyj2f7dx1rf38vsihlhjmrvzlr8v6cqil1";
})
# ... add other fonts here
];
patches = [ ./urw-font-files.patch ];

outputs = [ "out" "doc" ];

enableParallelBuilding = true;

Expand All @@ -40,38 +57,34 @@ stdenv.mkDerivation rec {
# [] # maybe sometimes jpeg2000 support
;

patches = [ ./urw-font-files.patch ];

makeFlags = [ "cups_serverroot=$(out)" "cups_serverbin=$(out)/lib/cups" ];

preConfigure = ''
rm -rf jpeg libpng zlib jasper expat tiff lcms{,2} jbig2dec openjpeg freetype cups/libs
sed "s@if ( test -f \$(INCLUDE)[^ ]* )@if ( true )@; s@INCLUDE=/usr/include@INCLUDE=/no-such-path@" -i base/unix-aux.mak
'';

configureFlags =
[ "--with-system-libtiff" "--disable-sse2"
[ "--with-system-libtiff"
"--enable-dynamic"
(if x11Support then "--with-x" else "--without-x")
(if cupsSupport then "--enable-cups" else "--disable-cups")
];

doCheck = true;

installTargets="install soinstall";

#CFLAGS = "-fPIC";
#NIX_LDFLAGS =
# "-lz -rpath${ if stdenv.isDarwin then " " else "="}${freetype}/lib";

preConfigure = ''
rm -rf jpeg libpng zlib jasper expat tiff lcms{,2} jbig2dec openjpeg freetype cups/libs
sed "s@if ( test -f \$(INCLUDE)[^ ]* )@if ( true )@; s@INCLUDE=/usr/include@INCLUDE=/no-such-path@" -i base/unix-aux.mak
'';
# don't build/install statically linked bin/gs
buildFlags = "so";
installTargets="soinstall";

postInstall = ''
# ToDo: web says the fonts should be already included
for i in $fonts; do
(cd $out/share/ghostscript && tar xvfz $i)
done
ln -s gsc "$out"/bin/gs
mkdir -p "$doc/share/ghostscript/${version}"
mv "$out/share/ghostscript/${version}"/{doc,examples} "$doc/share/ghostscript/${version}/"

This comment has been minimized.

Copy link
@edolstra

edolstra Jul 26, 2015

Member

Note 0c91c16, which removes the docs (I don't think anybody needs them).

This comment has been minimized.

Copy link
@vcunat

vcunat Jul 27, 2015

Author Member

Well, I don't really care which happens. For some packages the docs are more relevant for developers than users (of the package), so unlikely to be used much on nix(os).

This comment has been minimized.

Copy link
@wkennington

wkennington Jul 27, 2015

Contributor

Well, they are in their own separate output so it looks like we should keep them separately but maybe mask the outputs to only install $out at the top-level?

rm -rf $out/lib/cups/filter/{gstopxl,gstoraster}
ln -s "${fonts}" "$out/share/ghostscript/fonts"
'';

meta = {
Expand Down

0 comments on commit 3465ffa

Please sign in to comment.