tag 422723 patch pending
tag 430337 patch pending
thanks

Hi,

please find attached the patch for my NMU fixing both bugs. Checking on
an amd64 box, the build no longer contains any references to implicit
pointer conversions, so that shouldn't be a problem any longer and
the build log should pass the ia64 tests. Checking on a kfreebsd-i386
box, the build went fine (although that wasn't a build inside a chroot'd
environment, it looks fine anyway).

Uploaded to DELAYED/2 as of this writing.

Cheers,

-- 
Cyril Brulebois
diff -u ghostscript-8.61.dfsg.1~svn8187/debian/patches/00list 
ghostscript-8.61.dfsg.1~svn8187/debian/patches/00list
--- ghostscript-8.61.dfsg.1~svn8187/debian/patches/00list
+++ ghostscript-8.61.dfsg.1~svn8187/debian/patches/00list
@@ -14,0 +15 @@
+40_implicit_pointer_conversion_fix
diff -u ghostscript-8.61.dfsg.1~svn8187/debian/changelog 
ghostscript-8.61.dfsg.1~svn8187/debian/changelog
--- ghostscript-8.61.dfsg.1~svn8187/debian/changelog
+++ ghostscript-8.61.dfsg.1~svn8187/debian/changelog
@@ -1,3 +1,18 @@
+ghostscript (8.61.dfsg.1~svn8187-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Fix long-standing implicit pointer conversions by backporting a fix from
+    SVN revision 8232, as pointed by Dann Frazier (Closes: #422723):
+     - 40_implicit_pointer_conversion_fix.dpatch added for this purpose. It
+       also contains an additional tweak for src/gpmisc.c so that no attempt
+       to use fdopen64() is made, fdopen() is the way to go. That tweak also
+       solves the FTBFS on GNU/kFreeBSD (Closes: #430337).
+     - DEB_AUTO_UPDATE_AUTOCONF set to “yes” in debian/rules so that the
+       configure script gets updated at build time (the needed build
+       dependencies are already there).
+
+ -- Cyril Brulebois <[EMAIL PROTECTED]>  Sat, 24 Nov 2007 06:35:17 +0100
+
 ghostscript (8.61.dfsg.1~svn8187-2) unstable; urgency=low
 
   * Maintainer upload, acknowledged NMU - closes: #447188
diff -u ghostscript-8.61.dfsg.1~svn8187/debian/rules 
ghostscript-8.61.dfsg.1~svn8187/debian/rules
--- ghostscript-8.61.dfsg.1~svn8187/debian/rules
+++ ghostscript-8.61.dfsg.1~svn8187/debian/rules
@@ -1,6 +1,8 @@
 #!/usr/bin/make -f
 # -*- makefile -*-
 
+DEB_AUTO_UPDATE_AUTOCONF=yes
+
 include /usr/share/cdbs/1/rules/debhelper.mk
 include /usr/share/cdbs/1/class/autotools.mk
 include /usr/share/cdbs/1/rules/dpatch.mk
only in patch2:
unchanged:
--- 
ghostscript-8.61.dfsg.1~svn8187.orig/debian/patches/40_implicit_pointer_conversion_fix.dpatch
+++ 
ghostscript-8.61.dfsg.1~svn8187/debian/patches/40_implicit_pointer_conversion_fix.dpatch
@@ -0,0 +1,135 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 40_implicit_pointer_conversion_fix.dpatch by Cyril Brulebois <[EMAIL 
PROTECTED]>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix implicit pointer conversion by requesting transitional interface
+## DP: to Large File Support. Fix backported from SVN r8232, thanks to
+## DP: Dann Frazier for the pointer. Closes: #422723.
+## DP: The last chunk (#if 0 in src/gpmisc.c) also closes: #430337.
+
[EMAIL PROTECTED]@
+--- ghostscript-8.61.dfsg.1~svn8187~/src/gp_unifs.c    (revision 8231)
++++ ghostscript-8.61.dfsg.1~svn8187/src/gp_unifs.c     (revision 8232)
+@@ -88,18 +88,22 @@
+ 
+       /* save the old filename template in case mkstemp fails */
+       memcpy(ofname, fname, gp_file_name_sizeof);
+-#if defined(HAVE_FILE64) && !defined(_LARGEFILE64_SOURCE)
+-      if (b64)
+-          file = mkstemp64(fname);
+-      else
++#ifdef HAVE_MKSTEMP64
++      file = (b64 ? mkstemp64 : mkstemp)(fname);
++#else
++        file = mkstemp(fname);
+ #endif
+-          file = mkstemp(fname);
+-
+-      /* Fixme : what to do with b64 and 32-bit mkstemp? Unimplemented. */
+       if (file < -1) {
+           eprintf1("**** Could not open temporary file %s\n", ofname);
+           return NULL;
+       }
++#if defined(O_LARGEFILE) && defined(__hpux)
++        if (b64)
++            fcntl(file, F_SETFD, fcntl(file, F_GETFD) | O_LARGEFILE);
++#else
++      /* Fixme : what to do with b64 and 32-bit mkstemp? Unimplemented. */
++#endif
++
+       fp = fdopen(file, mode);
+       if (fp == NULL)
+           close(file);
+@@ -479,10 +483,10 @@
+ 
+ FILE *gp_fopen_64(const char *filename, const char *mode)
+ {
+-#if defined(_LARGEFILE64_SOURCE) || !defined(HAVE_FILE64)
++#if defined(HAVE_FILE64)
++    return fopen64(filename, mode);
++#else
+     return fopen(filename, mode);
+-#else
+-    return fopen64(filename, mode);
+ #endif
+ }
+ 
+@@ -497,22 +501,22 @@
+ 
+ int64_t gp_ftell_64(FILE *strm)
+ {
+-#if defined(_LARGEFILE64_SOURCE) || !defined(HAVE_FILE64)
++#if defined(HAVE_FILE64)
++    return ftello64(strm);
++#else
+     return ftello(strm);
+-#else
+-    return ftello64(strm);
+ #endif
+ }
+ 
+ int gp_fseek_64(FILE *strm, int64_t offset, int origin)
+ {
+-#if defined(_LARGEFILE64_SOURCE) || !defined(HAVE_FILE64)
++#if defined(HAVE_FILE64)
++    return fseeko64(strm, offset, origin);
++#else
+     off_t offset1 = (off_t)offset;
+     
+     if (offset != offset1)
+       return -1;
+     return fseeko(strm, offset1, origin);
+-#else
+-    return fseeko64(strm, offset, origin);
+ #endif
+ }
+--- ghostscript-8.61.dfsg.1~svn8187~/src/Makefile.in   (revision 8231)
++++ ghostscript-8.61.dfsg.1~svn8187/src/Makefile.in    (revision 8232)
+@@ -120,8 +120,11 @@
+ #
+ # -DHAVE_FILE64
+ #     use marked versions of the stdio FILE calls, fopen64() et al.
++#
++# -DHAVE_MKSTEMP64
++#     use non-standard function mkstemp64()
+ 
+-CAPOPT= @HAVE_MKSTEMP@ @HAVE_HYPOT@ @HAVE_FILE64@ @HAVE_FONTCONFIG@
++CAPOPT= @HAVE_MKSTEMP@ @HAVE_HYPOT@ @HAVE_FILE64@ @HAVE_MKSTEMP64@ 
@HAVE_FONTCONFIG@
+ 
+ # Define the name of the executable file.
+ 
+--- ghostscript-8.61.dfsg.1~svn8187~/src/configure.ac  (revision 8231)
++++ ghostscript-8.61.dfsg.1~svn8187/src/configure.ac   (revision 8232)
+@@ -924,6 +924,9 @@
+ AC_CHECK_FUNCS([fopen64], [HAVE_FILE64=-DHAVE_FILE64])
+ AC_SUBST(HAVE_FILE64)
+ 
++AC_CHECK_FUNCS([mkstemp64], [HAVE_MKSTEMP64=-DHAVE_MKSTEMP64])
++AC_SUBST(HAVE_MKSTEMP64)
++
+ AC_PROG_GCC_TRADITIONAL
+ 
+ dnl NB: We don't actually provide autoconf-switched fallbacks for any
+--- ghostscript-8.61.dfsg.1~svn8187~/src/stdpre.h      (revision 8231)
++++ ghostscript-8.61.dfsg.1~svn8187/src/stdpre.h       (revision 8232)
+@@ -17,6 +17,9 @@
+ #ifndef stdpre_INCLUDED
+ #  define stdpre_INCLUDED
+ 
++/* Ghostscript uses transitional LFS functions. */
++#define _LARGEFILE64_SOURCE 1
++
+ /*
+  * Here we deal with the vagaries of various C compilers.  We assume that:
+  *      ANSI-standard Unix compilers define __STDC__.
+--- ghostscript-8.61.dfsg.1~svn8187~/src/gpmisc.c      2007-11-24 
05:59:49.000000000 +0100
++++ ghostscript-8.61.dfsg.1~svn8187/src/gpmisc.c       2007-11-24 
06:00:21.000000000 +0100
+@@ -93,7 +93,7 @@
+      * fdopen as (char *), rather than following the POSIX.1 standard,
+      * which defines it as (const char *).  Patch this here.
+      */
+-#if defined (O_LARGEFILE)
++#if 0 /* defined (O_LARGEFILE) */
+     file = (b64 ? fdopen64 : fdopen)(fildes, (char *)mode); /* still really 
const */
+ #else
+     file = fdopen(fildes, (char *)mode); /* still really const */

Attachment: pgpppH4qVSxfa.pgp
Description: PGP signature

Reply via email to