[liblouis-liblouisxml] Re: Autotools: Successes and Questionss

  • From: Eitan Isaacson <eitan@xxxxxxxxxxxx>
  • To: liblouis-liblouisxml@xxxxxxxxxxxxx
  • Date: Mon, 09 Jun 2008 14:58:10 -0700

Hey John.

Glad to see you are peeking at the autotooled stuff. I answered your
questions in-line below. But first, a note about prefixes:

When running "configure". you could give a --prefix argument that will
install the package somewhere else besides /usr/local. I like to keep
packages I am developing off of my main system, for sanity sake, so
often I define the prefix as /opt, and then, for example, the library
gets installed in /opt/lib. When I install dependent packages, it is
important to set the PKG_CONFIG_PATH environment variable to where the
depended *.pc file is. So for example, this is how I would install
liblouis and liblouisxml:

cd liblouis
./configure --prefix=/opt
make; make install
cd ../
cd liblouisxml
export PKG_CONFIG_PATH=/opt/lib/pkgconfig
./configure --prefix=/opt
make; make install

I answered the rest of your questions below..

On Mon, 2008-06-09 at 02:01 -0500, John J. Boyer wrote:
> 1. Why can't liblouisxml find liblouis?
> 

I am assuming you ran "make install" for liblouis, right?
Normally pkg-config should look in /usr/local/lib/pkgconfig, if this is
where liblouis.pc is installed. To be sure set PKG_CONFIG_PATH
to /usr/local/lib/pkgconfig (or wherever the liblouis.pc file is). I am
not running a 64 bit distro right now, so I can't experiment, but
perhaps your version of pkgconfig does not look
in /usr/local/lib/pkgconfig by default but
in /usr/local/lib64/pkgconfig.

> 2. My Linux machine is 64-bit. By default, gcc produces 64-bit code. 
> However, both autotooled packages appear to produce 32-bit code, or 
> maybe liblouis.pc should be in lib64/pkgconfig. The Windows machine is 
> 32-bit. So the autotool scripts should take account of this.
> 

How have you determined it is 32 bit in Linux? because it wasn't
installed in lib64? This is simply a namespace fetish that Linux distros
have to keep a certain degree of sanity and interop with different
binary formats. Try working with a completely alternative prefix, like I
suggested above. The whole lib/lib64 business is confusing enough.

If you are certain that the binaries being produced are 32 bits, then
yeah, that is a problem that I don't know how to solve off the top of my
head, need to install a 64 bit version myself.

> 3. The code is being compiled with the flags -g and -O2. The debugging 
> inforcation generated by -g is not much use if O2 is specified. I want 
> the flags O2 and -Wall.

You could explicitly set the flags by setting the CFLAGS environment
variable before running configure. For example:

CFLAGS="-O2 -Wall" ./configure 

> 
> 4. However, when I am testing new features or fixing old bugs I want the 
> flags -g and -Wall.
> 

See above.

> 5. also when developing, I want to install the software without getting 
> root privileges or disturbing my working versions. How do I do this?
> 

This is why I suggest using an alternative prefix, like above. It could
be a user-writable directory. And stuff that you run off your normal
execution path, etc. won't be affected by this development version.

> 6. The program make_sem_names needs to be run (and compiled if 
> necessary) to generate sem_names.h from sem_enum.h before any of the 
> modules in liblouisxml are compiled. How can this be done?
> 

I remember asking you about this a couple of moths back ,and you said
that sem_names.h is rarely going to change, so we don't need to generate
it automatically. I'll be happy to look into that, and see how we could
do it. I never have done it before, but it would be fun to try.

> 7. How can the autotooled versions help people who are using windows 
> compilers such as VC++ 6 or Visual Studio?

I have no idea. I never used any of the visual products. I'm sure there
is something though.

> 
> Once these problems are ironed out I will replace the versions of the 
> software on www.jjb-software.com with the autotooled versions, start a 
> project on code.google for liblouisxml and join Eitan in the liblouis 
> project.
> 
> Both liblouis and liblouisxml have tests subdirectories. At present
> these are merely stubs. They could be fleshed out with shell scripts to
> run various commands with selected data. For example, the liblouis tests
> directory might have a script to run lou_checktable against
> en-us-g2.ctb. lou_allround can be run non-interactively by redirecting
> its input and output. liblouisxml can be tested by scripts which run
> xml2brl and mathml2brl against short files containing text and math.
> 
> A big thank you to Eitan for his help on autotools and for the coffee.
> 
> John
> 
> 

For a description of the software and to download it go to
http://www.jjb-software.com

Other related posts: