From 7d67577156938801b9812bddfcaafff329a5e965 Mon Sep 17 00:00:00 2001 From: Glenn Johnson Date: Mon, 11 Apr 2022 03:47:38 -0500 Subject: heasoft: add new package (#29841) --- .../heasoft/heasoft-6.29_tcltk-configure.patch | 39 +++++ .../heasoft/heasoft-6.29_xspec-12.12.0a.patch | 38 ++++ .../heasoft/heasoft-6.29_xspec-12.12.0b.patch | 34 ++++ .../heasoft/heasoft-6.29_xspec-12.12.0c.patch | 53 ++++++ .../heasoft/heasoft-6.29_xspec-12.12.0d.patch | 65 +++++++ .../heasoft/heasoft-6.29_xspec-12.12.0e.patch | 194 +++++++++++++++++++++ .../heasoft/heasoft-6.29_xspec-12.12.0f.patch | 35 ++++ .../heasoft/heasoft-6.29_xspec-12.12.0g.patch | 12 ++ .../heasoft/heasoft-6.29_xspec-12.12.0ver.patch | 11 ++ .../heasoft/heasoft-6.30_tcltk-configure.patch | 39 +++++ .../repos/builtin/packages/heasoft/package.py | 143 +++++++++++++++ .../repos/builtin/packages/heasoft/setup.patch | 55 ++++++ 12 files changed, 718 insertions(+) create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_tcltk-configure.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0a.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0b.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0c.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0d.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0e.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0f.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0g.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0ver.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/heasoft-6.30_tcltk-configure.patch create mode 100644 var/spack/repos/builtin/packages/heasoft/package.py create mode 100644 var/spack/repos/builtin/packages/heasoft/setup.patch diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_tcltk-configure.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_tcltk-configure.patch new file mode 100644 index 0000000000..60c1d683e2 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_tcltk-configure.patch @@ -0,0 +1,39 @@ +--- a/tcltk/BUILD_DIR/configure 2021-07-13 14:18:46.000000000 -0500 ++++ b/tcltk/BUILD_DIR/configure 2022-02-15 13:32:41.678576015 -0600 +@@ -6080,36 +6080,6 @@ + x_includes="/usr/local/include" + fi + fi +- # AC_PATH_X checks for Xlib.h, but somehow a missing X11/Xlib.h can +- # still get past it and cause problems later in the build (tk.h), so +- # try an additional test here just to make sure that it's installed: +- if test "x$x_includes" = "x"; then +- as_fn_error $? "No X11 include directory found. Please specify location using --x-includes option." "$LINENO" 5 +- else +- xlib_h="$x_includes/X11/Xlib.h" +- xintrinsic_h="$x_includes/X11/Intrinsic.h" +- xstringdefs_h="$x_includes/X11/StringDefs.h" +- if test -f $xlib_h; then +- if test -f $xintrinsic_h; then +- if test -f $xstringdefs_h; then +- XINCLUDES="-I$x_includes" +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Found $xlib_h" >&5 +-$as_echo "Found $xlib_h" >&6; } +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using $x_includes for X11 header files" >&5 +-$as_echo "Using $x_includes for X11 header files" >&6; } +- else +- as_fn_error $? "Required header X11/StringDefs.h not found in $x_includes" "$LINENO" 5 +- as_fn_error $? "X11 Development package is required in order to build HEASOFT" "$LINENO" 5 +- fi +- else +- as_fn_error $? "Required header X11/Intrinsic.h not found in $x_includes" "$LINENO" 5 +- as_fn_error $? "X11 Development package is required in order to build HEASOFT" "$LINENO" 5 +- fi +- else +- as_fn_error $? "Required header X11/Xlib.h not found in $x_includes" "$LINENO" 5 +- as_fn_error $? "X11 Development package is required in order to build HEASOFT" "$LINENO" 5 +- fi +- fi + + # X11 libraries: Having a -L path for libX11 is not always necessary, + # but when passing a value for x_includes to external packages (e.g. diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0a.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0a.patch new file mode 100644 index 0000000000..9cb627589c --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0a.patch @@ -0,0 +1,38 @@ +--- a/Xspec/src/XSUser/UserInterface/execscript.cxx 2021-02-19 10:47:02.000000000 -0600 ++++ b/Xspec/src/XSUser/UserInterface/execscript.cxx 2022-02-16 10:35:18.765454040 -0600 +@@ -366,19 +366,23 @@ + XSparse::collateByWhitespace(lineArgs, buffer); + string procName; + string scriptName; +- +- if (lineArgs[0] == "cd") ++ // Careful, if line contained whitespace and nothing but ++ // whitespace, lineArgs vector will be empty. ++ if (lineArgs.size()) + { +- // If no second argument, assume cd into home directory. +- string cdPath = (lineArgs.size() < 2) ? string("~/") : lineArgs[1]; +- appendPathToScript(cdPath, currPathToScript); +- } +- else if (findProcFromLineArgs(lineArgs, procName)) +- userProcs.insert(procName); +- else if (isCallToScript(lineArgs, scriptName)) +- { +- // Recursive call +- status = findNestedUserProcs(scriptName, userProcs, currPathToScript); ++ if (lineArgs[0] == "cd") ++ { ++ // If no second argument, assume cd into home directory. ++ string cdPath = (lineArgs.size() < 2) ? string("~/") : lineArgs[1]; ++ appendPathToScript(cdPath, currPathToScript); ++ } ++ else if (findProcFromLineArgs(lineArgs, procName)) ++ userProcs.insert(procName); ++ else if (isCallToScript(lineArgs, scriptName)) ++ { ++ // Recursive call ++ status = findNestedUserProcs(scriptName, userProcs, currPathToScript); ++ } + } + } + } diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0b.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0b.patch new file mode 100644 index 0000000000..22d5db9bde --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0b.patch @@ -0,0 +1,34 @@ +--- a/Xspec/src/XSStat/Cstat.h 2021-02-19 10:47:02.000000000 -0600 ++++ b/Xspec/src/XSStat/Cstat.h 2022-02-16 10:37:53.682939519 -0600 +@@ -134,10 +134,13 @@ + return; + } + } else { +- Real bTime (background->data()->exposureTime()); ++ // tb includes the background exposure time multiplied by the ratios ++ // between the source and background BACKSCALE and AREASCALE. + RealArray tb (background->data()->backgroundScale()[IN]); + tb /= sp->backgroundScale()[IN]; +- tb *= bTime; ++ tb *= background->data()->areaScale()[IN]; ++ tb /= sp->areaScale()[IN]; ++ tb *= background->data()->exposureTime(); + RealArray B (tb * background->spectrum()[IN]); + RealArray Berr (tb * background->variance()[IN]); + +@@ -228,10 +231,13 @@ + T::specificResetCalc(S, ts, model, number(), modifier(), diff1, diff2); + } else { + // Variable definitions follow Appendix B of manual. +- Real bTime (background->data()->exposureTime()); ++ // tb includes the background exposure time multiplied by the ratios ++ // between the source and background BACKSCALE and AREASCALE. + RealArray tb (background->data()->backgroundScale()[IN]); + tb /= sp->backgroundScale()[IN]; +- tb *= bTime; ++ tb *= background->data()->areaScale()[IN]; ++ tb /= sp->areaScale()[IN]; ++ tb *= background->data()->exposureTime(); + RealArray B (tb * background->spectrum()[IN]); + RealArray Berr (tb * background->variance()[IN]); + diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0c.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0c.patch new file mode 100644 index 0000000000..427ca2960b --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0c.patch @@ -0,0 +1,53 @@ +diff -u a/Xspec/src/XSFunctions/sumdem.cxx b/Xspec/src/XSFunctions/sumdem.cxx +--- a/Xspec/src/XSFunctions/sumdem.cxx 2019-05-17 14:35:25.000000000 -0500 ++++ b/Xspec/src/XSFunctions/sumdem.cxx 2022-02-16 10:42:36.946827375 -0600 +@@ -14,7 +14,7 @@ + RealArray& fluxArray, RealArray& fluxErrArray); + + +-void sumdem(int itype, int swtch, float* ear, int ne, float* abun, ++extern "C" void sumdem(int itype, int swtch, float* ear, int ne, float* abun, + float dens, float z, int ninputt, float* inputt, float* dem, + int ifl, bool qtherm, float velocity, float* photar, float* photer, + int* status); +diff -u a/Xspec/src/XSFunctions/xsmaug.cxx b/Xspec/src/XSFunctions/xsmaug.cxx +--- a/Xspec/src/XSFunctions/xsmaug.cxx 2019-05-17 14:35:25.000000000 -0500 ++++ b/Xspec/src/XSFunctions/xsmaug.cxx 2022-02-16 10:42:28.949802306 -0600 +@@ -49,10 +49,10 @@ + // REAL ear(0:*), abun(*), inputt(*), dem(*), photar(*) + // REAL dens, z + +-void sumdem_(int& itype, int& flag, float* ear, int& ne, +- float* abun, float& dens, float& z, int& ninputt, +- float* inputt, float* dem, int& ifl, int& qtherm, +- float& velocity, float* photar, int& status); ++void sumdem(int itype, int flag, float* ear, int ne, ++ float* abun, float dens, float z, int ninputt, ++ float* inputt, float* dem, int ifl, bool qtherm, ++ float velocity, float* photar, float* photer, int* status); + } + + /*---------------------------------------------------------------------------*/ +@@ -325,7 +325,7 @@ + const double MIN2RAD = 3437.75; + int i, ie, iel; + int mesh2, meshpt; +- int itype, mode, no_el, status; ++ int itype, mode, no_el, status=0; + double angfac, da, ei, evol, inner, H0, L0, outer, q0, z, zfac; + double a1, a2, Ab_shell, ei_shell, h1, h2, r1, r2, rcutoff, t1, t2, w1, w2, w12; + double elden, norm; +@@ -487,10 +487,10 @@ + static float ONE(1.); + static int one(1); + float fz (z); +- static int NOT(0); ++ static bool NOT(false); + static float ZERO(0.0); +- sumdem_(itype, mode, fear, ne, abund, ONE , fz, one, kT_shell, dem, ifl, +- NOT, ZERO, phoshell, status); ++ sumdem(itype, mode, fear, ne, abund, ONE , fz, one, kT_shell, dem, ifl, ++ NOT, ZERO, phoshell, 0, &status); + + /* ADD THE SHELL CONTRIBUTION TO THE OUTPUT SPECTRUM, + * CORRECTING IT FOR , DISTANCE AND REDSHIFT, diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0d.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0d.patch new file mode 100644 index 0000000000..907f9920e9 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0d.patch @@ -0,0 +1,65 @@ +diff -u a/Xspec/src/XSFunctions/dospin.f b/Xspec/src/XSFunctions/dospin.f +--- a/Xspec/src/XSFunctions/dospin.f 2020-03-31 09:43:58.000000000 -0500 ++++ b/Xspec/src/XSFunctions/dospin.f 2022-02-16 10:46:28.400550576 -0600 +@@ -52,14 +52,14 @@ + integer nradii,ng,ia,imu0,abins,mu0bins,ilun,ios,block,hdutyp + integer ir + parameter(nradii=50,ng=20,abins=20,mu0bins=20) ++ DOUBLE PRECISION, ALLOCATABLE, SAVE :: trff_tab(:,:,:,:,:) ++ DOUBLE PRECISION, ALLOCATABLE, SAVE :: cosne_tab(:,:,:,:,:) ++ DOUBLE PRECISION, ALLOCATABLE, SAVE :: gmin_tab(:,:,:) ++ DOUBLE PRECISION, ALLOCATABLE, SAVE :: gmax_tab(:,:,:) ++ DOUBLE PRECISION, ALLOCATABLE, SAVE :: a_tab(:),mu0_tab(:) + DOUBLE PRECISION sumspec + DOUBLE PRECISION a,theta0,mu0,gstar(ng) +- DOUBLE PRECISION a_tab(abins),mu0_tab(mu0bins) + DOUBLE PRECISION aintfac,mu0intfac +- DOUBLE PRECISION trff_tab(nradii,ng,2,abins,mu0bins) +- DOUBLE PRECISION cosne_tab(nradii,ng,2,abins,mu0bins) +- DOUBLE PRECISION gmin_tab(nradii,abins,mu0bins) +- DOUBLE PRECISION gmax_tab(nradii,abins,mu0bins) + DOUBLE PRECISION re(nradii),gmin(nradii) + DOUBLE PRECISION gmax(nradii),trff(nradii,ng,2) + DOUBLE PRECISION cosne(nradii,ng,2) +@@ -88,7 +88,6 @@ + external lenact, fgmodf + + SAVE qfirst +- save a_tab,trff_tab,cosne_tab,gmin_tab,gmax_tab,mu0_tab + + DATA qfirst / .true. / + +@@ -128,6 +127,11 @@ + c Read in transfer function from the kerrtable.fits file. + c + if ( qfirst ) then ++ allocate(trff_tab(nradii,ng,2,abins,mu0bins)) ++ allocate(cosne_tab(nradii,ng,2,abins,mu0bins)) ++ allocate(gmin_tab(nradii,abins,mu0bins)) ++ allocate(gmax_tab(nradii,abins,mu0bins)) ++ allocate(a_tab(abins),mu0_tab(mu0bins)) + call getlun(ilun) + datafile = fgmodf() + datafile=datafile(1:lenact(datafile))//'/kerrtable.fits' +@@ -316,7 +320,8 @@ + rad=rmin * 10 ** ( dfloat(ilgrad-1)*dlog(re(1)/re(nradii))/ + & dfloat(ilgrad_max-1)) + +- if ((rad .gt. rmin) .and. (rad .lt. rmax)) then ++ if ((rad .gt. rmin) .and. (rad .gt. re(nradii)) .and. ++ & (rad .lt. rmax)) then + + if (rad .gt. re(irad)) irad=irad-1 + intfac=(rad-re(irad+1))/(re(irad)-re(irad+1)) +diff -u a/Xspec/src/XSFunctions/xsrefsch.f b/Xspec/src/XSFunctions/xsrefsch.f +--- a/Xspec/src/XSFunctions/xsrefsch.f 2019-05-17 14:35:25.000000000 -0500 ++++ b/Xspec/src/XSFunctions/xsrefsch.f 2022-02-16 10:46:28.401550579 -0600 +@@ -307,7 +307,7 @@ + sincl = sin(param(5)/dera) + cincl = cos(param(5)/dera) + +- do n=1,ne ++ do n=0,ne + ear(n) = zfac*earp(n) + end do + diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0e.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0e.patch new file mode 100644 index 0000000000..61fb7eb410 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0e.patch @@ -0,0 +1,194 @@ +--- a/Xspec/src/manager/model.dat 2021-07-13 14:18:32.000000000 -0500 ++++ b/Xspec/src/manager/model.dat 2022-02-16 10:47:54.447819272 -0600 +@@ -44,14 +44,14 @@ + kT keV 1. 0.008 0.008 64.0 64.0 .01 + Abundanc " " 1. 0. 0. 5. 5. -0.001 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + btapec 5 0. 1.e20 C_btapec add 0 + kT keV 1. 0.008 0.008 64.0 64.0 .01 + kTi keV 1. 0.008 0.008 64.0 64.0 .01 + Abundanc " " 1. 0. 0. 5. 5. -0.001 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + bbody 1 1.e-20 1.e20 xsblbd add 0 + kT keV 3.0 1.e-4 1.e-2 100. 200. 0.01 +@@ -109,7 +109,7 @@ + Abundanc " " 1.0 0. 0. 1000. 10000. -0.01 + Tau s/cm^3 1.e11 1.e8 1.e8 5.e13 5.e13 1.e8 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity km/s 0.0 0.0 0.0 1.e6 1.e6 -10.0 ++Velocity km/s 0.0 0.0 0.0 1.e4 1.e4 -10.0 + + bvapec 16 0. 1.e20 C_bvapec add 0 + kT keV 6.5 0.0808 0.0808 68.447 68.447 0.01 +@@ -127,7 +127,7 @@ + Fe " " 1. 0. 0. 1000. 1000. -0.01 + Ni " " 1. 0. 0. 1000. 1000. -0.01 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + bvrnei 18 0. 1.e20 C_bvrnei add 0 + kT keV 0.5 0.0808 0.0808 79.9 79.9 0.01 +@@ -147,7 +147,7 @@ + Ni " " 1.0 0. 0. 1000. 10000. -0.01 + Tau s/cm^3 1.e11 1.e8 1.e8 5.e13 5.e13 1.e8 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + bvtapec 17 0. 1.e20 C_bvtapec add 0 + kT keV 6.5 0.0808 0.0808 68.447 68.447 0.01 +@@ -166,7 +166,7 @@ + Fe " " 1. 0. 0. 1000. 1000. -0.01 + Ni " " 1. 0. 0. 1000. 1000. -0.01 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + bvvapec 33 0. 1.e20 C_bvvapec add 0 + kT keV 6.5 0.0808 0.0808 68.447 68.447 0.01 +@@ -201,7 +201,7 @@ + Cu " " 1. 0. 0. 1000. 1000. -0.01 + Zn " " 1. 0. 0. 1000. 1000. -0.01 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + bvvrnei 35 0. 1.e20 C_bvvrnei add 0 + kT keV 0.5 0.0808 0.0808 79.9 79.9 0.01 +@@ -238,7 +238,7 @@ + Zn " " 1. 0. 0. 1000. 1000. -0.01 + Tau s/cm^3 1.e11 1.e8 1.e8 5.e13 5.e13 1.e8 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + bvvtapec 34 0. 1.e20 C_bvvtapec add 0 + kT keV 6.5 0.0808 0.0808 68.447 68.447 0.01 +@@ -274,7 +274,7 @@ + Cu " " 1. 0. 0. 1000. 1000. -0.01 + Zn " " 1. 0. 0. 1000. 1000. -0.01 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +-Velocity "km/s" 0. 0. 0. 1.e6 1.e6 -10.0 ++Velocity "km/s" 0. 0. 0. 1.e4 1.e4 -10.0 + + c6mekl 10 0. 1.e20 C_c6mekl add 0 + CPcoef1 " " 1.0 -1 -1 1 1 0.10 +@@ -1666,7 +1666,7 @@ + vvwdem 36 0. 1.e20 C_vvwDem add 0 + Tmax keV 1.0 0.01 0.01 10 20 0.01 + beta " " 0.1 0.01 0.01 1.0 1.0 0.01 +-p " " 0.25 -1.0 -1.0 10.0 10.0 0.01 ++inv_slope " " 0.25 -1.0 -1.0 10.0 10.0 0.01 + nH cm^-3 1.0 1.e-6 1.e-5 1.e19 1.e20 -0.01 + H " " 1. 0. 0. 1000. 1000. -0.01 + He " " 1. 0. 0. 1000. 1000. -0.01 +@@ -1704,7 +1704,7 @@ + vwdem 20 0. 1.e20 C_vwDem add 0 + Tmax keV 1.0 0.01 0.01 10 20 0.01 + beta " " 0.1 0.01 0.01 1.0 1.0 0.01 +-p " " 0.25 -1.0 -1.0 10.0 10.0 0.01 ++inv_slope " " 0.25 -1.0 -1.0 10.0 10.0 0.01 + nH cm^-3 1.0 1.e-6 1.e-5 1.e19 1.e20 -0.01 + He " " 1.0 0. 0. 10. 10. -0.01 + C " " 1.0 0. 0. 10. 10. -0.01 +@@ -1726,7 +1726,7 @@ + wdem 7 0. 1.e20 C_wDem add 0 + Tmax keV 1.0 0.01 0.01 10 20 0.01 + beta " " 0.1 0.01 0.01 1.0 1.0 0.01 +-p " " 0.25 -1.0 -1.0 10.0 10.0 0.01 ++inv_slope " " 0.25 -1.0 -1.0 10.0 10.0 0.01 + nH cm^-3 1.0 1.e-6 1.e-5 1.e19 1.e20 -0.01 + abundanc " " 1.0 0. 0. 10. 10. -0.01 + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 +@@ -1854,36 +1854,36 @@ + Redshift " " 0. -0.999 -0.999 10. 10. -0.01 + + ismabs 31 0.01 1.e6 ismabs mul 0 +-H 10^22 0.1 0. 0. 1E5 1E6 1E-3 +-HeII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-CI 10^16 33.1 0. 0. 1E5 1E6 1E-3 +-CII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-CIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-NI 10^16 8.32 0. 0. 1E5 1E6 1E-3 +-NII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-NIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-OI 10^16 67.6 0. 0. 1E5 1E6 1E-3 +-OII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-OIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-NeI 10^16 12. 0. 0. 1E5 1E6 1E-3 +-NeII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-NeIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-MgI 10^16 3.8 0. 0. 1E5 1E6 1E-3 +-MgII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-MgIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-SiI 10^16 3.35 0. 0. 1E5 1E6 1E-3 +-SiII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-SiIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-SI 10^16 2.14 0. 0. 1E5 1E6 1E-3 +-SII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-SIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-ArI 10^16 0.25 0. 0. 1E5 1E6 1E-3 +-ArII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-ArIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-CaI 10^16 0.22 0. 0. 1E5 1E6 1E-3 +-CaII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-CaIII 10^16 0. 0. 0. 1E5 1E6 -0.01 +-Fe 10^16 3.16 0. 0. 1E5 1E6 1E-3 ++H 10^22 0.1 0. 0. 1E5 1E6 1E-3 ++He_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++C_I 10^16 33.1 0. 0. 1E5 1E6 1E-3 ++C_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++C_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++N_I 10^16 8.32 0. 0. 1E5 1E6 1E-3 ++N_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++N_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++O_I 10^16 67.6 0. 0. 1E5 1E6 1E-3 ++O_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++O_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Ne_I 10^16 12. 0. 0. 1E5 1E6 1E-3 ++Ne_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Ne_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Mg_I 10^16 3.8 0. 0. 1E5 1E6 1E-3 ++Mg_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Mg_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Si_I 10^16 3.35 0. 0. 1E5 1E6 1E-3 ++Si_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Si_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++S_I 10^16 2.14 0. 0. 1E5 1E6 1E-3 ++S_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++S_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Ar_I 10^16 0.25 0. 0. 1E5 1E6 1E-3 ++Ar_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Ar_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Ca_I 10^16 0.22 0. 0. 1E5 1E6 1E-3 ++Ca_II 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Ca_III 10^16 0. 0. 0. 1E5 1E6 -0.01 ++Fe 10^16 3.16 0. 0. 1E5 1E6 1E-3 + redshift " " 0.0 -1.0 0.0 10. 10. -0.01 + + ismdust 3 0.01 1.e6 ismdust mul 0 +@@ -2150,7 +2150,7 @@ + z " " 0.0 0.0 0.0 1.e5 1.e6 1.e-6 + + zdust 4 0. 1.e20 mszdst mul 0 +-$method " " 1 1 1 3 3 -0.01 ++$method 1 + E_BmV " " 0.1 0.0 0.0 100. 100. 0.01 + Rv " " 3.1 0.0 0.0 10. 10. -0.01 + Redshift " " 0. 0.0 0.0 20. 20. -0.01 +@@ -2186,7 +2186,7 @@ + nHmin 10^22 0.01 1e-07 1e-07 1000 1e+06 1e-2 + nHmax 10^22 10 1e-07 1e-07 1000 1e+06 1e-2 + beta " " 0.0 -10 -10 10 10 1e-2 +-log(xi) " " 3 -3 -3 6 6 1e-2 ++log_xi " " 3 -3 -3 6 6 1e-2 + redshift " " 0. 0. 0. 10. 10. -0.01 + + zxipcf 4 0.01 1.e20 C_zxipcf mul 0 diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0f.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0f.patch new file mode 100644 index 0000000000..fbd8d3582f --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0f.patch @@ -0,0 +1,35 @@ +--- a/Xspec/src/XSModel/Model/Component/OGIPTable/OGIPTable.cxx 2021-07-13 14:18:31.000000000 -0500 ++++ b/Xspec/src/XSModel/Model/Component/OGIPTable/OGIPTable.cxx 2022-02-16 10:51:55.954573553 -0600 +@@ -174,6 +174,14 @@ + + int numbVals = thisParam.getNumberTabulatedValues(); + ++ // If the table parameter has no unit string, heasp may return ++ // a blank but non-empty string. Remove leading/trailing blanks here. ++ string unitStr; ++ string::size_type startPos = thisParam.getUnits().find_first_not_of(' '); ++ string::size_type endPos = thisParam.getUnits().find_last_not_of(' '); ++ if (startPos != string::npos && endPos != string::npos) ++ unitStr = thisParam.getUnits().substr(startPos,endPos-startPos+1); ++ + if (thisParam.getInterpolationMethod() >= 0 && + m_interParam.size() < (size_t)nInterpParams && numbVals > 0) { + // case of an interpolated parameter +@@ -182,7 +190,7 @@ + thisParam.getInitialValue(), thisParam.getDelta(), + thisParam.getMaximum(), thisParam.getMinimum(), + thisParam.getTop(), thisParam.getBottom(), +- thisParam.getUnits())); ++ unitStr)); + + modParam->numVals(numbVals); + modParam->setTabValue(thisParam.getTabulatedValues()); +@@ -196,7 +204,7 @@ + thisParam.getInitialValue(), thisParam.getDelta(), + thisParam.getMaximum(), thisParam.getMinimum(), + thisParam.getTop(), thisParam.getBottom(), +- thisParam.getUnits())); ++ unitStr)); + params().push_back(modPar.release()); + m_addParam.push_back(static_cast(params().back())); + } diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0g.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0g.patch new file mode 100644 index 0000000000..e1cd6946cb --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0g.patch @@ -0,0 +1,12 @@ +--- a/Xspec/src/XSModel/Data/SpectralData.cxx 2021-02-19 10:47:01.000000000 -0600 ++++ b/Xspec/src/XSModel/Data/SpectralData.cxx 2022-02-16 10:55:16.813201027 -0600 +@@ -1232,9 +1232,6 @@ + throw YellowAlert(msg.str()); + } + +- // multiply in the areaScale for this spectrum +- m_effectiveAreas *= m_areaScale; +- + } + + void SpectralData::clearEffectiveAreas () diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0ver.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0ver.patch new file mode 100644 index 0000000000..48f0d61115 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.29_xspec-12.12.0ver.patch @@ -0,0 +1,11 @@ +--- a/Xspec/src/XSUtil/Utils/XSutility.cxx 2021-07-13 14:18:31.000000000 -0500 ++++ b/Xspec/src/XSUtil/Utils/XSutility.cxx 2022-02-16 10:57:32.985626496 -0600 +@@ -390,7 +390,7 @@ + + const string& xs_version() + { +- static const string version = "12.12.0"; ++ static const string version = "12.12.0g"; + return version; + } + diff --git a/var/spack/repos/builtin/packages/heasoft/heasoft-6.30_tcltk-configure.patch b/var/spack/repos/builtin/packages/heasoft/heasoft-6.30_tcltk-configure.patch new file mode 100644 index 0000000000..371485ecf6 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/heasoft-6.30_tcltk-configure.patch @@ -0,0 +1,39 @@ +--- a/tcltk/BUILD_DIR/configure 2021-12-20 12:05:17.000000000 -0600 ++++ b/tcltk/BUILD_DIR/configure 2022-03-31 17:53:13.981092533 -0500 +@@ -6816,36 +6816,6 @@ + x_includes="/usr/local/include" + fi + fi +- # AC_PATH_X checks for Xlib.h, but somehow a missing X11/Xlib.h can +- # still get past it and cause problems later in the build (tk.h), so +- # try an additional test here just to make sure that it's installed: +- if test "x$x_includes" = "x"; then +- as_fn_error $? "No X11 include directory found. Please specify location using --x-includes option." "$LINENO" 5 +- else +- xlib_h="$x_includes/X11/Xlib.h" +- xintrinsic_h="$x_includes/X11/Intrinsic.h" +- xstringdefs_h="$x_includes/X11/StringDefs.h" +- if test -f $xlib_h; then +- if test -f $xintrinsic_h; then +- if test -f $xstringdefs_h; then +- XINCLUDES="-I$x_includes" +- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Found $xlib_h" >&5 +-printf "%s\n" "Found $xlib_h" >&6; } +- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using $x_includes for X11 header files" >&5 +-printf "%s\n" "Using $x_includes for X11 header files" >&6; } +- else +- as_fn_error $? "Required header X11/StringDefs.h not found in $x_includes" "$LINENO" 5 +- as_fn_error $? "X11 Development package is required in order to build HEASOFT" "$LINENO" 5 +- fi +- else +- as_fn_error $? "Required header X11/Intrinsic.h not found in $x_includes" "$LINENO" 5 +- as_fn_error $? "X11 Development package is required in order to build HEASOFT" "$LINENO" 5 +- fi +- else +- as_fn_error $? "Required header X11/Xlib.h not found in $x_includes" "$LINENO" 5 +- as_fn_error $? "X11 Development package is required in order to build HEASOFT" "$LINENO" 5 +- fi +- fi + + # X11 libraries: Having a -L path for libX11 is not always necessary, + # but when passing a value for x_includes to external packages (e.g. diff --git a/var/spack/repos/builtin/packages/heasoft/package.py b/var/spack/repos/builtin/packages/heasoft/package.py new file mode 100644 index 0000000000..3b52ddcd59 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/package.py @@ -0,0 +1,143 @@ +# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import os + +import llnl.util.tty as tty + +from spack import * +from spack.util.environment import EnvironmentModifications + + +class Heasoft(AutotoolsPackage): + """A Unified Release of the FTOOLS and XANADU Software Packages. + + XANADU: High-level, multi-mission tasks for X-ray astronomical spectral, + timing, and imaging data analysis. FTOOLS: General and mission-specific + tools to manipulate FITS files. FITSIO: Core library responsible for reading + and writing FITS files. fv: General FITS file browser/editor/plotter with a + graphical user interface. XSTAR: Tool for calculating the physical + conditions and emission spectra of photoionized gases""" + + homepage = "https://heasarc.gsfc.nasa.gov/docs/software/lheasoft/" + url = "https://heasarc.gsfc.nasa.gov/FTP/software/lheasoft/lheasoft6.29/heasoft-6.29src.tar.gz" + + maintainers = ['glennpj'] + + version('6.30', + sha256='7f828f6050809653319f94d715c1b6815fbc09adfdcb61f2f0f1d7a6af10684a') + version('6.29', + sha256='534fec04baa2586326fd7240805f2606620f3b7d7078a80fdd95c9c1177c9e68') + + variant('X', default=True, description='Enable X11 support') + + depends_on('zlib') + depends_on('ncurses') + depends_on('curl') + depends_on('libxt', when='+X') + depends_on('libx11', when='+X') + depends_on('readline') + depends_on('libpng') + depends_on('perl-extutils-makemaker') + depends_on('py-numpy') + + extends('python') + + conflicts('%gcc@:4,10:') + + # Do not create directory in $HOME during environment sourcing and use a + # predictable name for the file to be sourced. + patch('setup.patch') + + # tcltk-configure: Remove redundant X11 header test because spack has X11 + # headers in different directories + # + # xspec: The HEASOFT project provides a tarball of replacement files for + # Xspec, along with a TCL patch utility. This is meant for updating a + # source tree in place with minimal rebuilding. This does not fit Spack's + # model so convert those to patches. These are kept in sync with what is on + # https://heasarc.gsfc.nasa.gov/docs/software/lheasoft/xanadu/xspec/issues/issues.html + with when("@6.29"): + patch('heasoft-6.29_tcltk-configure.patch') + + patch('heasoft-6.29_xspec-12.12.0a.patch') + patch('heasoft-6.29_xspec-12.12.0b.patch') + patch('heasoft-6.29_xspec-12.12.0c.patch') + patch('heasoft-6.29_xspec-12.12.0d.patch') + patch('heasoft-6.29_xspec-12.12.0e.patch') + patch('heasoft-6.29_xspec-12.12.0f.patch') + patch('heasoft-6.29_xspec-12.12.0g.patch') + patch('heasoft-6.29_xspec-12.12.0ver.patch') + + with when("@6.30"): + patch('heasoft-6.30_tcltk-configure.patch') + + configure_directory = 'BUILD_DIR' + + parallel = False + + def patch(self): + filter_file(r'(--with-readline-library=)\\\$READLINE_DIR', + r'\1{0}'.format(self.spec['readline'].libs.directories[0]), + join_path('tcltk', 'BUILD_DIR', 'hd_config_info')) + + filter_file(r'(--with-readline-includes=)\\\$READLINE_DIR', + r'\1{0}'.format( + join_path(self.spec['readline'].headers.directories[0], + 'readline')), + join_path('tcltk', 'BUILD_DIR', 'hd_config_info')) + + if '+X' in self.spec: + filter_file(r'(\s+XDIR => ).*', + r"\1'{0}',".format(self.spec['libx11'].libs.directories[0]), + join_path('tcltk', 'PGPLOT-perl', 'Makefile.PL')) + + def configure_args(self): + config_args = [ + '--with-png={0}'.format(self.spec['libpng'].prefix), + 'CPPFLAGS={0}'.format(self.spec['zlib'].headers.include_flags), + 'LDFLAGS={0}'.format(self.spec['zlib'].libs.search_flags) + ] + + config_args += self.enable_or_disable('x', variant='X') + + if '+X' in self.spec: + config_args.extend([ + '--x-includes={0}'.format(self.spec['libx11'].headers.directories[0]), + '--x-libraries={0}'.format(self.spec['libx11'].libs.directories[0]), + ]) + + return config_args + + @run_after('install') + def generate_environment(self): + host_family = self.spec.target.family + host_platform = self.spec.platform + host_libc = os.confstr('CS_GNU_LIBC_VERSION').split()[1] + target = '{0}-pc-{1}-gnu-libc{2}'.format(host_family, host_platform, + host_libc) + headas_setup_file = join_path(self.spec.prefix, target, 'BUILD_DIR', + 'headas-setup') + + filter_file(r'(^headas_config=).*', + r'\1{0}'.format(join_path(self.prefix, 'headas-config_spack')), + headas_setup_file) + + filter_file(r'(^flavor.*\n)', + r'\1HEADAS={0}'.format(join_path(self.spec.prefix, target)) + + "\n", + headas_setup_file) + + headas_setup = Executable(headas_setup_file) + headas_setup('sh') + + def setup_run_environment(self, env): + try: + env.extend(EnvironmentModifications.from_sourcing_file( + join_path(self.spec.prefix, 'headas-config_spack.sh'), clean=True + )) + except Exception as e: + msg = 'unexpected error when sourcing HEASOFT setup [{0}]' + tty.warn(msg.format(str(e))) diff --git a/var/spack/repos/builtin/packages/heasoft/setup.patch b/var/spack/repos/builtin/packages/heasoft/setup.patch new file mode 100644 index 0000000000..c79033c1f9 --- /dev/null +++ b/var/spack/repos/builtin/packages/heasoft/setup.patch @@ -0,0 +1,55 @@ +--- a/BUILD_DIR/headas-setup.in 2022-02-16 20:15:32.438402875 -0600 ++++ b/BUILD_DIR/headas-setup.in 2022-02-16 20:17:16.572726456 -0600 +@@ -136,20 +136,6 @@ + if [ -d $HEADAS/syspfiles/. ]; then + PFCLOBBER=1 + +- # make sure local parameter file directory exists +- if [ ! -w "$HOME/pfiles/." ]; then +- if [ ! -d "$HOME/pfiles/." ]; then +- mkdir "$HOME/pfiles" +- if [ $? -ne 0 ]; then +- echo "$headas_error cannot create local pfiles directory $HOME/pfiles" >&2 +- exit 3 +- fi +- else +- echo "$headas_error local pfiles directory $HOME/pfiles exists but is not writable" >&2 +- exit 3 +- fi +- fi +- + # use PFILES (if set) to set initial values for locpfiles and syspfiles + if [ "x$PFILES" != x ]; then + syspfiles=`echo $PFILES | sed "s%.*;%%"` +@@ -340,23 +326,23 @@ + + # Bourne Shell version, write only for sh flavor initialization + if [ $flavor = sh ]; then +- rm -f "$headas_config$$.sh" +- touch "$headas_config$$.sh" ++ rm -f "$headas_config.sh" ++ touch "$headas_config.sh" + for var in $varlist; do + eval "if [ \"x\$$var\" != x ]; then +- echo \"\$var=\\\"\$$var\\\"; export \$var\" >> \"$headas_config$$.sh\"; ++ echo \"\$var=\\\"\$$var\\\"; export \$var\" >> \"$headas_config.sh\"; + fi" + done +- echo "$headas_config$$.sh" ++ echo "$headas_config.sh" + # C Shell version, write only for csh flavor initialization + elif [ $flavor = csh ]; then +- rm -f "$headas_config$$.csh" +- touch "$headas_config$$.csh" ++ rm -f "$headas_config.csh" ++ touch "$headas_config.csh" + for var in $varlist; do + eval "if [ \"x\$$var\" != x ]; then +- echo setenv \$var \\\"\$$var\\\" >> \"$headas_config$$.csh\"; ++ echo setenv \$var \\\"\$$var\\\" >> \"$headas_config.csh\"; + fi" + done +- echo "$headas_config$$.csh" ++ echo "$headas_config.csh" + fi + #------------------------------------------------------------------------------- -- cgit v1.2.3-60-g2f50