From b47b15f6ba401c735d415e65d1fa7620e3546968 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Sun, 3 Mar 2002 04:16:30 +0000 Subject: [PATCH] Fixes for uninstalled operation with module suffixes other than .so and in Sat Mar 2 23:08:23 2002 Owen Taylor Fixes for uninstalled operation with module suffixes other than .so and in general for platforms like AIX where the module suffix isn't predictable. (#72185, problems reported by Miroslaw Dobrzanski-Neumann) * modules/input/Makefile.am (gtk.immodules): Query .la files rather than shared objects in .libs when creating the uninstalled gtk.immodules file. * gtk/gtkmain.c (_gtk_find_module): Look for .la files after looking for the normal soname extension to handle cases where the soname extension isn't predictable, like AIX. * gtk/gtkthemes.c (gtk_theme_engine_load): Don't call g_module_build_path... leave that to gtk_rc_find_module_in_path. * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): tests/testgtk.c (test_init): tests/testtext.c (test_init) tests/testdnd.c (test_init): Point gdk-pixbuf to .la files rather than poking in .libs for .so files. * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove .libs from GDK_PIXBUF_MODULEDIR. --- ChangeLog | 31 ++++++++++++++++++++++++++++ ChangeLog.pre-2-0 | 31 ++++++++++++++++++++++++++++ ChangeLog.pre-2-10 | 31 ++++++++++++++++++++++++++++ ChangeLog.pre-2-2 | 31 ++++++++++++++++++++++++++++ ChangeLog.pre-2-4 | 31 ++++++++++++++++++++++++++++ ChangeLog.pre-2-6 | 31 ++++++++++++++++++++++++++++ ChangeLog.pre-2-8 | 31 ++++++++++++++++++++++++++++ demos/gtk-demo/main.c | 4 ++-- demos/pixbuf-init.c | 4 ++-- gtk/gtkmain.c | 41 +++++++++++++++++++++++++++++++++---- gtk/gtkthemes.c | 10 ++------- gtk/stock-icons/Makefile.am | 12 +++++------ modules/input/Makefile.am | 5 +---- tests/testdnd.c | 4 ++-- tests/testgtk.c | 4 ++-- tests/testtext.c | 2 +- 16 files changed, 272 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9f113fade..c2ec10280 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 9f113fade..c2ec10280 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 9f113fade..c2ec10280 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 9f113fade..c2ec10280 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 9f113fade..c2ec10280 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 9f113fade..c2ec10280 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 9f113fade..c2ec10280 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,9 +1,40 @@ +Sat Mar 2 23:08:23 2002 Owen Taylor + + Fixes for uninstalled operation with module suffixes + other than .so and in general for platforms like AIX where + the module suffix isn't predictable. (#72185, problems + reported by Miroslaw Dobrzanski-Neumann) + + * modules/input/Makefile.am (gtk.immodules): Query .la + files rather than shared objects in .libs when creating the + uninstalled gtk.immodules file. + + * gtk/gtkmain.c (_gtk_find_module): Look for .la files + after looking for the normal soname extension to handle + cases where the soname extension isn't predictable, + like AIX. + + * gtk/gtkthemes.c (gtk_theme_engine_load): Don't + call g_module_build_path... leave that to + gtk_rc_find_module_in_path. + + * demos/gtk-demo/main.c (main) demos/pixbuf-init.c (pixbuf_init): + tests/testgtk.c (test_init): tests/testtext.c (test_init) + tests/testdnd.c (test_init): Point gdk-pixbuf to .la + files rather than poking in .libs for .so files. + + * gtk/stock-icons/Makefile.am (gtkstockpixbufs.h): Remove + .libs from GDK_PIXBUF_MODULEDIR. + Sat Mar 2 20:58:30 2002 Owen Taylor * gtk/gtkwidget.c (gtk_widget_reparent): Handle NO_WINDOW widgets with windows that are children of widget->window. (#50279) + * tests/testgtk.c: Add eventboxes to the example so that + we are reparenting between different GdkWindows. + Sat Mar 2 20:39:38 2002 Owen Taylor * gtk/gtkimagemenuitem.c (gtk_image_menu_item_new_from_stock): diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c index 6f1a4abe1..d96cc9fb0 100644 --- a/demos/gtk-demo/main.c +++ b/demos/gtk-demo/main.c @@ -808,10 +808,10 @@ main (int argc, char **argv) * these few lines, which are just a hack so gtk-demo will work * in the GTK tree without installing it. */ - if (g_file_test ("../../gdk-pixbuf/.libs/libpixbufloader-pnm.so", + if (g_file_test ("../../gdk-pixbuf/libpixbufloader-pnm.la", G_FILE_TEST_EXISTS)) { - putenv ("GDK_PIXBUF_MODULEDIR=../../gdk-pixbuf/.libs"); + putenv ("GDK_PIXBUF_MODULEDIR=../../gdk-pixbuf"); putenv ("GTK_IM_MODULE_FILE=../../modules/input/gtk.immodules"); } /* -- End of hack -- */ diff --git a/demos/pixbuf-init.c b/demos/pixbuf-init.c index 3d4edee09..a8803e5f8 100644 --- a/demos/pixbuf-init.c +++ b/demos/pixbuf-init.c @@ -14,6 +14,6 @@ file_exists (const char *filename) void pixbuf_init () { - if (file_exists ("../gdk-pixbuf/.libs/libpixbufloader-pnm.so")) - putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf/.libs"); + if (file_exists ("../gdk-pixbuf/libpixbufloader-pnm.la")) + putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf"); } diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index 666f21254..ad5021bd7 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -377,6 +377,31 @@ _gtk_get_module_path (const gchar *type) return result; } +/* Like g_module_path, but use .la as the suffix + */ +static gchar* +module_build_la_path (const gchar *directory, + const gchar *module_name) +{ + gchar *filename; + gchar *result; + + if (strncmp (module_name, "lib", 3) == 0) + filename = (gchar *)module_name; + else + filename = g_strconcat ("lib", module_name, ".la", NULL); + + if (directory && *directory) + result = g_build_filename (directory, filename, NULL); + else + result = g_strdup (filename); + + if (filename != module_name) + g_free (filename); + + return result; +} + /** * _gtk_find_module: * @name: the name of the module @@ -402,15 +427,23 @@ _gtk_find_module (const gchar *name, paths = _gtk_get_module_path (type); for (path = paths; *path; path++) { - gchar *tmp_name = g_module_build_path (*path, name); - + gchar *tmp_name; + + tmp_name = g_module_build_path (*path, name); if (g_file_test (tmp_name, G_FILE_TEST_EXISTS)) { module_name = tmp_name; goto found; } - else - g_free(tmp_name); + g_free(tmp_name); + + tmp_name = module_build_la_path (*path, name); + if (g_file_test (tmp_name, G_FILE_TEST_EXISTS)) + { + module_name = tmp_name; + goto found; + } + g_free(tmp_name); } g_strfreev (paths); diff --git a/gtk/gtkthemes.c b/gtk/gtkthemes.c index 6bb3e7e63..b17668eb8 100644 --- a/gtk/gtkthemes.c +++ b/gtk/gtkthemes.c @@ -60,23 +60,17 @@ gtk_theme_engine_load (GTypeModule *module) { GtkThemeEngine *engine = GTK_THEME_ENGINE (module); - gchar *fullname; gchar *engine_path; - fullname = g_module_build_path (NULL, engine->name); - engine_path = gtk_rc_find_module_in_path (fullname); + engine_path = gtk_rc_find_module_in_path (engine->name); if (!engine_path) { g_warning (_("Unable to locate theme engine in module_path: \"%s\","), - fullname); - - g_free (fullname); + engine->name); return FALSE; } - g_free (fullname); - /* load the lib */ GTK_NOTE (MISC, g_message ("Loading Theme %s\n", engine_path)); diff --git a/gtk/stock-icons/Makefile.am b/gtk/stock-icons/Makefile.am index 8ed1b3ba1..abc3c3213 100644 --- a/gtk/stock-icons/Makefile.am +++ b/gtk/stock-icons/Makefile.am @@ -254,17 +254,17 @@ CLEANFILES = $(noinst_DATA) pixbuf_dir = $(top_builddir)/gdk-pixbuf gtkstockpixbufs.h: $(pixbuf_dir)/gdk-pixbuf-csource $(IMAGES) - GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \ + GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \ $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES1) >$(srcdir)/gtkstockpixbufs.h - GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \ + GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \ $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES2) >>$(srcdir)/gtkstockpixbufs.h - GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \ + GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \ $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES3) >>$(srcdir)/gtkstockpixbufs.h - GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \ + GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \ $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES4) >>$(srcdir)/gtkstockpixbufs.h - GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \ + GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \ $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES5) >>$(srcdir)/gtkstockpixbufs.h - GDK_PIXBUF_MODULEDIR=$(pixbuf_dir)/.libs \ + GDK_PIXBUF_MODULEDIR=$(pixbuf_dir) \ $(pixbuf_dir)/gdk-pixbuf-csource --raw --build-list $(VARIABLES6) >>$(srcdir)/gtkstockpixbufs.h EXTRA_DIST = $(IMAGES) gtkstockpixbufs.h diff --git a/modules/input/Makefile.am b/modules/input/Makefile.am index 6ea0affd6..97578c5ea 100644 --- a/modules/input/Makefile.am +++ b/modules/input/Makefile.am @@ -2,9 +2,6 @@ if PLATFORM_WIN32 no_undefined = -no-undefined -SOSUFFIX=dll -else -SOSUFFIX=so endif INCLUDES = @STRIP_BEGIN@ \ @@ -98,6 +95,6 @@ module_LTLIBRARIES = \ im-viqr.la gtk.immodules: Makefile.am $(module_LTLIBRARIES) - $(top_builddir)/gtk/gtk-query-immodules-2.0 .libs/*.$(SOSUFFIX) > gtk.immodules + $(top_builddir)/gtk/gtk-query-immodules-2.0 *.la > gtk.immodules all-local: gtk.immodules diff --git a/tests/testdnd.c b/tests/testdnd.c index cbc1bfb58..9ac1baec0 100644 --- a/tests/testdnd.c +++ b/tests/testdnd.c @@ -555,10 +555,10 @@ source_drag_data_delete (GtkWidget *widget, void test_init () { - if (g_file_test ("../gdk-pixbuf/.libs/libpixbufloader-pnm.so", + if (g_file_test ("../gdk-pixbuf/libpixbufloader-pnm.la", G_FILE_TEST_EXISTS)) { - putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf/.libs"); + putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf/"); putenv ("GTK_IM_MODULE_FILE=./gtk.immodules"); } } diff --git a/tests/testgtk.c b/tests/testgtk.c index 888860f10..aa032bb00 100644 --- a/tests/testgtk.c +++ b/tests/testgtk.c @@ -11592,9 +11592,9 @@ create_main_window (void) static void test_init () { - if (file_exists ("../gdk-pixbuf/.libs/libpixbufloader-pnm.so")) + if (file_exists ("../gdk-pixbuf/libpixbufloader-pnm.la")) { - putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf/.libs"); + putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf"); putenv ("GTK_IM_MODULE_FILE=../modules/input/gtk.immodules"); } } diff --git a/tests/testtext.c b/tests/testtext.c index e9c67dc22..efef05860 100644 --- a/tests/testtext.c +++ b/tests/testtext.c @@ -2536,7 +2536,7 @@ file_exists (const char *filename) void test_init () { - if (file_exists ("../gdk-pixbuf/.libs/libpixbufloader-pnm.so")) + if (file_exists ("../gdk-pixbuf/libpixbufloader-pnm.la")) { putenv ("GDK_PIXBUF_MODULEDIR=../gdk-pixbuf/.libs"); putenv ("GTK_IM_MODULE_FILE=../modules/input/gtk.immodules"); -- 2.43.2