[ghemical-devel] ghemical-1.90 build failure on 64-bit arches

Michael Banck mbanck at debian.org
Wed Oct 5 20:07:48 EDT 2005


Hi,

Ghemical-1.90 fails on ia64, alpha and amd64 with this error:


x86_64-linux-gnu-g++  -c -g -O2  -I/usr/include/gtk-2.0
-I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo
-I/usr/include/pango-1.0 -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include   -I/usr/include/gtkglext-1.0
-I/usr/lib/gtkglext-1.0/include -I/usr/include/gtk-2.0
-I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/cairo
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-I/usr/include/atk-1.0   -I/usr/include/libglade-2.0
-I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/lib/gtk-2.0/include
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
-I/usr/include/ghemical -I/usr/include/sc -I/usr/include/openbabel
-Wall -fno-exceptions -I../src/glade -I/build/buildd/ghemical-1.90/src
./project.cpp
[...]
./project.cpp: In member function 'bool
project::AddGlobalLight(light*)':
./project.cpp:709: warning: unused variable 'total_lights'
./project.cpp: In member function 'bool project::AddLocalLight(light*,
camera*)':
./project.cpp:735: warning: unused variable 'total_lights'
./project.cpp: In member function 'void
project::RenderScene(graphics_view*, project::rmode, bool)':
./project.cpp:2804: error: cast from 'atom*' to 'i32u' loses precision
./project.cpp:2867: error: cast from 'atom*' to 'i32u' loses precision
./project.cpp:2927: error: cast from 'atom*' to 'i32u' loses precision
/usr/include/sc/util/ref/ref.h: At global scope:
/usr/include/sc/util/ref/ref.h:292: warning: inline function
'sc::RefBase::RefBase()' used but never defined
make[2]: *** [project.o] Error 1

See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=322750 for more
discussion.  The attached patch has been proposed, is this the correct
one?


cheers,

Michael

-- 
Michael Banck
Debian Developer
mbanck at debian.org
http://www.advogato.org/person/mbanck/diary.html
-------------- next part --------------
diff -Naur ghemical-1.51/src/project.cpp ghemical-1.51-working/src/project.cpp
--- ghemical-1.51/src/project.cpp	2005-07-01 12:31:55.000000000 +0100
+++ ghemical-1.51-working/src/project.cpp	2005-09-04 19:12:49.000000000 +0100
@@ -80,6 +80,8 @@
 	current_traj_frame = NOT_DEFINED;
 	
 	mt_a1 = mt_a2 = mt_a3 = NULL;
+
+	glu_laval = 0;
 }
 
 project::~project(void)
@@ -2570,6 +2572,20 @@
 //	delete [] label_color;
 }
 
+i32u project::ptr_to_int(void* ptr)
+{
+	map<void*, i32u>::iterator itr;
+
+	if ((itr = glumap.find(ptr)) == glumap.end()) 
+	{
+		glu_laval++;
+		glumap[ptr] = glu_laval;
+		return glu_laval;
+	}
+	else 
+		return itr->second;
+}
+
 void project::RenderScene(graphics_view * gv, rmode rm, bool accum)
 {
 	bool do_bw = (gv->cam->stereo_mode && !gv->cam->stereo_relaxed);
@@ -2585,7 +2601,7 @@
 			for (iter_al it1 = atom_list.begin();it1 != atom_list.end();it1++)		// wireframe atoms
 			{
 				if (!TestAtom(& (* it1), rm)) continue;
-				glPushName(GLNAME_MD_TYPE1); glPushName((i32u) & (* it1));
+				glPushName(GLNAME_MD_TYPE1); glPushName(ptr_to_int(&(*it1)));
 				
 				glBegin(GL_POINTS);
 				SetColor(gv->colormode, & (* it1), do_bw);
@@ -2648,7 +2664,7 @@
 					break;
 				}
 				
-				glPushName(GLNAME_MD_TYPE1); glPushName((i32u) & (* it1));
+				glPushName(GLNAME_MD_TYPE1); glPushName(ptr_to_int(& (* it1)));
 				
 				GLUquadricObj * qo = gluNewQuadric();
 				gluQuadricDrawStyle(qo, (GLenum) GLU_FILL);
@@ -2708,7 +2724,7 @@
 						break;
 					}
 					
-					glPushName(GLNAME_MD_TYPE1); glPushName((i32u) (* it1).atmr[n2]);
+					glPushName(GLNAME_MD_TYPE1); glPushName(ptr_to_int((* it1).atmr[n2]));
 					
 					GLUquadricObj * qo = gluNewQuadric();
 					gluQuadricDrawStyle(qo, (GLenum) GLU_FILL);
diff -Naur ghemical-1.51/src/project.h ghemical-1.51-working/src/project.h
--- ghemical-1.51/src/project.h	2005-07-01 12:31:55.000000000 +0100
+++ ghemical-1.51-working/src/project.h	2005-09-04 19:09:34.000000000 +0100
@@ -51,6 +51,7 @@
 #include <gnome.h>
 
 #include <vector>
+#include <map>
 using namespace std;
 
 #define FILENAME_FILTER	"*.gpr"
@@ -77,6 +78,9 @@
 	vector<camera *> camera_vector;
 	vector<graphics_view *> graphics_view_vector;
 	vector<plotting_view *> plotting_view_vector;
+	map<void*, i32u> glumap;
+	i32u glu_laval;
+	i32u ptr_to_int(void*);
 	
 /**	A static counter of display list IDs.
 	In some targets there can be several GUI's running simultaneously,


More information about the ghemical-devel mailing list