close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Version 5 (modified by Pedro Gea, 9 years ago) (diff)

--

Packages

Introduction

The idea of a package comes from the concept of modularity and the possibility of loading and distributing a whole module as a unit. A TOL package is essentially no more than a NameBlock distributed in an .oza file.

In the TOL programming frame, we identify the package with the NameBlock that contains the set of classes, structurs, variables, functions and definitions. This is distributed and loaded as an unit of the TOL package system.

Looking more from a distribution-focused point of view, a package is a compressed file (specifically a .zip file) that contains the nameblock serialisation (an .oza file). This is accompanied by other complementary resources that can be: files containing icons or images, documentation, libraries of compiled functions (written in C++ and distributed in .dll or .so files) and even uncompiled TOL code ( .tol files) by way of example.

Names and versions

A TOL package is identifed by its name and version.

The name of the package matches with the name of the nameblock that represents it. It generally follows a CamelCase structure.

The version consists of integers. The first (the high version number) shows if there has been an important change in the structure and functionality; one which could break the compatability with the user-code in use. The second however (the low version number) shows that changes have been made to the package that maintain package-use compatibility. These changes could be corrections or the inclusion of new functionalities.

The package identifier is created by linking the name and two version numbers <name>.<version.high>.<version.low> with a full-stop (.). For example, the identifier GuiTools.3.5 makes reference to version 3.5 of GuiTools, which includes utilities for TOLBase graphical integration.

TolPackage

The TOL kernel provides a module to manage packages: TolPackage.

This module allow TOL users to download, update or upgrade packages. It provides also utilities for creating and uploading packages. For more details, see TolPackage.

Requiring a package

TOL provides a preevaluation directive: #Require to indicate the package requeriments.

#Require <PackageName>;

When you compile a package requirement, TolPackage try to load the package, searching into the repositories, downloading it and intalling it if necessary.

Official TOL Archive Network

The official repository of TOL packages is called OTAN (Official TOL Archive Network). In this link: OTAN you can browse the full list of public packages.

Package manager in TOLBase

From version 3 onwards, TOLBase includes a graphic interface especially designed to make the management of packages easier. It can be accessed from the "Tools" menu, in the "Manage Packages..." option.

Screenshot: Package manager in TOLBase.

The interface offers a list of all available packages from all of the of the repositories to which they have access for installation, updates or upgrades.

Different package states are displayed in the form of various different icons:

  • source:tolp/trunk/tolbase/lib/toltk/images/p_no.gif: New, not installed.
  • source:tolp/trunk/tolbase/lib/toltk/images/p_upd.gif: Update required; a more recent package of an identical version is available.
  • source:tolp/trunk/tolbase/lib/toltk/images/p_upg.gif: Upgrade required, a package with a superior version is available.
  • source:tolp/trunk/tolbase/lib/toltk/images/p_unu.gif: Upgrade and update required, both of these are required periodically.
  • source:tolp/trunk/tolbase/lib/toltk/images/p_ok.gif: Package okay, currently installed without requirement for update or upgrade.

Various actions can be carried out on packages. These are offered in the contextual menu.