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:
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
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
if a product depends on one which has a current version, it will depend on the current version:
pfsinstall ics_config:1.40