how to get gtk-xmhtml to compile



Hello all!

I recently checked out the newly-split sources from the gnome CVS head
having wrestled unsuccessfully with compilation (in the unsplit tree) for a
week or so.

I had been unable to get guile-gtk to compile for a while and having taken
some advice (thanks Tom, thanks Hari), decided that my stock debian gtk was
to blame for my lack of success and that I should start from scratch!

I thought that by reporting my trails to the list I might hope to save some
others from the same frustrations, and perhaps generate some FAQ-fodder and
the odd fix (If I am wasting bandwidth, just holler and I'll be quiet!).

Todays project was to get the Gnome gtk+, and gnome-libs compiled and
installed... 

Rumour has it that the Gnome gtk+ is required by other parts of gnome
so I checked it out followed the install instructions and it all worked
first time!

Next, I checked out the most recent gnome-libs, and followed the install
instructions to find that libgnomeui was missing dlopen and friends on the
final link so (having checked the Makefile) I reran make as:

	make LIBS='-lm -ldl'

libgnomeui linked this time and the build continued.  Should I generate a
patch to fix the Makefile.am's and post?  Or will some kind soul fix it
anyway?

It got as far as gtk-xmhtml, which was unable to resolve a symbol in its
final link =(O|  A bit of detective work seems to reveal that the API has
an interface missing compared to my previous gtk+, so I generated the
attached diffs after exporting the extra symbol in gtk+.  Having applied
this patch, recompiled gtk+ and all of gnome-libs, everything links and
installs successfully and the htmltest seems to work okay too (modulo *much*
hacking to get a working docbook/jade installation {debian hamm has a broken
jadetex!} -- if anyone else running debian wants to know how I got this
working let me know).

I'm not actually sure whether the error is in gtk+ or xmhtml (and I don't
have the sources to my old versions anymore so I can't check which has
changed), however, I suspect that this diff isn't the right thing to do, and
that gtk_signal_get_handlers is not an exported interface for a reason, so I
think the gtk-xmhtml maintainer needs to figure out whether it is possible to
circumvent this call and patch xmhtml's code so that gtk+ doesn't need to be
hacked like this.

I noticed there are quite a lot of missing-prototype and miscast pointer
warning generated by gtk-xmhtml during compilation... I don't remember
having these previous to the CVS split, so perhaps more internals have
changed.   Is gtk-xmhtml considered stable (wrt gtk at least)?

Thats it for now, I'll be trying to get gnome-guile installed tomorrow.
Stay tuned!

Cheers,
	Gary V Vaughan.
-- 
{#include #.signature#}
WARNING:  Cannot find '.signature' template file
*** gtk+/gtk/gtksignal.c~	Thu Feb 12 16:54:13 1998
--- gtk+/gtk/gtksignal.c	Thu Feb 12 17:02:28 1998
***************
*** 28,34 ****
  
  typedef struct _GtkSignal       GtkSignal;
  typedef struct _GtkSignalInfo   GtkSignalInfo;
- typedef struct _GtkHandler	GtkHandler;
  typedef struct _GtkHandlerInfo  GtkHandlerInfo;
  typedef struct _GtkEmission     GtkEmission;
  
--- 28,33 ----
*************** struct _GtkSignal
*** 53,74 ****
    gint nparams;
  };
  
- struct _GtkHandler
- {
-   guint id : 28;
-   guint blocked : 1;
-   guint object_signal : 1;
-   guint after : 1;
-   guint no_marshal : 1;
-   guint16 ref_count;
-   guint16 signal_type;
-   GtkSignalFunc func;
-   gpointer func_data;
-   GtkSignalDestroy destroy_func;
-   GtkHandler *prev;
-   GtkHandler *next;
- };
- 
  struct _GtkHandlerInfo
  {
    GtkObject *object;
--- 52,57 ----
*************** done:
*** 1069,1075 ****
    gtk_object_unref (object);
  }
  
! static GtkHandler*
  gtk_signal_get_handlers (GtkObject *object,
  			 gint       signal_type)
  {
--- 1052,1058 ----
    gtk_object_unref (object);
  }
  
! GtkHandler*
  gtk_signal_get_handlers (GtkObject *object,
  			 gint       signal_type)
  {
*** gtk+/gtk/gtksignal.h~	Tue Feb 10 23:49:15 1998
--- gtk+/gtk/gtksignal.h	Thu Feb 12 17:02:26 1998
*************** typedef void (*GtkSignalMarshal)    (Gtk
*** 44,51 ****
--- 44,68 ----
  				     GtkType         return_type);
  typedef void (*GtkSignalDestroy)    (gpointer        data);
  
+ typedef struct _GtkHandler		GtkHandler;
  typedef struct _GtkSignalQuery		GtkSignalQuery;
  
+ struct _GtkHandler
+ {
+   guint id : 28;
+   guint blocked : 1;
+   guint object_signal : 1;
+   guint after : 1;
+   guint no_marshal : 1;
+   guint16 ref_count;
+   guint16 signal_type;
+   GtkSignalFunc func;
+   gpointer func_data;
+   GtkSignalDestroy destroy_func;
+   GtkHandler *prev;
+   GtkHandler *next;
+ };
+ 
  struct	_GtkSignalQuery
  {
    gint		   object_type;
*************** void   gtk_signal_disconnect            
*** 123,128 ****
--- 140,147 ----
  					   gint                 anid);
  void   gtk_signal_disconnect_by_data      (GtkObject           *object,
  					   gpointer             data);
+ GtkHandler*  gtk_signal_get_handlers      (GtkObject     *object,
+ 					   gint           signal_type);
  void   gtk_signal_handler_block           (GtkObject           *object,
  					   gint                 anid);
  void   gtk_signal_handler_block_by_data   (GtkObject           *object,
*** gnome-libs/gtk-xmhtml/gtk-xmhtml.c~	Thu Feb 12 17:40:49 1998
--- gnome-libs/gtk-xmhtml/gtk-xmhtml.c	Thu Feb 12 17:42:47 1998
*************** gtk_xmhtml_focus (GtkWidget *widget, Gdk
*** 738,744 ****
  		*     }
  	        */
  	/* invalidate current selection if there is one */
! 	if (gtk_signal_get_handlers (html, gtk_xmhtml_signals [GTK_XMHTML_ANCHOR_TRACK])
  		&& html->html.anchor_current_cursor_element)
  		_XmHTMLTrackCallback (html, event, NULL);
  
--- 738,744 ----
  		*     }
  	        */
  	/* invalidate current selection if there is one */
! 	if (gtk_signal_get_handlers (GTK_OBJECT(html), gtk_xmhtml_signals [GTK_XMHTML_ANCHOR_TRACK])
  		&& html->html.anchor_current_cursor_element)
  		_XmHTMLTrackCallback (html, event, NULL);
  
*** gnome-libs/gtk-xmhtml/toolkit.h~	Thu Feb 12 17:38:08 1998
--- gnome-libs/gtk-xmhtml/toolkit.h	Thu Feb 12 17:43:03 1998
*************** extern void wrap_gdk_cc_get_pixels (int 
*** 83,89 ****
  				    gulong          *colors,
  				    gint            *nallocated);
  
! #define CHECK_CALLBACK(w,f,g) (gtk_signal_get_handlers (w, gtk_xmhtml_signals [GTK_XMHTML_##g]))
  #define XtCallCallbackList(a,b,c) fprintf (stderr, "Warning callback being invoked\n");
  #define TPROTO(f,a,b,c,d) f (a, b)
  #define Toolkit_Widget_Parent(w) GTK_WIDGET(w)->parent
--- 83,89 ----
  				    gulong          *colors,
  				    gint            *nallocated);
  
! #define CHECK_CALLBACK(w,f,g) (gtk_signal_get_handlers (GTK_OBJECT(w), gtk_xmhtml_signals [GTK_XMHTML_##g]))
  #define XtCallCallbackList(a,b,c) fprintf (stderr, "Warning callback being invoked\n");
  #define TPROTO(f,a,b,c,d) f (a, b)
  #define Toolkit_Widget_Parent(w) GTK_WIDGET(w)->parent

PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]