Hi Jan,

I'm getting a build failure at the compile stage for gzip which is
caused by a naming conflict with glibc's futimens () function:

In file included from ./sys/stat.h:27,
                 from ./fcntl.h:26,
                 from
/home/neil/gub/target/tools/src/gzip-1.3.12/lib/utimens.c:29:
///usr/include/sys/stat.h:370: error: conflicting types for ‘futimens’
/home/neil/gub/target/tools/src/gzip-1.3.12/lib/utimens.h:2: error:
previous declaration of ‘futimens’ was here
/home/neil/gub/target/tools/src/gzip-1.3.12/lib/utimens.c: In function
‘utimens’:
/home/neil/gub/target/tools/src/gzip-1.3.12/lib/utimens.c:188:
warning: passing argument 2 of ‘futimens’ from incompatible pointer
type
/home/neil/gub/target/tools/src/gzip-1.3.12/lib/utimens.c:188: error:
too many arguments to function ‘futimens’
make[2]: *** [utimens.o] Error 1
make[2]: Leaving directory `/home/neil/gub/target/tools/build/gzip-1.3.12/lib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/neil/gub/target/tools/build/gzip-1.3.12/lib'
make: *** [all-recursive] Error 1

I've attached a patch which renames gzip's version.

Regards,
Neil
From 902730e6d37a16a822a0d5fc7d7bf353e3066662 Mon Sep 17 00:00:00 2001
From: Neil Puttock <n.putt...@gmail.com>
Date: Fri, 21 Aug 2009 00:37:08 +0100
Subject: [PATCH] gzip: rename futimens () to prevent glibc conflict.

---
 gub/specs/gzip.py                      |    1 +
 patches/gzip-1.3.12-glibc-compat.patch |   36 ++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 0 deletions(-)
 create mode 100644 patches/gzip-1.3.12-glibc-compat.patch

diff --git a/gub/specs/gzip.py b/gub/specs/gzip.py
index b0d870e..49abd2c 100644
--- a/gub/specs/gzip.py
+++ b/gub/specs/gzip.py
@@ -4,3 +4,4 @@ if 'BOOTSTRAP' in os.environ.keys (): from gub import target as tools
 
 class Gzip__tools (tools.AutoBuild):
     source = 'http://ftp.gnu.org/pub/gnu/gzip/gzip-1.3.12.tar.gz'
+    patches = ['gzip-1.3.12-glibc-compat.patch']
diff --git a/patches/gzip-1.3.12-glibc-compat.patch b/patches/gzip-1.3.12-glibc-compat.patch
new file mode 100644
index 0000000..37d9ddb
--- /dev/null
+++ b/patches/gzip-1.3.12-glibc-compat.patch
@@ -0,0 +1,36 @@
+--- gzip-1.3.12/gzip.c	2007-03-20 05:09:51.000000000 +0000
++++ gzip-1.3.12/gzip.c	2009-08-21 00:13:55.000000000 +0100
+@@ -1637,7 +1637,7 @@
+ 	}
+       }
+ 
+-    if (futimens (ofd, ofname, timespec) != 0)
++    if (gz_futimens (ofd, ofname, timespec) != 0)
+       {
+ 	int e = errno;
+ 	WARN ((stderr, "%s: ", program_name));
+--- gzip-1.3.12/lib/utimens.c	2007-01-18 08:33:34.000000000 +0000
++++ gzip-1.3.12/lib/utimens.c	2009-08-21 00:13:55.000000000 +0100
+@@ -75,7 +75,7 @@
+    Return 0 on success, -1 (setting errno) on failure.  */
+ 
+ int
+-futimens (int fd ATTRIBUTE_UNUSED,
++gz_futimens (int fd ATTRIBUTE_UNUSED,
+ 	  char const *file, struct timespec const timespec[2])
+ {
+   /* Some Linux-based NFS clients are buggy, and mishandle time stamps
+@@ -185,5 +185,5 @@
+ int
+ utimens (char const *file, struct timespec const timespec[2])
+ {
+-  return futimens (-1, file, timespec);
++  return gz_futimens (-1, file, timespec);
+ }
+--- gzip-1.3.12/lib/utimens.h	2007-02-23 18:25:21.000000000 +0000
++++ gzip-1.3.12/lib/utimens.h	2009-08-21 00:13:55.000000000 +0100
+@@ -1,3 +1,3 @@
+ #include <time.h>
+-int futimens (int, char const *, struct timespec const [2]);
++int gz_futimens (int, char const *, struct timespec const [2]);
+ int utimens (char const *, struct timespec const [2]);
-- 
1.6.0.4

_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to