Update on EIFFEL_LIBRARY variable and .ecf files

41 views
Skip to first unread message

Jocelyn Fiat

unread,
Jun 20, 2012, 5:52:41 AM6/20/12
to eiff...@googlegroups.com
Hi all,

# Context:
Most Eiffel Studio users are familiar with the ISE_LIBRARY variable.

You don't have to set it yourself, the ISE tools will compute it usually thanks to the value of $ISE_EIFFEL.
And if you set it yourself, then it will use the value you defined.

In the Eiffel Studio's libraries, the configuration files  (.ecf) usually use the $ISE_LIBRARY to reference the location of the various .ecf files
such as $ISE_LIBRARY/library/uuid/uuid.ecf  

With the upcoming Eiffel Studio 7.1 release, the ISE tools will also handle the variable EIFFEL_LIBRARY in a very similar way.

If ISE_LIBRARY is NOT defined then
  ISE_LIBRARY = EIFFEL_LIBRARY
end
If EIFFEL_LIBRARY is NOT defined then
  EIFFEL_LIBRARY = ISE_LIBRARY
end
and if both ISE_LIBRARY and EIFFEL_LIBRARY are not defined, the tools will compute the value usually using $ISE_EIFFEL (or the linux layout path /usr/lib/.... and so on)

I think this is a nice move from Eiffel Software, to help the community.
So far, this is a tiny change, but it allows you to write your .ecf files using a compiler independant variable (i.e EIFFEL_LIBRARY).

I am not yet sure, how this will be used, but myself as a user, I might use it to either put my libraries under Eiffel Studio's installation folder, or directly in a specific folder, and I could then set EIFFEL_LIBRARY.

This topic is then more to see how to best integrate a library with existing environment.

In addition, I developped for Eiffel Software, a small tool in https://svn.eiffel.com/eiffelstudio/trunk/Src/tools/ecf_updater/ which is used to update location field in .ecf file.
I am using it to update the EWF's ecf files, when I move a folder to a new location. In EWF source code, we are using only relative path, no need for any $EWF or $EIFFEL_LIBRARY for now, but if you want to integrate the EWF libraries in your project, you can decide to use absolute path instead of relative path, and the "ecf_updater" tool will help you for that.

So now that we have $EIFFEL_LIBRARY and this ecf_updater tool.
We should concentrate on how to achieve one on the most important goal of Eiffel Hub: have people sharing their libraries, and make it easy for anyone to reuse them.

This will be a future topic in the group.

For now, I prefer to keep this topic/thread focus on the new EIFFEL_LIBRARY variable.
I hope this might reduce the need to many per-project environment variable  (such as GOBO, EPOSIX, ...)
For the various Eiffel project I work on, I will try to write "install" script, to put my libraries in specific location inside EIFFEL_LIBRARY.
Do you have any comment on this ?
Do you think this will help your development process ?
Can you think of any specific usage of it ?
I hope other Eiffel implementor will also support EIFFEL_LIBRARY in their tool, even if one can always define it itself.

If ever Eiffel Hub decides to build an application framework (or collection of libraries), it could use $EIFFEL_LIBRARY instead of having one more $EIFFELHUB
I guess, the community should also make sure there is no conflict of location, having 2 libraries "foo" installing in the same location ...

If you are requiring more stuff to be able to share your libraries easily, let us know.

Reply all
Reply to author
Forward
0 new messages