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

Re: On Akka Development



Salam, everyone
Attached is a patch for akka to make it run on ORBit2 instead of the
ORBit package, and an example configuration using python.
What is needed to compile is:
- akka source code (patch is against
akka_cvs_snapshot_20030802194700.tar.gz, current cvs snapshot will do).
- fribidi (tested with fribidi-0.10.4-3)
- ORBit2 (comes with GNOME,)
- ORBit2-devel
- pyorbit (tested with version pyorbit-1.99.3-5), needed at runtime.
Note that pyakka.py is a translation of akka-conf.pl,; similar files may
be done for other perl configurations.

I will be happy if the following questions are answered by akka
developers:
- Akka seems a little erratic at (most) times, is this from a change I
did in the code (the diff)
- to compile akka (after patching) I need to copy ltmain.sh manually, is
this the fault of libtool/automake or the redhat release (it's a beta;)
or something to do with akka 
- most important, what do you think is the best policy for akka
configuration. I assume it's not writing a small python program for each
new config.


On ج, 2003-08-01 at 20:35, Chahine M. HAMILA wrote:
> Salaam Mohamed,
> 
> > I am still trying the python approach. 'Trying' means some problems: I
> > have always used omniORB (not an option here - an additional
> > dependency), but tryig now to use ORBit. The python support for ORBit is
> > not that good (essentially unusable) in Red Hat 8+, but the support for
> > ORBit2 is good.  I am thinking of upgrading akka to use ORBit2, and I
> > think it is simple with your help.
> > The text installer in Red Hat is python, so if distros have python
> > working, this will not be a problem. If any problems, I may switch to a
> > C client, but I will also prefer an upgrade to ORBit2.
> > I am also in support of using CORBA in this project.
> 
> If memory serves, I don't think any orbit-specific code was used, so
> switching corba implementations should only be a problem of configuration
> (fiddling with the autotools/makefiles, which M. Elzubeir and Samy have
> written afaik, so here they might be quicker than I to locate any lines to
> fix though I suspect it should be pretty trivial anyway) and changing the
> inclusion headers in the concerned Akka files (not many of them). My choice
> of orbit was precisely because, at the time Akka was written, any machine
> running gnome had it so it could run "out of the box", i.e. without the need
> to install an additional corba library on most systems. If you are telling
> me the "standard" implemention is now orbit2, then like you I'm all for
> switching to it.
> Let me know if you have any specific problem or question.
> 
> Regards,
> Chahine
> 
> _______________________________________________
> Developer mailing list
> Developer at arabeyes dot org
> http://lists.arabeyes.org/mailman/listinfo/developer
diff -Naur akka/configure.in kakka/configure.in
--- akka/configure.in	2003-01-08 00:23:30.000000000 +0300
+++ kakka/configure.in	2003-08-04 14:26:03.000000000 +0300
@@ -39,8 +39,8 @@
 dnl
 
 AC_DEFUN([GNOME_ORBIT_HOOK],[
-    AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no)
-    AC_PATH_PROG(ORBIT_IDL,orbit-idl,no)
+    AC_PATH_PROG(ORBIT_CONFIG,orbit2-config,no)
+    AC_PATH_PROG(ORBIT_IDL,orbit-idl-2,no)
     AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[
         if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then
             gnome_cv_orbit_found=no
@@ -51,14 +51,14 @@
     AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes)
     if test x$gnome_cv_orbit_found = xyes; then
         $1
-        ORBIT_CFLAGS=`orbit-config --cflags client server`
-        ORBIT_LIBS=`orbit-config --use-service=name --libs client server`
+        ORBIT_CFLAGS=`orbit2-config --cflags client server`
+        ORBIT_LIBS='-pthread -Wl,--export-dynamic -lORBitCosNaming-2 -lORBit-2 -llinc -lgmodule-2.0 -ldl -lgobject-2.0 -lgthread-2.0 -lglib-2.0 -lm'
         AC_SUBST(ORBIT_CFLAGS)
         AC_SUBST(ORBIT_LIBS)
         AC_SUBST(ORBIT_IDL)
     else
             if test x$2 = xfailure; then
-            AC_MSG_ERROR(ORBit not installed or installation problem)
+            AC_MSG_ERROR(ORBit2 not installed or installation problem)
             fi
     fi
 ])
diff -Naur akka/src/akka-server.c kakka/src/akka-server.c
--- akka/src/akka-server.c	2002-08-19 03:15:10.000000000 +0300
+++ kakka/src/akka-server.c	2003-08-04 14:32:36.000000000 +0300
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 #include <pthread.h>
 
-#include "orb/orbit.h"
+#include <orbit/orbit.h>
 #include "akka.h"
 #include "child.h"
 
@@ -139,7 +139,7 @@
  */
 void corba_akka_thread ()
 {
-    PortableServer_ObjectId objid = {0, sizeof("MyAkkaLib"), "MyAkkaLib"};
+    PortableServer_ObjectId *objid = CORBA_OBJECT_NIL;
     PortableServer_POA poa;
 
     CORBA_Environment ev;
@@ -157,8 +157,7 @@
 
     poa = (PortableServer_POA)CORBA_ORB_resolve_initial_references(orb, "RootPOA", &ev);
     PortableServer_POAManager_activate(PortableServer_POA__get_the_POAManager(poa, &ev), &ev);
-    PortableServer_POA_activate_object_with_id(poa,
-                                               &objid, &poa_akka_servant, &ev);
+    objid = PortableServer_POA_activate_object(poa, &poa_akka_servant, &ev);
 
     akka_client = PortableServer_POA_servant_to_reference(poa,
                                                           &poa_akka_servant,
diff -Naur akka/src/child.c kakka/src/child.c
--- akka/src/child.c	2002-12-25 20:10:54.000000000 +0300
+++ kakka/src/child.c	2003-08-08 15:13:51.000000000 +0300
@@ -284,6 +284,7 @@
       return -1;
     }
 #endif
+  close(consolefd);
   
   seteuid(user_id);
   if(ingraphics) return -1;	/*in graphics mode*/
diff -Naur akka/src/font.c kakka/src/font.c
--- akka/src/font.c	2002-12-23 16:18:14.000000000 +0300
+++ kakka/src/font.c	2003-08-04 15:59:09.000000000 +0300
@@ -96,11 +96,11 @@
   return;
 }
 
-struct unipair ufm[512];
+struct unipair ufm[512*2];
 struct unimapdesc umapdesc;
 void getsfm(int tty)
 {
-  umapdesc.entry_ct = 512;
+  umapdesc.entry_ct = 512*2;
   umapdesc.entries = ufm;
   
   seteuid(akka_id);
#!/usr/bin/python

import sys
import ORBit
import CORBA

orb=CORBA.ORB_init(sys.argv,'orbit-local-orb')
ior=file('/tmp/.akka.ior').read()
akka=orb.string_to_object(ior)
akka.addConsole(3)

import commands
akka.setDefaultKB("defkeymap.map.gz")

###############################
# Initialization of console 2 #
###############################

# monitor console number 2
akka.addConsole(2)

# console 2 will be English/Arabic Akka
akka.setKeyboards(2, "akka/keymaps/pc/us-latin1.map",
		  "akka/keymaps/pc/arabic.map");

# console 2 will not render glyphs, which is the default
# we will load the sample "square arabic" font
#commands.getoutput("consolechars --tty=/dev/tty2 -m straight-to-font akka/fonts/iso06b.fnt")

# We want console 2 to start as an RTL console
akka.setDirection(2, 1)