From b63ff309897cc8faf822922eae3bc23eaa8315f1 Mon Sep 17 00:00:00 2001 From: Horea Christian Date: Mon, 15 Oct 2018 03:38:45 +0200 Subject: [PATCH 1/4] FSL version bump ahead of Gentoo Science --- sci-biology/fsl/Manifest | 1 + sci-biology/fsl/files/99fsl | 5 + sci-biology/fsl/files/fsl-5.0.10-setup.patch | 121 +++++ .../fsl/files/fsl-5.0.9-fsldir_redux.patch | 456 ++++++++++++++++++ sci-biology/fsl/files/fsl-5.0.9-headers.patch | 15 + sci-biology/fsl/files/fsl-5.0.9-setup.patch | 115 +++++ sci-biology/fsl/fsl-5.0.11.ebuild | 147 ++++++ sci-biology/fsl/metadata.xml | 11 + 8 files changed, 871 insertions(+) create mode 100644 sci-biology/fsl/Manifest create mode 100644 sci-biology/fsl/files/99fsl create mode 100644 sci-biology/fsl/files/fsl-5.0.10-setup.patch create mode 100644 sci-biology/fsl/files/fsl-5.0.9-fsldir_redux.patch create mode 100644 sci-biology/fsl/files/fsl-5.0.9-headers.patch create mode 100644 sci-biology/fsl/files/fsl-5.0.9-setup.patch create mode 100644 sci-biology/fsl/fsl-5.0.11.ebuild create mode 100644 sci-biology/fsl/metadata.xml diff --git a/sci-biology/fsl/Manifest b/sci-biology/fsl/Manifest new file mode 100644 index 0000000..4590c99 --- /dev/null +++ b/sci-biology/fsl/Manifest @@ -0,0 +1 @@ +DIST fsl-5.0.11.tar.gz 1507525689 SHA256 8a76d36ff280ab3bfa79c46838a1baf7ea8ffe21d0b84bc7546cb8a1cef46c57 SHA512 6f859723f8e4bd7e381761983f6423364180f5d3300cb165a3e57f3535d5301624ecb30c1796dae9579da5dd16e80a8a62d9994fec1caebf0835c2f6795ca055 WHIRLPOOL 00075ce453db0e65fd513d66cea8519193f5aee3bc0c971df0e4c637a453e3dfead464fcf615d15b743110633a05d0216a2867092ad68ef90593d32dadd0d247 diff --git a/sci-biology/fsl/files/99fsl b/sci-biology/fsl/files/99fsl new file mode 100644 index 0000000..41db5c5 --- /dev/null +++ b/sci-biology/fsl/files/99fsl @@ -0,0 +1,5 @@ +FSLOUTPUTTYPE=NIFTI_GZ +FSLMULTIFILEQUIT=TRUE +FSLTCLSH=tclsh +FSLWISH=wish +FSLDIR=/usr/share/fsl diff --git a/sci-biology/fsl/files/fsl-5.0.10-setup.patch b/sci-biology/fsl/files/fsl-5.0.10-setup.patch new file mode 100644 index 0000000..e19203e --- /dev/null +++ b/sci-biology/fsl/files/fsl-5.0.10-setup.patch @@ -0,0 +1,121 @@ +diff -Naur fsl.orig/build fsl/build +--- fsl.orig/build 2015-03-29 00:10:39.845936000 +1300 ++++ fsl/build 2015-03-29 00:12:37.160487000 +1300 +@@ -26,5 +26,5 @@ + 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=$? +diff -Naur fsl.orig/config/common/buildproj fsl/config/common/buildproj +--- fsl.orig/config/common/buildproj 2015-03-29 00:11:47.130998000 +1300 ++++ fsl/config/common/buildproj 2015-03-29 00:12:37.164319000 +1300 +@@ -11,10 +11,10 @@ + 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` + export FSLDIR FSLDEVDIR FSLCONFDIR FSLMACHTYPE + + buildmessages="" ; export buildmessages ; +@@ -66,7 +66,7 @@ + if [ -x fslconfig ] ; then + ./fslconfig ; + fi +- if ${MAKE} -k ${MAKEOPTIONS} ; then ++ if ${MAKE} ${MAKEOPTIONS} ${MAKEOPTS} ; then + if ${MAKE} ${MAKEOPTIONS} install ; then + installok=true; + # Clean up after ourselves +diff -Naur fsl.orig/config/common/vars.mk fsl/config/common/vars.mk +--- fsl.orig/config/common/vars.mk 2015-03-29 00:11:47.183520000 +1300 ++++ fsl/config/common/vars.mk 2015-03-29 00:18:53.151222000 +1300 +@@ -24,15 +24,15 @@ + 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 = -I${INC_BOOST} ${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} ++ ${AccumulatedIncFlags} ${USERCXXFLAGS} + + HFILES = *.h + AFILES = *.a +diff -Naur fsl.orig/config/generic/systemvars.mk fsl/config/generic/systemvars.mk +--- fsl.orig/config/generic/systemvars.mk 2015-03-29 00:11:47.534246000 +1300 ++++ fsl/config/generic/systemvars.mk 2015-03-29 00:12:37.162129000 +1300 +@@ -4,20 +4,20 @@ + + # System dependent commands (NB: the first two are the most platform dependent) + +-INSTALL = ginstall -p +-RANLIB = ranlib ++INSTALL = install -p ++RANLIB = @@GENTOO_RANLIB@@ + + RM = /bin/rm + CP = /bin/cp + MV = /bin/mv + CHMOD = /bin/chmod + MKDIR = /bin/mkdir +-TCLSH = ${FSLDIR}/bin/fsltclsh ++TCLSH = tclsh + + # Compiler dependent variables + +-CC = gcc +-CXX = c++ ++CC = @@GENTOO_CC@@ ++CXX = @@GENTOO_CXX@@ + CSTATICFLAGS = -static + CXXSTATICFLAGS = -static + +@@ -25,7 +25,7 @@ + + DEPENDFLAGS = -MM + +-OPTFLAGS = -O3 -fexpensive-optimizations ${ARCHFLAGS} ++OPTFLAGS = + MACHDBGFLAGS = + GNU_ANSI_FLAGS = -Wall -ansi -pedantic + SGI_ANSI_FLAGS = -ansi -fullwarn +diff -Naur fsl.orig/extras/build fsl/extras/build +--- fsl.orig/extras/build 2015-03-29 00:11:15.080236000 +1300 ++++ fsl/extras/build 2015-03-29 00:15:53.170496000 +1300 +@@ -104,7 +104,7 @@ + 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 libxml++-2.34.0 libsqlite libnlopt ../include/armawrap/dummy_newmat" ++PROJECTS="libgdc libprob libcprob newmat cprob newran" ++PROJECTS="${PROJECTS} boost libsqlite libnlopt ../include/armawrap/dummy_newmat" + for projname in $PROJECTS; do + if [ -d $FSLESRCDIR/$projname ] ; then +diff -Naur fsl.orig/src/mist-clean/Makefile fsl/src/mist-clean/Makefile +--- fsl.orig/src/mist-clean/Makefile 2006-03-27 10:48:16.000000000 +0200 ++++ fsl/src/mist-clean/Makefile 2018-10-08 16:16:01.180310611 +0200 +@@ -52,6 +52,6 @@ + cp -r python/* ${DESTDIR}/python/mist + + clean: +- rm ${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 diff --git a/sci-biology/fsl/files/fsl-5.0.9-fsldir_redux.patch b/sci-biology/fsl/files/fsl-5.0.9-fsldir_redux.patch new file mode 100644 index 0000000..c28fabe --- /dev/null +++ b/sci-biology/fsl/files/fsl-5.0.9-fsldir_redux.patch @@ -0,0 +1,456 @@ +# Adapt hard-coded paths to the directory structure of Gentoo (including Prefix) +# From: Francois Bissey +# Signed-off-by: Horea Christian + +diff -Naur fsl.orig/src/fast4/fast_two.cc fsl/src/fast4/fast_two.cc +--- fsl.orig/src/fast4/fast_two.cc 2015-03-30 11:54:10.522550233 +1300 ++++ fsl/src/fast4/fast_two.cc 2015-03-30 11:54:18.412569892 +1300 +@@ -166,7 +166,7 @@ + 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 @@ + 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< G; + vector 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]; + +@@ -760,8 +760,6 @@ + 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)); +@@ -1491,7 +1489,7 @@ + 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); +@@ -2134,6 +2132,6 @@ + + fclose(outputfile); + +- filename=string(getenv("FSLDIR")) + "/bin/wpng -q -overwrite " + filename; ++ filename="wpng -q -overwrite " + filename; + system(filename.c_str()); + } +diff -Naur fsl.orig/src/feat5/tsplot.cc fsl/src/feat5/tsplot.cc +--- fsl.orig/src/feat5/tsplot.cc 2015-03-30 11:54:10.502550183 +1300 ++++ fsl/src/feat5/tsplot.cc 2015-03-30 11:54:18.412569892 +1300 +@@ -293,7 +293,7 @@ + ofstream outputFile; + int numEVs, npts, numContrasts=1, nftests=0, GRPHSIZE(600), PSSIZE(600); + vector 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 @@ + if (argc<2) usage(""); + featdir=string(argv[1]); + fmriFileName=featdir+"/filtered_func_data"; +- fslPath=string(getenv("FSLDIR")); + + string outputName(featdir); + +@@ -725,7 +724,7 @@ + cerr << "Can't open output report file " << outputName << endl; + exit(1); + } +- outputFile << "\n"<< statType << num2str(i) <<"\n\n
\n

FEAT Time Series Report - "<< statType << num2str(i) <<"

\n
\n
Full plots

\n"<< graphText; ++ outputFile << "\n"<< statType << num2str(i) <<"\n\n


\n

FEAT Time Series Report - "<< statType << num2str(i) <<"

\n
\n
Full plots

\n"<< graphText; + if (useTriggers) outputFile << "\n


Peristimulus plots

\n"<< peristimulusText <<"\n


\n\n"; + else outputFile << "\n\n\n"; + outputFile.close(); +@@ -740,7 +739,7 @@ + cerr << "Can't open output report file " << outputName << endl; + exit(1); + } +- outputFile << "\nFEAT Time Series Report\n\n
\n

FEAT Time Series Report

\n
\n
" << indexText << "
" << endl << endl; ++ outputFile << "\nFEAT Time Series Report\n\n
\n

FEAT Time Series Report

\n
\n
" << indexText << "
" << endl << endl; + outputFile.close(); + + /* now output same thing without start and end, for inclusion in feat report */ +diff -Naur fsl.orig/src/first/first_utils.cc fsl/src/first/first_utils.cc +--- fsl.orig/src/first/first_utils.cc 2015-03-30 11:54:10.482550135 +1300 ++++ fsl/src/first/first_utils.cc 2015-03-30 11:54:18.412569892 +1300 +@@ -1954,8 +1954,8 @@ + 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 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 maskvol(refim); + maskvol=0.0f; + volume4D volnormals; +diff -Naur fsl.orig/src/fnirt/fnirtfns.cpp fsl/src/fnirt/fnirtfns.cpp +--- fsl.orig/src/fnirt/fnirtfns.cpp 2015-03-30 11:54:10.522550233 +1300 ++++ fsl/src/fnirt/fnirtfns.cpp 2015-03-30 11:54:18.412569892 +1300 +@@ -1203,8 +1203,7 @@ + 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::fsl_imageexists(eref_fname)) return(eref_fname); + else return(string("")); + } +@@ -1230,9 +1229,8 @@ + 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 @@ + 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 -Naur fsl.orig/src/fslsurface/fslsurface_first.cc fsl/src/fslsurface/fslsurface_first.cc +--- fsl.orig/src/fslsurface/fslsurface_first.cc 2015-03-30 11:54:10.522550233 +1300 ++++ fsl/src/fslsurface/fslsurface_first.cc 2015-03-30 11:54:18.412569892 +1300 +@@ -500,8 +500,7 @@ + + volume* immni = new volume(); + +- 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 @@ + + volume* immni = new volume(); + +- 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 -Naur fsl.orig/src/fslsurface/fslsurfacemaths.cpp fsl/src/fslsurface/fslsurfacemaths.cpp +--- fsl.orig/src/fslsurface/fslsurfacemaths.cpp 2015-03-30 11:54:10.522550233 +1300 ++++ fsl/src/fslsurface/fslsurfacemaths.cpp 2015-03-30 11:54:18.412569892 +1300 +@@ -598,12 +598,6 @@ + + }else if (command == "-reconFromBvars"){ + cout<<"do recon "<0){ +@@ -1136,7 +1136,7 @@ + // 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 -Naur fsl.orig/src/melodic/meloptions.cc fsl/src/melodic/meloptions.cc +--- fsl.orig/src/melodic/meloptions.cc 2015-03-30 11:54:10.502550183 +1300 ++++ fsl/src/melodic/meloptions.cc 2015-03-30 11:54:18.412569892 +1300 +@@ -93,14 +93,6 @@ + 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 -Naur fsl.orig/src/melodic/meloptions.h fsl/src/melodic/meloptions.h +--- fsl.orig/src/melodic/meloptions.h 2015-03-30 11:54:10.502550183 +1300 ++++ fsl/src/melodic/meloptions.h 2015-03-30 11:54:18.412569892 +1300 +@@ -93,7 +93,6 @@ + ~MelodicOptions() { delete gopt; } + + string version; +- string binpath; + string logfname; + bool filtermode; + bool explicitnums; +diff -Naur fsl.orig/src/melodic/melreport.cc fsl/src/melodic/melreport.cc +--- fsl.orig/src/melodic/melreport.cc 2015-03-30 11:54:10.502550183 +1300 ++++ fsl/src/melodic/melreport.cc 2015-03-30 11:54:18.412569892 +1300 +@@ -84,8 +84,8 @@ + IChtml.setDir(report.getDir(),mmodel.get_prefix()+".html"); + + {//start IC page +- IChtml << "" << endl ++ IChtml << "" << endl + << "" + << "FSL" << endl + << "