Package: edpm
edpmedpmstands forEICdevelopmentpacketmanagerhelperThe goalof edpm is to provide esier experience of building EIC simulation and reconstruction
framework and supporting packages on a user machine with development reasons.TL;DR;example for CentOS/RHEL7# INSTALL PREREQUESTIESedpmreqcentoseicrecon# get list of OS packets required to build jana and depssudoyuminstall...# install watever 'edpm req' shows# or if you are a lucky bash user (yes, csh is still common in physics):sudoyuminstall$(edpmreqcentoseicrecon--all)# SETUP edpmedpm--top-dir=<where-to># Directory where packets will be installededpmsetroot`$ROOTSYS`# (optional) if you have CERN.ROOT or other monster packets:# INSTALL PACKETSedpminstalleicrecon# install eicrecon and dependencies (like genfit, jana and rave)edpminstallg4e# install 'Geant 4 EIC' and dependencies (like vgm, hepmc)# SET RIGHT ENVIRONMENTsource<$(edpmenv)# set environment variables,source~/.local/share/edpm/env.sh# more convenient way. Use *.csh file for tcshMotivationedpmis here as there is no standard convention in HEP and NP of how to distribute and install software packages
with its dependencies. Some packages (like eigen, xerces, etc.) are usually supported by
OS maintainers, while others (Cern ROOT, Geant4, Rave) are usually built by users or
other packet managers and could be located anywhere. Here comes "version hell" multiplied by lack of software manpower
(e.g. to continuously maintain packages on distros level or even to fix GitHub issues)
Still we love our users and try to get things easier for them!
So here is edpm.At this pointsedpmtries to unify experience and make it simple to deploy e^JANA for:Users on RHEL 7, 8 and CentOSUsers on Ubutnu/Debian (and Windows with WSL) **Docker and other containersIt should be as easy as> edpm install eicreconto build and install a packet called 'eicrecon'
and its dependencies. But it should also provide a possibility to adopt existing installations
and have a fine control over dependencies:> edpm set root /opt/root6_04_16edpmis not:It is not arealpackage manager, which automatically solves dependencies,
download binaries (working with GPG keys, etc.), finds fastest mirrors, manage... etc.edpm is not a requirmentfor eJANA. It is not a part of eJANAbuild system and one can compile and install eJANAwithout edpmGet eicrecon installedStep by step explained instruction:Install prerequisitesutilizing OS packet manager:# To see the prerequestiesedpmrequbuntu# for all packets that edpm knowsedpmreqcentoseicrecon# for eicrecon and its dependencies only# To put everything into packet managerapt-get-yinstall`edpmrequbuntu--all`# debianyum-yinstall`edpmreqcentos--all`# centos/centosAt this point only'ubuntu'and'centos'are known words for req command. Put:ubuntufor debian familycentosfor RHEL and CentOS systems.In the future this will be updated to support macOS and to have more detailed versionsSet top-dir. This is where all missing packets will be installed.edpm--top-dir=<where-to-install-all>Register installed packets. You may have CERN.ROOT installed (req. version >= 6.14.00). Run this:edpmsetroot`$ROOTSYS`You may set paths for other installed dependencies combining:edpminstalleicrecon--missing--explain# to see missing dependenciesedpmset<name><path># to set dependency pathOr you may skip this step and just get everything installed by edpmInstall eicreconand all missing dependencies:edpminstalleicreconSet environment. There are 3 ways for doing this this:Dynamically source output ofedpm envcommand (recommended)source<(edpmenv)# works for bash onlySave output ofedpm envcommand to a file (can be useful)edpmenvsh>your-file.sh# get environment for bash or compatible shellsedpmenvcsh>your-file.csh# get environment for CSH/TCSHUse edpm generatedenv.shandenv.cshfiles (lazy and convenient)$HOME/.local/share/edpm/env.sh# bash and compatible$HOME/.local/share/edpm/env.csh# for CSH/TCSH(!) The files are regenerated each timeedpm <command>changes something in edpm.
If you changedb.jsonby yourself, edpm doesn't track it automatically, so call 'edpm env'
to regenerate these 2 filesEnvironmentedpm_DATA_PATH- sets the path where the configuration db.json and env.sh, env.csh are locatedEach time you make changes to packets,
edpm generatesenv.shandenv.cshfiles,
that could be found in standard apps user directory.For linux it is in XDG_DATA_HOME:~/.local/share/edpm/env.sh      # sh version
~/.local/share/edpm/env.csh     # csh version
~/.local/share/edpm/db.json     # open it, edit it, love itXDG is the standard POSIX paths to store applications data, configs, etc.
edpm usesXDG_DATA_HOMEto storeenv.sh,env.cshanddb.jsonanddb.jsonYou can always get fresh environment with edpmenvcommandedpmenvYou can directly source it like:source<(edpmenv)You can control where edpm stores data by settingedpm_DATA_PATHenvironment variable.