Note: This web site is only kept up to date for OSG Software 1.2 (VDT 2.0.0). If you are looking for information for the most recent release, the RPM-based OSG Software 3.0, please see the OSG documentation web site

Changes to Pacman

Purpose

We are adding functionality to Pacman to add package-level control over updates. The primary purpose for this will be to add support for new platforms without causing all existing installations from that cache to require an update. Additionally, this will allow us to update any metadata in a package without causing an update.

Change to existing Pacman behavior

A new atom will be available to define the revision of a Pacman file. There is currently a subroutine that checks if an update is necessary. This subroutine returns true if an update is necessary, and false if it is not. The behavior of this subroutine will be modified to use this new revision atom as follows:

The new code will return false (no update needed) if ALL of the following set of conditions are satisfied:

Otherwise, it will fall through to the existing code to determine if an update is necessary. It will never return true (update necessary).

updateCheck subroutine
    new code
        - can return false given set of conditions above
        - otherwise, continues to code below        
    existing code (unchanged)
        - will return true or false

New Pacman atom

packageRevision(OS, Architecture, Revision [, comment])

This atom will accept three mandatory arguments, and one optional argument. Less than three arguments or more than four arguments will cause a syntax error.

First argument - OS:

Second argument - Architecture:

Third argument - revision:

Fourth argument - comment

Usage: it is possible to have multiple packageRevision atoms in a single file, however, having multiple atoms with the same OS/arch fields will result in undefined behavior.

Using the new atom

The most common use case of the new atom will likely be a single revision for each file, which applies to all platforms (OS/arch combinations). Example:

packageRevision('*', '*', '1.0', 'First release of file')

It is also possible to override the generic revision of a package with specific platforms:

packageRevision('*', '*', '1.0', 'First release of file')
packageRevision('RHEL-5', 'ia64', '1.1', 'Updated binaries for Rhel-5, IA-64')
packageRevision('RHEL-4', 'i686', '1.1', 'Updated binaries for Rhel-5, 32 bit')

It is not necessary to list a 'wildcard' revision. A revision can be listed for every platform:

packageRevision('RHEL-5', 'i686', '1.0', 'First release of package')
packageRevision('RHEL-5', 'x86_64', '1.1', 'Updated binaries for Rhel-5, 64 bit')
packageRevision('RHEL-4', 'i686', '1.0', 'First release of package')
packageRevision('RHEL-4', 'x86_64', '1.1', 'Updated binaries for Rhel-4, 64 bit')
packageRevision('RHEL-3', 'i686', '1.0', 'First release of package')
packageRevision('RHEL-3', 'x86_64', '1.1', 'Updated binaries for Rhel-4, 64 bit')
packageRevision('Debian-4', 'i686', '1.0', 'Updated binaries for Debian 4, 32 bit')
packageRevision('Darwin', 'x86_64', '1.0', 'First release of package')

Note: the behavior is undefined if multiple packageRevision atoms are listed which include the same platform but a different revision number. (this applies to either '*'/'*', or a more specific OS/arch combination)

Note: packageRevision atoms cannot be embedded within Pacman conditionals. All packageRevision atoms are treated as though they were declared at the "top-level" of the pacman file.

New Pacman command line switches

There are now two new command line switches, '-arch' and '-pretend-arch <arch>', and one new command line display mode, '-d revisions'.

Other Pacman changes

Changes to VDT infrastructure

defs file

make-vdt

Platform mappings

The top (bolded) line is equivalent to everything below it.

RHEL-5         RHEL-4        RHEL-3       SuSE-9   Debian-4   Debian-5   darwin   AIX5
SL-5           SL-4          SL-3                                        MacOS
Fermi-SL-5     Fermi-SL-4    Fermi-SL-3
CentOS-5                     Rocks-3.3