← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~directhex/indicator-application/gapi_is_a_pile_of_shit into lp:indicator-application

 

directhex has proposed merging lp:~directhex/indicator-application/gapi_is_a_pile_of_shit into lp:indicator-application.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)
Related bugs:
  #636132 Tomboy does not start, indicator-application version skew
  https://bugs.launchpad.net/bugs/636132


indicator-application stopped working in Mono apps, as it was built against SONAME 0, but the lib was bumped to SONAME 1. Sadly, due to a comedy of errors with the "gapi" code generator used by Mono against GObject, the fix extended far beyond simply fixing indicator-application's SONAME expectations.

This branch fixes the FTBFS problem with the Mono binding, and also (theoretically, I haven't been able to fully test it) fixes the problem with the wrong lib being dlopened by Mono, and also fixes package builds (which currently do not place a dependency on libappindicator1).
-- 
https://code.launchpad.net/~directhex/indicator-application/gapi_is_a_pile_of_shit/+merge/35963
Your team ayatana-commits is subscribed to branch lp:indicator-application.
=== modified file 'bindings/mono/ApplicationIndicator.custom'
--- bindings/mono/ApplicationIndicator.custom	2010-01-12 04:59:17 +0000
+++ bindings/mono/ApplicationIndicator.custom	2010-09-19 20:12:49 +0000
@@ -1,10 +1,10 @@
-[DllImport ("libappindicator.so.0")]
+[DllImport ("appindicator.dll")]
 static extern int app_indicator_get_status (IntPtr i);
 
-[DllImport ("libappindicator.so.0")]
+[DllImport ("appindicator.dll")]
 static extern int app_indicator_get_category (IntPtr i);
 
-[DllImport ("libappindicator.so.0")]
+[DllImport ("appindicator.dll")]
 static extern void app_indicator_set_status (IntPtr i, int s);
 
         [GLib.Property ("status")]
@@ -23,4 +23,4 @@
                get {
                    return (Category) app_indicator_get_category (Handle);
                }
-        }
\ No newline at end of file
+        }

=== modified file 'bindings/mono/Makefile.am'
--- bindings/mono/Makefile.am	2010-07-07 19:23:37 +0000
+++ bindings/mono/Makefile.am	2010-09-19 20:12:49 +0000
@@ -15,6 +15,8 @@
 POLICY = policy.$(POLICY_VERSION).$(ASSEMBLY_NAME)
 POLICY_VERSION = 0.0
 DLLPOLICY = $(POLICY).dll
+WRAPPER_FREE_BINDING_SRC = ../../src/app-indicator.c
+WRAPPER_FREE_BINDING = app-indicator.c
 
 TARGET = \
 	$(ASSEMBLY) \
@@ -35,6 +37,7 @@
 	$(RAW_API) \
 	$(TEST) \
 	$(DLLPOLICY) \
+	$(WRAPPER_FREE_BINDING) \
 	$(POLICY).config
 
 DISTCLEANFILES = $(ASSEMBLY).config
@@ -57,9 +60,12 @@
 references = $(GTK_SHARP_LIBS)
 test_references = $(GTK_SHARP_LIBS) $(NUNIT_LIBS) -r:$(ASSEMBLY)
 
-$(RAW_API): app-indicator.sources.xml
+$(RAW_API): app-indicator.sources.xml $(WRAPPER_FREE_BINDING)
 	$(GAPI_PARSER) app-indicator.sources.xml
 
+$(WRAPPER_FREE_BINDING): $(WRAPPER_FREE_BINDING_SRC)
+	sed '/signals\[X_NEW_LABEL\] /,+6d' $(WRAPPER_FREE_BINDING_SRC) > $(WRAPPER_FREE_BINDING)
+
 $(MIDDLE_API): $(METADATA) $(RAW_API)
 	cp $(srcdir)/$(RAW_API) $(MIDDLE_API)
 	chmod u+w $(MIDDLE_API)

=== modified file 'bindings/mono/app-indicator.sources.xml'
--- bindings/mono/app-indicator.sources.xml	2010-06-17 17:43:06 +0000
+++ bindings/mono/app-indicator.sources.xml	2010-09-19 20:12:49 +0000
@@ -1,8 +1,8 @@
 <gapi-parser-input>
 	<api filename="libappindicator-api.raw">
-		<library name="libappindicator.so.0">
+		<library name="appindicator.dll">
 			<namespace name="AppIndicator">
-				<file>../../src/app-indicator.c</file>
+				<file>app-indicator.c</file>
 				<file>../../src/app-indicator-enum-types.c</file>
 				<file>../../src/app-indicator-enum-types.h</file>
 				<file>../../src/app-indicator.h</file>

=== modified file 'bindings/mono/appindicator-sharp.dll.config.in'
--- bindings/mono/appindicator-sharp.dll.config.in	2009-12-16 21:15:30 +0000
+++ bindings/mono/appindicator-sharp.dll.config.in	2010-09-19 20:12:49 +0000
@@ -1,5 +1,5 @@
 <configuration>
-  <dllmap dll="appindicator-sharp.dll" target="libappindicator@LIB_PREFIX@.0@LIB_SUFFIX@"/>
+  <dllmap dll="appindicator.dll" target="libappindicator@LIB_PREFIX@.1@LIB_SUFFIX@"/>
   <dllmap dll="libgtk-2.0-0.dll" target="libgtk-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
   <dllmap dll="libglib-2.0-0.dll" target="libglib-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>
   <dllmap dll="libgobject-2.0-0.dll" target="libgobject-2.0@LIB_PREFIX@.0@LIB_SUFFIX@"/>


Follow ups