/gpackage

A package manager for IDL

Primary LanguageIDLGNU General Public License v3.0GPL-3.0

===================================
GPACKAGE: a package manager for IDL
(Giorgio Calderone, giorgio.calderone@gmail.com)


gpackage is a simple package manager for the IDL programming language.


________
LICENSE:

The GPACKAGE library is by no mean supposed to be complete, nor well
documented or error-free.  It is released under the GNU General Public
License, and is provided "as is", in the hope that it will be useful.

Contributions are welcome!  Feel free to drop me an email if you found
a bug or would like to participate in developing.


___________
MOTIVATION:

 The IDL programming language currently lacks a dedicated package
 manager able to compile a specific version of a library (on a
 specific path) upon request.  All IDL routines are rather stored in a
 path named in the IDL_PATH system variable, and then compiled as
 needed.  The problems with this approach are:

 - the IDL_PATH system must be changed each time we wish to add a
   new routine in a new path (unknown to IDL_PATH);

 - the paths in the IDL_PATH system variable may accidentally
   contains multiple versions of the same routine, possibly
   leading to unexpected behaviour.

The advantages of using the GPACKAGE library are:

 - avoid changing the IDL_PATH system variable to include these
   routines;

 - compile EXACTLY the routines needed by your code, avoiding
   incompatibilities with other versions eventually present in
   IDL_PATH.  This is particular important for contributed routines,
   which may be present multiple times in IDL_PATH.

 - work with monolithic package libraries, characterised by their
   own version number.  This is useful to replicate results obtained
   with a specific version.


_____________
DEPENDENCIES:

None.


_____________
INSTALLATION:

Copy the GPACKAGE routines in a local directory on your computer, and
modify IDL_PATH system variable accordingly (check the IDL
documentation for more info on the IDL_PATH system variable).

NOTE: The packages you wish to manage are NOT SUPPOSED to
be reachable through the IDL_PATH system variable.

____
USE:

The calls to "gpackage" are supposed to be used in an initialization
procedure to correctly setup an IDL session:

gpackage, 'Path/to/the/Package/I/Wish/To/initialize/packageName.pro' $
          [,  OPT_KEYWORD1= [, OPT_KEYWORD2= [, ...]]]

This call will compile the packageName.pro file and call the
packageName function, whose prototype is:

  FUNCTION packageName, path, OPT_KEYWORD1=, OPT_KEYWORD2=, etc...
     ...
     (Compile further routines through calls to gcompile_file)
     ...
  
     RETURN, 'packageVersion'
  END


The "path" argument contain the current path where the package is
stored.  The kewyords are transparently handled through the EXTRA=
facility.

The return value must be the package version identifier.  This may
used in later checks through gpackage_require.


______________________________
BRIEF DESCRIPTION OF ROUTINES:
(in alphabetical order)

gcompile_file    - Compile a .pro file (it is a replacement for the .COMPILE executive command)
gpackage	 - Compile and initialize a package
gpackage_require - Ensure a (specific version of a)  package has been correctly compiled and initialized, or raise an error otherwise.


__________
FILE LIST:

The GPACKAGE libraries file list is:
gcompile_file.pro
gpackage.pro
gpackage_require.pro
README