fixing geany so it does not try to g_module_open the libvte library file

and instead links it in at compile time.
epel8
Josef Bacik 18 years ago
parent 51a80b269b
commit bee0063324

@ -0,0 +1,362 @@
--- geany/doc/geany.1.in.josef 2007-01-24 07:50:48.000000000 -0500
+++ geany/doc/geany.1.in 2007-01-24 07:51:02.000000000 -0500
@@ -38,10 +38,6 @@ Don't load the previous session's files
Don't load terminal support. Use this option, if you don't want to load the virtual terminal
emulator widget at startup. If you don't have libvte.so.4 installed, then terminal-support is
automatically disabled. Only available if Geany was compiled with support for VTE.
-.IP "\fB\fP \fB\-\-vte-lib\fP " 10
-Specify explicitly the path including filename or only the filename to the VTE library, e.g.
-/usr/lib/libvte.so or libvte.so. This option is only needed, when the autodetection doesn't
-work. Only available if Geany was compiled with support for VTE.
.IP "\fB-v\fP \fB\-\-version\fP " 10
Show version information and exit.
.IP "\fB-?\fP \fB\-\-help\fP " 10
--- geany/configure.in.josef 2007-01-24 07:41:10.000000000 -0500
+++ geany/configure.in 2007-01-23 17:31:07.000000000 -0500
@@ -84,14 +84,13 @@ fi
AC_ARG_ENABLE(vte, AC_HELP_STRING([--enable-vte],[enable if you want virtual termninal support [[default=yes]]]),
[want_vte="$enableval"], [want_vte="yes"])
-# if test "$want_vte" = "yes"; then
-# PKG_CHECK_MODULES(VTE, [vte],
-# [AC_DEFINE(HAVE_VTE, 1, [Define if you want VTE support])],
-# [AC_MSG_ERROR([VTE support enabled, but VTE not found])])
-# AC_CHECK_LIB(vte, vte_terminal_new,
-# [AC_DEFINE(HAVE_VTE, 1, [Define if you want VTE support])],
-# [AC_MSG_ERROR([VTE support enabled, but VTE not found])], [])
-# fi
+if test "$want_vte" = "yes"; then
+ PKG_CHECK_MODULES([VTE],[vte],
+ [AC_DEFINE(HAVE_VTE, 1, [Define if you want VTE support])],
+ [AC_MSG_ERROR([VTE support enabled, but VTE not found])])
+ AC_SUBST([VTE_LIBS])
+ AC_SUBST([VTE_CFLAGS])
+fi
# Check for random number paths (skip when cross compiling)
if test "x$build" = "x$target"; then
--- geany/src/vte.c.josef 2007-01-24 07:40:43.000000000 -0500
+++ geany/src/vte.c 2007-01-24 07:43:15.000000000 -0500
@@ -41,8 +41,6 @@ VteInfo vte_info;
extern gchar **environ;
static pid_t pid;
-static GModule *module = NULL;
-static struct VteFunctions *vf;
static gboolean popup_menu_created = FALSE;
static gchar *gtk_menu_key_accel = NULL;
static gint vte_prefs_tab_num = -1;
@@ -52,12 +50,11 @@ static const gchar VTE_WORDCHARS[] = "-A
#define VTE_TERMINAL(obj) (GTK_CHECK_CAST((obj), VTE_TYPE_TERMINAL, VteTerminal))
-#define VTE_TYPE_TERMINAL (vf->vte_terminal_get_type())
+#define VTE_TYPE_TERMINAL (vte_terminal_get_type())
static void vte_start(GtkWidget *widget);
static gboolean vte_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer user_data);
static gboolean vte_keypress(GtkWidget *widget, GdkEventKey *event, gpointer data);
-static void vte_register_symbols(GModule *module);
static void vte_popup_menu_clicked(GtkMenuItem *menuitem, gpointer user_data);
static GtkWidget *vte_create_popup_menu(void);
@@ -128,33 +125,8 @@ void vte_init(void)
return;
}
- if (vte_info.lib_vte && strlen(vte_info.lib_vte))
- {
- module = g_module_open(vte_info.lib_vte, G_MODULE_BIND_LAZY);
- }
- else
- {
- module = g_module_open("libvte.so", G_MODULE_BIND_LAZY);
- // try to fallback to different versions of libvte.so.x
- if (module == NULL) module = g_module_open("libvte.so.4", G_MODULE_BIND_LAZY);
- else if (module == NULL) module = g_module_open("libvte.so.8", G_MODULE_BIND_LAZY);
- else if (module == NULL) module = g_module_open("libvte.so.9", G_MODULE_BIND_LAZY);
- }
-
- if (module == NULL)
- {
- vte_info.have_vte = FALSE;
- geany_debug("Could not load libvte.so, terminal support disabled");
- return;
- }
- else
- {
- vte_info.have_vte = TRUE;
- vf = g_new0(struct VteFunctions, 1);
- vte_register_symbols(module);
- }
-
- vte = vf->vte_terminal_new();
+ vte = vte_terminal_new();
+ vte_info.have_vte = TRUE;
vc->vte = vte;
scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(vte)->adjustment));
GTK_WIDGET_UNSET_FLAGS(scrollbar, GTK_CAN_FOCUS);
@@ -169,11 +141,11 @@ void vte_init(void)
/* set the default widget size first to prevent VTE expanding too much,
* sometimes causing the hscrollbar to be too big or out of view. */
gtk_widget_set_size_request(GTK_WIDGET(vte), 10, 10);
- vf->vte_terminal_set_size(VTE_TERMINAL(vte), 30, 1);
+ vte_terminal_set_size(VTE_TERMINAL(vte), 30, 1);
- //vf->vte_terminal_set_encoding(VTE_TERMINAL(vte), "UTF-8");
- vf->vte_terminal_set_mouse_autohide(VTE_TERMINAL(vte), TRUE);
- vf->vte_terminal_set_word_chars(VTE_TERMINAL(vte), VTE_WORDCHARS);
+ //vte_terminal_set_encoding(VTE_TERMINAL(vte), "UTF-8");
+ vte_terminal_set_mouse_autohide(VTE_TERMINAL(vte), TRUE);
+ vte_terminal_set_word_chars(VTE_TERMINAL(vte), VTE_WORDCHARS);
g_signal_connect(G_OBJECT(vte), "child-exited", G_CALLBACK(vte_start), NULL);
g_signal_connect(G_OBJECT(vte), "button-press-event", G_CALLBACK(vte_button_pressed), NULL);
@@ -196,7 +168,6 @@ void vte_init(void)
void vte_close(void)
{
- g_free(vf);
/* free the vte widget before unloading vte module
* this prevents a segfault on X close window if the message window is hidden */
gtk_widget_destroy(vc->vte);
@@ -228,7 +199,7 @@ static gboolean vte_keypress(GtkWidget *
kill(pid, SIGINT);
pid = 0;
- vf->vte_terminal_reset(VTE_TERMINAL(widget), TRUE, TRUE);
+ vte_terminal_reset(VTE_TERMINAL(widget), TRUE, TRUE);
vte_start(widget);
return TRUE;
@@ -244,7 +215,7 @@ static void vte_start(GtkWidget *widget)
gchar **env;
env = vte_get_child_environment();
- pid = vf->vte_terminal_fork_command(VTE_TERMINAL(vte), vc->shell, NULL, env,
+ pid = vte_terminal_fork_command(VTE_TERMINAL(vte), vc->shell, NULL, env,
vte_info.dir, TRUE, TRUE, TRUE);
g_strfreev(env);
}
@@ -257,7 +228,7 @@ static gboolean vte_button_pressed(GtkWi
if (! popup_menu_created)
{
vc->menu = vte_create_popup_menu();
- vf->vte_terminal_im_append_menuitems(VTE_TERMINAL(vc->vte), GTK_MENU_SHELL(vc->im_submenu));
+ vte_terminal_im_append_menuitems(VTE_TERMINAL(vc->vte), GTK_MENU_SHELL(vc->im_submenu));
popup_menu_created = TRUE;
}
@@ -267,44 +238,17 @@ static gboolean vte_button_pressed(GtkWi
return FALSE;
}
-
-static void vte_register_symbols(GModule *mod)
-{
- g_module_symbol(mod, "vte_terminal_new", (void*)&vf->vte_terminal_new);
- g_module_symbol(mod, "vte_terminal_set_size", (void*)&vf->vte_terminal_set_size);
- g_module_symbol(mod, "vte_terminal_fork_command", (void*)&vf->vte_terminal_fork_command);
- g_module_symbol(mod, "vte_terminal_set_word_chars", (void*)&vf->vte_terminal_set_word_chars);
- g_module_symbol(mod, "vte_terminal_set_mouse_autohide", (void*)&vf->vte_terminal_set_mouse_autohide);
- g_module_symbol(mod, "vte_terminal_set_encoding", (void*)&vf->vte_terminal_set_encoding);
- g_module_symbol(mod, "vte_terminal_reset", (void*)&vf->vte_terminal_reset);
- g_module_symbol(mod, "vte_terminal_set_cursor_blinks", (void*)&vf->vte_terminal_set_cursor_blinks);
- g_module_symbol(mod, "vte_terminal_get_type", (void*)&vf->vte_terminal_get_type);
- g_module_symbol(mod, "vte_terminal_set_scroll_on_output", (void*)&vf->vte_terminal_set_scroll_on_output);
- g_module_symbol(mod, "vte_terminal_set_scroll_on_keystroke", (void*)&vf->vte_terminal_set_scroll_on_keystroke);
- g_module_symbol(mod, "vte_terminal_set_font_from_string", (void*)&vf->vte_terminal_set_font_from_string);
- g_module_symbol(mod, "vte_terminal_set_scrollback_lines", (void*)&vf->vte_terminal_set_scrollback_lines);
- g_module_symbol(mod, "vte_terminal_get_has_selection", (void*)&vf->vte_terminal_get_has_selection);
- g_module_symbol(mod, "vte_terminal_copy_clipboard", (void*)&vf->vte_terminal_copy_clipboard);
- g_module_symbol(mod, "vte_terminal_paste_clipboard", (void*)&vf->vte_terminal_paste_clipboard);
- g_module_symbol(mod, "vte_terminal_set_emulation", (void*)&vf->vte_terminal_set_emulation);
- g_module_symbol(mod, "vte_terminal_set_color_foreground", (void*)&vf->vte_terminal_set_color_foreground);
- g_module_symbol(mod, "vte_terminal_set_color_background", (void*)&vf->vte_terminal_set_color_background);
- g_module_symbol(mod, "vte_terminal_feed_child", (void*)&vf->vte_terminal_feed_child);
- g_module_symbol(mod, "vte_terminal_im_append_menuitems", (void*)&vf->vte_terminal_im_append_menuitems);
-}
-
-
void vte_apply_user_settings(void)
{
if (! app->msgwindow_visible) return;
//if (! GTK_WIDGET_REALIZED(vc->vte)) gtk_widget_realize(vc->vte);
- vf->vte_terminal_set_scrollback_lines(VTE_TERMINAL(vc->vte), vc->scrollback_lines);
- vf->vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(vc->vte), vc->scroll_on_key);
- vf->vte_terminal_set_scroll_on_output(VTE_TERMINAL(vc->vte), vc->scroll_on_out);
- vf->vte_terminal_set_emulation(VTE_TERMINAL(vc->vte), vc->emulation);
- vf->vte_terminal_set_font_from_string(VTE_TERMINAL(vc->vte), vc->font);
- vf->vte_terminal_set_color_foreground(VTE_TERMINAL(vc->vte), vc->colour_fore);
- vf->vte_terminal_set_color_background(VTE_TERMINAL(vc->vte), vc->colour_back);
+ vte_terminal_set_scrollback_lines(VTE_TERMINAL(vc->vte), vc->scrollback_lines);
+ vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(vc->vte), vc->scroll_on_key);
+ vte_terminal_set_scroll_on_output(VTE_TERMINAL(vc->vte), vc->scroll_on_out);
+ vte_terminal_set_emulation(VTE_TERMINAL(vc->vte), vc->emulation);
+ vte_terminal_set_font_from_string(VTE_TERMINAL(vc->vte), vc->font);
+ vte_terminal_set_color_foreground(VTE_TERMINAL(vc->vte), vc->colour_fore);
+ vte_terminal_set_color_background(VTE_TERMINAL(vc->vte), vc->colour_back);
override_menu_key();
}
@@ -316,13 +260,13 @@ static void vte_popup_menu_clicked(GtkMe
{
case 0:
{
- if (vf->vte_terminal_get_has_selection(VTE_TERMINAL(vc->vte)))
- vf->vte_terminal_copy_clipboard(VTE_TERMINAL(vc->vte));
+ if (vte_terminal_get_has_selection(VTE_TERMINAL(vc->vte)))
+ vte_terminal_copy_clipboard(VTE_TERMINAL(vc->vte));
break;
}
case 1:
{
- vf->vte_terminal_paste_clipboard(VTE_TERMINAL(vc->vte));
+ vte_terminal_paste_clipboard(VTE_TERMINAL(vc->vte));
break;
}
case 2:
@@ -385,7 +329,7 @@ static GtkWidget *vte_create_popup_menu(
void vte_send_cmd(const gchar *cmd)
{
- vf->vte_terminal_feed_child(VTE_TERMINAL(vc->vte), cmd, strlen(cmd));
+ vte_terminal_feed_child(VTE_TERMINAL(vc->vte), cmd, strlen(cmd));
}
--- geany/src/vte.h.josef 2007-01-24 07:40:35.000000000 -0500
+++ geany/src/vte.h 2007-01-24 07:33:27.000000000 -0500
@@ -31,7 +31,7 @@
* in stdlib.h, on FreeBSD in unistd.h */
#include <stdlib.h>
#include <unistd.h>
-
+#include <vte/vte.h>
typedef struct
{
@@ -86,53 +86,6 @@ gboolean vte_drag_drop(GtkWidget *widget
gpointer user_data);
*/
-/* taken from original vte.h to make my life easier ;-) */
-
-typedef struct _VteTerminalPrivate VteTerminalPrivate;
-
-typedef struct _VteTerminal VteTerminal;
-struct _VteTerminal
-{
- GtkWidget widget;
- GtkAdjustment *adjustment;
- glong char_width, char_height;
- glong char_ascent, char_descent;
- glong row_count, column_count;
- gchar *window_title;
- gchar *icon_title;
- VteTerminalPrivate *pvt;
-};
-
-
-/* store function pointers in a struct to avoid a strange segfault if they are stored directly
- * if accessed directly, gdb says the segfault arrives at old_tab_width(prefs.c), don't ask me */
-struct VteFunctions
-{
- GtkWidget* (*vte_terminal_new) (void);
- pid_t (*vte_terminal_fork_command) (VteTerminal *terminal, const char *command, char **argv,
- char **envv, const char *directory, gboolean lastlog,
- gboolean utmp, gboolean wtmp);
- void (*vte_terminal_set_size) (VteTerminal *terminal, glong columns, glong rows);
- void (*vte_terminal_set_word_chars) (VteTerminal *terminal, const char *spec);
- void (*vte_terminal_set_mouse_autohide) (VteTerminal *terminal, gboolean setting);
- void (*vte_terminal_reset) (VteTerminal *terminal, gboolean full, gboolean clear_history);
- void (*vte_terminal_set_encoding) (VteTerminal *terminal, const char *codeset);
- void (*vte_terminal_set_cursor_blinks) (VteTerminal *terminal, gboolean blink);
- GtkType (*vte_terminal_get_type) (void);
- void (*vte_terminal_set_scroll_on_output) (VteTerminal *terminal, gboolean scroll);
- void (*vte_terminal_set_scroll_on_keystroke) (VteTerminal *terminal, gboolean scroll);
- void (*vte_terminal_set_font_from_string) (VteTerminal *terminal, const char *name);
- void (*vte_terminal_set_scrollback_lines) (VteTerminal *terminal, glong lines);
- gboolean (*vte_terminal_get_has_selection) (VteTerminal *terminal);
- void (*vte_terminal_copy_clipboard) (VteTerminal *terminal);
- void (*vte_terminal_paste_clipboard) (VteTerminal *terminal);
- void (*vte_terminal_set_emulation) (VteTerminal *terminal, const gchar *emulation);
- void (*vte_terminal_set_color_foreground) (VteTerminal *terminal, const GdkColor *foreground);
- void (*vte_terminal_set_color_background) (VteTerminal *terminal, const GdkColor *background);
- void (*vte_terminal_feed_child) (VteTerminal *terminal, const char *data, glong length);
- void (*vte_terminal_im_append_menuitems) (VteTerminal *terminal, GtkMenuShell *menushell);
-};
-
#endif
#endif
--- geany/src/Makefile.am.josef 2007-01-24 07:40:55.000000000 -0500
+++ geany/src/Makefile.am 2007-01-23 17:23:03.000000000 -0500
@@ -41,7 +41,7 @@ if MINGW
WINDRES = /usr/local/cross-tools/bin/i386-mingw32msvc-windres
geany_SOURCES = $(SRCS) win32.c win32.h
-geany_LDADD = ../scintilla/libscintilla.a ../tagmanager/libtagmanager.a -lstdc++ @PACKAGE_LIBS@ \
+geany_LDADD = ../scintilla/libscintilla.a ../tagmanager/libtagmanager.a -lstdc++ @PACKAGE_LIBS@ @VTE_LIBS@ \
$(INTLLIBS) -lgdi32 -limm32 -lshell32 -lole32 -luuid -liberty -lcomdlg32 -lcomctl32 \
geany_private.res
AM_CFLAGS = -DGEANY_DEBUG -Wall -pipe -mms-bitfields
@@ -49,7 +49,7 @@ AM_CFLAGS = -DGEANY_DEBUG -Wall -pipe -m
geany_LDFLAGS = -mwindows
INCLUDES = -I../scintilla/include -I../tagmanager/include -DENABLE_NLS \
- -I/usr/local/cross-tools/include @PACKAGE_CFLAGS@
+ -I/usr/local/cross-tools/include @PACKAGE_CFLAGS@ @VTE_CFLAGS@
geany_windres.res:
$(WINDRES) -i ../geany_private.rc --input-format=rc -o geany_private.res -O coff;
@@ -62,11 +62,11 @@ else
AM_CFLAGS = -DGEANY_DEBUG -Wall -pipe
#AM_CFLAGS = -DGEANY_DEBUG -Wall -pipe -g -O0
geany_SOURCES = $(SRCS) vte.c vte.h
-geany_LDADD = ../scintilla/libscintilla.a ../tagmanager/libtagmanager.a @PACKAGE_LIBS@ -lstdc++ $(INTLLIBS)
+geany_LDADD = ../scintilla/libscintilla.a ../tagmanager/libtagmanager.a @PACKAGE_LIBS@ @VTE_LIBS@ -lstdc++ $(INTLLIBS)
INCLUDES = \
-DPACKAGE_DATA_DIR=\""$(datadir)"\" -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
- -I../scintilla/include -I../tagmanager/include @PACKAGE_CFLAGS@
+ -I../scintilla/include -I../tagmanager/include @PACKAGE_CFLAGS@ @VTE_CFLAGS@
clean-local:
--- geany/src/main.c.josef 2007-01-24 07:48:29.000000000 -0500
+++ geany/src/main.c 2007-01-24 07:45:59.000000000 -0500
@@ -77,7 +77,6 @@ static gboolean show_version = FALSE;
static gchar *alternate_config = NULL;
#ifdef HAVE_VTE
static gboolean no_vte = FALSE;
-static gchar *lib_vte = NULL;
#endif
#ifdef HAVE_SOCKET
static gboolean ignore_socket = FALSE;
@@ -98,7 +97,6 @@ static GOptionEntry entries[] =
{ "no-session", 's', G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &cl_options.load_session, N_("don't load the previous session's files"), NULL },
#ifdef HAVE_VTE
{ "no-terminal", 't', 0, G_OPTION_ARG_NONE, &no_vte, N_("don't load terminal support"), NULL },
- { "vte-lib", 0, 0, G_OPTION_ARG_FILENAME, &lib_vte, N_("filename of libvte.so"), NULL },
#endif
{ "version", 'v', 0, G_OPTION_ARG_NONE, &show_version, N_("show version and exit"), NULL },
{ NULL, 0, 0, 0, NULL, NULL, NULL }
@@ -434,9 +432,6 @@ static void parse_command_line_options(g
#ifdef HAVE_SOCKET
socket_info.ignore_socket = ignore_socket;
#endif
-#ifdef HAVE_VTE
- vte_info.lib_vte = lib_vte;
-#endif
app->ignore_global_tags = ignore_global_tags;
}
@@ -737,7 +732,6 @@ void main_quit()
scintilla_release_resources();
#ifdef HAVE_VTE
if (vte_info.have_vte) vte_close();
- g_free(vte_info.lib_vte);
g_free(vte_info.dir);
#endif
gtk_widget_destroy(app->window);

@ -1,12 +1,14 @@
Name: geany Name: geany
Version: 0.10 Version: 0.10
Release: 2%{?dist} Release: 3%{?dist}
Summary: A fast and lightweight IDE using GTK2 Summary: A fast and lightweight IDE using GTK2
Group: Development/Tools Group: Development/Tools
License: GPL License: GPL
URL: http://geany.uvena.de/ URL: http://geany.uvena.de/
Source0: http://files.uvena.de/geany/%{name}-%{version}.tar.bz2 Source0: http://files.uvena.de/geany/%{name}-%{version}.tar.bz2
Patch0: geany-dynamic-vte.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: desktop-file-utils, gettext, gtk2-devel, glib2-devel, pango-devel, vte-devel BuildRequires: desktop-file-utils, gettext, gtk2-devel, glib2-devel, pango-devel, vte-devel
@ -28,10 +30,11 @@ Some features:
%prep %prep
%setup -q %setup -q
%patch -p1 -b .dynvte
%build %build
%configure autoreconf --force --install
#%configure
make %{?_smp_mflags} make %{?_smp_mflags}
@ -59,6 +62,9 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/geany.1.gz %{_mandir}/man1/geany.1.gz
%changelog %changelog
* Wed Jan 24 2007 Josef Whiter <josef@toxicpanda.com> 0.10-3
- added patch to dynamically link in libte instead of using g_module_open
* Tue Jan 04 2007 Josef Whiter <josef@toxicpanda.com> 0.10-2 * Tue Jan 04 2007 Josef Whiter <josef@toxicpanda.com> 0.10-2
- Fixed mixed spaces/tabs problem - Fixed mixed spaces/tabs problem
- added sed command to install to fix the ScintillaLicense.txt eol encoding - added sed command to install to fix the ScintillaLicense.txt eol encoding

Loading…
Cancel
Save