Project

General

Profile

SL7 Migration

A collection of hints/notes how to migrate from SL6 to SL7 for the NOvA DAQ systems.

Per Node Changes

UPS setup

The following sections are necessary for using software from SL6 on SL7
For each node that you would like to use SL6 ups products on SL7 you need to create a file with the version you would like to use. For the Near and Far Detectors, we have on file that contains this information, and there are links for each node that needs to use them.
The file with the information is located in /nova/ups, and is called

ups_OVERRIDE-sl6_on_sl7

and contains only
-H Linux64bit+2.6-2.12:Linux+2.6-2.12

Each node that needs to use the SL6 ups packages must have a link created in the /nova/ups directory, as in:
ln -s ups_OVERRIDE-sl6_on_sl7 ups_OVERRIDE.novadaq-near-farm-07.fnal.gov 

The SL6 readline library version 5 is needed by the SL6 epics v3_14_12 product and is not available on SL7. This system library is copied into the
product library directory:
On an SL6 node:

cd $EPICS_DIR/lib/linux-x86_64
(cd /lib64; tar cf - libreadline.so.5* ) | tar xf -

DDS setup

Each node needs a DDS setup as well. The files are located in the /nova/config/<DET NAME>/dds/ directory. The main change that needs to happen in each in the interface name, which changes when it is updated from SL6 to SL7. The old name, something like eth0 or eth1 will change. The recipe for finding the new one is to run /sbin/ifconfig and see which interface is listed for the private interface. The private interface is one with an unroutable address, and should have an MTU of 9000. It will probably be something like enp2s0f0, or maybe eno1 or eno0. I have been taking a particular class, like bufferGrp17 and make a new bufferGrp17SL7 with

cp -arv bufferGrp17 bufferGrp17SL7en01 (if they are all the same, you might not need to specify the interface)

Then edit all the ospl.xml files inside the directories to use the correct interface
sed -i "{s/eth0/eno1/}" bufferGrp17SL7eno1/Partition*/ospl.xml

Then link your buffernode name to this file in /nova/config/<DET NAME>/dds/
ln -s bufferGrp17SL7eno1 novadaq-far-farm-164

Per User Changes

SRT (releases and software)

For running SL6 compiled code under SL7 it is necessary to alter the library locations that SRT will normally search. There is a utility in /nova/novadaq/setup/env_linux3_to_2.sh which will translate the paths from one version to the older version.

In general this should be sourced after sourcing some setup code on an SL7 node. It should be harmless to run on an SL6 node, so should be safe to simply source at the end of the normal setup script like

#######################################
### edit path for linux3 (SL7)      ###
#######################################

source /nova/novadaq/setup/env_linux3_to_2.sh

Which is in the file /home/novadaq/DAQOperationsTools/novadaq_setup.sh and runs the script.
env_linux3_to_2.sh

function setup_online
{
        echo Setting up online
        source /home/novadaq/DAQOperationsTools/novadaq_setup.sh
        env_linux3_to_2    # no-op if not linux3
}

or setup a function in your ~/.bashrc, like:

function env_linux3_to_2()
{                         
        if [ $SRT_ARCH = Linux3.1 -a `ups flavor` = Linux64bit+2.6-2.12 ];then
          export SRT_SUBDIR=Linux2.6-GCC SRT_ARCH=Linux2.6 BFARCH=Linux2.6-GCC
          PATH=`echo "$PATH" | sed 's/Linux3.1/Linux2.6/g'`                   
          LD_LIBRARY_PATH=`echo "$LD_LIBRARY_PATH" | sed 's/Linux3.1/Linux2.6/g'`
          CLASSPATH=`echo "$CLASSPATH" | sed 's/Linux3.1/Linux2.6/g'`            
        fi                                                                       
}                                                                                

and call that after setting up your release.

Compile/Build under SL7 using old compiler
https://cdcvs.fnal.gov/redmine/projects/novadaq-releases/wiki/Example_of_creating_and_testing_new_base_release_