Packages and packages set
.. Warning: This document is under construction.
.. note::
The utilities described in this document are designed and tested
on a linux system. It is very likely to work on other
systems, but it is easy to require some adjustments.
gvSIG supports several types of packages. These packages can install different types of accessories.
Currently there is only one type of package available, the container of plugins. From now on,
herein, when referring to packet will always be talking about a package that installs a plugin.
gvSIG has a plugin that allows us to generate a package of
a plug installed in that instance of gvSIG. This
is a simple way that a developer can generate
plugins packages from the same gvSIG on which it is developing.
The packet generation tool will include
all information in the folder where
live the plugin and also allow us to select other files
inside the gvSIG installation, and include an ant script
to be executed as post-installation script.
In addition to their own files that make up the plugin, we
provide some basic metadata to identify
the package. These are:
- **Package Code**: Is the name used by the
folder where you install the plugin into gvSIG.
Must be unique and should not have two packages with the
same name, unless it were different versions of
this.
- **Version**. The version of the package. Normally
follow the following schedule:
mayor[.minor[.revision[-classifier[-build]]]]
It is very important that no two versions of the same
different package with the same version number.
- **Package name**: This is the name displayed to
the user. By convention this should always be in English.
- **Package description**: Describes the functionality
provided by the package.
By convention this should always be in English.
- **Owner**: Organization/person name who owns the content of
package.
- **Source code url**: Which contains the url where to find the
plugin source code.
- **Dependencies**: With the specification of the package dependencies
over other packages.
- **Operating system**: Contain information on the operating system
on which you can run this package. For now, systems
supported OS are "Windows", "Linux" and "All". his is important for
packages that need native libraries for implementing
some of their tasks.
- **Architecture**: Indicates the hardware architecture for which is
designed the package, usually will *x86* and *x86_64*.
- **Jvm**: Indicates the minimum version of Java Runtime Environment
package required to operate.
package required to operate.
- **Official**, that indicate whether a package is official or not.
In the plugin directory, there will be a * file * package.info
with all this information, as well as a folder * install * the script
ant to the post-installation called * install.xml *, and all this is packaged in a
zip file with relative paths to the folder where you live in the plugin.
Keep in mind that this zip file should never contain
folder entries, only files. So if you create a package
by hand without using the tool provided by gvSIG we tell
the command * zip * the appropriate option to not include them.
To create our own packages of our plugins, simply
will be compressed in a zip file the folder where the
plugin, making sure they exist, the file * package.info *, the
* install folder * and the file * install / install.xml * if we need it.
Once we created our package we can install it using the
installer is completed, or we can serve for inclusion in a
gvSIG custom installation.
Here is an example of what would contain an install package. Let
specifically see the plugin install support for ECW in gvSIG::
$ unzip -l gvSIG-desktop-2.0.0-org.gvsig.raster.ermapper.app-2.0.0-SNAPSHOT-23-devel-lin-x86-j1_5.gvspkg
Archive: gvSIG-desktop-2.0.0-org.gvsig.raster.ermapper.app-2.0.0-SNAPSHOT-23-devel-lin-x86-j1_5.gvspkg
Length Date Time Name
-------- ---- ---- ----
4092 07-08-11 09:47 org.gvsig.raster.ermapper.app/lib/org.gvsig.raster.ermapper.app-2.0.0-SNAPSHOT.jar
23391 07-08-11 09:47 org.gvsig.raster.ermapper.app/lib/org.gvsig.raster.ermapper.io-2.0.0-SNAPSHOT.jar
28206 07-08-11 09:47 org.gvsig.raster.ermapper.app/lib/org.gvsig.jecw-2.0.0-SNAPSHOT.jar
655809 07-08-11 09:47 org.gvsig.raster.ermapper.app/install/files/native/libNCSUtil.so.0
430361 07-08-11 09:47 org.gvsig.raster.ermapper.app/install/files/native/libNCSCnet.so.0
72242 07-08-11 09:47 org.gvsig.raster.ermapper.app/install/files/native/libNCSEcwC.so.0
6120711 07-08-11 09:47 org.gvsig.raster.ermapper.app/install/files/native/libNCSEcw.so.0
25851 07-08-11 09:47 org.gvsig.raster.ermapper.app/install/files/native/libjecw2.0.0.so
1085 07-08-11 09:47 org.gvsig.raster.ermapper.app/install/install.xml
313 07-08-11 09:47 org.gvsig.raster.ermapper.app/package.info
363 07-08-11 09:47 org.gvsig.raster.ermapper.app/config.xml
-------- -------
7362929 12 files
$
We observed that we have the file *package.info* containing the description of
the package:
.. code-block:: ini
#
#Fri Jul 08 09:47:35 CEST 2011
state=devel
name=Formats: Ecw format support
buildNumber=23
official=true
code=org.gvsig.raster.ermapper.app
operating-system=lin
architecture=x86
java-version=j1_5
gvSIG-version=2.0.0
version=2.0.0-SNAPSHOT
type=plugin
description=Ermapper data provider for gvSIG
model-version=1.0.0
In addition to this there is a folder *install* with a file
*Install.xml*, which contains the post-installation script of the package and
a folder *files*, a folder with the files that should go elsewhere
gvSIG installation of the outside of the folder plugin.
The post-install script takes care of copying the files native to where it belongs
and in this case set the symlinks to work
native libraries correctly installed:
.. code-block:: xml
The other files that appear are the plugin files themselves, their jars and
resource files that may need such as the *config.xml*. In this case
find:
- **lib/org.gvsig.raster.ermapper.app-2.0.0-SNAPSHOT.jar**. It contains the extension
associated with the plugin, used to log into your * * Initialize the new data provider
library for raster.
- **lib/org.gvsig.raster.ermapper.io-2.0.0-SNAPSHOT.jar** the implementation of
new data provider.
- **lib/org.gvsig.jecw-2.0.0-SNAPSHOT.jar**, the java bridge library to the libraries
native needed by the plugin.
- **config.xml**, the configuration file of the plugin.
Each plugin will provide the files needed for their operation.