aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHorea Christian <chr@chymera.eu>2020-01-30 16:22:28 +0100
committerHorea Christian <chr@chymera.eu>2020-01-30 16:22:28 +0100
commitf672571c8517da492b59e914aaa25e8786a6af61 (patch)
tree5674a1c6f8fd8744b72ff643bb18b033d9582617
parentdev-python/PyVISA-py: Bump to 0.3.1. (diff)
downloadsci-f672571c8517da492b59e914aaa25e8786a6af61.tar.gz
sci-f672571c8517da492b59e914aaa25e8786a6af61.tar.bz2
sci-f672571c8517da492b59e914aaa25e8786a6af61.zip
sci-biology/fsl: version bump 6.0.2
Thanks to François Bissey <frp.bissey@gmail.com> Package-Manager: Portage-2.3.84, Repoman-2.3.20 Signed-off-by: Horea Christian <chr@chymera.eu>
-rw-r--r--sci-biology/fsl/Manifest1
-rw-r--r--sci-biology/fsl/files/fsl-6.0.2-fsldir_redux.patch495
-rw-r--r--sci-biology/fsl/files/fsl-6.0.2-no_xmlpp.patch58
-rw-r--r--sci-biology/fsl/files/fsl-6.0.2-qstring_compat.patch63
-rw-r--r--sci-biology/fsl/files/fsl-6.0.2-setup.patch198
-rw-r--r--sci-biology/fsl/fsl-6.0.2.ebuild164
6 files changed, 979 insertions, 0 deletions
diff --git a/sci-biology/fsl/Manifest b/sci-biology/fsl/Manifest
index 4ba77f1e7..b38299817 100644
--- a/sci-biology/fsl/Manifest
+++ b/sci-biology/fsl/Manifest
@@ -1,3 +1,4 @@
DIST fsl-5.0.11.tar.gz 1507525689 BLAKE2B 212941aa6fb74c1c42f8b11d8e6803f1dfba50f1cdcb4092bfdf98d6832c552fcad59843a8db9e8887b98f86ce255fd9e80e3219a48286d7defe4544f0344225 SHA512 6f859723f8e4bd7e381761983f6423364180f5d3300cb165a3e57f3535d5301624ecb30c1796dae9579da5dd16e80a8a62d9994fec1caebf0835c2f6795ca055
DIST fsl-5.0.8-sources.tar.gz 1420879532 BLAKE2B fab46d286b9c083f31408e885235a72a195f14a1e863264e8cbff2b6cfb8c70ef335cafe58dff38141b1d027aef301e94212da4c9b6d3f4306ba60c81e19cec7 SHA512 8dedf13d633d71fa28c5dd6591fab4adda4893b76467affa6f58aee917ee3fdc83da07d8f505feb61ac2733de1bfb84f7f9ff74589756946be21cdb9f057f0f0
DIST fsl-5.0.9-sources.tar.gz 1491426239 BLAKE2B 310c4eb131856120f803d67f18e4d4e97df1ff22143bffa45be5f8abe31a01ce3df5a64abf5d065670b95394249a2f569a66a9cc22cd004b03e868e823d4555d SHA512 86a33084cf880ea1341ff8622eb13a364a462018a0fac55ee291dd8917e8453701db57f35529e144d419ea744397906b586b88acaf9a2dea0291fa3101ebb27d
+DIST fsl-6.0.2.tar.gz 2505331864 BLAKE2B 0fbc23c788e0960e41a895f8eddd346e8facfae448c637eca18d39b142f8aabd9531427ce4ff97c634fdc5d16a74163947c7bade219a8900722815321144b41e SHA512 fe308393076c51c50b086f9bf7ff5ddebcf8b1284128e734b9d9e501019917ceba7c0ee5cd5aa1ed44452bcd042ad72653c1a8693f94eab9b83a80fe508a56ca
diff --git a/sci-biology/fsl/files/fsl-6.0.2-fsldir_redux.patch b/sci-biology/fsl/files/fsl-6.0.2-fsldir_redux.patch
new file mode 100644
index 000000000..dc1babd48
--- /dev/null
+++ b/sci-biology/fsl/files/fsl-6.0.2-fsldir_redux.patch
@@ -0,0 +1,495 @@
+From 2bc4be1f55b27a733e1e624b34bc570187ba95e1 Mon Sep 17 00:00:00 2001
+From: François Bissey <frp.bissey@gmail.com>
+Date: Mon, 20 Jan 2020 11:40:53 +1300
+Subject: [PATCH] Making sure fsl code and executable can find other executable
+ and data in standard location.
+
+---
+ src/fast4/fast_two.cc | 8 ++++----
+ src/feat5/feat_model.cc | 8 +++-----
+ src/feat5/tsplot.cc | 7 +++----
+ src/first/first_utils.cc | 4 ++--
+ src/fnirt/fnirtfns.cpp | 11 ++++-------
+ src/fslsurface/fslsurface_first.cc | 6 ++----
+ src/fslsurface/fslsurfacemaths.cpp | 12 ------------
+ src/libvis/miscpic.h | 7 +------
+ src/melodic/meldata.cc | 4 ++--
+ src/melodic/meloptions.cc | 8 --------
+ src/melodic/meloptions.h | 1 -
+ src/melodic/melreport.cc | 12 ++++++------
+ src/melodic/melreport.h | 20 ++++++++++----------
+ src/mm/mixture_model.cc | 4 ++--
+ src/siena/siena_diff.cc | 28 +++++++++++++---------------
+ src/topup/topupfns.cpp | 3 +--
+ 16 files changed, 53 insertions(+), 90 deletions(-)
+
+diff --git a/src/fast4/fast_two.cc b/src/fast4/fast_two.cc
+index 592b5df..b525444 100644
+--- a/src/fast4/fast_two.cc
++++ b/src/fast4/fast_two.cc
+@@ -166,7 +166,7 @@ int prior_registration(string inname, string main_prior_vol, NEWIMAGE::volume<fl
+ string csfPriorName, grayPriorName, whitePriorName;
+ if(alternatePriors.unset())
+ {
+- string priorRootName=string(getenv("FSLDIR")) + "/data/standard/tissuepriors/avg152T1_";
++ string priorRootName="@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/tissuepriors/avg152T1_";
+ csfPriorName = priorRootName+"csf";
+ grayPriorName = priorRootName+"gray";
+ whitePriorName = priorRootName+"white";
+@@ -215,15 +215,15 @@ string csfPriorName, grayPriorName, whitePriorName;
+ if(bapused>0)
+ {
+ char reg[1024];
+- sprintf(reg, "%s/bin/flirt -ref %s -in %s -out %s -applyxfm -init %s", getenv("FSLDIR"), inname.c_str(), csfPriorName.c_str(), (main_prior_vol+"_csf_stdspace").c_str(), bapriori.value().c_str());
++ sprintf(reg, "flirt -ref %s -in %s -out %s -applyxfm -init %s", inname.c_str(), csfPriorName.c_str(), (main_prior_vol+"_csf_stdspace").c_str(), bapriori.value().c_str());
+ if(verbose.value())
+ cout<<reg<<endl;
+ system(reg);
+- sprintf(reg, "%s/bin/flirt -ref %s -in %s -out %s -applyxfm -init %s", getenv("FSLDIR"), inname.c_str(), grayPriorName.c_str(), (main_prior_vol+"_gm_stdspace").c_str(), bapriori.value().c_str());
++ sprintf(reg, "flirt -ref %s -in %s -out %s -applyxfm -init %s", inname.c_str(), grayPriorName.c_str(), (main_prior_vol+"_gm_stdspace").c_str(), bapriori.value().c_str());
+ if(verbose.value())
+ cout<<reg<<endl;
+ system(reg);
+- sprintf(reg, "%s/bin/flirt -ref %s -in %s -out %s -applyxfm -init %s", getenv("FSLDIR"), inname.c_str(), whitePriorName.c_str(), (main_prior_vol+"_wm_stdspace").c_str(), bapriori.value().c_str());
++ sprintf(reg, "flirt -ref %s -in %s -out %s -applyxfm -init %s", inname.c_str(), whitePriorName.c_str(), (main_prior_vol+"_wm_stdspace").c_str(), bapriori.value().c_str());
+ if(verbose.value())
+ cout << reg << endl;
+ system(reg);
+diff --git a/src/feat5/feat_model.cc b/src/feat5/feat_model.cc
+index 399a13e..e15e43c 100644
+--- a/src/feat5/feat_model.cc
++++ b/src/feat5/feat_model.cc
+@@ -744,7 +744,7 @@ int main(int argc, char **argv)
+ vector<int> G;
+ vector<string> titles;
+ float tr, mult, trmult, nltffwhm=0, maxconvwin=0;
+- char fl[10000], *FSLDIR;
++ char fl[10000];
+ string fn, filename;
+ FONT_DATA *font_data = new FONT_DATA[1];
+
+@@ -763,8 +763,6 @@ int main(int argc, char **argv)
+ if (argc==3)
+ motionparams=remmean(read_ascii_matrix(argv[2]));
+
+- FSLDIR=getenv("FSLDIR");
+-
+ fn = string(argv[1])+".fsf";
+
+ level = atoi(find_line(fn, "fmri(level)", fl));
+@@ -1510,7 +1508,7 @@ int main(int argc, char **argv)
+ writeCovarianceImage(string(argv[1])+"_cov.ppm", contrasts, F, nftests, realDesign, level, evs.eigenvals, font_data, contrasts.RE);
+ writeImagePreview(string(argv[1])+".ppm", contrasts, F, nftests, realDesign, level, evs, font_data, titles, tr, nltffwhm, nTimepoints, G);
+
+- filename=string(getenv("FSLDIR"))+"/bin/wpng -q -overwrite "+string(argv[1])+".ppm ";
++ filename="wpng -q -overwrite "+string(argv[1])+".ppm ";
+ system(filename.c_str());
+
+ return(0);
+@@ -2161,6 +2159,6 @@ char the_string[10000];
+
+ fclose(outputfile);
+
+- filename=string(getenv("FSLDIR")) + "/bin/wpng -q -overwrite " + filename;
++ filename="wpng -q -overwrite " + filename;
+ system(filename.c_str());
+ }
+diff --git a/src/feat5/tsplot.cc b/src/feat5/tsplot.cc
+index ae191fd..3a02b55 100644
+--- a/src/feat5/tsplot.cc
++++ b/src/feat5/tsplot.cc
+@@ -293,7 +293,7 @@ int main(int argc, char **argv)
+ ofstream outputFile;
+ int numEVs, npts, numContrasts=1, nftests=0, GRPHSIZE(600), PSSIZE(600);
+ vector<double> normalisedContrasts, model, triggers;
+- string fmriFileName, fslPath, featdir, vType, indexText;
++ string fmriFileName, featdir, vType, indexText;
+ ColumnVector NewimageVoxCoord(4),NiftiVoxCoord(4);
+ bool outputText(true), useCoordinate(false), prewhiten(false), useTriggers(false), customMask(false), modelFree(false), isHigherLevel(false), outputDataOnly(false);
+ bool zWeightClusters(true);
+@@ -307,7 +307,6 @@ volume<float> immask;
+ if (argc<2) usage("");
+ featdir=string(argv[1]);
+ fmriFileName=featdir+"/filtered_func_data";
+- fslPath=string(getenv("FSLDIR"));
+
+ string outputName(featdir);
+
+@@ -753,7 +752,7 @@ volume4D<float> acs;
+ cerr << "Can't open output report file " << outputName << endl;
+ exit(1);
+ }
+- outputFile << "<HTML>\n<TITLE>"<< statType << num2str(i) <<"</TITLE>\n<BODY BACKGROUND=\"file:"<< fslPath <<"/doc/images/fsl-bg.jpg\">\n<hr><CENTER>\n<H1>FEAT Time Series Report - "<< statType << num2str(i) <<"</H1>\n</CENTER>\n<hr><b>Full plots</b><p>\n"<< graphText;
++ outputFile << "<HTML>\n<TITLE>"<< statType << num2str(i) <<"</TITLE>\n<BODY BACKGROUND=\"file:"<< "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/images/fsl-bg.jpg\">\n<hr><CENTER>\n<H1>FEAT Time Series Report - "<< statType << num2str(i) <<"</H1>\n</CENTER>\n<hr><b>Full plots</b><p>\n"<< graphText;
+ if (useTriggers) outputFile << "\n<hr><b>Peristimulus plots</b><p>\n"<< peristimulusText <<"\n<HR></BODY></HTML>\n\n";
+ else outputFile << "\n</BODY></HTML>\n\n";
+ outputFile.close();
+@@ -768,7 +767,7 @@ volume4D<float> acs;
+ cerr << "Can't open output report file " << outputName << endl;
+ exit(1);
+ }
+- outputFile << "<HTML>\n<TITLE>FEAT Time Series Report</TITLE>\n<BODY BACKGROUND=\"file:" << fslPath << "/doc/images/fsl-bg.jpg\">\n<hr><CENTER>\n<H1>FEAT Time Series Report</H1>\n</CENTER>\n<hr>" << indexText << "<HR></BODY></HTML>" << endl << endl;
++ outputFile << "<HTML>\n<TITLE>FEAT Time Series Report</TITLE>\n<BODY BACKGROUND=\"file:" << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/images/fsl-bg.jpg\">\n<hr><CENTER>\n<H1>FEAT Time Series Report</H1>\n</CENTER>\n<hr>" << indexText << "<HR></BODY></HTML>" << endl << endl;
+ outputFile.close();
+
+ /* now output same thing without start and end, for inclusion in feat report */
+diff --git a/src/first/first_utils.cc b/src/first/first_utils.cc
+index 68be44b..85960f4 100644
+--- a/src/first/first_utils.cc
++++ b/src/first/first_utils.cc
+@@ -1954,8 +1954,8 @@ void do_work_bvars(){
+ if (!surfaceVAout.value()) {
+ // do not output on the surface, instead do the new default of outputting a volume with the scalar normal dot product values (for use with randomise)
+ volume<float> refim;
+- if (useReconMNI.value()) { read_volume(refim,string(getenv("FSLDIR")) + "/data/standard/MNI152_T1_1mm"); }
+- else { read_volume(refim,string(getenv("FSLDIR")) + "/data/standard/MNI152_T1_1mm"); }
++ if (useReconMNI.value()) { read_volume(refim,"@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/MNI152_T1_1mm"); }
++ else { read_volume(refim,"@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/MNI152_T1_1mm"); }
+ volume<float> maskvol(refim);
+ maskvol=0.0f;
+ volume4D<float> volnormals;
+diff --git a/src/fnirt/fnirtfns.cpp b/src/fnirt/fnirtfns.cpp
+index 24e26fd..77899e7 100644
+--- a/src/fnirt/fnirtfns.cpp
++++ b/src/fnirt/fnirtfns.cpp
+@@ -1203,8 +1203,7 @@ string existing_ref_fname(const string& ref_fname)
+ return(string(ref_fname));
+ }
+ else {
+- const char *fsldir_ptr = getenv("FSLDIR");
+- string eref_fname = string(fsldir_ptr) + string("/data/standard/") + ref_fname;
++ string eref_fname = string("@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/") + ref_fname;
+ if (NEWIMAGE::FslFileExists(eref_fname)) return(eref_fname);
+ else return(string(""));
+ }
+@@ -1230,9 +1229,8 @@ string existing_ref_fname(const string& ref_fname)
+ NEWIMAGE::read_volume_hdr_only(vref,ref_fname); // Throws if file dont exist
+ eref_fname = ref_fname;
+ }
+- catch(...) { // Didn't exist in current directory, try in ${FSLDIR}/data/standard
+- const char *fsldir_ptr = getenv("FSLDIR");
+- eref_fname = string(fsldir_ptr) + string("/data/standard/") + ref_fname;
++ catch(...) { // Didn't exist in current directory, try in .../data/standard
++ eref_fname = string("@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/") + ref_fname;
+ try {
+ cout << "Could not find " << ref_fname << ", now checking " << eref_fname << endl;
+ NEWIMAGE::read_volume_hdr_only(vref,eref_fname); // Throws if file dont exist
+@@ -1267,8 +1265,7 @@ string existing_conf_file(const string& cfname)
+ if (check_exist(ecfname)) return(ecfname);
+ }
+ if (!FNIRT::path(cfname).length()) { // If no path explicitly given
+- const char *fsldir_ptr = getenv("FSLDIR");
+- ecfname = string(fsldir_ptr) + string("/etc/flirtsch/") + cfname;
++ ecfname = string("@GENTOO_PORTAGE_EPREFIX@/etc/flirtsch/") + cfname;
+ if (check_exist(ecfname)) return(ecfname);
+ else if (!FNIRT::extension(ecfname).length()) { // If no path _and_ no extension given
+ ecfname += string(".cnf");
+diff --git a/src/fslsurface/fslsurface_first.cc b/src/fslsurface/fslsurface_first.cc
+index faec642..b2ef794 100644
+--- a/src/fslsurface/fslsurface_first.cc
++++ b/src/fslsurface/fslsurface_first.cc
+@@ -500,8 +500,7 @@ namespace fslsurface_name {
+
+ volume<float>* immni = new volume<float>();
+
+- char* fsldir = getenv("FSLDIR");
+- read_volume_hdr_only(*immni, string(fsldir) + "/data/standard/MNI152_T1_1mm");
++ read_volume_hdr_only(*immni, "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/MNI152_T1_1mm");
+
+ //read_volume_hdr_only(*immni, template_name);
+
+@@ -699,8 +698,7 @@ namespace fslsurface_name {
+
+ volume<float>* immni = new volume<float>();
+
+- char* fsldir = getenv("FSLDIR");
+- read_volume_hdr_only(*immni, string(fsldir) + "/data/standard/MNI152_T1_1mm");
++ read_volume_hdr_only(*immni, "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/data/standard/MNI152_T1_1mm");
+
+ //read_volume_hdr_only(*immni, template_name);
+
+diff --git a/src/fslsurface/fslsurfacemaths.cpp b/src/fslsurface/fslsurfacemaths.cpp
+index eaf55eb..3dc184d 100644
+--- a/src/fslsurface/fslsurfacemaths.cpp
++++ b/src/fslsurface/fslsurfacemaths.cpp
+@@ -598,12 +598,6 @@ int main (int argc, char * argv[])
+
+ }else if (command == "-reconFromBvars"){
+ cout<<"do recon "<<endl;
+- char* fsldir = getenv("FSLDIR");
+- if (fsldir == NULL)
+- {
+- cerr<<"FSLDIR has not been set. "<<endl;
+- exit(EXIT_FAILURE);
+- }
+ //file.bvars,mni_template.nii.gz
+ // string mni = string(fsldir)+"/data/standard/MNI152_T1_1mm";
+ reconSurface_from_bvars( surf, string(argv[i_arg+1]));
+@@ -612,12 +606,6 @@ int main (int argc, char * argv[])
+
+ }else if (command == "-reconAllFromBvarsAndSave"){
+ cout<<"do recon+save "<<argc<<" "<<i_arg<<endl;
+- char* fsldir = getenv("FSLDIR");
+- if (fsldir == NULL)
+- {
+- cerr<<"FSLDIR has not been set. "<<endl;
+- exit(EXIT_FAILURE);
+- }
+ //file.bvars,mni_template.nii.gz
+ // string mni = string(fsldir)+"/data/standard/MNI152_T1_1mm";
+ cout<<"recon "<< string(argv[i_arg+1])<<endl;
+diff --git a/src/libvis/miscpic.h b/src/libvis/miscpic.h
+index a2f3855..5f440f2 100644
+--- a/src/libvis/miscpic.h
++++ b/src/libvis/miscpic.h
+@@ -90,12 +90,7 @@ namespace MISCPIC{
+ markRight=false;
+ trans= -10;
+ edgethresh = 0.0;
+- if(getenv("FSLDIR")!=0){
+- lutbase = string(getenv("FSLDIR")) + "/etc/luts/";
+- }
+- else{
+- lutbase = string("/");
+- }
++ lutbase = "@GENTOO_PORTAGE_EPREFIX@/etc/luts/";
+ title = string("");
+ cbartype = string("");
+ cbarptr = NULL;
+diff --git a/src/melodic/meldata.cc b/src/melodic/meldata.cc
+index 1749a45..c4ad234 100644
+--- a/src/melodic/meldata.cc
++++ b/src/melodic/meldata.cc
+@@ -992,7 +992,7 @@ namespace Melodic{
+ void MelodicData::est_smoothness()
+ {
+ if(Resels == 0){
+- string SM_path = opts.binpath + "smoothest";
++ string SM_path = "smoothest";
+ string Mask_fname = logger.appendDir("mask");
+
+ if(opts.segment.value().length()>0){
+@@ -1157,7 +1157,7 @@ namespace Melodic{
+ // set up all strings
+ string BET_outputfname = string(Mean_fname)+"_brain";
+
+- string BET_path = opts.binpath + "bet";
++ string BET_path = "bet";
+ string BET_optarg = "-m -f 0.4"; // see man bet
+ string Mask_fname = BET_outputfname+"_mask";
+
+diff --git a/src/melodic/meloptions.cc b/src/melodic/meloptions.cc
+index 08170c7..252e72b 100644
+--- a/src/melodic/meloptions.cc
++++ b/src/melodic/meloptions.cc
+@@ -93,14 +93,6 @@ MelodicOptions* MelodicOptions::gopt = NULL;
+ explicitnums = false;
+ logfname = string("log.txt");
+
+- // work out the path to the $FSLDIR/bin directory
+- if(getenv("FSLDIR")!=0){
+- binpath = (string) getenv("FSLDIR") + "/bin/";
+- } else{
+- binpath = argv[0];
+- binpath = binpath.substr(0,binpath.length()-7);
+- }
+-
+ // parse once to establish log directory name
+ for(int a = options.parse_command_line(argc, argv); a < argc; a++);
+
+diff --git a/src/melodic/meloptions.h b/src/melodic/meloptions.h
+index f546125..b964b7d 100644
+--- a/src/melodic/meloptions.h
++++ b/src/melodic/meloptions.h
+@@ -93,7 +93,6 @@ class MelodicOptions {
+ ~MelodicOptions() { delete gopt; }
+
+ string version;
+- string binpath;
+ string logfname;
+ bool filtermode;
+ bool explicitnums;
+diff --git a/src/melodic/melreport.cc b/src/melodic/melreport.cc
+index 141b6c2..2625059 100644
+--- a/src/melodic/melreport.cc
++++ b/src/melodic/melreport.cc
+@@ -84,8 +84,8 @@ namespace Melodic{
+ IChtml.setDir(report.getDir(),mmodel.get_prefix()+".html");
+
+ {//start IC page
+- IChtml << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:" +
+- (string) getenv("FSLDIR") +"/doc/fsl.css>" << endl
++ IChtml << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/fsl.css>" << endl
+ << "<style type=\"text/css\">OBJECT { width: 100% }</style>"
+ << "<TITLE>FSL</TITLE></HEAD>" << endl
+ << "<IFRAME height=" << int(melodat.get_numfiles()/30 + 1)*50
+@@ -486,8 +486,8 @@ namespace Melodic{
+
+ {//start IC2 page
+ IChtml2.setDir(report.getDir(),mmodel.get_prefix()+"_MM.html");
+- IChtml2 << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:" +
+- (string) getenv("FSLDIR") +"/doc/fsl.css>" << endl
++ IChtml2 << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/fsl.css>" << endl
+ << "<style type=\"text/css\">OBJECT { width: 100% }</style>"
+ << "<TITLE>FSL</TITLE></HEAD>" << endl
+ << "<IFRAME height="<< int(melodat.get_numfiles()/30 + 1)*50
+@@ -665,8 +665,8 @@ namespace Melodic{
+ IChtml << "<HTML> " << endl
+ << "<TITLE>MELODIC Component " << num2str(cnum)
+ << "</TITLE>" << endl
+- << "<BODY BACKGROUND=\"file:" << getenv("FSLDIR")
+- << "/doc/images/fsl-bg.jpg\">" << endl
++ << "<BODY BACKGROUND=\"file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/images/fsl-bg.jpg\">" << endl
+ << "<hr><CENTER><H1>MELODIC Component " << num2str(cnum)
+ << "</H1>"<< endl;
+
+diff --git a/src/melodic/melreport.h b/src/melodic/melreport.h
+index 574fc4c..e444681 100644
+--- a/src/melodic/melreport.h
++++ b/src/melodic/melreport.h
+@@ -104,21 +104,21 @@ namespace Melodic{
+ const time_t tmptime = time(NULL);
+ system(("mkdir "+ logger.appendDir("report") + " 2>/dev/null").c_str());
+ report.setDir(logger.appendDir("report"),"00index.html",true,false,ios::out);
+- report << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:" +
+- (string) getenv("FSLDIR") +"/doc/fsl.css>"
++ report << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/fsl.css>"
+ << "<TITLE>MELODIC report</TITLE></HEAD><BODY>"
+ << endl <<endl;
+ loghtml.setDir(report.getDir(),"log.html");
+- loghtml << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:" +
+- (string) getenv("FSLDIR") +"/doc/fsl.css>"
++ loghtml << "<HTML><HEAD><link REL=stylesheet TYPE=text/css href=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/fsl.css>"
+ << "<TITLE>MELODIC report</TITLE></HEAD><BODY>"
+ << endl <<endl;
+ navigator.setDir(report.getDir(),"nav.html");
+ head.setDir(report.getDir(),"head.html");
+- navigator << "<link REL=stylesheet TYPE=text/css href=file:"+
+- (string) getenv("FSLDIR") +"/doc/fsl.css>" << endl;
+- head << "<link REL=stylesheet TYPE=text/css href=file:"+
+- (string) getenv("FSLDIR") +"/doc/fsl.css>" << endl;
++ navigator << "<link REL=stylesheet TYPE=text/css href=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/fsl.css>" << endl;
++ head << "<link REL=stylesheet TYPE=text/css href=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/fsl.css>" << endl;
+ head <<"<TABLE BORDER=0><TR>" << endl
+ <<" <TD ALIGN=CENTER WIDTH=100%>"<< endl
+ <<"<TABLE BORDER=0>"<< endl
+@@ -130,8 +130,8 @@ namespace Melodic{
+ << "</tr></table>" << endl
+ << "<TD ALIGN=RIGHT>" << endl
+ << "<a href=http://www.fmrib.ox.ac.uk/fsl target=_top>" << endl
+- << "<IMG BORDER=0 SRC=file:"<< getenv("FSLDIR")
+- << "/doc/images/fsl-logo-big.jpg WIDTH=165></a>" << endl
++ << "<IMG BORDER=0 SRC=file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/images/fsl-logo-big.jpg WIDTH=165></a>" << endl
+ << "</TD>"<<endl<<"</TR></TABLE> <hr>"<<endl;
+ if(opts.guireport.value()==""){
+ report <<"<OBJECT data=head.html></OBJECT>" << endl;
+diff --git a/src/mm/mixture_model.cc b/src/mm/mixture_model.cc
+index b8e6167..5f00693 100644
+--- a/src/mm/mixture_model.cc
++++ b/src/mm/mixture_model.cc
+@@ -2224,8 +2224,8 @@ namespace Mm {
+
+ htmllog << "<HTML> " << endl
+ << "<TITLE>Mixture Model fit for" << data_name << "</TITLE>" << endl
+- << "<BODY BACKGROUND=\"file:" << getenv("FSLDIR")
+- << "/doc/images/fsl-bg.jpg\">" << endl
++ << "<BODY BACKGROUND=\"file:"
++ << "@GENTOO_PORTAGE_EPREFIX@/usr/share/fsl/doc/images/fsl-bg.jpg\">" << endl
+ << "<hr><CENTER><H1>Mixture Model fit for<br>" << data_name << " </H1>"<< endl;
+
+ htmllog << "<hr><p>" << endl;
+diff --git a/src/siena/siena_diff.cc b/src/siena/siena_diff.cc
+index e19193a..17d8701 100644
+--- a/src/siena/siena_diff.cc
++++ b/src/siena/siena_diff.cc
+@@ -107,7 +107,7 @@ int main(int argc,char *argv[])
+ {
+ // {{{ vars
+
+-char thestring[10000], segoptions[10000], fsldir[10000];
++char thestring[10000], segoptions[10000];
+ int x_size, y_size, z_size, size, x, y, z, i, count,
+ seg2=0, ignore_z=0, ignore_top_slices=0, //erode_mask=0,
+ ignore_bottom_slices=0, debug=0, flow_output=1, edge_masking=0;
+@@ -124,8 +124,6 @@ if (argc<3)
+
+ string argv1(argv[1]), argv2(argv[2]);
+
+-sprintf(fsldir,"%s",getenv("FSLDIR"));
+-
+ for (i = 3; i < argc; i++) {
+ if (!strcmp(argv[i], "-i"))
+ ignore_z=1;
+@@ -209,26 +207,26 @@ for (i = 3; i < argc; i++) {
+ // }}}
+ // {{{ transform images and masks
+
+-sprintf(thestring,"%s/bin/flirt -o %s_halfwayto_%s -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s",
+- fsldir,argv[1],argv[2],argv[1],argv[2],argv[1],argv[1]);
++sprintf(thestring,"flirt -o %s_halfwayto_%s -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s",
++ argv[1],argv[2],argv[1],argv[2],argv[1],argv[1]);
+ printf("%s\n",thestring); system(thestring);
+
+-sprintf(thestring,"%s/bin/flirt -o %s_halfwayto_%s -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s",
+- fsldir,argv[2],argv[1],argv[2],argv[1],argv[1],argv[2]);
++sprintf(thestring,"flirt -o %s_halfwayto_%s -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s",
++ argv[2],argv[1],argv[2],argv[1],argv[1],argv[2]);
+ printf("%s\n",thestring); system(thestring);
+
+-sprintf(thestring,"%s/bin/flirt -o %s_halfwayto_%s_mask -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s_brain_mask",
+- fsldir,argv[1],argv[2],argv[1],argv[2],argv[1],argv[1]);
++sprintf(thestring,"flirt -o %s_halfwayto_%s_mask -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s_brain_mask",
++ argv[1],argv[2],argv[1],argv[2],argv[1],argv[1]);
+ printf("%s\n",thestring); system(thestring);
+
+-sprintf(thestring,"%s/bin/flirt -o %s_halfwayto_%s_mask -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s_brain_mask",
+- fsldir,argv[2],argv[1],argv[2],argv[1],argv[1],argv[2]);
++sprintf(thestring,"flirt -o %s_halfwayto_%s_mask -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s_brain_mask",
++ argv[2],argv[1],argv[2],argv[1],argv[1],argv[2]);
+ printf("%s\n",thestring); system(thestring);
+
+ if (edge_masking)
+ {
+- sprintf(thestring,"%s/bin/flirt -o %s_halfwayto_%s_valid_mask -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s_valid_mask_with_%s",
+- fsldir,argv[1],argv[2],argv[1],argv[2],argv[1],argv[1],argv[2]);
++ sprintf(thestring,"flirt -o %s_halfwayto_%s_valid_mask -applyisoxfm 1 -paddingsize 0 -init %s_halfwayto_%s.mat -ref %s -in %s_valid_mask_with_%s",
++ argv[1],argv[2],argv[1],argv[2],argv[1],argv[1],argv[2]);
+ printf("%s\n",thestring); system(thestring);
+ }
+
+@@ -287,8 +285,8 @@ if(1) // always done unless the above uncommented and used instead of this test
+ cout << "saving image 1 to disk prior to segmentation" << endl;
+ save_volume(in1,argv1+"_halfwayto_"+argv2+"_brain");
+ in1.destroy();
+- sprintf(thestring,"%s/bin/fast %s %s %s_halfwayto_%s_brain > %s_halfwayto_%s_brain.vol 2>&1",
+- fsldir,segtype,segoptions,argv[1],argv[2],argv[1],argv[2]);
++ sprintf(thestring,"fast %s %s %s_halfwayto_%s_brain > %s_halfwayto_%s_brain.vol 2>&1",
++ segtype,segoptions,argv[1],argv[2],argv[1],argv[2]);
+ cout << thestring << endl;
+ system(thestring);
+ }
+diff --git a/src/topup/topupfns.cpp b/src/topup/topupfns.cpp
+index 6873758..9e8b956 100644
+--- a/src/topup/topupfns.cpp
++++ b/src/topup/topupfns.cpp
+@@ -463,8 +463,7 @@ string existing_conf_file(const string& cfname)
+ if (TOPUP::check_exist(ecfname)) return(ecfname);
+ }
+ if (!TOPUP::path(cfname).length()) { // If no path explicitly given
+- const char *fsldir_ptr = getenv("FSLDIR");
+- ecfname = string(fsldir_ptr) + string("/etc/flirtsch/") + cfname;
++ ecfname = string("@GENTOO_PORTAGE_EPREFIX@/etc/flirtsch/") + cfname;
+ if (TOPUP::check_exist(ecfname)) return(ecfname);
+ else if (!TOPUP::extension(ecfname).length()) { // If no path _and_ no extension given
+ ecfname += string(".cnf");
+--
+2.24.1
+
diff --git a/sci-biology/fsl/files/fsl-6.0.2-no_xmlpp.patch b/sci-biology/fsl/files/fsl-6.0.2-no_xmlpp.patch
new file mode 100644
index 000000000..6eccc4370
--- /dev/null
+++ b/sci-biology/fsl/files/fsl-6.0.2-no_xmlpp.patch
@@ -0,0 +1,58 @@
+From 9de29e5141afa43c06f347ca158b67168fbb0031 Mon Sep 17 00:00:00 2001
+From: François Bissey <frp.bissey@gmail.com>
+Date: Mon, 20 Jan 2020 11:46:52 +1300
+Subject: [PATCH] Build without xmlpp since we use an external ciftilib that
+ doesnt require it. Replace it and other ciftilib flags with CIFTICFLAGS.
+
+---
+ src/flameo/Makefile | 4 ++--
+ src/melodic/Makefile | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/flameo/Makefile b/src/flameo/Makefile
+index d22eb965..e967e682 100644
+--- a/src/flameo/Makefile
++++ b/src/flameo/Makefile
+@@ -2,7 +2,7 @@ include ${FSLCONFDIR}/default.mk
+
+ PROJNAME = flame
+
+-USRINCFLAGS = -I${INC_NEWMAT} -I${INC_PROB} -I${INC_ZLIB} -DCIFTILIB_USE_XMLPP -I${FSLEXTINC} -I${INC_XML2} -I${INC_XML++} -I${INC_XML++CONF} -I${INC_BOOST} -I${FSLDIR}/include/ciftiio
++USRINCFLAGS = -fPIC -I${INC_NEWMAT} -I${INC_PROB} -I${INC_ZLIB} -I${FSLEXTINC} ${CIFTICFLAGS} -I${INC_BOOST} -I${FSLDIR}/include/ciftiio
+ USRLDFLAGS = -L${LIB_NEWMAT} -L${LIB_PROB} -L${LIB_ZLIB}
+
+ UNAME := $(shell uname)
+@@ -10,7 +10,7 @@ ifeq (${UNAME},Darwin)
+ LIBS = -liconv
+ endif
+
+-LIBS += -lutils -lnewimage -lmiscmaths -lm -lnewmat -lNewNifti -lcifti -lxml++-2.6 -lxml2 -lboost_filesystem -lboost_system -lznz -lprob -lz
++LIBS += -lutils -lnewimage -lmiscmaths -lm -lnewmat -lNewNifti ${CIFTILIBS} -lboost_filesystem -lboost_system -lznz -lprob -lz
+
+ XFILES = flameo
+
+diff --git a/src/melodic/Makefile b/src/melodic/Makefile
+index 50666517..0c356a2d 100644
+--- a/src/melodic/Makefile
++++ b/src/melodic/Makefile
+@@ -7,7 +7,7 @@ OPTFLAGS_alphaev6-dec-osf5.0-gcc2.95.2 = -O3 -mieee -mfp-trap-mode=sui
+
+ PROJNAME = melodic
+
+-USRINCFLAGS = -I${INC_NEWMAT} -I${INC_PROB} -I${INC_GD} -I${INC_GDC} -I${INC_PNG} -I${INC_ZLIB} -DCIFTILIB_USE_XMLPP -I${FSLEXTINC} -I${INC_XML2} -I${INC_XML++} -I${INC_XML++CONF} -I${INC_BOOST} -I${FSLDIR}/include/ciftiio
++USRINCFLAGS = -fPIC -I${INC_NEWMAT} -I${INC_PROB} -I${INC_GD} -I${INC_GDC} -I${INC_PNG} -I${INC_ZLIB} -I${FSLEXTINC} ${CIFTICFLAGS} -I${INC_BOOST} -I${FSLDIR}/include/ciftiio
+ USRLDFLAGS = -L${LIB_NEWMAT} -L${LIB_PROB} -L${LIB_GD} -L${LIB_GDC} -L${LIB_PNG} -L${LIB_ZLIB}
+
+ UNAME := $(shell uname)
+@@ -15,7 +15,7 @@ ifeq (${UNAME},Darwin)
+ LIBS = -liconv
+ endif
+
+-LIBS += -lutils -lnewimage -lmiscplot -lmiscpic -lmiscmaths -lNewNifti -lcifti -lxml++-2.6 -lxml2 -lboost_filesystem -lboost_system -lznz -lnewmat -lprob -lm -lgdc -lgd -lpng -lz
++LIBS += -lutils -lnewimage -lmiscplot -lmiscpic -lmiscmaths -lNewNifti ${CIFTILIBS} -lboost_filesystem -lboost_system -lznz -lnewmat -lprob -lm -lgdc -lgd -lpng -lz
+
+ TEST_OBJS = test.o
+
+--
+2.24.1
+
diff --git a/sci-biology/fsl/files/fsl-6.0.2-qstring_compat.patch b/sci-biology/fsl/files/fsl-6.0.2-qstring_compat.patch
new file mode 100644
index 000000000..9e6682a48
--- /dev/null
+++ b/sci-biology/fsl/files/fsl-6.0.2-qstring_compat.patch
@@ -0,0 +1,63 @@
+From 5a5ab3c80eaaea1fe9a43659e2ea5b773b587bb0 Mon Sep 17 00:00:00 2001
+From: François Bissey <frp.bissey@gmail.com>
+Date: Mon, 20 Jan 2020 11:51:52 +1300
+Subject: [PATCH] Because we use qstrings in ciftilib, calls to ciftilib file
+ function have to be made into compatible c strings.
+
+---
+ src/flameo/gsa.cc | 4 ++--
+ src/melodic/meldata.cc | 2 +-
+ src/melodic/meldata.h | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/flameo/gsa.cc b/src/flameo/gsa.cc
+index 70f8f385..16167abe 100644
+--- a/src/flameo/gsa.cc
++++ b/src/flameo/gsa.cc
+@@ -74,7 +74,7 @@ namespace GSA {
+ sourceType=mode;
+ if ( sourceType.compare("CIFTI") == 0 ) {
+ cifti::CiftiFile inputCifti;
+- inputCifti.openFile(make_basename(filename)+".nii");
++ inputCifti.openFile((make_basename(filename)+".nii").c_str());
+ ciftiExemplar=inputCifti.getCiftiXML();
+ cerr << "ndim " << ciftiExemplar.getNumberOfDimensions() << endl;
+ cerr << "type1 " << ciftiExemplar.getMappingType(0) << endl;
+@@ -194,7 +194,7 @@ namespace GSA {
+ scalarsMap.setLength(data.Nrows());
+ ciftiExemplar.setMap(0, scalarsMap);
+ CiftiFile outputFile;
+- outputFile.setWritingFile(make_basename(filename)+extension+".nii");//sets up on-disk writing with default writing version
++ outputFile.setWritingFile((make_basename(filename)+extension+".nii").c_str());//sets up on-disk writing with default writing version
+ outputFile.setCiftiXML(ciftiExemplar,false);
+ vector<float> scratchRow(data.Nrows());//read/write a row at a time
+ for (int64_t row=0;row<data.Ncols();row++) {
+diff --git a/src/melodic/meldata.cc b/src/melodic/meldata.cc
+index c4ad2349..1515e702 100644
+--- a/src/melodic/meldata.cc
++++ b/src/melodic/meldata.cc
+@@ -118,7 +118,7 @@ namespace Melodic{
+ tmpData = RawData.matrix(Mask);
+ memmsg(" after reshape ");
+ } else { //Read in Cifti
+- inputCifti.openFile(fname+".nii");
++ inputCifti.openFile((fname+".nii").c_str());
+ const vector<int64_t>& dims = inputCifti.getDimensions();
+ tmpData.ReSize(dims[0],dims[1]); //swapped compared to cifti
+ vector<float> scratchRow(dims[0]);//read/write a row at a time
+diff --git a/src/melodic/meldata.h b/src/melodic/meldata.h
+index 49774003..f5326bdd 100644
+--- a/src/melodic/meldata.h
++++ b/src/melodic/meldata.h
+@@ -109,7 +109,7 @@ namespace Melodic{
+ message(" " << logger.appendDir(fname) << endl);
+ } else { //Process CIFTI save ICs as float
+ cifti::CiftiFile outputFile;
+- outputFile.setWritingFile(logger.appendDir(fname)+".nii");//sets up on-disk writing with default writing version
++ outputFile.setWritingFile((logger.appendDir(fname)+".nii").c_str());//sets up on-disk writing with default writing version
+ cifti::CiftiXML xml(inputCifti.getCiftiXML());
+ cifti::CiftiScalarsMap scalarsMap;
+ std::vector<char> foo = xml.writeXMLToVector();
+--
+2.24.1
+
diff --git a/sci-biology/fsl/files/fsl-6.0.2-setup.patch b/sci-biology/fsl/files/fsl-6.0.2-setup.patch
new file mode 100644
index 000000000..39737fd85
--- /dev/null
+++ b/sci-biology/fsl/files/fsl-6.0.2-setup.patch
@@ -0,0 +1,198 @@
+From baae97cc3c8d0cadcabb7ed16559f4e4de26ddbe Mon Sep 17 00:00:00 2001
+From: François Bissey <frp.bissey@gmail.com>
+Date: Mon, 20 Jan 2020 11:54:37 +1300
+Subject: [PATCH] Adjust the build system so it doesnt build packages
+ externally provided by portage. Make the compilation flags more generic and
+ easily adjustable. Make the build system stop at the first fault.
+
+---
+ build | 6 +++---
+ config/buildSettings.mk | 20 ++++++++++----------
+ config/common/buildproj | 8 +++++---
+ config/common/vars.mk | 10 +++++-----
+ extras/build | 8 ++++----
+ src/mist-clean/Makefile | 2 +-
+ 6 files changed, 28 insertions(+), 26 deletions(-)
+
+diff --git a/build b/build
+index 05dac06c..d90e407b 100755
+--- a/build
++++ b/build
+@@ -3,7 +3,7 @@
+ if [ $# -ge 1 ] ; then
+ PROJECTS="$@";
+ else
+- MASTERPROJECTS="CiftiLib-master utils znzlib NewNifti niftiio fslio giftiio miscmaths newimage libhfunc libvis first_lib \
++ MASTERPROJECTS="utils znzlib NewNifti niftiio fslio giftiio miscmaths newimage libhfunc libvis first_lib \
+ meshclass fslvtkio misc_tcl basisfield warpfns bint shapeModel MVdisc fslvtkconv fslsurface libmeshutils newmesh \
+ DiscreteOpt FastPDlib MSMRegLib misc_c dpm topup \
+ asl_mfree \
+@@ -80,8 +80,8 @@ xtract";
+ done
+ fi
+
+-echo "Building projects - see build.log file for progress..."
+-./config/common/buildproj $PROJECTS > ./build.log 2>&1
++echo "Building projects"
++./config/common/buildproj $PROJECTS
+ finalStatus=$?
+ if [ $finalStatus -eq 0 ]; then
+ echo "Build completed successfully.";
+diff --git a/config/buildSettings.mk b/config/buildSettings.mk
+index b2e1f150..04532fc2 100644
+--- a/config/buildSettings.mk
++++ b/config/buildSettings.mk
+@@ -18,7 +18,7 @@ MV = /bin/mv
+ CHMOD = /bin/chmod
+ MKDIR = /bin/mkdir
+ INSTALL = install -p
+-TCLSH = ${FSLDIR}/bin/fsltclsh
++TCLSH = tclsh
+ DEPENDFLAGS = -MM
+ MACHDBGFLAGS = -g
+ #####################################################################
+@@ -124,19 +124,19 @@ endif # if Darwin
+ #####################################################################
+ ifeq ($(SYSTYPE), Linux)
+ ############### System Vars #####################################
+-CC = gcc
+-CXX = c++
+-CXX11 = c++
++CC = @@GENTOO_CC@@
++CXX = @@GENTOO_CXX@@
++CXX11 = @@GENTOO_CXX@@
+ CSTATICFLAGS = -static
+ CXXSTATICFLAGS = -static
+-ARCHFLAGS = -m64
+-ARCHLDFLAGS = -Wl,-rpath,'$$ORIGIN/../lib'
++ARCHFLAGS =
++ARCHLDFLAGS =
+ PARALLELFLAGS = -fopenmp
+-OPTFLAGS = -g -O3 -fexpensive-optimizations ${ARCHFLAGS}
++OPTFLAGS =
+ GNU_ANSI_FLAGS = -Wall -ansi -pedantic -Wno-long-long
+ SGI_ANSI_FLAGS = -ansi -fullwarn
+ ANSI_FLAGS = ${GNU_ANSI_FLAGS}
+-RANLIB = echo
++RANLIB = @@GENTOO_RANLIB@@
+ FSLML = ${FSLDIR}/bin/fslml
+ # CUDA development environment
+ CUDAVER := $(or $(CUDAVER),9.1)
+@@ -148,8 +148,8 @@ INC_CUDA = ${CUDA_INSTALLATION}/include
+ NVCC = ${CUDA_INSTALLATION}/bin/nvcc
+ ############### External Libs #####################################
+ # ZLIB library
+-LIB_ZLIB = /lib64
+-INC_ZLIB = /usr/include
++#LIB_ZLIB = /lib64
++#INC_ZLIB = /usr/include
+ # QT library
+ QTDIR = /usr/lib/qt3
+ LIB_QT = ${QTDIR}/lib
+diff --git a/config/common/buildproj b/config/common/buildproj
+index 2f0f2b8f..48624a1f 100755
+--- a/config/common/buildproj
++++ b/config/common/buildproj
+@@ -11,10 +11,10 @@ if [ X$1 = X-strict ] ; then
+ fi
+ PROJECTS="$@" ; export PROJECTS ;
+
+-FSLDIR=`pwd`
++#FSLDIR=`pwd`
+ FSLDEVDIR=${FSLDIR}
+ FSLCONFDIR=${FSLDIR}/config
+-FSLMACHTYPE=`${FSLDIR}/etc/fslconf/fslmachtype.sh`
++#FSLMACHTYPE=`${FSLDIR}/etc/fslconf/fslmachtype.sh`
+ FSLMASTERBUILD=1
+ export FSLDIR FSLDEVDIR FSLCONFDIR FSLMACHTYPE FSLMASTERBUILD
+
+@@ -67,7 +67,7 @@ for projname in $PROJECTS; do
+ if [ -x ./fslconfig ] ; then
+ . ./fslconfig ;
+ fi
+- if ${MAKE} -k ${MAKEOPTIONS} ; then
++ if ${MAKE} ${MAKEOPTIONS} ; then
+ if ${MAKE} ${MAKEOPTIONS} install ; then
+ installok=true;
+ # Clean up after ourselves
+@@ -82,6 +82,7 @@ for projname in $PROJECTS; do
+ if [ $installok = false ] ; then
+ echo " "
+ echo "ERROR::Could not install $projname successfully" ;
++ exit 1
+ fi
+ else
+ echo " "
+@@ -90,6 +91,7 @@ for projname in $PROJECTS; do
+ echo " "
+ echo " "
+ errorprojs="$errorprojs $projname" ; export errorprojs ;
++ exit 1
+ fi
+ fi
+ done
+diff --git a/config/common/vars.mk b/config/common/vars.mk
+index b027b010..aeeae67c 100755
+--- a/config/common/vars.mk
++++ b/config/common/vars.mk
+@@ -24,15 +24,15 @@ USRINCFLAGS =
+ USRCFLAGS =
+ USRCXXFLAGS =
+
+-LDFLAGS = ${ARCHLDFLAGS} ${USRLDFLAGS} -L. -L${DEVLIBDIR} -L${LIBDIR}
++LDFLAGS = ${ARCHLDFLAGS} ${USRLDFLAGS} -L. -L${DEVLIBDIR} -L${LIBDIR} ${USERLDFLAGS}
+
+-AccumulatedIncFlags = -I${INC_BOOST} ${USRINCFLAGS} -I. -I${DEVINCDIR} -I${INCDIR}
++AccumulatedIncFlags = ${USRINCFLAGS} -I. -I${DEVINCDIR} -I${INCDIR} ${CPPFLAGS}
+
+ CFLAGS = ${ANSI_FLAGS} ${ANSI_CFLAGS} ${DBGFLAGS} ${USEDCSTATICFLAGS} ${USRCFLAGS} ${ARCHFLAGS} ${OPTFLAGS} \
+- ${AccumulatedIncFlags}
++ ${AccumulatedIncFlags} ${USERCFLAGS}
+
+-CXXFLAGS = ${ANSI_FLAGS} ${ANSI_CXXFLAGS} ${DBGFLAGS} ${USEDCXXSTATICFLAGS} ${USRCXXFLAGS} ${ARCHFLAGS} ${OPTFLAGS} \
+- ${AccumulatedIncFlags}
++CXXFLAGS = ${ANSI_CXXFLAGS} ${DBGFLAGS} ${USEDCXXSTATICFLAGS} ${USRCXXFLAGS} ${ARCHFLAGS} ${OPTFLAGS} \
++ ${AccumulatedIncFlags} ${USERCXXFLAGS}
+
+ HFILES = *.h
+ AFILES = *.a
+diff --git a/extras/build b/extras/build
+index 59e7a2ed..0d68232e 100755
+--- a/extras/build
++++ b/extras/build
+@@ -96,16 +96,16 @@ if [ X"${OS}" = "XDarwin" ]; then
+ BUILDICONV=1
+ fi
+ fi
+-PROJECTS="tcl tk"
++#PROJECTS="tcl tk"
+ if [ ${BUILDZLIB} -eq 1 ]; then
+ PROJECTS="${PROJECTS} zlib"
+ fi
+-PROJECTS="${PROJECTS} libpng"
++#PROJECTS="${PROJECTS} libpng"
+ if [ ${BUILDICONV} -eq 1 ]; then
+ PROJECTS="${PROJECTS} libiconv"
+ fi
+-PROJECTS="${PROJECTS} libgd libgdc libprob libcprob newmat cprob newran fftw"
+-PROJECTS="${PROJECTS} boost libxml2-2.9.2 libxmlpp libsqlite libnlopt ../include/armawrap/dummy_newmat"
++PROJECTS="${PROJECTS} libgdc libprob libcprob newmat cprob newran"
++PROJECTS="${PROJECTS} ../include/armawrap/dummy_newmat"
+ for projname in $PROJECTS; do
+ if [ -d $FSLESRCDIR/$projname ] ; then
+ buildIt $FSLESRCDIR $projname 1
+diff --git a/src/mist-clean/Makefile b/src/mist-clean/Makefile
+index 20402cca..6918bee4 100755
+--- a/src/mist-clean/Makefile
++++ b/src/mist-clean/Makefile
+@@ -52,6 +52,6 @@ installpython:
+ cp -r python/* ${DESTDIR}/python/mist
+
+ clean:
+- rm -f ${OBJS} mist/mist.o mist/mist
++ rm -f ${OBJS} mist/mist.o mist/mist || echo "CLEAN could not locate some files scheduled for deletion."
+
+ .PHONY: all clean installdata
+--
+2.24.1
+
diff --git a/sci-biology/fsl/fsl-6.0.2.ebuild b/sci-biology/fsl/fsl-6.0.2.ebuild
new file mode 100644
index 000000000..cde479421
--- /dev/null
+++ b/sci-biology/fsl/fsl-6.0.2.ebuild
@@ -0,0 +1,164 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic toolchain-funcs prefix
+
+DESCRIPTION="Analysis of functional, structural, and diffusion MRI brain imaging data"
+HOMEPAGE="http://www.fmrib.ox.ac.uk/fsl"
+SRC_URI="https://fsl.fmrib.ox.ac.uk/fsldownloads/${P}-sources.tar.gz -> ${P}.tar.gz"
+
+LICENSE="FSL BSD-2 newmat"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+DEPEND="
+ dev-libs/boost
+ dev-python/fslpy
+ media-gfx/graphviz
+ media-libs/gd
+ media-libs/glu
+ media-libs/libpng:0=
+ sci-libs/ciftilib
+ sci-libs/nlopt
+ sys-libs/zlib
+ dev-lang/tcl:0=
+ dev-lang/tk:0=
+ >=virtual/lapack-3.8
+ >=virtual/blas-3.8
+ "
+RDEPEND="${DEPEND}"
+
+S=${WORKDIR}/${PN}
+UPSTREAM_FSLDIR="/usr/share/fsl"
+
+PATCHES=(
+ "${FILESDIR}/${PN}"-6.0.2-setup.patch
+ "${FILESDIR}/${PN}"-6.0.2-no_xmlpp.patch
+ "${FILESDIR}/${PN}"-5.0.11-niftiio_var_fix.patch
+ "${FILESDIR}/${PN}"-5.0.11-ifstream_use.patch
+ "${FILESDIR}/${PN}"-5.0.11-fslsurface_parallel_make.patch
+ "${FILESDIR}/${PN}"-6.0.2-qstring_compat.patch
+ "${FILESDIR}/${PN}"-5.0.9-headers.patch
+ "${FILESDIR}/${PN}"-6.0.2-fsldir_redux.patch
+)
+
+src_prepare(){
+ default
+
+ sed -i \
+ -e "s:@@GENTOO_RANLIB@@:$(tc-getRANLIB):" \
+ -e "s:@@GENTOO_CC@@:$(tc-getCC):" \
+ -e "s:@@GENTOO_CXX@@:$(tc-getCXX):" \
+ config/buildSettings.mk || die
+
+ eprefixify $(grep -rl GENTOO_PORTAGE_EPREFIX src/*) \
+ etc/js/label-div.html
+
+ # Disable mist-clean the hard way for now.
+ rm -rf src/mist-clean
+
+ makefilelist=$(find src/ -name Makefile)
+
+ sed -i \
+ -e "s:-I\${INC_BOOST}::" \
+ -e "s:-I\${INC_ZLIB}::" \
+ -e "s:-I\${INC_GD}::" \
+ -e "s:-I\${INC_PNG}::" \
+ -e "s:-L\${LIB_GD}::" \
+ -e "s:-L\${LIB_PNG}::" \
+ -e "s:-L\${LIB_ZLIB}::" \
+ ${makefilelist} || die
+
+ sed -e "s:\${FSLDIR}/bin/::g" \
+ -e "s:\$FSLDIR/bin/::g" \
+ -i $(grep -rl "\${FSLDIR}/bin" src/*) \
+ -i $(grep -rl "\$FSLDIR/bin" src/*) \
+ $(grep -rl "\${FSLDIR}/bin" etc/matlab/*)\
+ $(grep -rl "\$FSLDIR/bin" etc/matlab/*) || die
+
+ sed -e "s:\$FSLDIR/data:${EPREFIX}/usr/share/fsl/data:g" \
+ -e "s:\${FSLDIR}/data:${EPREFIX}/usr/share/fsl/data:g" \
+ -i $(grep -rl "\$FSLDIR/data" src/*) \
+ $(grep -rl "\${FSLDIR}/data" src/*) || die
+
+ sed -e "s:\$FSLDIR/doc:${EPREFIX}/usr/share/fsl/doc:g" \
+ -e "s:\${FSLDIR}/doc:${EPREFIX}/usr/share/fsl/doc:g" \
+ -i $(grep -rl "\$FSLDIR/doc" src/*) \
+ $(grep -rl "\${FSLDIR}/doc" src/*) || die
+
+ sed -e "s:/usr/share/fsl/doc:${EPREFIX}/usr/share/fsl/doc:g" \
+ -i $(grep -rl "/usr/share/fsl/doc" src/*) || die
+
+ sed -e "s:\$FSLDIR/etc:${EPREFIX}/etc:g" \
+ -e "s:\${FSLDIR}/etc:${EPREFIX}/etc:g" \
+ -i $(grep -rlI "\$FSLDIR/etc" *) \
+ -i $(grep -rlI "\${FSLDIR}/etc" *) || die
+
+ # Use generic blas/lapack rather than openblas
+ sed -e "s:-lopenblas:-llapack -lblas:g" \
+ -i $(grep -rlI lopenblas *) || die
+
+ # script wanting to have access to flsversion at buildtime
+ sed -e "s:/etc/fslversion:${S}/etc/fslversion:g" \
+ -i ${makefilelist} || die
+}
+
+src_compile() {
+ export FSLDIR=${WORKDIR}/${PN}
+ export FSLCONDIR=${WORKDIR}/${PN}/config
+ export FSLMACHTYPE=generic
+
+ export USERLDFLAGS="${LDFLAGS}"
+ export USERCFLAGS="${CFLAGS}"
+ export USERCXXFLAGS="${CXXFLAGS}"
+
+ export CIFTICFLAGS="$($(tc-getPKG_CONFIG) --cflags CiftiLib)"
+ export CIFTILIBS="$($(tc-getPKG_CONFIG) --libs-only-l CiftiLib)"
+
+ ./build || die
+}
+
+src_install() {
+ sed -i "s:\${FSLDIR}/tcl:/usr/libexec/fsl:g" \
+ $(grep -lI "\${FSLDIR}/tcl" bin/*) \
+ $(grep -l "\${FSLDIR}/tcl" tcl/*) || die
+ sed -i "s:\$FSLDIR/tcl:/usr/libexec/fsl:g" \
+ $(grep -l "\$FSLDIR/tcl" tcl/*) || die
+
+ dobin bin/*
+
+ insinto /usr/share/${PN}
+ doins -r data
+ dodoc -r doc/. refdoc
+
+ insinto /usr/libexec/fsl
+ doins -r tcl/*
+
+ insinto /etc/fslconf
+ doins etc/fslconf/fsl.sh
+
+ insinto /etc
+ doins etc/fslversion
+ doins -r etc/default_flobs.flobs etc/flirtsch etc/js etc/luts
+
+ #the following is needed for FSL and depending programs to be able
+ #to find its files, since FSL uses an uncommon installation path:
+ #https://github.com/gentoo-science/sci/pull/612#r60289295
+ dosym ../../../etc ${UPSTREAM_FSLDIR}/etc
+ dosym ../doc/${PF} ${UPSTREAM_FSLDIR}/doc
+ dosym ../../bin ${UPSTREAM_FSLDIR}/bin
+
+ doenvd "$(prefixify_ro "${FILESDIR}"/99fsl)"
+ mv "${ED}"/usr/bin/{,fsl_}cluster || die
+}
+
+pkg_postinst() {
+ echo
+ einfo "Please run the following commands if you"
+ einfo "intend to use fsl from an existing shell:"
+ einfo "env-update && source /etc/profile"
+ echo
+}