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

Making Native Packages From NMI Builds

Prerequisites on the Build Machine

Debian

CentOS 5, RHEL 5

Inputs

All input metadata are PER BINARY PACKAGE

Examples

Curl

package name: vdt-curl
version number: 7.18.2
revision number: 1
tarball name: curl-7.18.2.x86_64_deb_5.0.tar.gz
install root: /opt/vdt/curl
dependencies: sh, libc, gcc
short description: Get a file from an HTTP, HTTPS or FTP server
long description: curl is a client to get files from servers using any of the supported protocols. The command is designed to work without user interaction or any kind of interactivity. curl offers a busload of useful tricks like proxy support, user authentication, ftp upload, HTTP post, file transfer resume and more.
changelog: vdt-curl (7.18.2-1) experimental; urgency=low * For information about this package, see the VDT website: <http://vdt.cs.wisc.edu/> -- VDT Team <vdt-support@opensciencegrid.org> Thu, 15 Oct 2009 14:43:08 -0500
configuration files [none]
license Curl An open source license that is a MIT/X derivate. COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1996 - 2006, Daniel Stenberg, <daniel@haxx.se>. All rights reserved. (etc etc)

Sample YAML metadata for CURL:

%YAML 1.1
---
Name:        curl
Revision:    1
InstallRoot: /opt/vdt/curl
Depends:
  - sh
  - libc
  - gcc
Summary:     Get a file from an HTTP, HTTPS or FTP server
Description: |
  curl is a client to get files from servers using any of the supported
  protocols. The command is designed to work without user interaction
  or any kind of interactivity.

  curl offers a busload of useful tricks like proxy support, user
  authentication, ftp upload, HTTP post, file transfer resume and more.
Config: []
License:
  - short: Curl
    long: |
      An open source license that is a MIT/X derivate.
      COPYRIGHT AND PERMISSION NOTICE

      Copyright (c) 1996 - 2006, Daniel Stenberg, <daniel@haxx.se>.

      All rights reserved.

      (etc etc)

Some notes on YAML:

This will result in the following Perl object:

$VAR1 = {
  'Revision' => '1',
  'License' => [
    {
      'short' => 'Curl',
      'long' => 'An open source license that is a MIT/X derivate.
COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1996 - 2006, Daniel Stenberg, <daniel@haxx.se>.

All rights reserved.

(etc etc)
'
    }
  ],
  'Summary' => 'Get a file from an HTTP, HTTPS or FTP server',
  'Config' => [],
  'Depends' => [
    'sh',
    'libc',
    'gcc'
  ],
  'InstallRoot' => '/opt/vdt/curl',
  'Name' => 'curl',
  'Description' => 'curl is a client to get files from servers using any of the supported
protocols. The command is designed to work without user interaction
or any kind of interactivity.

curl offers a busload of useful tricks like proxy support, user
authentication, ftp upload, HTTP post, file transfer resume and more.
'
};

VOMS

package name: vdt-voms-client
version number: 1.8.8-2p1
revision number: 1
tarball name: voms-client-1.8.8-2p1-x86_64_deb_5.0.tar.gz
install root: /opt/vdt/glite
short description: Virtual Organization Management Service client tools
long description: VOMS stands for Virtual Organization Management Service. It manages membership lists and rols for a virtual organization (VO). For example, a group of twenty scientists across three universities might collaborate with each other for a long-lived experiment. In order to keep track of who is in their virtual organization, they use VOMS. VOMS can keep track of each user, and their rolls. For example, the principal investigator might have the role of "TechLead", while others do not. Other grid software such as EDG mkgridmap and GUMS can consult VOMS to decide if a user is part of a virtual organization. Users are described by their X509 certificate's Distinguished Name, so all users must have X509 certificates.
changelog: vdt-voms-client (1.8.8-2p1-1) experimental; urgency=low * For information about this package, see the VDT website: <http://vdt.cs.wisc.edu/> -- VDT Team <vdt-support@opensciencegrid.org> Thu, 15 Oct 2009 14:43:08 -0500
configuration files [none]

Plus, similar entries for vdt-voms-server and vdt-voms-essentials.

Writing the YAML files

The required fields are:

Optional fields are: Copy and paste this template:
--- #YAML:1.1
# Comments begin with a #
# They must be on a separate line for YAML::Tiny
Name:           name
Revision:       0
InstallRoot:    /opt/vdt/name
Summary:        A one-line description of your package

Description:    |
  A long description of your program goes here.
  Lines which are meant to be blank should be represented by a single .,
  like so:
  .
  Pay attention to indentation, tabs may NOT be used.

Depends:
# vdt is for vdt packages, common across all platforms
  vdt:
    - vdt-globus
    - curl
# you can give a specific NMI platform
  x86_64_rhap_5:
    - some-package
# or a regexp that matches NMI platforms on which these packages will be
# installed
#
# e.g. install on 32-bit machines only:
  x86_[^6]:
    - libnoton64bit
# install on x86_64 machines only:
  x86_64:
    - libnoton32bit
# install on rhap_5, both 32-bit and 64-bit
  rhap_5:
    - rhap5package

Config:
# a list of filenames relative to the InstallRoot
  - etc/config.ini
  - etc/user.conf

License:
  short: Apache
  long: |
    This is the full text of the license. See the Description field for
    formatting instructions.