Skip to content

Comments

{bio}[system/system] FreeSurfer v8.1.0 w/ rocky9_x86_64#25342

Open
pavelToman wants to merge 2 commits intoeasybuilders:developfrom
pavelToman:20260219171717_new_pr_FreeSurfer810
Open

{bio}[system/system] FreeSurfer v8.1.0 w/ rocky9_x86_64#25342
pavelToman wants to merge 2 commits intoeasybuilders:developfrom
pavelToman:20260219171717_new_pr_FreeSurfer810

Conversation

@pavelToman
Copy link
Collaborator

@pavelToman pavelToman commented Feb 19, 2026

(created using eb --new-pr)
resolves vscentrum/vsc-software-stack#640

@github-actions
Copy link

github-actions bot commented Feb 19, 2026

Updated software FreeSurfer-8.1.0-rocky9_x86_64.eb

Diff against FreeSurfer-7.4.1-ubuntu22_amd64.eb

easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-ubuntu22_amd64.eb

diff --git a/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-ubuntu22_amd64.eb b/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-8.1.0-rocky9_x86_64.eb
index 3c9330102f..51dcb1582b 100644
--- a/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-ubuntu22_amd64.eb
+++ b/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-8.1.0-rocky9_x86_64.eb
@@ -1,6 +1,6 @@
 name = 'FreeSurfer'
-version = '7.4.1'
-versionsuffix = '-ubuntu22_amd64'
+version = '8.1.0'
+versionsuffix = '-rocky9_x86_64'
 
 homepage = 'https://surfer.nmr.mgh.harvard.edu/'
 description = """FreeSurfer is a set of tools for analysis and visualization
@@ -12,12 +12,9 @@ toolchain = SYSTEM
 
 source_urls = ['https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/%(version)s/']
 sources = ['%(namelower)s-linux%(versionsuffix)s-%(version)s.tar.gz']
-patches = ['%(namelower)s-%(version)s-hardcoded-path.patch']
-checksums = [
-    {'freesurfer-linux-ubuntu22_amd64-7.4.1.tar.gz':
-     '6db470445f3b2e973fcfdc9231c775896e54a4dbfc4ce0d5ef5775bc7dca182d'},
-    {'freesurfer-7.4.1-hardcoded-path.patch': 'f75d8eeb90086d290b8122c5174b77c210ea5d900bdc3040736aef4d69e65295'},
-]
+checksums = ['6158acc772fcbb5220c89e6405e8b56e4618701b13b6bbe6e8da77695f5e5546']
+
+osdependencies = ['tcsh']
 
 dependencies = [('MCR', 'R2019b.8')]
 
@@ -25,6 +22,11 @@ postinstallcmds = ["ln -s $EBROOTMCR/v97 %(installdir)s/MCRv97"]
 
 license_text = """email@example.com
 00000
-g1bb3r1sh"""
+g1bb3r1sh
+"""
+
+# Prepend system libs so FreeSurfer binaries pick up the system libstdc++.so.6 first.
+# This avoids GLIBCXX_* symbol errors caused by the older libstdc++ bundled with MCR.
+modextrapaths = {'LD_LIBRARY_PATH': ['/usr/lib64']}
 
 moduleclass = 'bio'
Diff against FreeSurfer-7.4.1-ubuntu20_amd64.eb

easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-ubuntu20_amd64.eb

diff --git a/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-ubuntu20_amd64.eb b/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-8.1.0-rocky9_x86_64.eb
index 5e686cd301..51dcb1582b 100644
--- a/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-ubuntu20_amd64.eb
+++ b/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-8.1.0-rocky9_x86_64.eb
@@ -1,6 +1,6 @@
 name = 'FreeSurfer'
-version = '7.4.1'
-versionsuffix = '-ubuntu20_amd64'
+version = '8.1.0'
+versionsuffix = '-rocky9_x86_64'
 
 homepage = 'https://surfer.nmr.mgh.harvard.edu/'
 description = """FreeSurfer is a set of tools for analysis and visualization
@@ -12,12 +12,9 @@ toolchain = SYSTEM
 
 source_urls = ['https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/%(version)s/']
 sources = ['%(namelower)s-linux%(versionsuffix)s-%(version)s.tar.gz']
-patches = ['%(namelower)s-%(version)s-hardcoded-path.patch']
-checksums = [
-    {'freesurfer-linux-ubuntu20_amd64-7.4.1.tar.gz':
-     'f61ab4bf6594f996e1a664eb00ab60fb731b7642751bacd4f32a915820a1d7c8'},
-    {'freesurfer-7.4.1-hardcoded-path.patch': 'f75d8eeb90086d290b8122c5174b77c210ea5d900bdc3040736aef4d69e65295'},
-]
+checksums = ['6158acc772fcbb5220c89e6405e8b56e4618701b13b6bbe6e8da77695f5e5546']
+
+osdependencies = ['tcsh']
 
 dependencies = [('MCR', 'R2019b.8')]
 
@@ -25,6 +22,11 @@ postinstallcmds = ["ln -s $EBROOTMCR/v97 %(installdir)s/MCRv97"]
 
 license_text = """email@example.com
 00000
-g1bb3r1sh"""
+g1bb3r1sh
+"""
+
+# Prepend system libs so FreeSurfer binaries pick up the system libstdc++.so.6 first.
+# This avoids GLIBCXX_* symbol errors caused by the older libstdc++ bundled with MCR.
+modextrapaths = {'LD_LIBRARY_PATH': ['/usr/lib64']}
 
 moduleclass = 'bio'
Diff against FreeSurfer-7.4.1-centos8_x86_64.eb

easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-centos8_x86_64.eb

diff --git a/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-centos8_x86_64.eb b/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-8.1.0-rocky9_x86_64.eb
index 4499112638..51dcb1582b 100644
--- a/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-7.4.1-centos8_x86_64.eb
+++ b/easybuild/easyconfigs/f/FreeSurfer/FreeSurfer-8.1.0-rocky9_x86_64.eb
@@ -1,6 +1,6 @@
 name = 'FreeSurfer'
-version = '7.4.1'
-versionsuffix = '-centos8_x86_64'
+version = '8.1.0'
+versionsuffix = '-rocky9_x86_64'
 
 homepage = 'https://surfer.nmr.mgh.harvard.edu/'
 description = """FreeSurfer is a set of tools for analysis and visualization
@@ -12,12 +12,9 @@ toolchain = SYSTEM
 
 source_urls = ['https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/%(version)s/']
 sources = ['%(namelower)s-linux%(versionsuffix)s-%(version)s.tar.gz']
-patches = ['%(namelower)s-%(version)s-hardcoded-path.patch']
-checksums = [
-    {'freesurfer-linux-centos8_x86_64-7.4.1.tar.gz':
-     '302f2745886fcb571f2050bc2e2a7b4ff982e844bcc20c842d0d0b32b514c56a'},
-    {'freesurfer-7.4.1-hardcoded-path.patch': 'f75d8eeb90086d290b8122c5174b77c210ea5d900bdc3040736aef4d69e65295'},
-]
+checksums = ['6158acc772fcbb5220c89e6405e8b56e4618701b13b6bbe6e8da77695f5e5546']
+
+osdependencies = ['tcsh']
 
 dependencies = [('MCR', 'R2019b.8')]
 
@@ -25,6 +22,11 @@ postinstallcmds = ["ln -s $EBROOTMCR/v97 %(installdir)s/MCRv97"]
 
 license_text = """email@example.com
 00000
-g1bb3r1sh"""
+g1bb3r1sh
+"""
+
+# Prepend system libs so FreeSurfer binaries pick up the system libstdc++.so.6 first.
+# This avoids GLIBCXX_* symbol errors caused by the older libstdc++ bundled with MCR.
+modextrapaths = {'LD_LIBRARY_PATH': ['/usr/lib64']}
 
 moduleclass = 'bio'

@pavelToman
Copy link
Collaborator Author

@boegelbot please test @ jsc-zen3

@boegelbot
Copy link
Collaborator

@pavelToman: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=25342 EB_ARGS= EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25342 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 9770

Test results coming soon (I hope)...

Details

- notification for comment with ID 3928304488 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

@pavelToman
Copy link
Collaborator Author

Test report by @pavelToman
SUCCESS
Build succeeded for 1 out of 1 (total: 5 mins 42 secs) (1 easyconfigs in total)
node4010.donphan.os - Linux RHEL 9.6, x86_64, Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz, 1 x NVIDIA NVIDIA A2, 580.95.05, Python 3.9.21
See https://gist.github.com/pavelToman/67564945596f6e88c617e590e27502ae for a full test report.

@pavelToman
Copy link
Collaborator Author

Test report by @pavelToman
SUCCESS
Build succeeded for 2 out of 2 (total: 10 mins 38 secs) (1 easyconfigs in total)
node4231.shinx.os - Linux RHEL 9.6, x86_64, AMD EPYC 9654 96-Core Processor, Python 3.9.21
See https://gist.github.com/pavelToman/37d3e5183bc2e43fb3e292b9ce691369 for a full test report.

@verdurin
Copy link
Member

Test report by @verdurin
FAILED
Build succeeded for 1 out of 2 (total: 2 hours 56 mins 46 secs) (1 easyconfigs in total)
centos-stream-9 - Linux CentOS Stream 9, x86_64, Intel Core Processor (Skylake, IBRS), Python 3.12.12
See https://gist.github.com/verdurin/d66db695638e2b27fe219aa89e6bd761 for a full test report.

@boegelbot
Copy link
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 2 out of 2 (total: 4 hours 25 mins 56 secs) (1 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.23
See https://gist.github.com/boegelbot/4159a1caa2141b48cb635e659c6c570b for a full test report.

@verdurin
Copy link
Member

@pavelToman my build failed because the build node didn't have Tcsh installed. That ought to be either a dependency or an OS dependency (preferably the former).

@pavelToman
Copy link
Collaborator Author

Test report by @pavelToman
SUCCESS
Build succeeded for 1 out of 1 (total: 5 mins 48 secs) (1 easyconfigs in total)
node4010.donphan.os - Linux RHEL 9.6, x86_64, Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz, 1 x NVIDIA NVIDIA A2, 580.95.05, Python 3.9.21
See https://gist.github.com/pavelToman/d21fb7c56a511e8535837fe89f2ea5be for a full test report.

@JarneRenders
Copy link
Contributor

JarneRenders commented Feb 20, 2026

This builds fine for me, but trying a run with some tutorialdata fails with a missing liblapack.so.3.

$ recon-all -i dicom_challenge/dicoms/I0 -subject test
Adding options -fix-ento-wm -transfer-base-bfs -fix-vsinus -fix-mca-dura -fix-ga -fix-acj -synthstrip -synthseg -synthmorph
fs-check-version --s test --o /tmp/tmp.0LSoec
Fri Feb 20 16:34:37 CET 2026

setenv SUBJECTS_DIR /rhea/scratch/brussel/vo/000/bvo00005/vsc11353/easybuild/install/zen5/software/FreeSurfer/8.1.0-rocky9_x86_64/subjects
cd /rhea/scratch/brussel/vo/000/bvo00005/vsc11353/myeasyconfigs/freesurfer/tutorial_data_20190918_1558
/scratch/brussel/vo/000/bvo00005/vsc11353/easybuild/install/zen5/software/FreeSurfer/8.1.0-rocky9_x86_64/bin/fs-check-version --s test --o /tmp/tmp.0LSoec
-rwxr-xr-x+ 1 vsc11353 vsc11353 18565 Feb  5 04:28 /scratch/brussel/vo/000/bvo00005/vsc11353/easybuild/install/zen5/software/FreeSurfer/8.1.0-rocky9_x86_64/bin/fs-check-version

freesurfer-linux-rocky9_x86_64-8.1.0-20260204-f30dfed
$Id$
Linux node510.anansi.os 5.14.0-611.16.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Dec 22 12:21:56 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
pid 3437361
Current FS Version freesurfer-linux-rocky9_x86_64-8.1.0-20260204-f30dfed
Subject does not have a bstampfile, copying /scratch/brussel/vo/000/bvo00005/vsc11353/easybuild/install/zen5/software/FreeSurfer/8.1.0-rocky9_x86_64/build-stamp.txt
Subject FS Version: freesurfer-linux-rocky9_x86_64-8.1.0-20260204-f30dfed
No constraints on version because REQ=UnSet and FsVerFile=NotThere
#@#% fs-check-version match = 1
fs-check-version Done
INFO: SUBJECTS_DIR is /rhea/scratch/brussel/vo/000/bvo00005/vsc11353/easybuild/install/zen5/software/FreeSurfer/8.1.0-rocky9_x86_64/subjects
Actual FREESURFER_HOME /rhea/scratch/brussel/vo/000/bvo00005/vsc11353/easybuild/install/zen5/software/FreeSurfer/8.1.0-rocky9_x86_64
Linux node510.anansi.os 5.14.0-611.16.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Dec 22 12:21:56 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
mri_robust_register: error while loading shared libraries: liblapack.so.3: cannot open shared object file: No such file or directory
ERROR: Executable 'mri_robust_register -all-info failed! Is it missing from the distribution?'

@pavelToman
Copy link
Collaborator Author

I check this:
ldd $FREESURFER_HOME/bin/mri_robust_register returns:

liblapack.so.3 => not found
libblas.so.3 => not found

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

FreeSurfer 7.4.1 and FSL 6.0.7.11

4 participants