Introduction
This page covers documentation about the conda release and build system relevant for psana developers. This documentation is also for LCLS users that want to migrate their test releases based on psana C++ modules and the SConsTools scons build system to the conda environments.
Old to New Conda Command Table
Below we go over the steps to create, develop, build and manage test releases - comparing old commands from the RPM release system to the new conda based system.
Old commands like newrel, addpkg and relinfo are not available in the conda world. Most all steps are executed using the
condarel
program. Do condarel -h for the latest help on this script.
step | old | conda | notes about conda version |
---|---|---|---|
get started | source /reg/g/psdm/etc/ana_env.sh | source source conda_setup | We still source the ana_env.sh to get going After sourcing conda_setup, /reg/g/psdm/bin is removed from your PATH it is replaced with /reg/g/psdm/sw/conda/manage/bin |
create new test release directory | newrel ana-current myrel | condarel --newrel --name myrel | in conda, myrel is based on the current If you are not in a conda environment with The old myrel directory has the hidden file The new myrel directory will also have the |
activate test release | cd myrel sit_setup | cd myrel source conda_setup | conda_setup looks in the current directory (like conda_setup will add *tr* to your prompt to |
create new package | newpkg MyPkg | condarel --newpkg --name MyPkg | Creates the directory MyPkg with a minimal structure, include/src/app/data, and SConscript |
create new package in psdm svn repo | psvn newpkg MyPkg | same | nothing created in your test release, just starting a package in the svn psdm repo |
checkout new package | addpkg MyPkg | condarel --addpkg --name MyPkg | for packages that are not part of psana-conda gets it from head |
checkout existing package | addpkg XtcInput | condarel --addpkg --name XtcInput | Looks up the appropriate tag for the version of psana-conda. Checks out that tag |
checkout from HEAD | addpkg XtcInput HEAD | condarel --addpkg \ --name XtcInput --tag HEAD | You can also specify specific tags with the --tag argument. |
build | scons | scons | same |
develop | very awkward | condarel --addpkg --name pdsdata condarel --addpkg --name pdsdata_ext | With conda, pdsdata, psalg and ndarray are part of the psana-conda package. They get put in a subdirectory called extpkgs. You then also need the proxy packages to build. Note - the pdsdata_ext SConscript make command does not generate the ddl targets - you may need to set environment variables and run make yourself for certain development. |
release info | relinfo | condarel --relinfo | |
upgrade release | relupgrade ana-19.0.20 sit_setup scons -c scons | source activate ana-1.0.8 | In conda, first activate, using standard conda commands, the environment you want to build against. Then use the --chenv command, it picks up the current conda environment. |
develop Translator | addpkg Translator scons | condarel --addpkg --name Translator | Since the Translator includes headers using package names, i.e, #include "hdf5/hdf5.h" You must first include the hdf5 and openmpi proxy packages |
Test | scons test | scons test | |
tag finished work for psdm repo | addpkg MyPkg HEAD cd MyPkg svn update psvn tags psvn tag V00-00-00 | condarel --addpkg --name MyPkg | the psvn program functions as before, you can |
Missing Functionality
Not all functionality of addpkg, relinfo, sit_setup etc have been implemented. If there is a feature that you need, let me know.
If you want to use the old commands, i.e, addpkg instead of condrel --addpkg, we can write new wrappers - but I think while we transition it is good to keep the interfaces distinct as psana developers will be working with both build systems.
Converting a Release
I recommend leaving an old release alone and starting new ones based on conda, however there are two commands in condarel to convert back and forth. This should work for users writing their own C++ psana modules, but won't work for psana developers that have checked out certain external proxy packages. These commands are
condarel --convert2conda
note the name of the old rpm release that you lost. If you want to switch back, use that name with the
condarel --convert2rpm
command. See condarel -h for details.