The first commit of the reorganised system is now done.
I have NOT tested if the install process works (in fact I'm pretty sure it 
doesn't).

The new install concept will not put libraries into /usr/local/lib or 
executables
into /usr/local/bin. I hate polluting those directories. So you should do this 
instead:

        
LD_LIBRARY_PATH=/usr/local/lib/felix/felix-latest/host/lib/rtl:$LD_LIBRARY_PATH
        PATH=/usr/local/lib/felix/felix-latest/host/bin:$PATH

if you want to use Felix provided tools directly from the command line, 
**including** flx.

As an alternative, you can copy flx where  you want it, make a symbolic link to 
it,
or write a bash script called flx that invokes the binary, and then do all your 
work
using commands like

        flx webserver ..
        flx scoop ..
        flx flx_cp ....

"flx" should set the required paths.

For developers C++ compilation now requires TWO include directories:

        -I/usr/local/lib/felix/felix-latest/host/lib/rtl
        -I/usr/local/lib/felix/felix-latest/share/lib/rtl

There is no C++ in config/target anymore, the directory

        /usr/local/lib/felix/felix-latest/host/config

is exclusively for *.fpc files applicable to the current host.
[The subdirectories unix, win32, macosx are gone too]

Down the track the whole source will be shared, i.e. put in share,
so you can build multiple configs, using host felix, without needing
the Git repository.

===========================================================

Now: the impact on litterbox package tool I see as follows:

First, there's no place at the moment for "add on packages".
We need to discuss this. When Felix is upgraded or a new config is
built, we do NOT want to have to reinstall all the packages
(unless it is necessary). Bindings to libraries like gmp aren't likely
to need changing.

On the other hand there are now TWO kinds of location to install
Felix code:

(1) If you install in share directory, everyone using it gets the package.
In an enterprise environment, a single source code update will automatically
propagate to all users (because "flx" will auto-rebuild programs that are 
modified,
and autorebuild if the core is changed as well).

So that's an administrator upgrade.

(2) If you install in a configuration such as "host" only people with access to 
that
particular config get the upgrade. If the config is in $HOME only YOU get it.
If the config is in /usr/local everyone with an account on that machine gets it.

So scoop will need switches or whatever to tell it where to install a new 
package.

Similarly, "flx" will need a switch to allow it to switch to a non-default 
config.
Basically

        --target=host

is the default (and currently hard coded which needs to be fixed). Switching the
host is NOT the same as switching the felix install like:

        --test=build/release

or using FLX_INSTALL_DIR environment variable. At present the target is just
the name of a subdirectory of FLX_INSTALL_DIR containing a config.
This isn't so good because it means the build directory must contain both
the target and the share code: you cannot make a $HOME/felix/mytarget
configuration without also copying the whole of the shared code 
(or at least using a link).

Really the target config should contain a "pointer" to the share directory
from which it was derived.


--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to