If NEEDS_LIBICONV is set for Solaris 8, it does not build git for me

From: Thomas Glanzmann <hidden>
Date: 2016-06-15 22:43:23
Subsystem: kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers: Nathan Chancellor, Nicolas Schier, Linus Torvalds

Hello Junio,

     [ Paul and Jason CCed because they touched that section last ]

Patch is appended at the very bottom of the E-Mail. I have a fully
patched Solaris 8 with Forte 11. In order to get git compile I had to
delete the

	NEEDS_LIBICONV = YesPlease

line from the Makefile in the Solaris 8 section. After my patch the
section in the Makefile looks like that:

        ifeq ($(uname_R),5.8)
                NO_UNSETENV = YesPlease
                NO_SETENV = YesPlease
                NO_C99_FORMAT = YesPlease
                NO_STRTOUMAX = YesPlease
        endif
        ifeq ($(uname_R),5.9)
                NO_UNSETENV = YesPlease
                NO_SETENV = YesPlease
                NO_C99_FORMAT = YesPlease
                NO_STRTOUMAX = YesPlease
        endif

As you can see _after_ my patch the secion for 5.8 and 5.9 is the same.
So I wonder if it is possible to merge this two sections. But I have no
idea how to do that in the makefile language. I tried to remove other
flags for 5.8, too but it always resulted in built break so all other
flags are necessary.

----8<---- cut here ----8<---- cut here ----8<---- cut here ----8<----

The following issue as _absolutly_ nothing todo with the above and is
here only for completeness. In order to get git to compile with Forte 11
you have to work around a compiler bug in Forte 11. Forte 11 chokes
sometimes when function arguments are declared as static (I raised this
topic before even on this list). I guess that I will also file a bug
against forte 11 tomorrow. The symptom is:

    CC diff-delta.o
"diff-delta.c", line 248: identifier redeclared: create_delta
        current : function(pointer to const struct delta_index {pointer to const void src_buf, unsigned long src_size, unsigned int hash_mask, array[-1] of pointer to struct index_entry {..} hash}, pointer to const void, unsigned long, pointer to unsigned long, unsigned long) returning pointer to void
        previous: function(pointer to const struct delta_index {pointer to const void src_buf, unsigned long src_size, unsigned int hash_mask, array[-1] of pointer to struct index_entry {..} hash}, pointer to const void, unsigned long, pointer to unsigned long, unsigned long) returning pointer to void : "delta.h", line 37
cc: acomp failed for diff-delta.c
gmake[1]: *** [diff-delta.o] Error 2

As you can see Forte 11 is complaining that the protype is different to
the function. But it is not they absolut identical. And here is the
workaround which should _not_ be commited because it is just wrong. It
removes the const flags from the function arguments which results in lot
of warnings but does compile git with Forte 11.
--- a/diff-delta.c
+++ b/diff-delta.c
@@ -242,8 +242,8 @@
 #define MAX_OP_SIZE	(5 + 5 + 1 + RABIN_WINDOW + 7)
 
 void *
-create_delta(const struct delta_index *index,
-	     const void *trg_buf, unsigned long trg_size,
+create_delta(struct delta_index *index,
+	     void *trg_buf, unsigned long trg_size,
 	     unsigned long *delta_size, unsigned long max_size)
 {
 	unsigned int i, outpos, outsize, val;
--- a/delta.h
+++ b/delta.h
@@ -34,8 +34,8 @@
  * must be freed by the caller.
  */
 extern void *
-create_delta(const struct delta_index *index,
-	     const void *buf, unsigned long bufsize,
+create_delta(struct delta_index *index,
+	     void *buf, unsigned long bufsize,
 	     unsigned long *delta_size, unsigned long max_delta_size);
 
 /*

----8<---- cut here ----8<---- cut here ----8<---- cut here ----8<----
	Thomas
From 14a4e0245c32c73a8a2dbd1763a23b8b69f8844d Mon Sep 17 00:00:00 2001
From: Thomas Glanzmann <redacted>
Date: Sun, 22 Jul 2007 12:14:14 +0200
Subject: [PATCH] Don't set NEEDS_LIBICONV for Solaris 8

I use a fully patched Solaris 8 with SUNs Forte 11 Compiler which is also fully
patched. If NEEDS_LIBICONV is set to YesPlease the compile fails for me with:

    AR xdiff/lib.a
    LINK git-convert-objects
ld: fatal: library -liconv: not found
ld: fatal: File processing errors. No output written to git-convert-objects
gmake[1]: *** [git-convert-objects] Error 1

Without the NEEDS_LIBICONV set it simply builds.
---
 Makefile |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index 73b487f..1c294ca 100644
--- a/Makefile
+++ b/Makefile
@@ -401,7 +401,6 @@ ifeq ($(uname_S),SunOS)
 	NO_STRCASESTR = YesPlease
 	NO_HSTRERROR = YesPlease
 	ifeq ($(uname_R),5.8)
-		NEEDS_LIBICONV = YesPlease
 		NO_UNSETENV = YesPlease
 		NO_SETENV = YesPlease
 		NO_C99_FORMAT = YesPlease
-- 
1.5.2.3
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help