Ticket #14605: atlas-3.10.1.p1.diff

File atlas-3.10.1.p1.diff, 14.2 KB (added by jpflori, 9 years ago)

Spkg diff, for review only.

  • SPKG.txt

    diff --git a/SPKG.txt b/SPKG.txt
    a b  
    2727
    2828== Build Instructions/Notes ==
    2929
    30  * patches/archinfo_linux.c.patch: Fix Itanium2 support on modern
    31    RHEL 5 and SLES 10 systems
    32  * patches/probe_comp.c.patch: work around -m64 issue on Itanium2
    33  * patches/long_filenames.patch: fix for long filenames (>128 chars)
     30 * patches/detect.patch: Fix Itanium2 support on modern
     31   RHEL 5 and SLES 10 systems, work around -m64 issue on Itanium2,
     32   and correctly detect number and speed of CPUs on a bunch of systems.
     33 * patches/threads.patch: do not build thread-related functions when threading
     34   is disabled.
     35 * patches/long_filenames.patch: fix for long filenames (>128 chars).
    3436 * patches/shell.patch: replace two instances of "test -e" by "test -f",
    3537   as the former is not portable (in particular for the Solaris shell).
     38 * patches/Makefile.patch: fix clean target.
    3639 * lapack-x.y.z.tgz: The netlib lapack tarball. If you update this,
    3740   make sure you also update the LAPACK_TARBALL variable in
    3841   spkg-install.
     
    6366     IBMz10, IBMz196, x86x87, x86SSE1, x86SSE2, x86SSE3, P5, P5MMX,
    6467     PPRO, PII, PIII, PM, CoreSolo, CoreDuo, Core2Solo, Core2, Corei1,
    6568     Corei2, Atom, P4, P4E, Efficeon, K7, HAMMER, AMD64K10h, AMDDOZER,
    66      UNKNOWNx86, IA64Itan, IA64Itan2, USI, USII, USIII, USIV, UST2,
     69     UNKNOWNx86, IA64Itan, IA64Itan2, USI, USII, USIII, USIV, UST1, UST2,
    6770     UnknownUS, MIPSR1xK, MIPSICE9, ARMv7
    6871
    6972   and instruction set extensions are
     
    8992
    9093== ChangeLog ==
    9194
     95=== atlas-3.10.1.p1, lapack-3.4.2 (Jean-Pierre Flori, 21 May 2013) ===
     96 * Trac #14605: Fix thread related problems in ATLAS build system.
     97
    9298=== atlas-3.10.1.p0, lapack-3.4.2 (Jean-Pierre Flori, 26 February 2013) ===
    9399 * Trac #10508: Update ATLAS to version 3.10.1 and LAPACK to version 3.4.2.
    94100 * Removed patches integrated upstream.
    95101 * Add shell.patch to correctly build LAPACK on Solaris.
    96  * Replace os.system() by subprocess.call()
     102 * Replace os.system() by subprocess.call().
    97103
    98104=== atlas-3.10.0.p1, lapack-3.4.1 (Volker Braun, September 20 2012) ===
    99105 * Trac #10508: Fix for long file names.
  • deleted file patches/archinfo_linux.c.patch

    diff --git a/patches/archinfo_linux.c.patch b/patches/archinfo_linux.c.patch
    deleted file mode 100644
    + -  
    1 --- src/CONFIG/src/backend/archinfo_linux.c     2012-06-23 17:27:27.000000000 +0100
    2 +++ new/CONFIG/src/backend/archinfo_linux.c     2012-06-24 03:17:47.297954105 +0100
    3 @@ -117,7 +117,7 @@
    4        }
    5        break;
    6     case AFIA64:
    7 -      res = atlsys_1L(NULL, "fgrep 'Itanium' /proc/cpuinfo", 0, 0);
    8 +      res = atlsys_1L(NULL, "fgrep 'IA-64' /proc/cpuinfo", 0, 0);
    9        if (res && res[0] == '\0')
    10        {
    11           free(res);
    12 @@ -129,7 +129,7 @@
    13        {
    14           if (res[0] != '\0')
    15           {
    16 -            if (strstr(res, "Itanium 2") || strstr(res, "McKinley"))
    17 +            if (strstr(res, "IA-64") || strstr(res, "McKinley"))
    18                 mach = IA64Itan2;
    19              else if (strstr(res, "Itanium")) mach = IA64Itan;
    20           }
  • new file patches/detect.patch

    diff --git a/patches/detect.patch b/patches/detect.patch
    new file mode 100644
    - +  
     1diff -drNu src.orig/CONFIG/include/atlconf.h src/CONFIG/include/atlconf.h
     2--- src.orig/CONFIG/include/atlconf.h   2013-01-08 19:15:42.000000000 +0100
     3+++ src/CONFIG/include/atlconf.h        2013-05-21 21:27:02.000429862 +0200
     4@@ -18,7 +18,7 @@
     5 enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS,
     6               AFARM, AFS390};
     7 
     8-#define NMACH 47
     9+#define NMACH 48
     10 static char *machnam[NMACH] =
     11    {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5",
     12     "POWER6", "POWER7", "IBMz9", "IBMz10", "IBMz196",
     13@@ -27,7 +27,7 @@
     14     "CoreDuo", "Core2Solo", "Core2", "Corei1", "Corei2", "Atom", "P4", "P4E",
     15     "Efficeon", "K7", "HAMMER", "AMD64K10h", "AMDDOZER", "UNKNOWNx86",
     16     "IA64Itan", "IA64Itan2",
     17-    "USI", "USII", "USIII", "USIV", "UST2", "UnknownUS",
     18+    "USI", "USII", "USIII", "USIV", "UST1", "UST2", "UnknownUS",
     19     "MIPSR1xK", "MIPSICE9", "ARMv7"};
     20 enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5,
     21                IbmPwr6, IbmPwr7,
     22@@ -38,7 +38,7 @@
     23                IntAtom, IntP4, IntP4E, TMEff,
     24                AmdAthlon, AmdHammer, Amd64K10h, AmdDozer, x86X,
     25                IA64Itan, IA64Itan2,
     26-               SunUSI, SunUSII, SunUSIII, SunUSIV, SunUST2, SunUSX,
     27+               SunUSI, SunUSII, SunUSIII, SunUSIV, SunUST1, SunUST2, SunUSX,
     28                MIPSR1xK, /* includes R10K, R12K, R14K, R16K */
     29                MIPSICE9,  /* SiCortex ICE9 -- like MIPS5K */
     30                ARMv7      /* includes Cortex A8, A9 */
     31diff -drNu src.orig/CONFIG/include/atlconf_misc.h src/CONFIG/include/atlconf_misc.h
     32--- src.orig/CONFIG/include/atlconf_misc.h      2013-01-08 19:15:42.000000000 +0100
     33+++ src/CONFIG/include/atlconf_misc.h   2013-05-21 21:27:02.000429862 +0200
     34@@ -15,10 +15,14 @@
     35 int FileIsThere(char *nam);
     36 void ATL_mprintf(int np, ...);
     37 int GetFirstInt(char *ln);
     38+int GetFirstHex(char *ln);
     39 long long GetFirstLong(char *ln);
     40+long long GetFirstLongHex(char *ln);
     41 double GetFirstDouble(char *ln);
     42 int GetLastInt(char *ln);
     43+int GetLastHex(char *ln);
     44 long long GetLastLong(char *ln);
     45+long long GetLastLongHex(char *ln);
     46 int fNumLines(char *fnam);
     47 char *GetPathEnvVar(void);
     48 int GetIntBeforeWord(char *word, char *ln);
     49diff -drNu src.orig/CONFIG/src/atlconf_misc.c src/CONFIG/src/atlconf_misc.c
     50--- src.orig/CONFIG/src/atlconf_misc.c  2013-01-08 19:15:42.000000000 +0100
     51+++ src/CONFIG/src/atlconf_misc.c       2013-05-21 21:27:37.124106722 +0200
     52@@ -221,6 +221,20 @@
     53    return(iret);
     54 }
     55 
     56+int GetFirstHex(char *ln)
     57+{
     58+   int i, iret=0;
     59+   for (i=0; ln[i]; i++)
     60+   {
     61+      if (isxdigit(ln[i]))
     62+      {
     63+         sscanf(ln+i, "%x", &iret);
     64+         break;
     65+      }
     66+   }
     67+   return(iret);
     68+}
     69+
     70 long long GetFirstLong(char *ln)
     71 {
     72    int i;
     73@@ -236,6 +250,21 @@
     74    return(iret);
     75 }
     76 
     77+long long GetFirstLongHex(char *ln)
     78+{
     79+   int i;
     80+   long long  iret=0;
     81+   for (i=0; ln[i]; i++)
     82+   {
     83+      if (isxdigit(ln[i]))
     84+      {
     85+         sscanf(ln+i, "%lx", &iret);
     86+         break;
     87+      }
     88+   }
     89+   return(iret);
     90+}
     91+
     92 double GetFirstDouble(char *ln)
     93 /*
     94  * Gets a double, which begins wt digit or "." (i.e., won't get e10)
     95@@ -269,6 +298,20 @@
     96    return(iret);
     97 }
     98 
     99+int GetLastHex(char *ln)
     100+{
     101+   int i, iret=0;
     102+   for (i=0; ln[i]; i++);
     103+   if (i > 0) for (i--; i > 0 && !isxdigit(ln[i]); i--);
     104+   if (i > 0 || (i == 0 && isxdigit(ln[0])))
     105+   {
     106+      while(isxdigit(ln[i]) && i > 0) i--;
     107+      if (!isxdigit(ln[i])) i++;
     108+      sscanf(ln+i, "%x", &iret);
     109+   }
     110+   return(iret);
     111+}
     112+
     113 long long GetLastLong(char *ln)
     114 {
     115    int i;
     116@@ -283,6 +326,21 @@
     117    }
     118    return(iret);
     119 }
     120+
     121+long long GetLastLongHex(char *ln)
     122+{
     123+   int i;
     124+   long iret=0;
     125+   for (i=0; ln[i]; i++);
     126+   if (i > 0) for (i--; i > 0 && !isxdigit(ln[i]); i--);
     127+   if (i > 0 || (i == 0 && isxdigit(ln[0])))
     128+   {
     129+      while(isxdigit(ln[i]) && i > 0) i--;
     130+      if (!isxdigit(ln[i])) i++;
     131+      sscanf(ln+i, "%lx", &iret);
     132+   }
     133+   return(iret);
     134+}
     135 
     136 char *ATL_fgetln(FILE *fpin)
     137 /*
     138diff -drNu src.orig/CONFIG/src/backend/archinfo_freebsd.c src/CONFIG/src/backend/archinfo_freebsd.c
     139--- src.orig/CONFIG/src/backend/archinfo_freebsd.c      2013-01-08 19:15:42.000000000 +0100
     140+++ src/CONFIG/src/backend/archinfo_freebsd.c   2013-05-21 21:27:02.000429862 +0200
     141@@ -206,6 +206,12 @@
     142       mhz = GetFirstDouble(res) / 1000000;
     143       free(res);
     144    }
     145+   else if ((res=atlsys_1L(NULL, "sysctl hw.clockrate", 0, 0)))
     146+   {
     147+      mhz = GetFirstDouble(res);
     148+      free(res);
     149+   }
     150+
     151    return(mhz);
     152 }
     153 
     154diff -drNu src.orig/CONFIG/src/backend/archinfo_linux.c src/CONFIG/src/backend/archinfo_linux.c
     155--- src.orig/CONFIG/src/backend/archinfo_linux.c        2013-01-08 19:15:42.000000000 +0100
     156+++ src/CONFIG/src/backend/archinfo_linux.c     2013-05-21 21:27:02.000429862 +0200
     157@@ -117,7 +117,7 @@
     158       }
     159       break;
     160    case AFIA64:
     161-      res = atlsys_1L(NULL, "fgrep 'Itanium' /proc/cpuinfo", 0, 0);
     162+      res = atlsys_1L(NULL, "fgrep 'IA-64' /proc/cpuinfo", 0, 0);
     163       if (res && res[0] == '\0')
     164       {
     165          free(res);
     166@@ -129,7 +129,7 @@
     167       {
     168          if (res[0] != '\0')
     169          {
     170-            if (strstr(res, "Itanium 2") || strstr(res, "McKinley"))
     171+            if (strstr(res, "IA-64") || strstr(res, "McKinley"))
     172                mach = IA64Itan2;
     173             else if (strstr(res, "Itanium")) mach = IA64Itan;
     174          }
     175@@ -215,7 +215,9 @@
     176       res = atlsys_1L(NULL, "fgrep cpu /proc/cpuinfo", 0, 0);
     177       if (res)
     178       {
     179-         if (strstr(res, "UltraSparc IV")) mach = SunUSIV;
     180+         if (strstr(res, "UltraSparc T2")) mach = SunUST2;
     181+         else if (strstr(res, "UltraSparc T1")) mach = SunUST1;
     182+         else if (strstr(res, "UltraSparc IV")) mach = SunUSIV;
     183          else if (strstr(res, "UltraSparc III")) mach = SunUSIII;
     184          else if (strstr(res, "UltraSparc II")) mach = SunUSII;
     185          else if (strstr(res, "UltraSparc I")) mach = SunUSI;
     186@@ -281,6 +283,15 @@
     187          fclose(fpres);
     188       }
     189    }
     190+   if (!ncpu)
     191+   {
     192+      res = atlsys_1L(NULL, "grep 'ncpus active' /proc/cpuinfo", 0, 0);
     193+      if (res)
     194+      {
     195+         ncpu = GetFirstInt(res);
     196+         free(res);
     197+      }
     198+   }
     199    return(ncpu);
     200 }
     201 
     202@@ -341,14 +352,21 @@
     203       mhz = GetFirstInt(res);
     204       free(res);
     205    }
     206-   if (!mhz)
     207+   else if ((res = atlsys_1L(NULL, "cat /proc/cpuinfo | fgrep clock | fgrep MHz",0,0)))
     208    {
     209-      res = atlsys_1L(NULL, "cat /proc/cpuinfo | fgrep clock | fgrep MHz",0,0);
     210-      if (res)
     211+      mhz = GetLastInt(res);
     212+      /* Linux PPC */
     213+      if (!mhz)
     214       {
     215-         mhz = GetLastInt(res);
     216-         free(res);
     217+         mhz = GetFirstInt(res);
     218       }
     219+      free(res);
     220+   }
     221+   /* Linux SPARC */
     222+   else if ((res = atlsys_1L(NULL, "fgrep 'ClkTck' /proc/cpuinfo",0,0)))
     223+   {
     224+      mhz = GetLastHex(res) / 1000000;
     225+      free(res);
     226    }
     227    return(mhz);
     228 }
     229diff -drNu src.orig/CONFIG/src/backend/archinfo_sunos.c src/CONFIG/src/backend/archinfo_sunos.c
     230--- src.orig/CONFIG/src/backend/archinfo_sunos.c        2013-01-08 19:15:42.000000000 +0100
     231+++ src/CONFIG/src/backend/archinfo_sunos.c     2013-05-21 21:27:02.004429825 +0200
     232@@ -65,10 +65,12 @@
     233       res = atlsys_1L(NULL, "/usr/sbin/psrinfo -pv | fgrep UltraSPARC", 0, 0);
     234       if (res)
     235       {
     236-         if (strstr(res, "UltraSPARC-IV"))
     237-            mach = SunUSIV;
     238-         else if (strstr(res, "UltraSPARC-T2"))
     239+         if (strstr(res, "UltraSPARC-T2"))
     240             mach = SunUST2;
     241+         else if (strstr(res, "UltraSPARC-T1"))
     242+            mach = SunUST1;
     243+         else if (strstr(res, "UltraSPARC-IV"))
     244+            mach = SunUSIV;
     245          else if (strstr(res, "UltraSPARC-III"))
     246             mach = SunUSIII;
     247          else if (strstr(res, "UltraSPARC-II"))
     248diff -drNu src.orig/CONFIG/src/probe_comp.c src/CONFIG/src/probe_comp.c
     249--- src.orig/CONFIG/src/probe_comp.c    2013-01-08 19:15:42.000000000 +0100
     250+++ src/CONFIG/src/probe_comp.c 2013-05-21 21:27:02.004429825 +0200
     251@@ -607,6 +607,8 @@
     252       return(sp);
     253    else if (OS == OSAIX)
     254       sp = (ptrbits == 64) ? "-maix64" : "-maix32";
     255+   else if (arch == IA64Itan2)
     256+      printf("Itanium2 - not setting -m64"); // -m64 is not supported on RHEL 5/Itanium
     257    else if ((MachIsX86(arch) || MachIsPPC(arch) || MachIsUS(arch)) ||
     258             arch == IbmPwr7 || arch == IbmPwr6)
     259    {
     260diff -drNu src.orig/include/atlas_prefetch.h src/include/atlas_prefetch.h
     261--- src.orig/include/atlas_prefetch.h   2013-01-08 19:15:40.000000000 +0100
     262+++ src/include/atlas_prefetch.h        2013-05-21 21:27:02.004429825 +0200
     263@@ -81,7 +81,7 @@
     264  */
     265 #elif defined(ATL_ARCH_USIV) || defined(ATL_ARCH_SunUSIII) || \
     266       defined(ATL_ARCH_SunUSII) || defined(ATL_ARCH_SunUSI) || \
     267-      defined(ATL_ARCH_SunUST2)
     268+      defined(ATL_ARCH_SunUST1) || defined(ATL_ARCH_SunUST2)
     269    #ifdef __GNUC__
     270       #define ATL_pfl1R(mem) \
     271          __asm__ __volatile__ ("prefetch %0,0" : : "m" (*((char *)(mem))))
  • deleted file patches/probe_comp.c.patch

    diff --git a/patches/probe_comp.c.patch b/patches/probe_comp.c.patch
    deleted file mode 100644
    + -  
    1 --- src/CONFIG/src/probe_comp.c 2012-06-23 17:27:27.000000000 +0100
    2 +++ new/CONFIG/src/probe_comp.c 2012-06-24 03:20:46.118154762 +0100
    3 @@ -607,6 +607,8 @@
    4        return(sp);
    5     else if (OS == OSAIX)
    6        sp = (ptrbits == 64) ? "-maix64" : "-maix32";
    7 +   else if (arch == IA64Itan2)
    8 +      printf("Itanium2 - not setting -m64"); // -m64 is not supported on RHEL 5/Itanium
    9     else if ((MachIsX86(arch) || MachIsPPC(arch) || MachIsUS(arch)) ||
    10              arch == IbmPwr7 || arch == IbmPwr6)
    11     {
  • new file patches/threads.patch

    diff --git a/patches/threads.patch b/patches/threads.patch
    new file mode 100644
    - +  
     1diff -drNu src.orig/bin/atlas_install.c src/bin/atlas_install.c
     2--- src.orig/bin/atlas_install.c        2013-01-08 19:15:41.000000000 +0100
     3+++ src/bin/atlas_install.c     2013-05-17 18:16:01.004809341 +0200
     4@@ -1075,8 +1075,13 @@
     5    PrintStartStop(stdout, fpsum, 3, 1, 5, 1, 0, "FINAL STATIC LIBRARY UPDATE");
     6    sprintf(ln2, "INSTALL_LOG/LIBUPDATE.LOG");
     7    PrintBanner(ln2, 1, 5, 1, 1);
     8-   sprintf(ln, "%s IBuildLibs IBuildPtlibs0 %s %s\n", fmake, redir, ln2);
     9+   sprintf(ln, "%s IBuildLibs %s %s\n", fmake, redir, ln2);
     10    fprintf(stdout, ln);
     11+#ifdef ATL_NCPU
     12+   PrintBanner(ln2, 1, 5, 1, 2);
     13+   sprintf(ln, "%s IBuildPtlibs0 %s %s\n", fmake, redir, ln2);
     14+   fprintf(stdout, ln);
     15+#endif
     16    ATL_Cassert(system(ln)==0, "STATIC LIBRARY UPDATE", ln2);
     17    PrintBanner(ln2, 0, 5, 1, 1);
     18    PrintStartStop(stdout, fpsum, 3, 0, 5, 1, 0, "FINAL STATIC LIBRARY UPDATE");
  • spkg-install

    diff --git a/spkg-install b/spkg-install
    a b  
    4141    'CoreDuo', 'Core2Solo', 'Core2', 'Corei1', 'Corei2', 'Atom', 'P4', 'P4E',
    4242    'Efficeon', 'K7', 'HAMMER', 'AMD64K10h', 'AMDDOZER', 'UNKNOWNx86',
    4343    'IA64Itan', 'IA64Itan2',
    44     'USI', 'USII', 'USIII', 'USIV', 'UST2', 'UnknownUS',
     44    'USI', 'USII', 'USIII', 'USIV', 'UST1', 'UST2', 'UnknownUS',
    4545    'MIPSR1xK', 'MIPSICE9', 'ARMv7')
    4646
    4747ATLAS_ISAEXT = (  # static char *ISAXNAM