In building debian package for Felix 1.1.2 I have found
a bug in the configure process relating to install.

At present, 

./configure --prefix=/usr/local/lib/felix

for example will cause the flx script to set the install root to

/usr/local/lib/felix/lib/felix-1.1.2

The PROBLEM is that 'prefix' is one of those stupid Unixisms
for spaghetti installations where you puts stuff in

prefix/include
prefix/lib
prefix/bin
prefix/share/doc
..

by category. Felix has switched to a monolithic install model
where everything goes in one directory .. since the usual
Unix categorisation is for C and doesn't work for anything else.

On Debian, Felix is going in

/usr/lib/felix/felix-1.1.2

The problem is here, in flx_maker.pak:

@select(tangler('Makefile','data'))
@tangle('CONFIG_ARGS=')
@tangle('PREFIX='+PREFIX)
@tangle('INSTALL_DIR=${PREFIX}/lib/felix-'+flx_version)
@tangle('EXEC_DIR=${PREFIX}/bin')
@tangle('MAN_DIR=${PREFIX}/man')
@tangle('DOC_DIR=${PREFIX}/share/felix-'+flx_version)

....

@select(tangler('bin/flx','data'))
#!/usr/bin/env bash
# flx - felix script harness
@tangle("INSTALL_ROOT="+PREFIX+"/lib/felix-"+flx_version)
@tangle("FLX_INSTALL_DIR=${FLX_INSTALL_DIR:-"+PREFIX
+"/lib/felix-"+flx_version+"}")

As you can see, the script cunningly chooses to put
Felix into prefix/lib/felix-1.1.2.

But my Debian script says

./configure --prefix=/usr/lib/felix/felix-1.1.2

already.

The 'bottom line' problem here is that there are many
install models. The above stuff assumes one of them
which happens to be wrong for the new 1.1.2 monolithic
directory.

The 'prefix' notion is still needed to find 'exec'
and 'man' locations (flx script goes in 'prefix/bin').

But the install root is independent.

I have hacked a fix so options like

   --prefix=/usr
   --prefix=/usr/local
   --prefix=/opt

will now work as expected. Note the directory:

/usr/lib/felix/felix-1.1.2

with two 'felix' there. Why is that?

It's a good question, but consider plugins, extensions, and bindings
from third parties. Where do they go?

Consider even Felix built from 

        felix-core-1.1.2.tgz
        felix-linux-1.1.2.tgz
        felix-gpl-1.1.2.tgz

tarballs. Each of these things would be independently managed,
versioned, licenced, etc etc. So the 'felix' directory is there
to put them in. Here 'felix' is a vendor name and 'felix-1.1.2'
is a module supplied by that vendor.

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to