EUPS for PFS

PFS software products are all stored as git repositories under https://github.com/Subaru-PFS. They are installed and run as EUPS products on a local machine.

The purpose of EUPS is to maintain multiple versions of products. If a given product depends on others, the versions of all are saved together.

The tool to install PFS git products into an EUPS tree is pfsinstall. Give it a list of products and git tags, and it will install them in order, using the git tag as the EUPS tag.

pfsinstall ics_config:1.40

After which you arrange for version 1.40 of ics_config to be used with the setup command:

setup -v ics_config 1.40

Note that you had to specify the version. EUPS also maintains a "current" version, which is the one which is used if no version is specified. pfs_install -c sets the current version if you want:

pfsinstall -c ics_config:1.40

after which setup -v ics_config will give you version 1.40.

Since it sets up basic rules, ics_config is a bit special. Among other things it does not depend on any other products. But most PFS products do. The actor library is in the tron_actorcore product, for instance. You can chose which tron_actorcore library you build and run against. pfsinstall installs each of the product:version on its command line in order, and uses the following rules:

  1. if a product depends on one earlier on the command line, it will depend on the command line version:

    pfsinstall tron_actorcore:1.7.0 ics_mcsActor:1.4.0
    
  2. if a product depends on one which was set up before pfsinstall was invoked, it will depend on the setup version:

    setup tron_actorcore 1.6.4
    pfsinstall ics_mcsActor:1.4.0
    
  3. if a product depends on one which has a current version, it will depend on the current version:

    pfsinstall ics_config:1.40