A Repository Package, or just a Package is an encapsulated Eiffel library containing the Eiffel library source code, an Eiffel Configuration File (ECF), a package configuration file, a build script and any number of other ancillary files/resources.
To date, Eiffel Configuration Files (ECF) are identified internally using a UUID. The UUID is purely to uniquely identify the configuration and apply setting and other configuration data to contained classes within that library. An Eiffel developer need not concern themselves with the UUID, just the on disk file name of the ECF.
A file name is typically unique, and combined with an internal UUID it is possible to uniquely identify an Eiffel library through an ECF. However packages do not work in the same way. Packages are location agnostic because they are stored by the Eiffel Library Repository's set to tools, and the versioning rules that apply to packages means multiple versions of an Library Package may exist in the locally downloaded repository.
Because packages are location agnostic they need to be uniquely identified, in a human readable form. UUIDs are unique but give no indication about the package's function or origin. As a solution packages will use a human readable, reverse domain name. In conjunction with a version number (when multiple versions of the library exists) the package can be referenced with location independence.
Examples of the reverse domain names:
- com.eiffel.eiffel_base: EiffelBase
- com.eiffel.eiffel_vision2: EiffelVision2
- com.eiffel.eiffel_net: EiffelNet
OTHER STUFF - PLEASE IGNORE
Reverse domain name for human readable ID Version number Dependencies identified by name, version Platform information (x86, x86-64, Windows, Linux, ..., all) Build script Recommend hierarchy com.domain.name spec/ (generated) x86/ x86-64/ ARM/ build/ (generated)
Clib or clib/ include/ windows, unix or osx/ $ISE_PLATFORM/ src/ doc/ wiki/ xml/ resources/ config.ecf config.lic config-unsafe.ecf config-unsafe.lic build.geant README INSTALL package.ini Configuration package.ini [package] version=M.m.r firstname.lastname@example.org homepage=http://www.some.com
[import] defaults=$ELR/config/defaults.ini (use name resolution - home, config, package dirs)
[config] compiler_version=6.1.*,* build=true|false|1|0|yes|no
[dependencies] com.eiffel.base=0.0.0, * com.eiffel.a=6.1, 6.2.* com.eiffel.b=*, 6 com.eiffel.c=<6.9*.9* com.eiffel.d=>6.1.*
[build:<platform>] build_tool=geant $build_script $build_args build_script=build.geant build_args=
[clean:<platform>] clean_tool=geant $clean_script $clean_args clean_script=$build_script clean_args=clean Implicit variables (usable in CONFIG files) _PKG_NAME_: Human readable package name. _PKG_DIR_: Root directory of package on the end users system. _PKG_SRC_: Root directory of package source code. _PKG_VERSION_: Package version number. _PKG_INCLUDE_: Package external include files directory. _PKG_LIB_: Package external lib files directory.