<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Folks,</p>
<p>This message describes a first step on a path towards using
modern versions of the support software packages we use, as well
as taking advantage of modern C++ features. It describes a system
for using GCC 8 with the GlueX software stack. This is a test
system for now, not meant for production launches.<br>
<br>
RedHat Enterprise Linux 7 was first released in June of 2014. The
version of CentOS 7 that we use now is based on RHEL 7.7. It uses
GCC 4.8.5 which was released in June of 2015. Note that the latest
GCC is version 11.1. We have arrived at the point were
collaborators would like to press forward with modern versions of
some of the software tools we rely on. In particular, the latest
Geant4 requires a compiler more advanced than GCC 4.8.5, but
clearly if it was not Geant4, then sooner or later it would be
another package that forces our hand.<br>
<br>
I have succeeded in building our standard software with GCC 8.3.1,
including Xerces-C, CERNLIB, LAPACK, etc. The scheme uses:<br>
<br>
1. A Singularity container running CentOS 7.7. Again, this is the
distribution we have on the JLab farm.<br>
</p>
<p>2. Developer Toolset 8 from Software Collections. This provides
an environment that uses GCC 8.3.1.<br>
</p>
<p>3. A version set that requires a more recent GCC than is shipped
with CentOS 7. It is $HALLD_VERSION/version_beta_1.0.xml. Versions
have been incremented as follows:<br>
</p>
<ul>
<li>LAPACK, from 3.6.0 to 3.9.0</li>
<li>ROOT, from 6.08.06 to 6.24.0</li>
<li>Geant4, from 10.02.p02 to 10.06.p01</li>
<li>halld_recon: 4.27.1 to the "version_upgrade_fixes" branch of
the markito3/halld_recon repository</li>
<li>halld_sim: 4.31.0 to the "version_upgrade_fixes" branch of the
markito3/halld_sim repository</li>
<li>gluex_root_analysis: 1.18.0 to the "version_upgrade_fixes"
branch of the markito3/gluex_root_analysis repository<br>
</li>
</ul>
<p>4. A new release of Build Scripts, version 2.15. This is now
installed at JLab.<br>
</p>
<p>5. A build on the group disk. This one is in
/group/halld/Software/builds/Linux_CentOS7-x86_64-gcc8.3.1-cntr .
It was built using the environment provided by 1, 2, 3, and 4
above.<br>
<br>
For others to use this build productively, many will have to be
able to compile their own source code against the build. I've
written a HOWTO with instructions for accessing the build, both to
run the code as is, or as a base for development efforts. Find it
here:<br>
<br>
<a class="moz-txt-link-freetext" href="https://halldweb.jlab.org/wiki/index.php/HOWTO_Run_Gluex_Software_with_GCC_8">https://halldweb.jlab.org/wiki/index.php/HOWTO_Run_Gluex_Software_with_GCC_8</a><br>
<br>
The instructions are narrowly tailored to the farm/ifarm at JLab.
Folks familiar with the techniques will see that the raw materials
provided can be applied on nearly any modern Linux or
Linux-compatible system.<br>
<br>
In addition, for running on the OSG and the HPC centers, the
markito3/gluex_docker_devel container has been re-built to be
identical to the container specified in the HOWTO, just tweaked
for the OSG environment. It is available from the
singularity.opensciencegrid.org CVMFS share. The build itself is
available on the oasis.opensciencegrid.org CVMFS share. <br>
<br>
There are other ways to accomplish the goal of GCC > 4.8.5 and
they are being explored as well. <br>
<br>
Finally, thanks to Richard Jones for initially suggesting this
direction.<br>
</p>
<p> -- Mark</p>
<p><br>
</p>
</body>
</html>