From e704256eed968799b5ff31119a9147085918d6d6 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 01 2019 17:59:24 +0000 Subject: import atlas-3.10.1-12.el7 --- diff --git a/.atlas.metadata b/.atlas.metadata new file mode 100644 index 0000000..e503d57 --- /dev/null +++ b/.atlas.metadata @@ -0,0 +1,6 @@ +9398518fe55b4a544278237bc639656e04543c50 SOURCES/ARMv732NEON.tar.bz2 +b3ee9bca1510b11c6aa671ba5ba7dff8918ce0cf SOURCES/IBMz932.tar.bz2 +c47ac6f00d7bf4ab882e71fa1ab894cc551c77b7 SOURCES/POWER332.tar.bz2 +85c00d3190abbe250d46472824b17d9164e3dfc2 SOURCES/PPRO32.tgz +cd5bfb06af3de60de1226078a9247684b44d0451 SOURCES/atlas3.10.1.tar.bz2 +1be7368e134e2ccab2510b6ce48eca14bf84378d SOURCES/lapack-3.4.2-clean.tgz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b1e4dce --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +SOURCES/ARMv732NEON.tar.bz2 +SOURCES/IBMz932.tar.bz2 +SOURCES/POWER332.tar.bz2 +SOURCES/PPRO32.tgz +SOURCES/atlas3.10.1.tar.bz2 +SOURCES/lapack-3.4.2-clean.tgz diff --git a/SOURCES/README.dist b/SOURCES/README.dist new file mode 100644 index 0000000..5d60a7b --- /dev/null +++ b/SOURCES/README.dist @@ -0,0 +1,47 @@ +Notes on the packaged version of ATLAS + +by Quentin Spencer +updated: October 4, 2005 + +updated by Deji Akingunola +October 15, 2008 + +updated by Deji Akingunola +June 15, 2011 + +updated by Frantisek Kluknavsky +Nov 20, 2012 + +Because ATLAS relies on compile-time optimizations to obtain improved +performance over BLAS and LAPACK, the resulting binaries are closely +tied to the hardware on which they are compiled, and can likely result +in very poor performance on other hardware. For this reason, +including a package like ATLAS in Fedora requires some compromises. +Optimizing ATLAS for the most modern hardware can result in +significant performance penalties for users using the same package on +older hardware. A binary ATLAS package must perform reasonably well on the +entire range of hardware on which it could potentially be installed. + +The result is a set of libraries that will not +necessarily achieve optimal performance on any given hardware but +should still offer significant performance gains over the reference +BLAS and LAPACK libraries on most hardware. + +In addition to the base 32bit build, subpackages are built for SSE, SSE2, +and SSE3 ix86 extensions. + +On 64bit x86 systems the default atlas package was built with SSE3 +optimization. + +This packaging allows multiple installation of different atlas sub-packages +at the same time. The alternatives system (read 'man alternatives' for usage) +is used in the -devel subpackages to select the appropriate location for the +architectural dependent header files. + +For users who want optimal performance on +particular hardware, custom RPMs can be built from the source package +by setting the RPM macro "enable_native_atlas" to a value of 1. This +can be done from the command line as in the following example: + +rpmbuild -D "enable_native_atlas 1" --rebuild atlas-3.8.3-1.src.rpm + diff --git a/SOURCES/atlas-aarch64port.patch b/SOURCES/atlas-aarch64port.patch new file mode 100644 index 0000000..0435239 --- /dev/null +++ b/SOURCES/atlas-aarch64port.patch @@ -0,0 +1,218 @@ +diff --git a/CONFIG/include/atlconf.h b/CONFIG/include/atlconf.h +index cdceda3..e6d71d3 100644 +--- a/CONFIG/include/atlconf.h ++++ b/CONFIG/include/atlconf.h +@@ -16,9 +16,9 @@ enum OSTYPE {OSOther=0, OSLinux, OSSunOS, OSSunOS4, OSOSF1, OSIRIX, OSAIX, + ((OS_) == OSWin64) ) + + enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS, +- AFARM, AFS390}; ++ AFARM, AFS390, AFAARCH64}; + +-#define NMACH 47 ++#define NMACH 48 + static char *machnam[NMACH] = + {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5", + "POWER6", "POWER7", "IBMz9", "IBMz10", "IBMz196", +@@ -28,7 +28,7 @@ static char *machnam[NMACH] = + "Efficeon", "K7", "HAMMER", "AMD64K10h", "AMDDOZER", "UNKNOWNx86", + "IA64Itan", "IA64Itan2", + "USI", "USII", "USIII", "USIV", "UST2", "UnknownUS", +- "MIPSR1xK", "MIPSICE9", "ARMv7"}; ++ "MIPSR1xK", "MIPSICE9", "ARMv7", "AARCH64"}; + enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5, + IbmPwr6, IbmPwr7, + IbmZ9, IbmZ10, IbmZ196, /* s390(x) in Linux */ +@@ -41,7 +41,8 @@ enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5, + SunUSI, SunUSII, SunUSIII, SunUSIV, SunUST2, SunUSX, + MIPSR1xK, /* includes R10K, R12K, R14K, R16K */ + MIPSICE9, /* SiCortex ICE9 -- like MIPS5K */ +- ARMv7 /* includes Cortex A8, A9 */ ++ ARMv7, /* includes Cortex A8, A9 */ ++ AARCH64 + }; + #define MachIsX86(mach_) \ + ( (mach_) >= x86x87 && (mach_) <= x86X ) +@@ -62,6 +63,8 @@ enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5, + ( (mach_) == ARMv7 ) + #define MachIsS390(mach_) \ + ( (mach_) >= IbmZ9 && (mach_) <= IbmZ196 ) ++#define MachIsAARCH64(mach_) \ ++ ( (mach_) == AARCH64 ) + + + static char *f2c_namestr[5] = {"UNKNOWN","Add_", "Add__", "NoChange", "UpCase"}; +@@ -83,13 +86,13 @@ enum ISAEXT + {ISA_None=0, ISA_VSX, ISA_AV, ISA_AVXMAC, ISA_AVXFMA4, ISA_AVX, + ISA_SSE3, ISA_SSE2, ISA_SSE1, ISA_3DNow, ISA_NEON}; + +-#define NASMD 9 ++#define NASMD 10 + enum ASMDIA + {ASM_None=0, gas_x86_32, gas_x86_64, gas_sparc, gas_ppc, gas_parisc, +- gas_mips, gas_arm, gas_s390}; ++ gas_mips, gas_arm, gas_s390, gas_aarch64}; + static char *ASMNAM[NASMD] = + {"", "GAS_x8632", "GAS_x8664", "GAS_SPARC", "GAS_PPC", "GAS_PARISC", +- "GAS_MIPS", "GAS_ARM", "GAS_S390"}; ++ "GAS_MIPS", "GAS_ARM", "GAS_S390", "GAS_AARCH64"}; + + /* + * Used for archinfo probes (can pack in bitfield) +diff --git a/CONFIG/src/Makefile b/CONFIG/src/Makefile +index 8eb38f7..afad1bc 100644 +--- a/CONFIG/src/Makefile ++++ b/CONFIG/src/Makefile +@@ -260,6 +260,11 @@ IRun_BINDP : + redir=config0.out + - cat config0.out + ++IRun_GAS_AARCH64 : ++ $(CC) $(CCFLAGS) -o xprobe_gas_aarch64 $(SRCdir)/backend/probe_this_asm.c $(SRCdir)/backend/probe_gas_aarch64.S ++ $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_gas_aarch64 args="$(args)" \ ++ redir=config0.out ++ - cat config0.out + IRun_GAS_S390 : + $(CC) $(CCFLAGS) -o xprobe_gas_s390 $(SRCdir)/backend/probe_this_asm.c $(SRCdir)/backend/probe_gas_s390.S + $(MAKE) $(atlrun) atldir=$(mydir) exe=xprobe_gas_s390 args="$(args)" \ +diff --git a/CONFIG/src/SpewMakeInc.c b/CONFIG/src/SpewMakeInc.c +index 65d68a1..f5eb467 100644 +--- a/CONFIG/src/SpewMakeInc.c ++++ b/CONFIG/src/SpewMakeInc.c +@@ -391,6 +391,8 @@ char *GetPtrbitsFlag(enum OSTYPE OS, enum MACHTYPE arch, int ptrbits, + + if (MachIsIA64(arch)) + return(sp); ++ if (MachIsAARCH64(arch)) ++ return(sp); + if (MachIsMIPS(arch)) + return((ptrbits == 64) ? "-mabi=64" : "-mabi=n32"); + if (MachIsS390(arch)) +diff --git a/CONFIG/src/atlcomp.txt b/CONFIG/src/atlcomp.txt +index 5bf32d9..5e0c538 100644 +--- a/CONFIG/src/atlcomp.txt ++++ b/CONFIG/src/atlcomp.txt +@@ -263,6 +263,17 @@ MACH=ARMv7 OS=ALL LVL=1000 COMPS=dmc,dkc + MACH=ARMv7 OS=ALL LVL=1000 COMPS=f77 + 'gfortran' '-mcpu=cortex-a8 -mfpu=vfpv3 -mfloat-abi=softfp -O' + # ++# AArch64 defaults ++# ++MACH=AARCH64 OS=ALL LVL=1000 COMPS=xcc ++ 'gcc' '-O2' ++MACH=AARCH64 OS=ALL LVL=1000 COMPS=smc,skc,gcc,icc ++ 'gcc' '-O2' ++MACH=AARCH64 OS=ALL LVL=1000 COMPS=dmc,dkc ++ 'gcc' '-O2' ++MACH=AARCH64 OS=ALL LVL=1000 COMPS=f77 ++ 'gfortran' '-O' ++# + # Generic defaults + # + MACH=ALL OS=ALL LVL=5 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc +diff --git a/CONFIG/src/atlconf_misc.c b/CONFIG/src/atlconf_misc.c +index b669e8e..f7af4a8 100644 +--- a/CONFIG/src/atlconf_misc.c ++++ b/CONFIG/src/atlconf_misc.c +@@ -481,6 +481,7 @@ enum ARCHFAM ProbeArchFam(char *targ) + else if (strstr(res, "ia64")) fam = AFIA64; + else if (strstr(res, "mips")) fam = AFMIPS; + else if (strstr(res, "arm")) fam = AFARM; ++ else if (strstr(res, "aarch64")) fam = AFAARCH64; + else if (strstr(res, "s390")) fam = AFS390; + else if ( strstr(res, "i686") || strstr(res, "i586") || + strstr(res, "i486") || strstr(res, "i386") || +@@ -506,6 +507,7 @@ enum ARCHFAM ProbeArchFam(char *targ) + strstr(res, "x86_64") ) fam = AFX86; + else if (strstr(res, "mips")) fam = AFMIPS; + else if (strstr(res, "arm")) fam = AFARM; ++ else if (strstr(res, "aarch64")) fam = AFAARCH64; + else if (strstr(res, "s390")) fam = AFS390; + free(res); + } +diff --git a/CONFIG/src/backend/Make.ext b/CONFIG/src/backend/Make.ext +index 9f236f6..918a053 100644 +--- a/CONFIG/src/backend/Make.ext ++++ b/CONFIG/src/backend/Make.ext +@@ -57,6 +57,8 @@ probe_gas_arm.S : $(basf) + $(extC) -b $(basf) -o probe_gas_arm.S rout=probe_gas_arm.S + probe_gas_s390.S : $(basf) + $(extC) -b $(basf) -o probe_gas_s390.S rout=probe_gas_s390.S ++probe_gas_aarch64.S : $(basf) ++ $(extC) -b $(basf) -o probe_gas_aarch64.S rout=probe_gas_aarch64.S + probe_AVXMAC.S : $(basf) + $(extC) -b $(basf) -o probe_AVXMAC.S rout=probe_AVXMAC.S + probe_AVXFMA4.S : $(basf) +diff --git a/CONFIG/src/backend/archinfo_linux.c b/CONFIG/src/backend/archinfo_linux.c +index d3d3fd8..4c419a3 100644 +--- a/CONFIG/src/backend/archinfo_linux.c ++++ b/CONFIG/src/backend/archinfo_linux.c +@@ -248,6 +248,14 @@ enum MACHTYPE ProbeArch() + free(res); + } + break; ++ case AFAARCH64: ++ res = atlsys_1L(NULL, "fgrep 'Processor' /proc/cpuinfo", 0, 0); ++ if (res) ++ { ++ if (strstr(res, "AArch64")) mach = AARCH64; ++ free(res); ++ } ++ break; + default: + #if 0 + if (!CmndOneLine(NULL, "fgrep 'cpu family' /proc/cpuinfo", res)) +diff --git a/CONFIG/src/backend/probe_gas_aarch64.S b/CONFIG/src/backend/probe_gas_aarch64.S +new file mode 100644 +index 0000000..d4c3d68 +--- /dev/null ++++ b/CONFIG/src/backend/probe_gas_aarch64.S +@@ -0,0 +1,14 @@ ++#define ATL_GAS_AARCH64 ++#include "atlas_asm.h" ++# ++# Linux AArch64 assembler for: ++# int asm_probe(int i) ++# RETURNS: i*3 ++# ++.text ++.globl ATL_asmdecor(asm_probe) ++.type ATL_asmdecor(asm_probe), %function ++ATL_asmdecor(asm_probe): ++ add w0, w0, w0, LSL #1 ++ ret ++.size ATL_asmdecor(asm_probe),.-ATL_asmdecor(asm_probe) +diff --git a/CONFIG/src/probe_comp.c b/CONFIG/src/probe_comp.c +index 48f518d..3d5aa3b 100644 +--- a/CONFIG/src/probe_comp.c ++++ b/CONFIG/src/probe_comp.c +@@ -578,7 +578,7 @@ char *GetPtrbitsFlag(enum OSTYPE OS, enum MACHTYPE arch, int ptrbits, + char *sp = ""; + int i, j, k; + +- if (MachIsIA64(arch)) ++ if (MachIsIA64(arch) || MachIsAARCH64(arch)) + return(sp); + if (MachIsMIPS(arch)) + return((ptrbits == 64) ? "-mabi=64" : "-mabi=n32"); +diff --git a/include/atlas_genparse.h b/include/atlas_genparse.h +index 1955687..909a38e 100644 +--- a/include/atlas_genparse.h ++++ b/include/atlas_genparse.h +@@ -6,13 +6,13 @@ + #include + #include + #include +-#define NASMD 9 ++#define NASMD 10 + enum ASMDIA + {ASM_None=0, gas_x86_32, gas_x86_64, gas_sparc, gas_ppc, gas_parisc, +- gas_mips, gas_arm, gas_s390}; ++ gas_mips, gas_arm, gas_s390, gas_aarch64}; + static char *ASMNAM[NASMD] = + {"", "GAS_x8632", "GAS_x8664", "GAS_SPARC", "GAS_PPC", "GAS_PARISC", +- "GAS_MIPS", "GAS_ARM", "GAS_S390"}; ++ "GAS_MIPS", "GAS_ARM", "GAS_S390", "GAS_AARCH64"}; + /* + * Basic data structure for forming queues with some minimal info + */ diff --git a/SOURCES/atlas-affinity.patch b/SOURCES/atlas-affinity.patch new file mode 100644 index 0000000..2a15d4d --- /dev/null +++ b/SOURCES/atlas-affinity.patch @@ -0,0 +1,17 @@ +diff -up wrk/src/threads/ATL_thread_start.c.wrk wrk/src/threads/ATL_thread_start.c +--- wrk/src/threads/ATL_thread_start.c.wrk 2013-09-23 13:46:51.881085276 +0200 ++++ wrk/src/threads/ATL_thread_start.c 2013-09-24 16:13:59.021065418 +0200 +@@ -101,9 +101,10 @@ int ATL_thread_start(ATL_thread_t *thr, + ATL_assert(!pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)); + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); /* no chk, OK to fail */ + #ifdef ATL_PAFF_SETAFFNP +- CPU_ZERO(&cpuset); +- CPU_SET(affID, &cpuset); +- ATL_assert(!pthread_attr_setaffinity_np(&attr, sizeof(cpuset), &cpuset)); ++ //affinity crashes a machine with fewer processors than the builder ++ //CPU_ZERO(&cpuset); ++ //CPU_SET(affID, &cpuset); ++ //ATL_assert(!pthread_attr_setaffinity_np(&attr, sizeof(cpuset), &cpuset)); + #elif defined(ATL_PAFF_SETPROCNP) + ATL_assert(!pthread_attr_setprocessor_np(&attr, (pthread_spu_t)affID, + PTHREAD_BIND_FORCED_NP)); diff --git a/SOURCES/atlas-fedora-arm.patch b/SOURCES/atlas-fedora-arm.patch new file mode 100644 index 0000000..22a9889 --- /dev/null +++ b/SOURCES/atlas-fedora-arm.patch @@ -0,0 +1,50 @@ +--- CONFIG/include/atlconf.h 2011-05-14 13:33:24.000000000 -0400 ++++ CONFIG/include/atlconf.h.new 2011-08-30 14:25:41.427136391 -0400 +@@ -16,7 +16,7 @@ + + enum ARCHFAM {AFOther=0, AFPPC, AFSPARC, AFALPHA, AFX86, AFIA64, AFMIPS}; + +-#define NMACH 37 ++#define NMACH 38 + static char *machnam[NMACH] = + {"UNKNOWN", "POWER3", "POWER4", "POWER5", "PPCG4", "PPCG5", + "POWER6", "POWER7", +@@ -25,7 +25,7 @@ + "Efficeon", "K7", "HAMMER", "AMD64K10h", "UNKNOWNx86", + "IA64Itan", "IA64Itan2", + "USI", "USII", "USIII", "USIV", "UST2", "UnknownUS", +- "MIPSR1xK", "MIPSICE9"}; ++ "MIPSR1xK", "MIPSICE9", "ARM"}; + enum MACHTYPE {MACHOther, IbmPwr3, IbmPwr4, IbmPwr5, PPCG4, PPCG5, + IbmPwr6, IbmPwr7, + IntP5, IntP5MMX, IntPPRO, IntPII, IntPIII, IntPM, IntCoreS, +@@ -34,7 +34,8 @@ + IA64Itan, IA64Itan2, + SunUSI, SunUSII, SunUSIII, SunUSIV, SunUST2, SunUSX, + MIPSR1xK, /* includes R10K, R12K, R14K, R16K */ +- MIPSICE9 /* SiCortex ICE9 -- like MIPS5K */ ++ MIPSICE9, /* SiCortex ICE9 -- like MIPS5K */ ++ ARM + }; + #define MachIsX86(mach_) \ + ( (mach_) >= IntP5 && (mach_) <= x86X ) +@@ -51,6 +52,8 @@ + #endif + #define MachIsPPC(mach_) \ + ( (mach_) >= PPCG4 && (mach_) <= PPCG5 ) ++#define MachIsARM(mach_) \ ++ ( (mach_) == ARM ) + + static char *f2c_namestr[5] = {"UNKNOWN","Add_", "Add__", "NoChange", "UpCase"}; + static char *f2c_intstr[5] = +--- CONFIG/src/probe_comp.c 2011-05-14 13:33:24.000000000 -0400 ++++ CONFIG/src/probe_comp.c.new 2011-08-30 14:28:31.103015151 -0400 +@@ -507,6 +507,8 @@ + + if (MachIsIA64(arch)) + return(sp); ++ if (MachIsARM(arch)) ++ return(sp); + if (MachIsMIPS(arch)) + return((ptrbits == 64) ? "-mabi=64" : "-mabi=n32"); + if (!CompIsGcc(comp)) diff --git a/SOURCES/atlas-genparse.patch b/SOURCES/atlas-genparse.patch new file mode 100644 index 0000000..218768d --- /dev/null +++ b/SOURCES/atlas-genparse.patch @@ -0,0 +1,14 @@ +diff --git a/include/atlas_genparse.h b/include/atlas_genparse.h +index 909a38e..1e6d153 100644 +--- a/include/atlas_genparse.h ++++ b/include/atlas_genparse.h +@@ -163,7 +163,8 @@ static int GetDoubleArr(char *str, int N, double *d) + if (!str) + break; + str++; +- assert(sscanf(str, "%le", d+i) == 1); ++ if (sscanf(str, "%le", d+i) != 1) ++ break; + i++; + } + return(i); diff --git a/SOURCES/atlas-melf.patch b/SOURCES/atlas-melf.patch new file mode 100644 index 0000000..a4fb926 --- /dev/null +++ b/SOURCES/atlas-melf.patch @@ -0,0 +1,16 @@ +diff --git a/CONFIG/src/SpewMakeInc.c b/CONFIG/src/SpewMakeInc.c +index eed259e..65d68a1 100644 +--- a/CONFIG/src/SpewMakeInc.c ++++ b/CONFIG/src/SpewMakeInc.c +@@ -764,9 +764,9 @@ int main(int nargs, char **args) + else + { + if (ptrbits == 32) +- fprintf(fpout, " -melf_i386"); ++ fprintf(fpout, " -Wl,-melf_i386"); + else if (ptrbits == 64) +- fprintf(fpout, " -melf_x86_64"); ++ fprintf(fpout, " -Wl,-melf_x86_64"); + if (OS == OSFreeBSD) + fprintf(fpout, "_fbsd"); + } diff --git a/SOURCES/atlas-memleak.patch b/SOURCES/atlas-memleak.patch new file mode 100644 index 0000000..f4e1372 --- /dev/null +++ b/SOURCES/atlas-memleak.patch @@ -0,0 +1,57 @@ +From 5ef079e305fdfe7275e6a241704fb071f7c9345d Mon Sep 17 00:00:00 2001 +From: "R. Clint Whaley" +Date: Sat, 2 Nov 2013 13:04:29 -0500 +Subject: [PATCH] fixed possible memory leek in threaded QR + +--- + AtlasBase/Students/qr.base | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/threads/lapack/ATL_tgeqr2.c b/src/threads/lapack/ATL_tgeqr2.c +index 2263042..daf44a9 100644 +--- a/src/threads/lapack/ATL_tgeqr2.c ++++ b/src/threads/lapack/ATL_tgeqr2.c +@@ -10372,7 +10372,7 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK, + /* We use a data-owner split, each thread gets 1/p of the data, */ + /* and does all computation related to it. */ + /*----------------------------------------------------------------------------*/ +- TYPE *myA = A, *myOldA = A, *allMem, *workMem; ++ TYPE *myA = A, *myOldA = A, *allMem=NULL, *workMem; + int i, j, k, b0, b, th; + long unsigned int CPU; + size_t mem[ATL_NTHREADS], totmem, workSize; +@@ -10523,9 +10523,8 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK, + ATL_goparallel(th, ATL_geqr2Worker, ts, NULL); + + +- #if defined(local_copy) +- free(allMem); /* release copied area. */ +- #endif /* defined(local_copy) */ ++ if (allMem) ++ free(allMem); /* release copied area. */ + free(workMem); /* release work area. */ + return(0); /* Done with dgeqr2. */ + } /* END ATL_t_dgeqr2. */ +diff --git a/src/threads/lapack/ATL_tgeql2.c b/src/threads/lapack/ATL_tgeql2.c +index 2263042..daf44a9 100644 +--- a/src/threads/lapack/ATL_tgeql2.c ++++ b/src/threads/lapack/ATL_tgeql2.c +@@ -11660,7 +11659,7 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK, + /* We use a data-owner split, each thread gets 1/p of the data, */ + /* and does all computation related to it. */ + /*----------------------------------------------------------------------------*/ +- TYPE *myA = A, *allMem, *workMem; ++ TYPE *myA = A, *allMem=NULL, *workMem; + int i, j, k, b0, b, th; + long unsigned int CPU; + size_t mem[ATL_NTHREADS], totmem, workSize; +@@ -11823,7 +11822,8 @@ int ATL_tgexx2(int M, int N, TYPE *A, int LDA, TYPE *TAU, TYPE *WORK, + ATL_goparallel(th, ATL_geql2Worker, ts, NULL); + + +- if (myCopy) free(allMem); /* release copied area. */ ++ if (allMem) ++ free(allMem); /* release copied area. */ + free(workMem); /* release work area. */ + return(0); /* Done with dgeql2. */ + } /* END ATL_t_dgeql2 */ diff --git a/SOURCES/atlas-s390port.patch b/SOURCES/atlas-s390port.patch new file mode 100644 index 0000000..b1d2507 --- /dev/null +++ b/SOURCES/atlas-s390port.patch @@ -0,0 +1,23 @@ +--- + CONFIG/src/backend/probe_gas_s390.S | 13 +++++++++ + 10 files changed, 108 insertions(+), 7 deletions(-) + +Index: b/CONFIG/src/backend/probe_gas_s390.S +=================================================================== +--- /dev/null ++++ b/CONFIG/src/backend/probe_gas_s390.S +@@ -0,0 +1,13 @@ ++#define ATL_GAS_PPC ++#include "atlas_asm.h" ++/* ++ * Linux S390 assembler for: ++ * int asm_probe(int i) ++ * RETURNS: i*3 ++ */ ++.globl ATL_asmdecor(asm_probe) ++ATL_asmdecor(asm_probe): ++ lr r3,r2 ++ ar r2,r3 ++ ar r2,r3 ++ br r14 + diff --git a/SOURCES/atlas-shared_libraries.patch b/SOURCES/atlas-shared_libraries.patch new file mode 100644 index 0000000..d179dff --- /dev/null +++ b/SOURCES/atlas-shared_libraries.patch @@ -0,0 +1,40 @@ +From 3119c671c566761a79ac98405cb619892acde3e8 Mon Sep 17 00:00:00 2001 +From: Lukas Slebodnik +Date: Fri, 20 Sep 2013 09:26:58 +0200 +Subject: [PATCH] atlas-shared_libraries + +--- + ATLAS/makes/Make.lib | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/ATLAS/makes/Make.lib b/ATLAS/makes/Make.lib +index ab1eb9963d36678972a0a410905169aaa563dc64..27c6e316b442e09b0f46afac7940aaa11e25e45c 100644 +--- a/ATLAS/makes/Make.lib ++++ b/ATLAS/makes/Make.lib +@@ -4,6 +4,8 @@ mySRCdir = $(SRCdir)/lib + # + # override with libatlas.so only when atlas is built to one lib + # ++so_ver_major=3 ++so_ver = $(so_ver_major).10 + DYNlibs = liblapack.so libf77blas.so libcblas.so libatlas.so + PTDYNlibs = liblapack.so libptf77blas.so libptcblas.so libatlas.so + CDYNlibs = liblapack.so libcblas.so libatlas.so +@@ -116,9 +118,12 @@ LDTRY: + -rpath-link $(LIBINSTdir) \ + --whole-archive $(libas) --no-whole-archive $(LIBS) + GCCTRY: +- $(GOODGCC) -shared -o $(outso) \ +- -Wl,"rpath-link $(LIBINSTdir)" \ ++ $(GOODGCC) -shared -o $(outso).$(so_ver) \ ++ \ ++ -Wl,-soname,"$(outso).$(so_ver_major)" \ + -Wl,--whole-archive $(libas) -Wl,--no-whole-archive $(LIBS) ++ ln -s $(outso).$(so_ver) $(outso).$(so_ver_major) ++ ln -s $(outso).$(so_ver) $(outso) + GCCTRY_norp: + $(GOODGCC) -shared -o $(outso) \ + -Wl,--whole-archive $(libas) -Wl,--no-whole-archive $(LIBS) +-- +1.8.3.1 + diff --git a/SOURCES/atlas-throttling.patch b/SOURCES/atlas-throttling.patch new file mode 100644 index 0000000..45c862e --- /dev/null +++ b/SOURCES/atlas-throttling.patch @@ -0,0 +1,12 @@ +diff -up ATLAS/CONFIG/src/config.c.zaloha ATLAS/CONFIG/src/config.c +--- ATLAS/CONFIG/src/config.c.zaloha 2012-10-25 11:29:02.495425989 +0200 ++++ ATLAS/CONFIG/src/config.c 2012-10-25 11:42:10.218216957 +0200 +@@ -711,6 +711,8 @@ int ProbePtrbits(int verb, char *targarg + + int ProbeCPUThrottle(int verb, char *targarg, enum OSTYPE OS, enum ASMDIA asmb) + { ++ return 0; /* impossible to turn off cpu throttling => ignore */ ++ /* this undermines performance of compiled library */ + int i, iret; + char *ln; + i = strlen(targarg) + 22 + 12; diff --git a/SOURCES/getdoublearr.stripwhite.patch b/SOURCES/getdoublearr.stripwhite.patch new file mode 100644 index 0000000..e1dc84d --- /dev/null +++ b/SOURCES/getdoublearr.stripwhite.patch @@ -0,0 +1,50 @@ +Subject: getdoublearr.stripwhite +From: Michel Normand + +GetDoubleArr must only handle the comma delimited list at string head +and ignore anything after the first blank character. + +Signed-off-by: Michel Normand +--- + ATLAS/include/atlas_genparse.h | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +Index: atlas/ATLAS/include/atlas_genparse.h +=================================================================== +--- atlas.orig/ATLAS/include/atlas_genparse.h ++++ atlas/ATLAS/include/atlas_genparse.h +@@ -149,13 +149,24 @@ static int asmNames2bitfield(char *str) + } + + /* procedure 7 */ +-static int GetDoubleArr(char *str, int N, double *d) ++static int GetDoubleArr(char *callerstr, int N, double *d) + /* + * Reads in a list with form "%le,%le...,%le"; N-length d recieves doubles. + * RETURNS: the number of doubles found, or N, whichever is less + */ + { +- int i=1; ++ int i; ++ char *dupstr = DupString(callerstr); ++ char *str = dupstr; ++ /* strip the string to end on first white space */ ++ for (i=0; dupstr[i]; i++) ++ { ++ if (isspace(dupstr[i])) { ++ dupstr[i] = '\0'; ++ break; ++ } ++ } ++ i = 1; + assert(sscanf(str, "%le", d) == 1); + while (i < N) + { +@@ -166,6 +177,7 @@ static int GetDoubleArr(char *str, int N + break; + i++; + } ++ free(dupstr); + return(i); + } + diff --git a/SOURCES/initialize_malloc_memory.invtrsm.wms.oct23.patch b/SOURCES/initialize_malloc_memory.invtrsm.wms.oct23.patch new file mode 100644 index 0000000..f57a9e4 --- /dev/null +++ b/SOURCES/initialize_malloc_memory.invtrsm.wms.oct23.patch @@ -0,0 +1,10 @@ +--- ./ATLAS.first/tune/blas/level3/invtrsm.c 2013-10-22 19:35:03.000000000 +0000 ++++ ./ATLAS/tune/blas/level3/invtrsm.c 2013-10-23 21:24:01.000000000 +0000 +@@ -525,6 +525,7 @@ + a = A = malloc(i * ATL_MulBySize(incA)); + if (A) + { ++ memset(A,0,i*ATL_MulBySize(incA)); /* wms (!!) malloc call above returns non-initialized memory. */ + if (Uplo == TestGE) + for (i=0; i < k; i++) + Mjoin(PATL,gegen)(N, N, A+i*incA, lda, N+lda); diff --git a/SOURCES/p8-mem-barrier.patch b/SOURCES/p8-mem-barrier.patch new file mode 100644 index 0000000..15d7b8a --- /dev/null +++ b/SOURCES/p8-mem-barrier.patch @@ -0,0 +1,12 @@ +diff -Naur ATLAS.orig/include/atlas_pca.h ATLAS/include/atlas_pca.h +--- ATLAS.orig/include/atlas_pca.h 2013-01-08 19:15:40.000000000 +0100 ++++ ATLAS/include/atlas_pca.h 2014-10-23 13:45:36.956698637 +0200 +@@ -26,7 +26,7 @@ + #endif + #elif defined(ATL_ARCH_POWER3) || defined(ATL_ARCH_POWER4) || \ + defined(ATL_ARCH_POWER5) || defined(ATL_ARCH_POWER6) || \ +- defined(ATL_ARCH_POWER7) ++ defined(ATL_ARCH_POWER7) || 1 + #ifdef __GNUC__ + #define ATL_membarrier __asm__ __volatile__ ("dcs") + /* #define ATL_USEPCA 1 */ diff --git a/SOURCES/ppc64le-abiv2.patch b/SOURCES/ppc64le-abiv2.patch new file mode 100644 index 0000000..556dd04 --- /dev/null +++ b/SOURCES/ppc64le-abiv2.patch @@ -0,0 +1,60 @@ +--- atlas/ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c 2013-12-05 19:19:57.000000000 +0100 ++++ atlas/ATLAS/tune/blas/gemm/CASES/ATL_dmm4x4x80_ppc.c.new 2013-12-06 16:29:57.000000000 +0100 +@@ -170,13 +170,21 @@ void ATL_USERMM(const int M, const int N + const TYPE beta, TYPE *C, const int ldc) + (r10) 8(r1) + ******************************************************************************* +-64 bit ABIs: ++64 bit ABIv1s: + r3 r4 r5 r6/f1 + void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha, + r7 r8 r9 r10 + const TYPE *A, const int lda, const TYPE *B, const int ldb, + f2 120(r1) 128(r1) + const TYPE beta, TYPE *C, const int ldc) ++ ++64 bit ABIv2s: ++ r3 r4 r5 r6/f1 ++void ATL_USERMM(const int M, const int N, const int K, const TYPE alpha, ++ r7 r8 r9 r10 ++ const TYPE *A, const int lda, const TYPE *B, const int ldb, ++ f2 104(r1) 112(r1) ++ const TYPE beta, TYPE *C, const int ldc) + #endif + #ifdef ATL_AS_AIX_PPC + .csect .text[PR] +@@ -202,7 +210,7 @@ Mjoin(.,ATL_USERMM): + .globl Mjoin(_,ATL_USERMM) + Mjoin(_,ATL_USERMM): + #else +- #if defined(ATL_USE64BITS) ++ #if defined(ATL_USE64BITS) && _CALL_ELF != 2 + /* + * Official Program Descripter section, seg fault w/o it on Linux/PPC64 + */ +@@ -217,6 +225,7 @@ ATL_USERMM: + .globl Mjoin(.,ATL_USERMM) + Mjoin(.,ATL_USERMM): + #else ++/* ppc64 have no longer function descriptors in ABIv2 */ + .globl ATL_USERMM + ATL_USERMM: + #endif +@@ -257,9 +266,17 @@ ATL_USERMM: + #endif + #endif + ++ + #if defined (ATL_USE64BITS) ++#if _CALL_ELF == 2 ++/* ABIv2 */ ++ ld pC0, 104(r1) ++ ld incCn, 112(r1) ++#else ++/* ABIv1 */ + ld pC0, 120(r1) + ld incCn, 128(r1) ++#endif + #elif defined(ATL_AS_OSX_PPC) || defined(ATL_AS_AIX_PPC) + lwz pC0, 68(r1) + lwz incCn, 72(r1) diff --git a/SOURCES/ppc64le-remove-vsx.patch b/SOURCES/ppc64le-remove-vsx.patch new file mode 100644 index 0000000..a79bea6 --- /dev/null +++ b/SOURCES/ppc64le-remove-vsx.patch @@ -0,0 +1,39 @@ +Subject: ppc64le remove vsx +From: Michel Normand + +temporarily remove the vsx related flags +as long as not supported for ppc64le +Note that also force as power4 + +Signed-off-by: Michel Normand +Index: atlas/ATLAS/CONFIG/src/atlcomp.txt +=================================================================== +--- atlas.orig/ATLAS/CONFIG/src/atlcomp.txt ++++ atlas/ATLAS/CONFIG/src/atlcomp.txt +@@ -187,9 +187,9 @@ MACH=PPCG5 OS=ALL LVL=1000 COMPS=dmc,icc + MACH=PPCG5 OS=ALL LVL=1000 COMPS=skc + 'gcc' '-mpowerpc64 -maltivec -mabi=altivec -mcpu=970 -mtune=970 -O2 -mvrsave' + MACH=POWER7 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc +- 'gcc' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave -funroll-all-loops' ++ 'gcc' '-O2 -m64 -mvrsave -funroll-all-loops' + MACH=POWER7 OS=ALL LVL=1010 COMPS=f77 +- 'gfortran' '-O2 -mvsx -mcpu=power7 -mtune=power7 -m64 -mvrsave -funroll-all-loops' ++ 'gfortran' '-O2 -m64 -mvrsave -funroll-all-loops' + MACH=POWER6 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc + 'gcc' '-mcpu=power6 -mtune=power6 -maltivec -O3 -fno-schedule-insns -fschedule-insns2 -minsert-sched-nops=2' + MACH=POWER5 OS=ALL LVL=1010 COMPS=icc,smc,dmc,skc,dkc,xcc,gcc +Index: atlas/ATLAS/CONFIG/src/probe_comp.c +=================================================================== +--- atlas.orig/ATLAS/CONFIG/src/probe_comp.c ++++ atlas/ATLAS/CONFIG/src/probe_comp.c +@@ -446,8 +446,8 @@ COMPNODE **GetDefaultComps(enum OSTYPE O + + if ((vecexts & (1< + +try to bypass error while building ppc64le +"make[2]: xlf: Command not found" + +Signed-off-by: Michel Normand +--- + ATLAS/CONFIG/src/atlcomp.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: atlas/ATLAS/CONFIG/src/atlcomp.txt +=================================================================== +--- atlas.orig/ATLAS/CONFIG/src/atlcomp.txt ++++ atlas/ATLAS/CONFIG/src/atlcomp.txt +@@ -199,7 +199,7 @@ MACH=POWER6 OS=ALL LVL=1010 COMPS=f77 + MACH=POWER5 OS=ALL LVL=1010 COMPS=f77 + 'gfortran' '-mcpu=power5 -mtune=power5 -O3 -fno-schedule-insns -fno-rerun-loop-opt' + MACH=POWER7 OS=ALL LVL=1010 COMPS=f77 +- 'xlf' '-qtune=pwr7 -qarch=pwr7 -O3 -qmaxmem=-1 -qfloat=hsflt' ++ 'gfortran' '-O2 -m64 -mvrsave -funroll-all-loops' + MACH=POWER5 OS=ALL LVL=1010 COMPS=f77 + 'xlf' '-qtune=pwr5 -qarch=pwr5 -O3 -qmaxmem=-1 -qfloat=hsflt' + MACH=POWER4 OS=ALL LVL=1010 COMPS=icc,dmc,smc,dkc,skc,xcc,gcc diff --git a/SPECS/atlas.spec b/SPECS/atlas.spec new file mode 100644 index 0000000..a97e4fa --- /dev/null +++ b/SPECS/atlas.spec @@ -0,0 +1,1039 @@ +%define enable_native_atlas 0 + +Name: atlas +Version: 3.10.1 +%if "%{?enable_native_atlas}" != "0" +%define dist .native +%endif +Release: 12%{?dist} +Summary: Automatically Tuned Linear Algebra Software + +Group: System Environment/Libraries +License: BSD +URL: http://math-atlas.sourceforge.net/ +Source0: http://downloads.sourceforge.net/math-atlas/%{name}%{version}.tar.bz2 +Source1: PPRO32.tgz +#Source2: K7323DNow.tgz +Source3: README.dist +#Source4: USII64.tgz +#Source5: USII32.tgz +#Source6: IBMz1032.tgz +#Source7: IBMz1064.tgz +#Source8: IBMz19632.tgz +#Source9: IBMz19664.tgz +Source10: lapack-3.4.2-clean.tgz +#archdefs taken from debian: +Source11: POWER332.tar.bz2 +Source12: IBMz932.tar.bz2 +#Source13: IBMz964.tar.bz2 +#upstream arm uses softfp abi, fedora arm uses hard +Source14: ARMv732NEON.tar.bz2 + +Patch1: atlas-s390port.patch +Patch2: atlas-fedora-arm.patch +# Properly pass -melf_* to the linker with -Wl, fixes FTBFS bug 817552 +# https://sourceforge.net/tracker/?func=detail&atid=379484&aid=3555789&group_id=23725 +Patch3: atlas-melf.patch +Patch4: atlas-throttling.patch + +#credits Lukas Slebodnik +Patch5: atlas-shared_libraries.patch + +Patch6: atlas-affinity.patch + +Patch7: atlas-aarch64port.patch +Patch8: atlas-genparse.patch + +Patch9: atlas-memleak.patch +# ppc64le patches +Patch95: initialize_malloc_memory.invtrsm.wms.oct23.patch +Patch96: xlf.command.not.found.patch +Patch98: getdoublearr.stripwhite.patch +Patch99: ppc64le-remove-vsx.patch +Patch100: ppc64le-abiv2.patch +Patch110: p8-mem-barrier.patch + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: gcc-gfortran + +%ifarch x86_64 +Obsoletes: atlas-sse3 < 3.10 +%endif + +%ifarch %{ix86} +Obsoletes: atlas-3dnow < 3.10 +Obsoletes: atlas-sse < 3.10 +%endif + +%ifarch s390 s390x +Obsoletes: atlas-z10 < 3.10 +Obsoletes: atlas-z196 < 3.10 +%endif + + +%description +The ATLAS (Automatically Tuned Linear Algebra Software) project is an +ongoing research effort focusing on applying empirical techniques in +order to provide portable performance. At present, it provides C and +Fortran77 interfaces to a portably efficient BLAS implementation, as +well as a few routines from LAPACK. + +The performance improvements in ATLAS are obtained largely via +compile-time optimizations and tend to be specific to a given hardware +configuration. In order to package ATLAS some compromises +are necessary so that good performance can be obtained on a variety +of hardware. This set of ATLAS binary packages is therefore not +necessarily optimal for any specific hardware configuration. However, +the source package can be used to compile customized ATLAS packages; +see the documentation for information. + +%package devel +Summary: Development libraries for ATLAS +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description devel +This package contains the libraries and headers for development +with ATLAS (Automatically Tuned Linear Algebra Software). + +%package static +Summary: Static libraries for ATLAS +Group: Development/Libraries +Requires: %{name}-devel = %{version}-%{release} +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description static +This package contains static version of ATLAS (Automatically Tuned +Linear Algebra Software). + + +%define types base + +%if "%{?enable_native_atlas}" == "0" +############## Subpackages for architecture extensions ################# +# +%ifarch x86_64 +%define types base +# sse3 + +#package sse3 +#Summary: ATLAS libraries for SSE3 extensions +#Group: System Environment/Libraries + +#description sse3 +#This package contains the ATLAS (Automatically Tuned Linear Algebra +#Software) libraries compiled with optimizations for the SSE3 +#extensions to the x86_64 architecture. The base ATLAS builds for the +#x86_64 architecture are made for the SSE2 extensions. + +#package sse3-devel +#Summary: Development libraries for ATLAS with SSE3 extensions +#Group: Development/Libraries +#Requires: %{name}-sse3 = %{version}-%{release} +#Obsoletes: %name-header <= %version-%release +#Requires(posttrans): chkconfig +#Requires(preun): chkconfig + +#description sse3-devel +#This package contains shared and static versions of the ATLAS +#(Automatically Tuned Linear Algebra Software) libraries compiled with +#optimizations for the SSE3 extensions to the x86_64 architecture. + +%endif + +%ifarch %{ix86} +%define types base sse2 sse3 + +%package sse2 +Summary: ATLAS libraries for SSE2 extensions +Group: System Environment/Libraries + +%description sse2 +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the SSE2 +extensions to the ix86 architecture. ATLAS builds with +SSE(1) and SSE3 extensions also exist. + +%package sse2-devel +Summary: Development libraries for ATLAS with SSE2 extensions +Group: Development/Libraries +Requires: %{name}-sse2 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description sse2-devel +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the SSE2 extensions to the +ix86 architecture. + +%package sse2-static +Summary: Static libraries for ATLAS with SSE2 extensions +Group: Development/Libraries +Requires: %{name}-sse2-devel = %{version}-%{release} +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description sse2-static +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +static libraries compiled with optimizations for the SSE2 extensions to the +ix86 architecture. + + +%package sse3 +Summary: ATLAS libraries for SSE3 extensions +Group: System Environment/Libraries + +%description sse3 +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) libraries compiled with optimizations for the SSE3. +ATLAS builds with SSE(1) and SSE2 extensions also exist. + +%package sse3-devel +Summary: Development libraries for ATLAS with SSE3 extensions +Group: Development/Libraries +Requires: %{name}-sse3 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description sse3-devel +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +shared libraries compiled with optimizations for the SSE3 extensions to the ix86 architecture. + +%package sse3-static +Summary: Static libraries for ATLAS with SSE2 extensions +Group: Development/Libraries +Requires: %{name}-sse2-devel = %{version}-%{release} +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description sse3-static +This package contains ATLAS (Automatically Tuned Linear Algebra Software) +static libraries compiled with optimizations for the SSE3 extensions to the +ix86 architecture. + +%endif + +%ifarch s390 s390x +%define types base +#z196 +#z10 + +#%package z196 +#Summary: ATLAS libraries for z196 +#Group: System Environment/Libraries +# +#%description z196 +#This package contains the ATLAS (Automatically Tuned Linear Algebra +#Software) libraries compiled with optimizations for the z196. +# +#%package z196-devel +#Summary: Development libraries for ATLAS for z196 +#Group: Development/Libraries +#Requires: %{name}-z196 = %{version}-%{release} +#Obsoletes: %name-header <= %version-%release +#Requires(posttrans): chkconfig +#Requires(preun): chkconfig +# +#%description z196-devel +#This package contains headers and shared versions of the ATLAS +#(Automatically Tuned Linear Algebra Software) libraries compiled with +#optimizations for the z196 architecture. + +#%package z196-static +#Summary: Static libraries for ATLAS +#Group: Development/Libraries +#Requires: %{name}-devel = %{version}-%{release} +#Requires(posttrans): chkconfig +#Requires(preun): chkconfig + +#%description z196-static +#This package contains static version of ATLAS (Automatically Tuned +#Linear Algebra Software) for the z196 architecture. + + +#%package z10 +#Summary: ATLAS libraries for z10 +#Group: System Environment/Libraries +# +#%description z10 +#This package contains the ATLAS (Automatically Tuned Linear Algebra +#Software) libraries compiled with optimizations for the z10. +# +#%package z10-devel +#Summary: Development libraries for ATLAS for z10 +#Group: Development/Libraries +#Requires: %{name}-z10 = %{version}-%{release} +#Obsoletes: %name-header <= %version-%release +#Requires(posttrans): chkconfig +#Requires(preun): chkconfig +# +#%description z10-devel +#This package contains headers and shared versions of the ATLAS +#(Automatically Tuned Linear Algebra Software) libraries compiled with +#optimizations for the z10 architecture. +# +#%package z10-static +#Summary: Static libraries for ATLAS +#Group: Development/Libraries +#Requires: %{name}-devel = %{version}-%{release} +#Requires(posttrans): chkconfig +#Requires(preun): chkconfig +# +#%description z10-static +#This package contains static version of ATLAS (Automatically Tuned +#Linear Algebra Software) for the z10 architecture. + + +%endif +%endif + +%ifarch %{arm} +#beware - arch constant can change between releases +%define arch_option -A 46 +%define threads_option -t 2 +%global armflags -mfpu=neon -mfloat-abi=hard +%global mode %{nil} +%else +%global mode -b %{__isa_bits} +%global armflags %{nil} +%if "%{?enable_native_atlas}" == "0" +%define threads_option -t 4 +%endif +%endif + +%prep +%setup -q -n ATLAS +#patch0 -p0 -b .shared +%ifarch s390 s390x +%patch1 -p1 -b .s390 +%endif +#arm patch not applicable, probably not needed +#%ifarch %{arm} +#%patch2 -p0 -b .arm +#%endif +%patch3 -p1 -b .melf +%patch4 -p1 -b .thrott +%patch5 -p2 -b .sharedlib +#affinity crashes with fewer processors than the builder but increases performance of locally builded library +%if "%{?enable_native_atlas}" == "0" +%patch6 -p1 -b .affinity +%endif +#%patch6 -p1 -b .m32 +%ifarch aarch64 +%patch7 -p1 -b .aarch64 +%endif +%patch8 -p1 -b .genparse +%patch9 -p1 -b .memleak +cp %{SOURCE1} CONFIG/ARCHS/ +#cp %{SOURCE2} CONFIG/ARCHS/ +cp %{SOURCE3} doc +cp %{SOURCE11} CONFIG/ARCHS/ +cp %{SOURCE12} CONFIG/ARCHS/ +#cp %{SOURCE13} CONFIG/ARCHS/ + +cp %{SOURCE14} CONFIG/ARCHS/ +#cp %{SOURCE8} CONFIG/ARCHS/ +#cp %{SOURCE9} CONFIG/ARCHS/ + +%ifarch ppc ppc64 +%patch99 -p2 +#%patch98 -p2 +#%patch95 -p2 +#%patch100 -p2 +%patch110 -p1 +%endif + +%ifarch ppc64le +%patch99 -p2 +%patch98 -p2 +%patch96 -p2 +%patch95 -p2 +%patch100 -p2 +%patch110 -p1 +%endif + +%build + +for type in %{types}; do + if [ "$type" = "base" ]; then + libname=atlas + %define pr_base %(echo $((%{__isa_bits}+0))) + else + libname=atlas-${type} + fi + + mkdir -p %{_arch}_${type} + pushd %{_arch}_${type} + ../configure %{mode} %{?threads_option} %{?arch_option} -D c -DWALL -Fa alg '%{armflags} -g -fstack-protector-strong -Wa,--noexecstack -fPIC'\ + --prefix=%{buildroot}%{_prefix} \ + --incdir=%{buildroot}%{_includedir} \ + --libdir=%{buildroot}%{_libdir}/${libname} \ + --with-netlib-lapack-tarfile=%{SOURCE10} + +sed -i 's#F77FLAGS =\(.*\)#F77FLAGS=\1 -frecursive#' Make.inc + +%if "%{?enable_native_atlas}" == "0" +%ifarch x86_64 + if [ "$type" = "base" ]; then +# sed -i 's#ARCH =.*#ARCH = HAMMER64SSE2#' Make.inc +# sed -i 's#ARCH =.*#ARCH = HAMMER64SSE3#' Make.inc + sed -i 's#ARCH =.*#ARCH = P4E64SSE3#' Make.inc +# sed -i 's#-DATL_SSE3##' Make.inc + sed -i 's#-DATL_AVX\b##' Make.inc +# sed -i 's#-msse3#-msse2#' Make.inc + sed -i 's#-mavx\b#-msse3#' Make.inc + echo 'base makefile edited' +# sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc + elif [ "$type" = "sse3" ]; then +# sed -i 's#ARCH =.*#ARCH = Corei264AVX#' Make.inc +# sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc + sed -i 's#-DATL_AVX\b##' Make.inc + sed -i 's#-DATL_SSE2##' Make.inc + sed -i 's#-mavx\b#-msse2#' Make.inc + sed -i 's#-msse3#-msse2#' Make.inc + echo 'sse makefile edited' + %define pr_sse3 %(echo $((%{__isa_bits}+4))) + fi +%endif + +%ifarch %{ix86} + if [ "$type" = "base" ]; then + sed -i 's#ARCH =.*#ARCH = PPRO32#' Make.inc + #sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc + sed -i 's#-DATL_SSE3##' Make.inc + sed -i 's#-DATL_SSE2##' Make.inc + sed -i 's#-DATL_SSE1##' Make.inc + sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc + elif [ "$type" = "sse" ]; then + sed -i 's#ARCH =.*#ARCH = PIII32SSE1#' Make.inc + sed -i 's#-DATL_SSE3#-DATL_SSE1#' Make.inc + sed -i 's#-msse3#-msse#' Make.inc + %define pr_sse %(echo $((%{__isa_bits}+2))) + elif [ "$type" = "sse2" ]; then +# sed -i 's#ARCH =.*#ARCH = P432SSE2#' Make.inc + sed -i 's#ARCH =.*#ARCH = x86SSE232SSE2#' Make.inc + sed -i 's#-DATL_SSE3#-DATL_SSE2#' Make.inc + sed -i 's#-msse3#-msse2#' Make.inc + %define pr_sse2 %(echo $((%{__isa_bits}+3))) + elif [ "$type" = "sse3" ]; then + sed -i 's#ARCH =.*#ARCH = P4E32SSE3#' Make.inc + %define pr_sse3 %(echo $((%{__isa_bits}+4))) + fi +%endif + +%ifarch s390 s390x + if [ "$type" = "base" ]; then + %ifarch s390x + sed -i 's#ARCH =.*#ARCH = IBMz19664#' Make.inc + %endif + %ifarch s390 + sed -i 's#ARCH =.*#ARCH = IBMz932#' Make.inc + %endif + #sed -i 's#-march=z196#-march=z10 -mtune=z196#' Make.inc + sed -i 's#-march=z10#-march=z196#' Make.inc + sed -i 's#-march=z9-109#-march=z196#' Make.inc + sed -i 's#-DATL_ARCH_IBMz10#-DATL_ARCH_IBMz196#' Make.inc + sed -i 's#-DATL_ARCH_IBMz9#-DATL_ARCH_IBMz196#' Make.inc + %define pr_z196 %(echo $((%{__isa_bits}+2))) + fi +%endif + +%ifarch ppc + sed -i 's#ARCH =.*#ARCH = POWER332#' Make.inc + sed -i 's#-DATL_ARCH_POWER7#-DATL_ARCH_POWER3#g' Make.inc + sed -i 's#power7#power3#g' Make.inc + sed -i 's#-DATL_VSX\b##g' Make.inc + sed -i 's#-mvsx\b##g' Make.inc + sed -i 's#-DATL_AltiVec##g' Make.inc + sed -i 's#-m64#-m32#g' Make.inc +%endif + +%ifarch ppc64le + sed -i 's#-mvsx##g' Make.inc + sed -i 's#-DATL_VSX\b##g' Make.inc + sed -i 's#-DATL_AltiVec\b##g' Make.inc + sed -i 's#-maltivec##g' Make.inc + sed -i 's#ARCH =.*#ARCH = POWER464#' Make.inc +%endif + +%endif + make build + cd lib + make shared + make ptshared + popd +done + +%install +for type in %{types}; do + pushd %{_arch}_${type} + make DESTDIR=%{buildroot} install + mv %{buildroot}%{_includedir}/atlas %{buildroot}%{_includedir}/atlas-%{_arch}-${type} + if [ "$type" = "base" ]; then + cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas/ + rm -f %{buildroot}%{_libdir}/atlas/*.a + cp -pr lib/libatlas.a %{buildroot}%{_libdir}/atlas/ + else + cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas-${type}/ + rm -f %{buildroot}%{_libdir}/atlas-${type}/*.a + cp -pr lib/libatlas.a %{buildroot}%{_libdir}/atlas-${type}/ + fi + popd + + mkdir -p %{buildroot}/etc/ld.so.conf.d + if [ "$type" = "base" ]; then + echo "%{_libdir}/atlas" \ + > %{buildroot}/etc/ld.so.conf.d/atlas-%{_arch}.conf + else + echo "%{_libdir}/atlas-${type}" \ + > %{buildroot}/etc/ld.so.conf.d/atlas-%{_arch}-${type}.conf + fi +done +mkdir -p %{buildroot}%{_includedir}/atlas + + +%check +%ifnarch s390 aarch64 +for type in %{types}; do + pushd %{_arch}_${type} + make check ptcheck + popd +done +%endif + + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%posttrans devel +if [ $1 -eq 0 ] ; then +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-base %{pr_base} +fi + +%preun devel +if [ $1 -ge 0 ] ; then +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-base +fi + +%if "%{?enable_native_atlas}" == "0" +#ifarch x86_64 + +#post -n atlas-sse3 -p /sbin/ldconfig + +#postun -n atlas-sse3 -p /sbin/ldconfig + +#posttrans sse3-devel +#if [ $1 -eq 0 ] ; then +#/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ +# %{_includedir}/atlas-%{_arch}-sse3 %{pr_sse3} +#fi + +#preun sse3-devel +#if [ $1 -ge 0 ] ; then +#/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3 +#fi + +#endif + +%ifarch %{ix86} +#%%post -n atlas-3dnow -p /sbin/ldconfig + +#%%postun -n atlas-3dnow -p /sbin/ldconfig + +#%%posttrans 3dnow-devel +#if [ $1 -eq 0 ] ; then +#/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ +# %{_includedir}/atlas-%{_arch}-3dnow %{pr_3dnow} +#fi + +#%%preun 3dnow-devel +#if [ $1 -ge 0 ] ; then +#/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-3dnow +#fi + +#%%post -n atlas-sse -p /sbin/ldconfig + +#%%postun -n atlas-sse -p /sbin/ldconfig + +#%%posttrans sse-devel +#if [ $1 -eq 0 ] ; then +#/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ +# %{_includedir}/atlas-%{_arch}-sse %{pr_sse} +#fi + +#%%preun sse-devel +#if [ $1 -ge 0 ] ; then +#/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse +#fi + +%post -n atlas-sse2 -p /sbin/ldconfig + +%postun -n atlas-sse2 -p /sbin/ldconfig + +%posttrans sse2-devel +if [ $1 -eq 0 ] ; then +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-sse2 %{pr_sse2} +fi + +%preun sse2-devel +if [ $1 -ge 0 ] ; then +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2 +fi + +%post -n atlas-sse3 -p /sbin/ldconfig + +%postun -n atlas-sse3 -p /sbin/ldconfig + +%posttrans sse3-devel +if [ $1 -eq 0 ] ; then +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-sse3 %{pr_sse3} +fi + +%preun sse3-devel +if [ $1 -ge 0 ] ; then +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3 +fi + +%endif + +#%ifarch s390 s390x +#%post -n atlas-z10 -p /sbin/ldconfig + +#%postun -n atlas-z10 -p /sbin/ldconfig + +#%posttrans z10-devel +#if [ $1 -eq 0 ] ; then +#/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ +# %{_includedir}/atlas-%{_arch}-z10 %{pr_z10} +#fi + +#%preun z10-devel +#if [ $1 -ge 0 ] ; then +#/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-z10 +#fi + +#%post -n atlas-z196 -p /sbin/ldconfig + +#%postun -n atlas-z196 -p /sbin/ldconfig + +#%posttrans z196-devel +#if [ $1 -eq 0 ] ; then +#/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ +# %{_includedir}/atlas-%{_arch}-z196 %{pr_z196} +#fi + +#%preun z196-devel +#if [ $1 -ge 0 ] ; then +#/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-z196 +#fi + +#%endif + +%endif + +%files +%defattr(-,root,root,-) +%doc doc/README.dist +%dir %{_libdir}/atlas +%{_libdir}/atlas/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}.conf + +%files devel +%defattr(-,root,root,-) +%doc doc +%{_libdir}/atlas/*.so +%{_includedir}/atlas-%{_arch}-base/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files static +%defattr(-,root,root,-) +%{_libdir}/atlas/*.a + +%if "%{?enable_native_atlas}" == "0" + +#ifarch x86_64 + +#files sse3 +#defattr(-,root,root,-) +#doc doc/README.Fedora +#dir %{_libdir}/atlas-sse3 +#{_libdir}/atlas-sse3/*.so +#config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-sse3.conf + +#files sse3-devel +#defattr(-,root,root,-) +#doc doc +#{_libdir}/atlas-sse3/*.so +#{_includedir}/atlas-%{_arch}-sse3/ +#{_includedir}/*.h +#ghost %{_includedir}/atlas + +#endif + +%ifarch %{ix86} + +#%%files 3dnow +#%%defattr(-,root,root,-) +#%%doc doc/README.Fedora +#%%dir %{_libdir}/atlas-3dnow +#%%{_libdir}/atlas-3dnow/*.so.* +#%%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-3dnow.conf + +#%%files 3dnow-devel +#%%defattr(-,root,root,-) +#%%doc doc +#%%{_libdir}/atlas-3dnow/*.so +#%%{_includedir}/atlas-%{_arch}-3dnow/ +#%%{_includedir}/*.h +#%%ghost %{_includedir}/atlas + +#%%files sse +#%%defattr(-,root,root,-) +#%%doc doc/README.Fedora +#%%dir %{_libdir}/atlas-sse +#%%{_libdir}/atlas-sse/*.so.* +#%%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-sse.conf + +#%%files sse-devel +#%%defattr(-,root,root,-) +#%%doc doc +#%%{_libdir}/atlas-sse/*.so +#%%{_includedir}/atlas-%{_arch}-sse/ +#%%{_includedir}/*.h +#%%ghost %{_includedir}/atlas + +%files sse2 +%defattr(-,root,root,-) +%doc doc/README.dist +%dir %{_libdir}/atlas-sse2 +%{_libdir}/atlas-sse2/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-sse2.conf + +%files sse2-devel +%defattr(-,root,root,-) +%doc doc +%{_libdir}/atlas-sse2/*.so +%{_includedir}/atlas-%{_arch}-sse2/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files sse2-static +%defattr(-,root,root,-) +%{_libdir}/atlas-sse2/*.a + +%files sse3 +%defattr(-,root,root,-) +%doc doc/README.dist +%dir %{_libdir}/atlas-sse3 +%{_libdir}/atlas-sse3/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-sse3.conf + +%files sse3-static +%defattr(-,root,root,-) +%{_libdir}/atlas-sse3/*.a + +%files sse3-devel +%defattr(-,root,root,-) +%doc doc +%{_libdir}/atlas-sse3/*.so +%{_includedir}/atlas-%{_arch}-sse3/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%endif + +#%ifarch s390 s390x +#%files z10 +#%defattr(-,root,root,-) +#%doc doc/README.dist +#%dir %{_libdir}/atlas-z10 +#%{_libdir}/atlas-z10/*.so +#%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-z10.conf +# +#%files z10-devel +#%defattr(-,root,root,-) +#%doc doc +#%{_libdir}/atlas-z10/*.so +#%{_includedir}/atlas-%{_arch}-z10/ +#%{_includedir}/*.h +#%ghost %{_includedir}/atlas +# +#%files z10-static +#%defattr(-,root,root,-) +#%{_libdir}/atlas-z10/*.a + +#%files z196 +#%defattr(-,root,root,-) +#%doc doc/README.dist +#%dir %{_libdir}/atlas-z196 +#%{_libdir}/atlas-z196/*.so +#%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-z196.conf + +#%files z196-devel +#%defattr(-,root,root,-) +#%doc doc +#%{_libdir}/atlas-z196/*.so +#%{_includedir}/atlas-%{_arch}-z196/ +#%{_includedir}/*.h +#%ghost %{_includedir}/atlas + +#%files z196-static +#%defattr(-,root,root,-) +#%{_libdir}/atlas-z196/*.a + +#%endif +%endif + +%changelog +* Wed Mar 15 2017 Jakub Martisko - 3.10.1-12 +- cleanup: merge the application of ppc patches from previous commit + into single block +- Related: rhbz#1350536 + +* Mon Feb 27 2017 Jakub Martisko - 3.10.1-11 +- apply patches 99 and 110 to all ppc variants +- build lapack with -frecursive flag (#1176026) +- fix possible memory leak (#1350536) +- fix wrong sed substitutions (#1402627) +- Resolves: rhbz#1350536 +- Related: rhbz#1176026 + +* Thu Oct 23 2014 Jaromir Capik - 3.10.1-10 +- patching for Power8 to pass performance tunings and tests on P8 builders +- re-enabling tests on ppc64le +- Resolves: rhbz#1125475 + +* Sun Sep 07 2014 Frantisek Kluknavsky - 3.10.1-9 +- ppcle patches (conflicting patches modified) +- tests on ppcle disabled to shorten build time and fit into 24 hour limit +- resolves bug 1125475 +- aarch64 patches +- Resolves: rhbz#1061956 + +* Fri Feb 28 2014 Frantisek Kluknavsky - 3.10.1-7 +- change x86_64 archdef to P4, prefetch instruction from hammer is illegal on some pentium 4 +- add -fstack-protector-strong to flags +- Resolves: rhbz#1070783 + +* Thu Feb 20 2014 Frantisek Kluknavsky - 3.10.1-6 +- use upstream archdef for s390x 64-bit +- Resolves: rhbz#804763 + +* Wed Feb 5 2014 Brendan Conoboy - 3.10.1-5.2 +- Temporarily make %check failures non-fatal. + +* Wed Feb 5 2014 Brendan Conoboy - 3.10.1-5.1 +- Add Mark Salter's initial aarch64 port. + +* Fri Jan 24 2014 Daniel Mach - 3.10.1-5 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 3.10.1-4 +- Mass rebuild 2013-12-27 + +* Tue Sep 24 2013 Frantisek Kluknavsky - 3.10.1-3 +- disable affinity to prevent crash on systems with fewer cpus + +* Mon Sep 23 2013 Frantisek Kluknavsky - 3.10.1-2 +- fix atlas-devel dependency +- archdefs for z10 and z196 not yet in use + +* Mon Sep 23 2013 Orion Poplawski - 3.10.1-2 +- Add %%check section + +* Fri Sep 20 2013 Frantisek Kluknavsky - 3.10.1-1 +- Rebase to 3.10.1 +- Dropped x86_64-SSE2, ix86-SSE1, ix86-3DNow, z10, z196 (uncompilable). +- Modified incompatible patches. +- Added armv7neon support, modified archdef from softfp abi to hard abi. +- Modified Make.lib to include build-id, soname, versioned library name and symlinks. +- Now builds monolithic libsatlas (serial) and libtatlas (threaded) + libraries with lapack and blas included. +- Lapack source tarball needed instead of static library. +- Disabled cpu throttling detection again (sorry, could not work on atlas + otherwise, feel free to enable yet again - atlas-throttling.patch). +- Removed mentions of "Fedora" to promote redistribution. +- Modified parts of atlas.spec sometimes left in place, work still in progress, + cleanup needed. + + +* Sat Aug 03 2013 Fedora Release Engineering - 3.8.4-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun Jan 27 2013 Peter Robinson 3.8.4-8 +- Rebuild for ARM glibc/binutils issues + +* Fri Sep 07 2012 Orion Poplawski - 3.8.4-7 +- Rebuild with lapack 3.4.1 + +* Thu Aug 09 2012 Orion Poplawski - 3.8.4-6 +- Add patch to properly pass -melf_* to the linker with -Wl (bug 817552) + +* Wed Jul 18 2012 Fedora Release Engineering - 3.8.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 3.8.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Sep 01 2011 Deji Akingunola - 3.8.4-3 +- Apply patch to enable arm build (Patch provided by Jitesh Shah ) +- Stop turning off throttle checking, upstream frown at it (seems O.K. for Koji) + +* Mon Jun 20 2011 Dan Horák - 3.8.4-2 +- Use -march=z10 for z196 optimised build because the builder is a z10 + (Christian Bornträger) + +* Tue Jun 14 2011 Deji Akingunola - 3.8.4-1 +- Update to 3.8.4 +- Build the default package for SSE2 and add a SSE3 subpackage on x86_64 +- Apply patch (and arch defs.) to build on s390 and s390x (Dan Horák) +- Fix-up build on s390 and s390x (Christian Bornträger) + +* Mon Feb 07 2011 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Jul 26 2010 Deji Akingunola - 3.8.3-18 +- Create a subpackage for SSE2 on x86_64 + +* Sat Jul 17 2010 Dan Horák - 3.8.3-17 +- rebuild against fixed lapack libraries + +* Thu Jul 15 2010 Dan Horák - 3.8.3-16 +- fix build on s390 (patch by Karsten Hopp) + +* Wed Feb 10 2010 Deji Akingunola - 3.8.3-15 +- Disable the problematic sparc patch +- Change lapack-devel BR to lapack-static, where liblapack_pic.a now resides. + +* Wed Feb 03 2010 Dennis Gilmore - 3.8.3-14 +- fix sparc build + +* Fri Jan 29 2010 Deji Akingunola - 3.8.3-13 +- Remove static libraries. +- Fix typo in SSE3 subpackage's summary. + +* Sat Oct 24 2009 Deji Akingunola - 3.8.3-12 +- Use alternatives to workaround multilib conflicts (BZ#508565). + +* Tue Sep 29 2009 Deji Akingunola - 3.8.3-11 +- Obsolete the -header subpackage properly. + +* Sat Sep 26 2009 Deji Akingunola - 3.8.3-10 +- Use the new arch. default for Pentium PRO (Fedora bug #510498) +- (Re-)Introduce 3dNow subpackage + +* Sun Sep 6 2009 Alex Lancaster - 3.8.3-9 +- Rebuild against fixed lapack (see #520518) + +* Thu Aug 13 2009 Deji Akingunola - 3.8.3-8 +- Revert the last change, it doesn't solve the problem. + +* Tue Aug 04 2009 Deji Akingunola - 3.8.3-7 +- Create a -header subpackage to avoid multilib conflicts (BZ#508565). + +* Tue Aug 04 2009 Deji Akingunola - 3.8.3-6 +- Add '-g' to build flag to allow proper genration of debuginfo subpackages (Fedora bug #509813) +- Build for F12 + +* Fri Jul 24 2009 Fedora Release Engineering - 3.8.3-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Sat May 02 2009 Deji Akingunola - 3.8.3-4 +- Use the right -msse* option for the -sse* subpackages (Fedora bug #498715) + +* Tue Apr 21 2009 Karsten Hopp 3.8.3-3.1 +- add s390x to 64 bit archs + +* Fri Feb 27 2009 Deji Akingunola - 3.8.3-3 +- Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 3.8.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Feb 22 2009 Deji Akingunola - 3.8.3-1 +- Update to version 3.8.3 + +* Sun Dec 21 2008 Deji Akingunola - 3.8.2-5 +- Link in appropriate libs when creating shared libs, reported by Orcan 'oget' Ogetbil (BZ#475411) + +* Tue Dec 16 2008 Deji Akingunola - 3.8.2-4 +- Don't symlink the atlas libdir on i386, cause upgrade issue (BZ#476787) +- Fix options passed to gcc when making shared libs + +* Tue Dec 16 2008 Deji Akingunola - 3.8.2-3 +- Use 'gcc -shared' to build shared libs instead of stock 'ld' + +* Sat Dec 13 2008 Deji Akingunola - 3.8.2-2 +- Properly obsolete/provide older subpackages that are no longer packaged. + +* Mon Sep 01 2008 Deji Akingunola - 3.8.2-1 +- Upgrade to ver 3.8.2 with refined build procedures. + +* Thu Feb 28 2008 Quentin Spencer 3.6.0-15 +- Disable altivec package--it is causing illegal instructions during build. + +* Thu Feb 28 2008 Quentin Spencer 3.6.0-14 +- Enable compilation on alpha (bug 426086). +- Patch for compilation on ia64 (bug 432744). + +* Tue Feb 19 2008 Fedora Release Engineering - 3.6.0-13 +- Autorebuild for GCC 4.3 + +* Mon Jun 4 2007 Orion Poplawski 3.6.0-12 +- Rebuild for ppc64 + +* Fri Sep 8 2006 Quentin Spencer 3.6.0-11 +- Rebuild for FC6. +- Remove outdated comments from spec file. + +* Mon Feb 13 2006 Quentin Spencer 3.6.0-10 +- Rebuild for Fedora Extras 5. +- Add --noexecstack to compilation of assembly kernels. These were + previously marked executable, which caused problems with selinux. + +* Mon Dec 19 2005 Quentin Spencer 3.6.0-9 +- Rebuild for gcc 4.1. + +* Mon Oct 10 2005 Quentin Spencer 3.6.0-8 +- Make all devel subpackages depend on their non-devel counterparts. +- Add /etc/ld.so.conf.d files for -sse and -3dnow, because they don't + seem to get picked up automatically. + +* Wed Oct 05 2005 Quentin Spencer 3.6.0-7 +- Forgot to add the new patch to sources. + +* Tue Oct 04 2005 Quentin Spencer 3.6.0-6 +- Use new Debian patch, and enable shared libs (they previously failed + to build on gcc 4). +- Minor updates to description and README.Fedora file. +- Fix buildroot name to match FE preferred form. +- Fixes for custom optimized builds. +- Add dist tag. + +* Wed Sep 28 2005 Quentin Spencer 3.6.0-5 +- fix files lists. + +* Mon Sep 26 2005 Quentin Spencer 3.6.0-4 +- generate library symlinks earlier for the benefit of later linking steps. + +* Wed Sep 14 2005 Quentin Spencer 3.6.0-3 +- Change lapack dependency to lapack-devel, and use lapack_pic.a for + building liblapack.so. + +* Wed Sep 14 2005 Quentin Spencer 3.6.0-2 +- Add "bit" macro to correctly build on x86_64. + +* Tue Aug 16 2005 Quentin Spencer 3.6.0-1 +- Initial version.