From 2c4ed295c0d88f8919444bfac283b9c0d0c49372 Mon Sep 17 00:00:00 2001 From: Quentin Spencer Date: Oct 05 2005 17:09:24 +0000 Subject: Update to newest patch from Debian that fixes shared lib problem with gcc 4. Many other minor fixes. --- diff --git a/README.Fedora b/README.Fedora index a8ca55d..66a5133 100644 --- a/README.Fedora +++ b/README.Fedora @@ -1,7 +1,7 @@ Notes on the Fedora Extras version of ATLAS by Quentin Spencer -updated: September 12, 2005 +updated: October 4, 2005 Because ATLAS relies on compile-time optimizations to obtain improved @@ -15,10 +15,11 @@ Optimizing ATLAS for the most modern hardware can result in significant performance penalties for users using the same package on older hardware. Second, building from the same source package must result in identical binaries for any computer of a particular -architecture. This is because the Fedora Extras build system has -multiple computers for building i386 packages, and it is not possible -to know the hardware specifications of the computer that will be -handling a given build request when it is submitted. +architecture. This is because the binaries installed on a user's +computer are built on a computer in the Fedora Extras build system, +which will have hardware different from the end user's hardware, and +quite possibly different from other available hardware in the build +system. The Debian project was probably the first to distribute precompiled ATLAS libraries. Camm Maguire, the creator of the Debian ATLAS @@ -62,12 +63,3 @@ noted here that because custom compilation enables all compile-time empirical tests instead of simply replaying a previous build, the compilation time will be considerably longer, and can require several hours to complete, depending on the hardware. - - -The 3.6.0 release of ATLAS will not compile shared libraries for the -i386 architecture extensions (sse, sse2, 3dnow) when using the gcc -4.0.x compiler included in Fedora Core 4. For this reason, the -package currently provides only base i386 shared libraries, but -provides static libraries for the extensions. It appears that the -problem will not be resolved until the 3.8.0 release of ATLAS, and -there is currently no indication of how soon that can be expected. diff --git a/atlas.spec b/atlas.spec index 6ff38b9..99b1a2d 100644 --- a/atlas.spec +++ b/atlas.spec @@ -1,15 +1,15 @@ Name: atlas Version: 3.6.0 -Release: 6 +Release: 6%{?dist} Summary: Automatically Tuned Linear Algebra Software Group: System Environment/Libraries License: BSD URL: http://math-atlas.sourceforge.net/ Source0: http://prdownloads.sourceforge.net/math-atlas/%{name}%{version}.tar.bz2 -Source1: README.Fedora -Patch0: http://ftp.debian.org/debian/pool/main/a/atlas3/%{name}3_%{version}-19.diff.gz -Patch1: %{name}-%{version}-gfortran.patch +Source1: README.Fedora +Patch0: http://ftp.debian.org/debian/pool/main/a/atlas3/%{name}3_%{version}-20.diff.gz +Patch1: %{name}-%{version}-gfortran.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Requires: /etc/ld.so.conf.d @@ -27,14 +27,14 @@ 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 largely obtained via +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 for Fedora some compromises -were necessary so that good performance can be obtained on a variety +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 specific hardware. However, the source -package can be used to compile customized ATLAS packages--see the -documentation for information. +necessarily optimal for any specific hardware configuration. However, +the source package can be used to compile customized ATLAS packages; +see the documentation for information. @@ -204,9 +204,9 @@ for TYPE in %{types}; do make startup arch=$BUILD_DIR if [ "$TYPE" = "custom" ]; then - BUILD_DATA_DIR=custom_%{archt} - if [ -a $BUILD_DATA_DIR.tgz ]; then - tar zxf $BUILD_DATA_DIR.tgz + BUILD_DATA_DIR=atlas-$TYPE-%{archt} + if [ -a %{_sourcedir}/$BUILD_DATA_DIR.tgz ]; then + tar zxf %{_sourcedir}/$BUILD_DATA_DIR.tgz else make install arch=$BUILD_DIR >out 2>&1 & pid=$! @@ -228,7 +228,7 @@ for TYPE in %{types}; do cp tune/blas/ger/$BUILD_DIR/res/* ${BUILD_DATA_DIR}/r1 mkdir -p ${BUILD_DATA_DIR}/l1 cp tune/blas/level1/$BUILD_DIR/res/* ${BUILD_DATA_DIR}/l1 - tar zcf ${BUILD_DATA_DIR}.tgz ${BUILD_DATA_DIR} + tar zcf %{_sourcedir}/${BUILD_DATA_DIR}.tgz ${BUILD_DATA_DIR} fi else BUILD_DATA_DIR=debian/%{archt}/${TYPE} @@ -266,17 +266,13 @@ for TYPE in %{types}; do ar r lib/$BUILD_DIR/liblapack.a tmp/*.o rm -rf tmp - - ## Shared libs are currently broken for SIMD extensions with gcc 4. - ## Until this is fixed, the following is only performed for "base". - if [ "$TYPE" = "base" ] ; then ########## Shared Libraries ########################################## BUILD_DIR=Linux_${TYPE}_shared ARCH_DIR=$BUILD_DIR CACHE_SIZE= BIT=%{bit} \ DEFAULTS=y TDNCOMP=$TDN debian/config.expect cat Make.$BUILD_DIR |\ sed -e "s, TOPdir = \(.*\), TOPdir = `pwd`,1" \ - -e "s, FLAPACKlib = , FLAPACKlib = %{_libdir}/liblapack.a,1" \ + -e "s, FLAPACKlib = , FLAPACKlib = %{_libdir}/liblapack_pic.a,1" \ -e "s, F77FLAGS = \(.*\), F77FLAGS = \1 -fPIC,1" \ -e "s, CCFLAGS = \(.*\), CCFLAGS = \1 -fPIC,1" \ -e "s, MMFLAGS = \(.*\), MMFLAGS = \1 -fPIC,1" \ @@ -367,44 +363,36 @@ for TYPE in %{types}; do ln -s liblapack.so.%{ver} lib/$BUILD_DIR/liblapack.so.%{ver_major} ln -s liblapack.so.%{ver} lib/$BUILD_DIR/liblapack.so rm -rf tmp - fi done %install rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d +mkdir -p $RPM_BUILD_ROOT%{_includedir}/atlas +cp -a include/*.h $RPM_BUILD_ROOT%{_includedir}/atlas + +LIBNAMES="libatlas libcblas libf77blas liblapack_atlas libblas liblapack" for TYPE in %{types}; do - EXTDIR=$TYPE if [ "$TYPE" = "base" ]; then - EXTDIR="" + EXTDIR="atlas" + echo "%{_libdir}/atlas" \ + > $RPM_BUILD_ROOT/etc/ld.so.conf.d/atlas-%{_arch}.conf + elif [ "$TYPE" = "custom" ]; then + EXTDIR="atlas-custom" + echo "%{_libdir}/atlas-custom" \ + > $RPM_BUILD_ROOT/etc/ld.so.conf.d/atlas-custom-%{_arch}.conf + else + EXTDIR=$TYPE fi mkdir -p $RPM_BUILD_ROOT%{_libdir}/${EXTDIR} - mkdir -p $RPM_BUILD_ROOT%{_libdir}/atlas/${EXTDIR} - for LIB in libblas liblapack; do - if [ "$TYPE" = "base" ]; then - LIBS="lib/Linux_${TYPE}_static/$LIB.a lib/Linux_${TYPE}_shared/$LIB.so*" - else - LIBS="lib/Linux_${TYPE}_static/$LIB.a" - fi - cp -a $LIBS ${RPM_BUILD_ROOT}%{_libdir}/atlas/${EXTDIR} - done - for LIB in libatlas libcblas libf77blas liblapack_atlas; do - if [ "$TYPE" = "base" ]; then - LIBS="lib/Linux_${TYPE}_static/$LIB.a lib/Linux_${TYPE}_shared/$LIB.so*" - else - LIBS="lib/Linux_${TYPE}_static/$LIB.a" - fi + for LIB in $LIBNAMES; do + LIBS="lib/Linux_${TYPE}_static/$LIB.a lib/Linux_${TYPE}_shared/$LIB.so*" cp -a $LIBS ${RPM_BUILD_ROOT}%{_libdir}/${EXTDIR} done done -mkdir -p $RPM_BUILD_ROOT%{_includedir}/atlas -cp -a include/*.h $RPM_BUILD_ROOT%{_includedir}/atlas - -mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d -echo "%{_libdir}/atlas" > $RPM_BUILD_ROOT/etc/ld.so.conf.d/atlas-%{_arch}.conf - %clean @@ -414,29 +402,48 @@ rm -rf $RPM_BUILD_ROOT %postun -p /sbin/ldconfig +%ifarch i386 + +%post -n atlas-sse -p /sbin/ldconfig +%postun -n atlas-sse -p /sbin/ldconfig + +%post -n atlas-sse2 -p /sbin/ldconfig + +%postun -n atlas-sse2 -p /sbin/ldconfig + +%post -n atlas-3dnow -p /sbin/ldconfig + +%postun -n atlas-3dnow -p /sbin/ldconfig + +%endif +%ifarch ppc + +%post -n atlas-altivec -p /sbin/ldconfig + +%postun -n atlas-altivec -p /sbin/ldconfig + +%endif %if "%{?enable_custom_atlas}" == "1" -#%files custom -#%defattr(-,root,root,-) -#%doc debian/copyright doc/README.Fedora -#%dir %{_libdir}/custom -#%dir %{_libdir}/atlas/custom -#%{_libdir}/custom/*.so.* -#%{_libdir}/atlas/custom/*.so.* -#%config(noreplace) /etc/ld.so.conf.d/atlas-custom-%{_arch}.conf +%post -n atlas-custom -p /sbin/ldconfig + +%postun -n atlas-custom -p /sbin/ldconfig + +%files custom +%defattr(-,root,root,-) +%doc debian/copyright doc/README.Fedora +%dir %{_libdir}/atlas-custom +%{_libdir}/atlas-custom/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-custom-%{_arch}.conf %files custom-devel %defattr(-,root,root,-) %doc debian/copyright doc -%dir %{_libdir}/custom -%dir %{_libdir}/atlas/custom -#%{_libdir}/custom/*.{a,so} -%{_libdir}/custom/*.a -#%{_libdir}/atlas/custom/*.{a,so} -%{_libdir}/atlas/custom/*.a +%dir %{_libdir}/atlas-custom +%{_libdir}/atlas-custom/*.so +%{_libdir}/atlas-custom/*.a %{_includedir}/atlas -%exclude /etc/ld.so.conf.d/* %else @@ -445,105 +452,81 @@ rm -rf $RPM_BUILD_ROOT %defattr(-,root,root,-) %doc debian/copyright doc/README.Fedora %dir %{_libdir}/atlas -%{_libdir}/*.so.* -%{_libdir}/*/*.so.* -#%{_libdir}/atlas/*/*.so.* +%{_libdir}/atlas/*.so.* %config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}.conf %files devel %defattr(-,root,root,-) %doc debian/copyright doc -%{_libdir}/*.a -%{_libdir}/*.so -%{_libdir}/atlas/*.a %{_libdir}/atlas/*.so +%{_libdir}/atlas/*.a %{_includedir}/atlas %ifarch i386 -#%files sse -#%defattr(-,root,root,-) -#%doc debian/copyright doc/README.Fedora -#%dir %{_libdir}/sse -#%dir %{_libdir}/atlas/sse -#%{_libdir}/sse/*.so.* -#%{_libdir}/atlas/sse/*.so.* -#%config(noreplace) /etc/ld.so.conf.d/atlas-sse-%{_arch}.conf +%files sse +%defattr(-,root,root,-) +%doc debian/copyright doc/README.Fedora +%dir %{_libdir}/sse +%{_libdir}/sse/*.so.* +#%config(noreplace) /etc/ld.so.conf.d/atlas-sse.conf %files sse-devel %defattr(-,root,root,-) %doc debian/copyright doc %dir %{_libdir}/sse -%dir %{_libdir}/atlas/sse -#%{_libdir}/sse/*.so +%{_libdir}/sse/*.so %{_libdir}/sse/*.a -#%{_libdir}/atlas/sse/*.so -%{_libdir}/atlas/sse/*.a %{_includedir}/atlas -#%files sse2 -#%defattr(-,root,root,-) -#%doc debian/copyright doc/README.Fedora -#%dir %{_libdir}/sse2 -#%dir %{_libdir}/atlas/sse2 -#%{_libdir}/sse2/*.so.* -#%{_libdir}/atlas/sse2/*.so.* -#%config(noreplace) /etc/ld.so.conf.d/atlas-sse2-%{_arch}.conf +%files sse2 +%defattr(-,root,root,-) +%doc debian/copyright doc/README.Fedora +%dir %{_libdir}/sse2 +%{_libdir}/sse2/*.so.* +#%config(noreplace) /etc/ld.so.conf.d/atlas-sse2.conf %files sse2-devel %defattr(-,root,root,-) %doc debian/copyright doc %dir %{_libdir}/sse2 -%dir %{_libdir}/atlas/sse2 -#%{_libdir}/sse2/*.so +%{_libdir}/sse2/*.so %{_libdir}/sse2/*.a -#%{_libdir}/atlas/sse2/*.so -%{_libdir}/atlas/sse2/*.a %{_includedir}/atlas -#%files 3dnow -#%defattr(-,root,root,-) -#%doc debian/copyright doc/README.Fedora -#%dir %{_libdir}/3dnow -#%dir %{_libdir}/atlas/3dnow -#%{_libdir}/3dnow/*.so.* -#%{_libdir}/atlas/3dnow/*.so.* -#%config(noreplace) /etc/ld.so.conf.d/atlas-3dnow-%{_arch}.conf +%files 3dnow +%defattr(-,root,root,-) +%doc debian/copyright doc/README.Fedora +%dir %{_libdir}/3dnow +%{_libdir}/3dnow/*.so.* +#%config(noreplace) /etc/ld.so.conf.d/atlas-3dnow.conf %files 3dnow-devel %defattr(-,root,root,-) %doc debian/copyright doc %dir %{_libdir}/3dnow -%dir %{_libdir}/atlas/3dnow -#%{_libdir}/3dnow/*.so +%{_libdir}/3dnow/*.so %{_libdir}/3dnow/*.a -#%{_libdir}/atlas/3dnow/*.so -%{_libdir}/atlas/3dnow/*.a %{_includedir}/atlas %endif %ifarch ppc -#%files altivec -#%defattr(-,root,root,-) -#%doc debian/copyright doc/README.Fedora -#%dir %{_libdir}/altivec -#%dir %{_libdir}/atlas/altivec -#%{_libdir}/altivec/*.so.* -#%{_libdir}/atlas/altivec/*.so.* -#%config(noreplace) /etc/ld.so.conf.d/atlas-altivec-%{_arch}.conf +%files altivec +%defattr(-,root,root,-) +%doc debian/copyright doc/README.Fedora +%dir %{_libdir}/altivec +%{_libdir}/altivec/*.so.* +#%config(noreplace) /etc/ld.so.conf.d/atlas-altivec.conf %files altivec-devel %defattr(-,root,root,-) %doc debian/copyright doc %dir %{_libdir}/altivec -%dir %{_libdir}/atlas/altivec -#%{_libdir}/altivec/*.so +%{_libdir}/altivec/*.so %{_libdir}/altivec/*.a -#%{_libdir}/atlas/altivec/*.so -%{_libdir}/atlas/altivec/*.a %{_includedir}/atlas %endif @@ -552,7 +535,12 @@ rm -rf $RPM_BUILD_ROOT %changelog * Tue Oct 04 2005 Quentin Spencer 3.6.0-6 -- Fix buildroot, minor updates to description. +- 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.