diff options
author | Diego Elio Pettenò <flameeyes@gentoo.org> | 2006-04-27 22:59:37 +0000 |
---|---|---|
committer | Diego Elio Pettenò <flameeyes@gentoo.org> | 2006-04-27 22:59:37 +0000 |
commit | 0500ee0ba8736e8e7de12bcd9d3f74d3c9b0287a (patch) | |
tree | c5a6568b9bb8d50e4c4b1c5b4bd264ab05b2a4c7 /app-text | |
parent | Fixing SHA256 digest, pass four (diff) | |
download | gentoo-2-0500ee0ba8736e8e7de12bcd9d3f74d3c9b0287a.tar.gz gentoo-2-0500ee0ba8736e8e7de12bcd9d3f74d3c9b0287a.tar.bz2 gentoo-2-0500ee0ba8736e8e7de12bcd9d3f74d3c9b0287a.zip |
Add patch for using fontconfig for fonts loading, based on the one in bug #104512.
(Portage version: 2.1_pre9-r4)
Diffstat (limited to 'app-text')
5 files changed, 440 insertions, 2 deletions
diff --git a/app-text/ghostscript-gnu/ChangeLog b/app-text/ghostscript-gnu/ChangeLog index 946a34ced1ae..d5ea7dceb7aa 100644 --- a/app-text/ghostscript-gnu/ChangeLog +++ b/app-text/ghostscript-gnu/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for app-text/ghostscript-gnu # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-text/ghostscript-gnu/ChangeLog,v 1.19 2006/04/23 23:35:59 weeve Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-text/ghostscript-gnu/ChangeLog,v 1.20 2006/04/27 22:59:37 flameeyes Exp $ + +*ghostscript-gnu-8.16-r3 (27 Apr 2006) + + 27 Apr 2006; Diego Pettenò <flameeyes@gentoo.org> + +files/ghostscript-fontconfig.patch, +ghostscript-gnu-8.16-r3.ebuild: + Add patch for using fontconfig for fonts loading, based on the one in bug + #104512. 23 Apr 2006; Jason Wever <weeve@gentoo.org> ghostscript-gnu-8.16-r2.ebuild: diff --git a/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r1 b/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r1 index 07822dcc2e64..f60a70d86079 100644 --- a/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r1 +++ b/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r1 @@ -4,7 +4,9 @@ SHA256 80abec481fd4b5e59ac3d3f5790542dbfabe3c9269a6ac17064160d6dab38ee4 acro5-cm MD5 a3bf430a7e21cd82401258a2ec3b8afb adobe-cmaps-200204.tar.gz 4360486 RMD160 14f436cb2869788f249c0eaf5dd6a31295c5ada7 adobe-cmaps-200204.tar.gz 4360486 SHA256 510f29086630db1a581ab77e46c3a6b9b4ee4bf8c7717c209e5125794a59480a adobe-cmaps-200204.tar.gz 4360486 -MD5 09d0be2bad1b0617bc0eba6eef81f6e9 cups-1.1.20-source.tar.bz2 3741510 +MD5 2a6b3aa522323751b1b65ab8ca13a01a cups-1.1.20-source.tar.bz2 363163 +RMD160 036bf9725a6a0ec06008c83545c17d132d7f070f cups-1.1.20-source.tar.bz2 363163 +SHA256 48e576ab2319fd6ad2d21f2240a720ff2f9ee4825e2a6c30f6903f3c00555590 cups-1.1.20-source.tar.bz2 363163 MD5 c42dfaebc37fe81eab0b5676b124ab63 gnu-ghostscript-8.16.tar.gz 6633085 RMD160 05b1b15c21640b709658a2e0c07d6424705fd9ff gnu-ghostscript-8.16.tar.gz 6633085 SHA256 417922d35e66ee90cf93cf3e93fdf281ec6b92de4f7436c9c1a97c0cc35b94a8 gnu-ghostscript-8.16.tar.gz 6633085 diff --git a/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r3 b/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r3 new file mode 100644 index 000000000000..844c0dae75ad --- /dev/null +++ b/app-text/ghostscript-gnu/files/digest-ghostscript-gnu-8.16-r3 @@ -0,0 +1,12 @@ +MD5 2fbae60417d42779f6488ab897dcaaf6 acro5-cmaps-2001.tar.gz 631653 +RMD160 c723afc2207157a434988b46bcf0a458281c29a4 acro5-cmaps-2001.tar.gz 631653 +SHA256 80abec481fd4b5e59ac3d3f5790542dbfabe3c9269a6ac17064160d6dab38ee4 acro5-cmaps-2001.tar.gz 631653 +MD5 a3bf430a7e21cd82401258a2ec3b8afb adobe-cmaps-200204.tar.gz 4360486 +RMD160 14f436cb2869788f249c0eaf5dd6a31295c5ada7 adobe-cmaps-200204.tar.gz 4360486 +SHA256 510f29086630db1a581ab77e46c3a6b9b4ee4bf8c7717c209e5125794a59480a adobe-cmaps-200204.tar.gz 4360486 +MD5 4ce09b1dce09b6b9398af0daae9adf63 cups-1.1.23-source.tar.bz2 8705521 +RMD160 255ec4c22422b14f2367d69f3ec7e590dc46bea5 cups-1.1.23-source.tar.bz2 8705521 +SHA256 87da0f7b1e03236e183045f1e787957132658ead56c4b0f80ac7f86c1574a85e cups-1.1.23-source.tar.bz2 8705521 +MD5 c42dfaebc37fe81eab0b5676b124ab63 gnu-ghostscript-8.16.tar.gz 6633085 +RMD160 05b1b15c21640b709658a2e0c07d6424705fd9ff gnu-ghostscript-8.16.tar.gz 6633085 +SHA256 417922d35e66ee90cf93cf3e93fdf281ec6b92de4f7436c9c1a97c0cc35b94a8 gnu-ghostscript-8.16.tar.gz 6633085 diff --git a/app-text/ghostscript-gnu/files/ghostscript-fontconfig.patch b/app-text/ghostscript-gnu/files/ghostscript-fontconfig.patch new file mode 100644 index 000000000000..cb2c62888373 --- /dev/null +++ b/app-text/ghostscript-gnu/files/ghostscript-fontconfig.patch @@ -0,0 +1,269 @@ +? autom4te.cache +? fontconfig-patch-0.diff +? fontconfig-patch-1.diff +? fontconfig-patch-2.diff +? fontconfig-patch-3.diff +? fontconfig-patch-4.diff +? loadall.log +? loadall.ps +? native.ps +? test.ps +? src/gp_unix_fc.c +? src/gp_unix_nofc.c +Index: src/configure.ac +=================================================================== +--- src/configure.ac.orig ++++ src/configure.ac +@@ -27,11 +27,9 @@ dnl ------------------------------------ + dnl Initialization and Versioning + dnl ------------------------------------------------ + +-AC_INIT + AC_PREREQ(2.52) + AC_INIT(gnu-ghostscript, 8.16, didier.link@wanadoo.fr) + AC_CONFIG_SRCDIR(src/gs.c) +-AM_INIT_AUTOMAKE + + dnl TOPDIR=`pwd` + +@@ -345,6 +343,13 @@ AC_ARG_ENABLE(compile-inits, AC_HELP_STR + fi]) + AC_SUBST(COMPILE_INITS) + ++PKG_CHECK_MODULES([FONTCONFIG], [fontconfig], [have_fontconfig=yes], [have_fontconfig=no]) ++if test "x$have_fontconfig" = "xyes"; then ++ AC_DEFINE_UNQUOTED(HAVE_FONTCONFIG, 1, [Defines if your system has the libfontconfig library]) ++fi ++CFLAGS="$CFLAGS $FONTCONFIG_CFLAGS" ++AC_SUBST(FONTCONFIG_LIBS) ++ + dnl -------------------------------------------------- + dnl Check for library functions + dnl -------------------------------------------------- +Index: src/gp_unix.c +=================================================================== +--- src/gp_unix.c.orig ++++ src/gp_unix.c +@@ -30,6 +30,12 @@ + #include "gsexit.h" + #include "gp.h" + ++#define HAVE_FONTCONFIG ++ ++#ifdef HAVE_FONTCONFIG ++#include <fontconfig/fontconfig.h> ++#endif ++ + /* + * This is the only place in Ghostscript that calls 'exit'. Including + * <stdlib.h> is overkill, but that's where it's declared on ANSI systems. +@@ -182,16 +188,193 @@ gp_close_printer(FILE * pfile, const cha + * building a custom fontmap file. + */ + ++ ++/* Mangle the FontConfig family and style information into a ++ * PostScript font name */ ++#ifdef HAVE_FONTCONFIG ++static void makePSFontName(char* family, int weight, int slant, char *buf, int bufsize) ++{ ++ int bytesCopied, length, i; ++ const char *slantname, *weightname; ++ ++ switch (slant) { ++ case FC_SLANT_ROMAN: slantname=""; break;; ++ case FC_SLANT_OBLIQUE: slantname="Oblique"; break;; ++ case FC_SLANT_ITALIC: slantname="Italic"; break;; ++ default: slantname="Unknown"; break;; ++ } ++ ++ switch (weight) { ++ case FC_WEIGHT_MEDIUM: weightname=""; break;; ++ case FC_WEIGHT_LIGHT: weightname="Light"; break;; ++ case FC_WEIGHT_DEMIBOLD: weightname="Demi"; break;; ++ case FC_WEIGHT_BOLD: weightname="Bold"; break;; ++ case FC_WEIGHT_BLACK: weightname="Black"; break;; ++ default: weightname="Unknown"; break;; ++ } ++ ++ length = strlen(family); ++ if (length >= bufsize) ++ length = bufsize; ++ /* Copy the family name, stripping spaces */ ++ bytesCopied=0; ++ for (i = 0; i < length; i++) ++ if (family[i] != ' ') ++ buf[bytesCopied++] = family[i]; ++ ++ if ( ((slant != FC_SLANT_ROMAN) || (weight != FC_WEIGHT_MEDIUM)) \ ++ && bytesCopied < bufsize ) ++ { ++ buf[bytesCopied] = '-'; ++ bytesCopied++; ++ if (weight != FC_WEIGHT_MEDIUM) ++ { ++ length = strlen(family); ++ if ((length + bytesCopied) >= bufsize) ++ length = bufsize - bytesCopied - 1; ++ strncpy(buf+bytesCopied, weightname, length); ++ bytesCopied += length; ++ } ++ if (slant != FC_SLANT_ROMAN) ++ { ++ length = strlen(family); ++ if ((length + bytesCopied) >= bufsize) ++ length = bufsize - bytesCopied - 1; ++ strncpy(buf+bytesCopied, slantname, length); ++ bytesCopied += length; ++ } ++ } ++ buf[bytesCopied] = '\0'; ++} ++#endif ++ ++/* State struct for font iteration - passed as an opaque 'void*' through the rest of gs */ ++#ifdef HAVE_FONTCONFIG ++typedef struct { ++ int index; /* current index of iteration over font_list */ ++ FcConfig* fc; /* FontConfig library handle */ ++ FcFontSet* font_list; /* FontConfig font list */ ++ char name[255]; /* name of last font */ ++} unix_fontenum_t; ++#endif ++ + void *gp_enumerate_fonts_init(gs_memory_t *mem) + { ++#ifdef HAVE_FONTCONFIG ++ unix_fontenum_t *state = (unix_fontenum_t *)malloc(sizeof(unix_fontenum_t)); ++ if (state == NULL) ++ return NULL; /* Failed to allocate state */ ++ ++ state->index = 0; ++ state->fc = NULL; ++ state->font_list = NULL; ++ ++ /* Load the fontconfig library */ ++ state->fc = FcInitLoadConfigAndFonts(); ++ if (state->fc == NULL) { ++ free(state); ++ state = NULL; ++ dlprintf("destroyed state - fontconfig init failed"); ++ return NULL; /* Failed to open fontconfig library */ ++ } ++ ++ /* load the font set that we'll iterate over */ ++ FcPattern *pat = FcPatternBuild(NULL, ++ FC_OUTLINE, FcTypeBool, 1, ++ FC_SCALABLE, FcTypeBool, 1, ++ NULL); ++ FcObjectSet* os = FcObjectSetBuild(FC_FILE, FC_OUTLINE, FC_FAMILY, FC_WEIGHT, FC_SLANT, 0); ++ state->font_list = FcFontList(0, pat, os); ++ FcPatternDestroy(pat); ++ FcObjectSetDestroy(os); ++ if (state->font_list == NULL) { ++ free(state); ++ state = NULL; ++ return NULL; /* Failed to generate font list */ ++ } ++ return (void *)state; ++#else + return NULL; ++#endif + } +- ++ + int gp_enumerate_fonts_next(void *enum_state, char **fontname, char **path) + { ++#ifdef HAVE_FONTCONFIG ++ char* psname = NULL; ++ ++ unix_fontenum_t* state = (unix_fontenum_t *)enum_state; ++ if (state == NULL) { ++ return 0; /* gp_enumerate_fonts_init failed for some reason */ ++ } ++ ++ /* Bits of the following were borrowed from Red Hat's GS 7 FontConfig patch */ ++ FcChar8* file_fc = NULL; ++ FcChar8* family_fc = NULL; ++ int outline_fc, slant_fc, weight_fc; ++ FcResult result; ++ ++ if (state->index == state->font_list->nfont) { ++ return 0; /* we've run out of fonts */ ++ } ++ ++ FcPattern* font = state->font_list->fonts[state->index]; ++ ++ result = FcPatternGetString (font, FC_FAMILY, 0, &family_fc); ++ if (result != FcResultMatch || family_fc == NULL) { ++ dlprintf ("DEBUG: FC_FAMILY mismatch\n"); ++ return 0; ++ } ++ ++ result = FcPatternGetString (font, FC_FILE, 0, &file_fc); ++ if (result != FcResultMatch || file_fc == NULL) { ++ dlprintf ("DEBUG: FC_FILE mismatch\n"); ++ return 0; ++ } ++ ++ result = FcPatternGetBool (font, FC_OUTLINE, 0, &outline_fc); ++ if (result != FcResultMatch) { ++ dlprintf1 ("DEBUG: FC_OUTLINE failed to match on %s\n", (char*)family_fc); ++ return 0; ++ } ++ ++ result = FcPatternGetInteger (font, FC_SLANT, 0, &slant_fc); ++ if (result != FcResultMatch) { ++ dlprintf ("DEBUG: FC_SLANT didn't match\n"); ++ return 0; ++ } ++ ++ result = FcPatternGetInteger (font, FC_WEIGHT, 0, &weight_fc); ++ if (result != FcResultMatch) { ++ dlprintf ("DEBUG: FC_WEIGHT didn't match\n"); ++ return 0; ++ } ++ ++ /* Gross hack to work around Fontconfig's inability to tell ++ * us the font's PostScript name - generate it ourselves. ++ * We must free the memory allocated here next time around. */ ++ makePSFontName((char *)family_fc, weight_fc, slant_fc, &state->name, sizeof(state->name)); ++ *fontname = &state->name; ++ ++ /* return the font path straight out of fontconfig */ ++ *path = (char*)file_fc; ++ ++ state->index ++; ++ return 1; ++#else + return 0; ++#endif + } +- ++ + void gp_enumerate_fonts_free(void *enum_state) + { +-} ++#ifdef HAVE_FONTCONFIG ++ unix_fontenum_t* state = (unix_fontenum_t *)enum_state; ++ if (state != NULL) { ++ if (state->font_list != NULL) ++ FcFontSetDestroy(state->font_list); ++ free(state); ++ } ++#endif ++} ++ +Index: src/Makefile.in +=================================================================== +--- src/Makefile.in.orig ++++ src/Makefile.in +@@ -253,7 +253,7 @@ LDFLAGS=@LDFLAGS@ $(XLDFLAGS) + # Solaris may need -lnsl -lsocket -lposix4. + # (Libraries required by individual drivers are handled automatically.) + +-EXTRALIBS= ++EXTRALIBS=@FONTCONFIG_LIBS@ + + # Define the standard libraries to search at the end of linking. + # Most platforms require -lpthread for the POSIX threads library; diff --git a/app-text/ghostscript-gnu/ghostscript-gnu-8.16-r3.ebuild b/app-text/ghostscript-gnu/ghostscript-gnu-8.16-r3.ebuild new file mode 100644 index 000000000000..249765303559 --- /dev/null +++ b/app-text/ghostscript-gnu/ghostscript-gnu-8.16-r3.ebuild @@ -0,0 +1,148 @@ +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-text/ghostscript-gnu/ghostscript-gnu-8.16-r3.ebuild,v 1.1 2006/04/27 22:59:37 flameeyes Exp $ + +inherit eutils libtool autotools + +DESCRIPTION="GNU Ghostscript" +HOMEPAGE="http://www.gnu.org/software/ghostscript/" + +CUPS_PV=1.1.23 +MY_P=gnu-ghostscript-${PV} +PVM=${PV%.[0-9]} +SRC_URI="ftp://ftp.gnu.org/gnu/ghostscript/${MY_P}.tar.gz + cups? ( mirror://gentoo/cups-${CUPS_PV}-source.tar.bz2 ) + cjk? ( http://www.matsusaka-u.ac.jp/mirror/gs-cjk/adobe-cmaps-200204.tar.gz + http://www.matsusaka-u.ac.jp/mirror/gs-cjk/acro5-cmaps-2001.tar.gz )" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd" +IUSE="X cups cjk emacs gtk" + + +DEP=">=media-libs/jpeg-6b + >=media-libs/libpng-1.2.5 + >=sys-libs/zlib-1.1.4 + >=media-libs/tiff-3.7 + X? ( || ( x11-libs/libXt virtual/x11 ) ) + gtk? ( >=x11-libs/gtk+-2.0 ) + cups? ( >=net-print/cups-1.1.20 ) + !app-text/ghostscript-afpl + !app-text/ghostscript-esp" + +RDEPEND="${DEP} + cjk? ( media-fonts/arphicfonts + media-fonts/kochi-substitute + media-fonts/baekmuk-fonts ) + media-fonts/gnu-gs-fonts-std" + +DEPEND="${DEP} + gtk? ( dev-util/pkgconfig )" + +S=${WORKDIR}/${MY_P} + +src_unpack() { + unpack ${MY_P}.tar.gz + + # cups support + if use cups; then + unpack cups-${CUPS_PV}-source.tar.bz2 + cp -r cups-${CUPS_PV}/pstoraster ${S} + cd ${S}/pstoraster + sed -e 's:@prefix@:/usr:' -e 's:@exec_prefix@:${prefix}:' \ + -e 's:@bindir@:${exec_prefix}/bin:' -e 's:@GS@:gs:' \ + pstopxl.in > pstopxl || die "pstopxlsed failed" + sed -i -e 's:OUTPUTFILE="%stdout" $profile $6$:\0 -:' \ + -e 's:/usr/local:/usr:' pstoraster || die "pstorastersed failed" + sed -i -e "s:pstopcl6:pstopxl:" cups.mak || die "cupssed failed" + cd .. + epatch pstoraster/gs811-lib.patch + fi + + # enable cfax device (bug #56704) + sed -i -e 's:DEVICE_DEVS7=$(DD)faxg3.dev $(DD)faxg32d.dev $(DD)faxg4.dev:DEVICE_DEVS7=$(DD)faxg3.dev $(DD)faxg32d.dev $(DD)faxg4.dev $(DD)cfax.dev:' \ + ${S}/src/Makefile.in || die "sed failed" + cd ${S} + + #epatch ${FILESDIR}/gs-${PV}destdir.patch + #epatch ${FILESDIR}/ghostscript-build.patch + #epatch ${FILESDIR}/ghostscript-scripts.patch + #epatch ${FILESDIR}/ghostscript-ps2epsi.patch + epatch ${FILESDIR}/../../ghostscript-esp/files/ghostscript-badc.patch + epatch ${FILESDIR}/../../ghostscript-esp/files/ghostscript-pagesize.patch + epatch ${FILESDIR}/../../ghostscript-esp/files/ghostscript-noopt.patch + epatch ${FILESDIR}/../../ghostscript-esp/files/ghostscript-use-external-freetype.patch + #epatch ${FILESDIR}/ghostscript-split-font-configuration.patch + + # not submitted + epatch ${FILESDIR}/../../ghostscript-esp/files/ijs-dirinstall.diff + epatch ${FILESDIR}/../../ghostscript-esp/files/ghostscript-gtk2.patch + if ! use gtk; then + sed -i "s:\$(GSSOX)::" src/*.mak || die "gsx sed failed" + sed -i "s:.*\$(GSSOX_XENAME)$::" src/*.mak || die "gsxso sed failed" + fi + + # search path fix + sed -i -e "s:\$\(gsdatadir\)/lib:/usr/share/ghostscript/${PVM}/$(get_libdir):" \ + src/Makefile.in || die "sed failed" + sed -i -e 's:$(gsdir)/fonts:/usr/share/fonts/default/ghostscript/:' \ + src/Makefile.in || die "sed failed" + + epatch "${FILESDIR}/ghostscript-fontconfig.patch" + + sed -i -e '/^AC_INIT$/d; /AM_/d' "${S}/src/configure.ac" + + cp /usr/share/automake-1.9/install-sh "${S}" + eautoreconf + + elibtoolize +} + +src_compile() { + local myconf + myconf="--with-ijs --with-jbig2dec" + + econf $(use_with X x) \ + ${myconf} || die "econf failed" + + if use cups; then + echo 'include pstoraster/cups.mak' >> Makefile + sed -i -e 's:DEVICE_DEVS17=:DEVICE_DEVS17=$(DD)cups.dev:' Makefile || die "sed failed" + sed -i -e 's:EXTRALIBS=\(.*\):EXTRALIBS=\1 -lcups -lcupsimage:' Makefile || die "sed failed" + fi + emake -j1 || die "make failed" + emake so -j1 || die "make failed" + + cd ijs + libtoolize --copy --force + econf || die "econf failed" + emake -j1 || die "make failed" + cd .. +} + +src_install() { + einstall D=/ install_prefix=${D} soinstall + + rm -fr ${D}/usr/share/ghostscript/${PVM}/doc || die + dodoc doc/README + dohtml doc/*.html doc/*.htm + + if use emacs; then + insinto /usr/share/emacs/site-lisp + doins doc/gsdoc.el + fi + + if use cjk; then + dodir /usr/share/ghostscript/Resource + dodir /usr/share/ghostscript/Resource/Font + dodir /usr/share/ghostscript/Resource/CIDFont + cd ${D}/usr/share/ghostscript/Resource + unpack adobe-cmaps-200204.tar.gz + unpack acro5-cmaps-2001.tar.gz + fi + + # install ijs + cd ${S}/ijs + make DESTDIR="${D}" install || die "ijs install failed" +} |