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

Re: Emacspeak on Ubuntu 8.10: best way to go about it?

Hi David,

there are a couple of issues I've run into over th elast week or so
while installing emacspeak on a ubuntu intrepid 8.10 box. There are
work arounds. I'm not sure what direction Raman will want to take to
address the issue I've identified, but will explain what I have done
to fix things. 

The problem I've run into is that the version of libtool that comes
with ubuntu 8.10 is a much later version than that which came with
earlier releases. In fact, the version has jumped from 1.4 to
2.2.6. The later version of libtool makes some assumptions and ahs
some prerequisites that were not in the earlier versions and this has
broken things for emacspeak. Essentially there are two
problems. Thenew version of libtool expects that if the target in a
libtool command with the mode=link option is an executable unless it
is a name that begins with 'lib' and ends in '.a' or '.la'. If it
doesn't have both of these, is assumes the command is building an
executable rather than a library. The Makefiles used by emacspeak to
build the code for the ViaVoice outloud and (I think) espeak attempt
to build shared libraries that the driver Tcl scripts load as part of
their startup process. Unfortunately, the names used for these
libraries do not start with 'lib' or end with a .a' or '.la'. So, when
you try to build the shared library, the commands libtool creates for
the compiler/linker process are commands that result in an attempt to
build a stand alone executable rather than a shared library. For
example, libtool does not pass the -shared option to the command that
does the final linking. Instaed of trying to build a shared library,
the system tries to build an executable and fails because it can't
find a 'main' function. 

The simplist and easiest solution is to just eliminate libtool from
the equation when building on ubuntu 8.10. This is quite easy as in
fact, the way that the Makefile is defined, libtool is actually not
doing a lot. The idea of libtool is mainly to provide platform
independence in building programs - its meant to hide the complexities
of how to build shared libraries on different systems or how to have a
makefuile that will work on systems that have shared libraries and
systems that don't. In the case of the makefiles for building the
server shared libraries, Raman has left in the flags necessary for
building shared libraries anyway e.g. the -fPIC and -DPIC for
compiling position independent code and the -shared flag for linking a
shared library. So, essentially, all you have to do is remove the
part of the command with the work libtool, leaving the rest of the
line and things should work. 

Here is what I do to build on ubuntu 8.10

1. I build emacs from CVS. I have 'integrated' it with the
debian/ubuntu way of managing emacs by editing the lisp/startup.el
file. In fact, what I did was install the emacs-snapshot package and
then did a diff on its startup.el file compared to the CVS
version. There are just a couple of minor additions and changes to get
the integration. I install the cvs version in the /usr/local tree, so
I also need to replace /usr/local/share/emacs/23.0.60/site-lisp with a
symbolic link that points to /usr/share/emacs/23.0.60/site-lisp as
this is where all the emacs-snapshot compiled versions
installed/maintained by debian/ubuntu are put and I want to take
advantage of these in my 'hand build' version. 

My advice for an initial setup is avoid the emacs-snapshot packages
and stick with emacs22 to start with. The reason is that
emacs-snapshot is a CVS snapshot and it can be 'broken' from time to
time. I've also noticed that the emacs-snapshot that appears to be
available in the ubuntu repositories is very very old. Also, as we are
talking CVS emacs, it is possible and in fact it has occured in the
past that changes in emacs have resulted in broken/lost functionality
in emacspeak. Therefore, when starting with emacspeak my advice is
minimise as many of the possible pain points as possible - use the
official release of emacs e.g. emacs 22. Once you are comfortable with
that, then start looking at other things like running the latest CVS version.

I then get the latest emacspeak from the svn repository. I don't use
packaged versions because Raman is too active and always adding
improvements/additions which I like to take advantage of. Distro
packages just cannot keep up. So, I  do an

svn co http://emacspeak.googlecode.com/svn/trunk emacspeak

I then cd intot he root of the source tree and do

make clean
make config
make emacspeak

This will build the basic emacspeak package. I then cd to the
servers/linux-outloud directory and do a make atcleci.so(noting that
I've made the changes mentioned above). This builds the atcleci.so
file. Note that before I do that, I copy the
/var/opt/IBM/ibmtts/cfg/eci.ini file into the linux-outloud directory,
replacing the one that comes with the distro. This is necessary as the
eci.ini that comes with emacspeak is for a much older version of
ViaVoice and installation paths have changed (you could just edit the
eci.ini file and change the path to the shared lib, but as I'm also
using the UK english version of the shared lib, its just easier to
copy the whole eci.ini file across). 

Once I've built the atcleci.so shared library, I cd to the servers
directory and run the 'outloud' script. If the shared library has been
build correctly and everything is correctly installed (including the
right versions of tcl and extended tcl, then a voice should announce
that 'this is viavoice using ALSA'. Note that I'm still using tcl/tclx

I then make sure I've got the necessary environment variables set - my
setup is actually a bit more complex as I tend to run multiple
emacspeak repositories - this way, I can try an update in one
repository and if its broken things or I can't get it to work, I still
have the previously working version that I can switch back to. I use
an environment variable to control which repository is used. I also
have environment variables that determine whether emacspeak is run at
all when I start emacs and some other stuff I find useful. I like to
ensure emacspeak is loaded early, so I have a file in
/etc/emacs/site-lisp.d called 10emacspeak.el. This file is sourced
when you start emacs and if you have the env variable RUN_EMACSPEAK
defined, loads emacspeak from the repository identified by
EMACSPEAK_REPOSITORY and using the server defined in DTK_PROGRAM,
which in my case is usually DTK_PROGRAM=outloud

Hope this helps a bit. Feel free to ask for more clarification or
information either on the list or privately. List is best as others
can then get to benefit form the info. 



David Ring writes:
 > Thanks for your very clear directions Kalyan.  I'm still confused by
 > the README file that says to "make configure" then "make emacspeak" -
 > and contradicts the other file - probably more so because I get the
 > same error!
 > install -m 0644  lisp/*.el lisp/*.elc  /usr/share/emacs/site-lisp/emacspeak/lisp
 > install: cannot stat `lisp/*.elc': No such file or directory
 > make: *** [install] Error 1
 > Still no joy in Mudville.  Mighty Casey is still swinging, but no
 > hits, only strikes.
 > I'm using the latest "Download" file from
 > http://emacspeak.sourceforge.net/ - could it be that this file is "not
 > ready for prime time".  I'm downloading emacspeak 29.0 - is this where
 > I'm running into problems?  Do I need an older file?
 > Best
 > David Ring
 > Green Harbor, MA
 > -30-
 > -----------------------------------------------------------------------------
 > To unsubscribe from the emacspeak list or change your address on the
 > emacspeak list send mail to "emacspeak-request@cs.vassar.edu" with a
 > subject of "unsubscribe" or "help"




To unsubscribe from the emacspeak list or change your address on the
emacspeak list send mail to "emacspeak-request@cs.vassar.edu" with a
subject of "unsubscribe" or "help"

If you have questions about this archive or had problems using it, please send mail to:

priestdo@cs.vassar.edu No Soliciting!

Emacspeak List Archive | 2007 | 2006 | 2005 | 2004 | 2003 | 2002 | 2001 | 2000 | 1999 | 1998 | Pre 1998

Emacspeak Files | Emacspeak Blog | Search the archive