Guide to Installing SDDS and AOP Simulation Software on Linux Computers

Authors: Michael Borland, Robert Soliday and Hairong Shang
Packagers: Robert Soliday

If you encounter any installation issues, please soliday@anl.gov.

Preferred Installation Steps

Step 1: Download prebuilt RPMs

Redhat Enterprise Linux (RHEL) 9 x86_64
Red Hat Enterprise Linux (RHEL) 8 x86_64
Fedora 41 x86_64
Fedora 40 x86_64
Fedora 39 x86_64
Debian 12 x86_64
Debian 11 x86_64
Ubuntu 24.04 x86_64
Ubuntu 22.04 x86_64
Ubuntu 20.04 x86_64
openSUSE 15.6 x86_64
openSUSE 15.5 x86_64

Step 2: Build your own RPM (optional)

You may want to build your own RPMs if you are running a Linux system not listed above or you want to use a custom MPI for Pelegant.

  1. Install the required development packages:

    Ensure the following packages are installed based on your Linux distribution:
     

    • Redhat Enterprise Linux:
      • tcl, wget, subversion, gzip, tar, make, rpmdevtools, rpm-build, gcc, gcc-c++, gcc-gfortran, zlib-devel, gd-devel, libpng-devel, libtiff-devel, lapack-devel, blas-devel, gsl-devel, fftw-devel, openmotif-devel, motif-devel, libXaw-devel, ncurses-devel, readline-devel, libXt-devel, libXp-devel, tcl-devel, tk-devel, tcsh, python-devel, tktable, hdf5-devel, boost-devel
    • Ubuntu:
      • tcl, wget, subversion, gzip, tar, make, rpm, alien, gcc, g++, gfortran, zlib1g-dev, libgd2-xpm-dev, liblapack-dev, libblas-dev, libgsl0-dev, libfftw3-dev, libxaw7-dev, libncurses5-dev, libpng12-dev, libxt-dev, libxp-dev, tcl-dev, tk-dev, tk-table, csh, python-dev, libmotif-dev, libtiff5-dev, libreadline6-dev, libhdf5-dev, boost-dev

     

  2. Download and run the build script:

    curl -O https://ops.aps.anl.gov/downloads/Build-AOP-RPMs
    chmod a+x Build-AOP-RPMs
    sudo ./Build-AOP-RPMs

    It is recommended to run this as sudo to install the necessary system development software using yum or apt-get as root. If you choose to run without sudo, ensure all required development packages are already installed.

    If building Pelegant (the parallel version of elegant), locate the directory containing mpicc (typically in /usr/bin/, /usr/lib64/mpich2/bin/, or /usr/lib64/openmpi/bin/) prior to running the script. It will query you on it's location.

    After running the script the RPMs will be located in ~/rpmbuild/RPMS/x86_64/ or ~/rpmbuild/RPMS/i386/.

Step 3: Install or upgrade SDDS and AOP software

To install or upgrade the SDDS and AOP software, you can use the following commands:

  1. Review installed files:

    rpm -qpl package.x86_64.rpm
  2. Install or upgrade packages:

    For Fedora and RedHat systems:

    rpm -Uvh package.x86_64.rpm

    For Ubuntu systems:

    alien -i package.x86_64.rpm

Step 4: Install the sdds Python module (optional)

The sdds is available through either PyPI or Anaconda

  1. PyPI Package:

    python -m pip install soliday.sdds
  2. Conda (Anaconda) Package:

    conda install soliday::sdds

Step 5: Final steps

  1. Download defns.rpn:

    curl -O https://ops.aps.anl.gov/downloads/defns.rpn
    mv defns.rpn ~/.defns.rpn
  2. Update ~/.bash_profile (RHEL, Fedora) or ~/.profile (Ubuntu, Debian):

    export RPN_DEFNS=$(HOME)/.defns.rpn
    export HOST_ARCH=linux-x86_64
    export EPICS_HOST_ARCH=linux-x86_64

 


 

Compiling from Source Code

Step 1: Configure the environment

Update ~/.bash_profile (RHEL, Fedora) or ~/.profile (Ubuntu, Debian)

export PATH=$(HOME)/epics/base/bin/linux-x86_64:$(HOME)/epics/extensions/bin/linux-x86_64:$(HOME)/oag/apps/bin/linux-x86_64:$PATH
export HOST_ARCH=linux-x86_64
export EPICS_HOST_ARCH=linux-x86_64
export RPN_DEFNS=$(HOME)/.defns.rpn

Step 2: Download and compile EPICS/Base, SDDS ToolKit, SDDS EPICS Toolkit, OAGTcl/Tk, and Elegant

cd ~
mkdir epics
cd epics
curl -O https://epics.anl.gov/download/base/base-7.0.8.1.tar.gz
tar -xf base-7.0.8.1.tar.gz
rm base-7.0.8.1.tar.gz
ln -s base-7.0.8.1 base
git clone https://github.com/epics-extensions/extensions
cd ..
curl -O https://ops.aps.anl.gov/downloads/defns.rpn
curl -O https://ops.aps.anl.gov/downloads/SDDS.5.7.tar.gz
curl -O https://ops.aps.anl.gov/downloads/SDDSepics.5.6.tar.gz
curl -O https://ops.aps.anl.gov/downloads/oag.apps.configure.tar.gz
curl -O https://ops.aps.anl.gov/downloads/oag.1.29.tar.gz
curl -O https://ops.aps.anl.gov/downloads/elegant.2024.1.0.tar.gz
tar -xf SDDS.5.7.tar.gz
tar -xf SDDSepics.5.6.tar.gz
tar -xf oag.apps.configure.tar.gz
tar -xf oag.1.29.tar.gz
tar -xf elegant.2024.1.0.tar.gz
rm SDDS.5.7.tar.gz
rm SDDSepics.5.6.tar.gz
rm oag.apps.configure.tar.gz
rm oag.1.29.tar.gz
rm elegant.2024.1.0.tar.gz
mv defns.rpn .defns.rpn
cd epics/base/configure
echo "SHARED_LIBRARIES=NO" >> CONFIG
echo "LINKER_USE_RPATH=NO" >> CONFIG
echo "COMMANDLINE_LIBRARY=" >> CONFIG
cd ..
make -j
cd ../extensions/configure
make clean all
cd ../src/SDDS
make clean
make -j
make
cd ../oagca
make clean
make -j
cd ../SDDSepics
make clean
make -j
cd ../../../..
cd oag/apps/configure
echo "EPICS_BASE=$(dirname $(dirname $(dirname $(pwd))))/epics/base" >> RELEASE
echo "EPICS_EXTENSIONS=$(dirname $(dirname $(dirname $(pwd))))/epics/extensions" >> RELEASE
make clean all
cd ../src/utils/tools
make clean
make -k
cd ../../tcltklib
make clean all
cd ../tcltkapp/oagapp
make clean all
cd ../../physics
make clean
make -j
cd ../xraylib
make clean
make -j
cd ../elegant
make clean
make
cd elegantTools
make clean
make
cd ../sddsbrightness
make clean
make

Additional Resources