Subject: pkg/34752: devel/glibmm (2006Q[23]+HEAD) broken on 64bit
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: None <Ephaeton@gmx.net>
List: pkgsrc-bugs
Date: 10/08/2006 08:00:01
>Number:         34752
>Category:       pkg
>Synopsis:       devel/glibmm (2006Q[23]+HEAD) broken on 64bit
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Oct 08 08:00:01 +0000 2006
>Originator:     Martin S. Weber
>Release:        NetBSD 4.99.1
>Organization:
	Entropie Regensburg
	
>Environment:
	
	
pkgsrc 2006Q2 ("then")
pkgsrc 2006Q3 (up-to-date).
pkgsrc HEAD as of today...
System: NetBSD helios.entropie.net 4.99.1 NetBSD 4.99.1 (GENERIC) #0: Mon Aug 28 18:03:18 CEST 2006 root@helios.entropie.net:/usr/obj/sys/arch/sparc64/compile/GENERIC sparc64
Architecture: sparc64
Machine: sparc64
>Description:
	

devel/glibmm does not compile on sparc64 because of a clashing definition of two methods. The problematic
methods are: set_time(time_t) and set_time(GTime) (c++ error: failed to overload blah blah). 

This is no problem on 32bit platforms because GTime is defined as "gint32" while time_t is long on x86.

On 64bit (I only have a sparc to look) time_t is an int and GTime still is a gint32, so they clash.

This has been reported for pkgsrc-2006Q2 for amd64 and sparc64 on pkgsrc-users already:

http://mail-index.netbsd.org/pkgsrc-users/2006/09/07/0010.html (rhialto: compile error, amd64)
http://mail-index.netbsd.org/pkgsrc-users/2006/09/07/0012.html (rhialto: source extracts)
http://mail-index.netbsd.org/pkgsrc-users/2006/09/07/0014.html (rhialto: first fix)
http://mail-index.netbsd.org/pkgsrc-users/2006/09/07/0014.html (myself: observed on sparc64)

Note that both HEAD and 2006Q3 are affected...

>How-To-Repeat:
	
on amd64, sparc64 ... cd $PKGSRCDIR/devel/glibmm && make
>Fix:
	
First, for 64bitties the suggested fix by rhialto will work fine, but I'm not sure of the impact on 32bitties because
for them GTime and time_t are distinct types. So I've chosen to enable the fix only in the 64bit case.

That said, apply:

---((--
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/devel/glibmm/distinfo,v
retrieving revision 1.10
diff -u -r1.10 distinfo
--- distinfo    24 Sep 2006 16:43:47 -0000      1.10
+++ distinfo    8 Oct 2006 07:56:42 -0000
@@ -3,3 +3,4 @@
 SHA1 (glibmm-2.12.1.tar.bz2) = cc00d6cb84600f231fe61a4f538a1c039e4de3d4
 RMD160 (glibmm-2.12.1.tar.bz2) = aafaa3e8b96b009d0c57b8b53c5cacf5b42e0b60
 Size (glibmm-2.12.1.tar.bz2) = 2350209 bytes
+SHA1 (patch-aa) = d37e16a2961933b6bde0693a1c2aac17344c5cb7
---))--

and unpack:
---((--
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#       patches
#       patches/patch-aa
#
echo c - patches
mkdir -p patches > /dev/null 2>&1
echo x - patches/patch-aa
sed 's/^X//' >patches/patch-aa << 'END-of-patches/patch-aa'
X+++ glib/glibmm/date.h 2006-10-08 09:22:59.000000000 +0200
X@@ -25,6 +25,12 @@
X 
X 
X   #undef G_DISABLE_DEPRECATED //So we can use deprecated functions in our deprecated methods.
X+
X+//following deprecates set_time(GTime) because of clash with set_time(time_t) on 64bit archs
X+//the single set_time(GTime) is the only to be affected at all. (nbsd pkgsrc 2006-10-08)
X+#ifdef _LP64
X+#define GLIBMM_DISABLE_DEPRECATED
X+#endif
X  
X #include <glibmm/ustring.h>
X 
END-of-patches/patch-aa
exit

---))--

>Unformatted: