OK, I first installed gcc4.3 on my system. Since I do have root-level access, I was able to
yum install gcc43.x86_64 gcc43-c++.x86_64 gcc43-gfortran.x86_64
Next, I took my 4.1 build system and made a gcc43 package.
mkdir gcc
cd gcc
mkdir bin ups
vi ups/gcc.table
envPrepend(PATH, ${PRODUCT_DIR}/bin)
ln -s /usr/bin/g++43 bin/g++
ln -s /usr/bin/gcc43 bin/gcc
eups declare -c -r $PWD gcc 4.3
setup gcc
Note that I didn't do anything about the libraries. The following set of commands
becker173: gcc -print-libgcc-file-name /usr/lib/gcc/x86_64-redhat-linux/4.1.2/libgcc.a becker174: alias gcc gcc43 becker175: gcc -print-libgcc-file-name /usr/lib/gcc/x86_64-redhat-linux6E/4.3.2/libgcc.a
suggest that the executable knows where the libs are. Good.
Also important to realize is that if I set up this package, and reinstall the build system, the new eups won't blow away my previously-declare gcc package. Until I "source $LSST_HOME/loadLSST.csh". So
# new window source $LSST_HOME/loadLSST.csh setup gcc 4.3 # now unsetup LSST HOME, etc unsetenv LSST_HOME EUPS_PATH which gcc # still works /lsst/becker/lsst_devel/DMS/gcc/bin/gcc mkdir /lsst/lsst_root_dms43 setenv LSST_HOME /lsst/lsst_root_dms43/ cd $LSST_HOME/ curl -o newinstall.sh http://lsstdev.ncsa.uiuc.edu/dmspkgs/newinstall.sh bash newinstall.sh LSSTPipe
Go to get lunch. Hopefully I come back and its all ready. I then need to make sure I make a *new* gcc 4.3 package in the dms43 build system before I go ahead and rebuild any trunk packages.
How to verify you are using the right compiler?
ps -elf | grep gcc /usr/libexec/gcc/x86_64-redhat-linux6E/4.3.2/cc1plus ...
How to verify the libs are actually build with 4.3?
TBD
It worked! Now get trunk of things I need...
# redeclare gcc cd /lsst/becker/lsst_devel/DMS/gcc eups declare -c -r $PWD gcc 4.3 setup gcc # re-get some external packages lsstpkg install eigen lsstpkg install gsl lsstpkg install minuit2 # re-build some python cd numpy tar -xzvf numpy-1.1.1/ mv numpy-1.1.1/ src mkdir numpy-1.1.1/ cd src/ setup python python setup.py install --home=$LSST_MYDEVEL/DMS/numpy/numpy-1.1.1 mkdir ups cp $NUMPY_DIR/ups/numpy.table ups/ eups declare -c -r $PWD numpy 1.1.1 cd pyfits tar -xzvf pyfits-1.3.tar.gz mv pyfits-1.3/ src/ mkdir pyfits-1.3/ cd src/ python setup.py install --home=$LSST_MYDEVEL/DMS/pyfits/pyfits-1.3 cd ../pyfits-1.3 mkdir ups cp $NUMPY_DIR/ups/numpy.table ups/pyfits.table eups declare -c -r $PWD pyfits 1.3 cd matplotlib/ tar -xzvf matplotlib-0.98.3.tar.gz mv matplotlib-0.98.3/ src/ mkdir matplotlib-0.98.3/ cd src/ python setup.py install --home=$LSST_MYDEVEL/DMS/matplotlib/matplotlib-0.98.3 cd ../matplotlib-0.98.3 mkdir ups cp $NUMPY_DIR/ups/numpy.table ups/matplotlib.table eups declare -c -r $PWD matplotlib 0.98.3 # tell my trunks to use gcc 4.3 vi afw_trunk/ups/afw.table setupRequired(gcc >= 4.3) vi t354/ups/ip_diffim.table '' vi sdqa_trunk/ups/sdqa.table '' # and remake! cd afw_trunk/ eups declare -c -r $PWD afw 666 setup afw scons -c scons opt=3 cd sdqa_trunk/ eups declare -c -r $PWD sdqa 666 setup sdqa scons -c scons opt=3 cd t354/ eups declare -c -r $PWD ip_diffim 354 setup ip_diffim scons -c scons opt=3
Something did not work here…
File "/lsst/becker/lsst_devel/DMS/afw_trunk/python/lsst/afw/image/imageLib.py", line 2650, in __init__
this = _imageLib.new_MaskedImageF(*args)
lsst.pex.exceptions.exceptionsLib.LsstCppExceptionException exceptions.AttributeError: "'NoneType' object has no attribute 'path'" in <bound method ostream.<lambda> of <lsst.pex.policy.policyLib.ostream; proxy of <Swig Object of type 'std::ostream *' at 0x376caeeec0> >> ignored
