diff options
author | Darjan Krijan | 2020-02-04 15:03:36 +0100 |
---|---|---|
committer | Darjan Krijan | 2020-02-04 15:03:36 +0100 |
commit | 36f04fe675020fb15e3c7eb7ba109f4f71031921 (patch) | |
tree | 2b1a3a17426ab81f972e9058e44303d3dc5d920b | |
parent | 83fa01a9fa704076279a690175ecc2b7e7c8e7b7 (diff) | |
download | aur-36f04fe675020fb15e3c7eb7ba109f4f71031921.tar.gz |
Update to aocl 2.1, added guard for missing MODULESHOME environment variable
-rw-r--r-- | .SRCINFO | 6 | ||||
-rw-r--r-- | PKGBUILD | 302 | ||||
-rw-r--r-- | modulefile | 34 |
3 files changed, 45 insertions, 297 deletions
@@ -1,7 +1,7 @@ pkgbase = aocl pkgdesc = AMD Optimizing CPU Libraries - pkgver = 2.0 - pkgrel = 2 + pkgver = 2.1 + pkgrel = 0 url = https://developer.amd.com/amd-aocl/ install = aocl.install arch = x86_64 @@ -9,7 +9,7 @@ pkgbase = aocl depends = env-modules options = staticlibs options = !strip - source = local://aocl-ubuntu-2.0.tar.gz + source = local://aocl-linux-gcc-2.1.tar.gz source = local://aocl.install source = local://modulefile sha256sums = 4fd14dc838ce13a6d1468ed0812905b102d85709b17ab8228513da37448d2993 @@ -1,16 +1,16 @@ # Maintainer: Darjan Krijan (daren) <darjan_krijan@gmx.de> -# Manual download of '${pkgname}-${os}-${pkgver}.tar.gz' required from upstream +# Manual download of '${pkgname}-linux-gcc-${pkgver}.tar.gz' required from upstream pkgname=aocl -pkgver=2.0 -pkgrel=2 +pkgver=2.1 +pkgrel=0 pkgdesc="AMD Optimizing CPU Libraries" arch=('x86_64') license=('custom') url="https://developer.amd.com/amd-aocl/" os=ubuntu source=( - "local://${pkgname}-${os}-${pkgver}.tar.gz" + "local://${pkgname}-linux-gcc-${pkgver}.tar.gz" "local://aocl.install" "local://modulefile" ) @@ -23,295 +23,35 @@ sha256sums=( "SKIP" ) -aocl_prefix=/opt/aocl - -# gen_pkg_config_file \ -# <basename> <libdir_from_prefix> <includedir_from_prefix> <ldflags> <requires> -gen_pkg_config_file() { - pcfile=${prefix}/${_pkgname}/lib/pkgconfig/${1}.pc - mkdir -p ${prefix}/${_pkgname}/lib/pkgconfig - echo " -> Generating pkg-config file '${pcfile}'..." - cat > ${pcfile} <<EOF -prefix=${aocl_prefix}/${_pkgname} -includedir=\${prefix}/${3} -libdir=\${prefix}/${2} - -Name: ${_pkgname} -Version: ${_pkgver} -Description: ${_pkgdesc} -URL: ${_pkgurl} -Requires: ${5} -Cflags: -I\${includedir} -Libs: -L\${libdir} ${4} -EOF -} - -# gen_static pkg_config_file \ -# <basename> <libdir_from_prefix> <includedir_from_prefix> <ldflags> <ldflags_private> <requires> -gen_static_pkg_config_file() { - pcfile_static=${prefix}/${_pkgname}/lib/pkgconfig/${1}.pc - echo " -> Generating pkg-config file '${pcfile_static}'..." - cat > ${pcfile_static} <<EOF -prefix=${aocl_prefix}/${_pkgname} -libdir=\${prefix}/${2} -includedir=\${prefix}/${3} +if [ -z ${MODULESHOME} ]; then + echo "Environment variable MODULESHOME from env-modules is unset." + echo "Restart your shell or source the env-modules scripts for your shell." + exit 1 +fi -Name: ${_pkgname} -Version: ${_pkgver} -Description: ${_pkgdesc} -URL: ${_pkgurl} -Requires: ${6} -Cflags: -I\${includedir} -Libs: -L\${libdir} ${4} -Libs.private: ${5} -EOF -} - -get_dynlibs() { - objdump -p ${prefix}/${_pkgname}/lib/lib${1}.so | grep NEEDED >> /tmp/get_dynlibs.txt - objdump -p ${prefix}/${_pkgname}/lib/lib${1}.so \ - | grep "NEEDED" \ - | grep -v "libc\|linux-" \ - | sed -e "s/.*lib\(.*\)\.so.*/-l\1/g" \ - | tr '\n' ' ' \ - && echo "" -} +aocl_prefix=/opt/aocl package() { prefix=${pkgdir}/${aocl_prefix} mkdir -p ${prefix} - src_prefix=${srcdir}/${pkgname}-${os}-${pkgver} - - cp ${src_prefix}/AOCL_User_Guide_${pkgver}.pdf \ - ${prefix} - - # ========================= - # amd-blis - # ------------------------- - _pkgname="amd-blis" - _pkgver="2.0" - _pkgdesc="BLIS is a portable software framework for instantiating high-performance BLAS-like dense linear algebra libraries" - _pkgurl="https://developer.amd.com/amd-aocl/blas-library/" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - # The shared library is missing all dynamic links, linking against this won't work - gen_pkg_config_file \ - ${_pkgname} lib include/blis -lblis - # Hardcoding Libs.private - gen_static_pkg_config_file \ - ${_pkgname}-static lib include/blis -l:libblis.a "-lm -lpthread" - - # ========================= - # amd-blis-mt - # ------------------------- - _pkgname="amd-blis-mt" - _pkgver="2.0" - _pkgdesc="BLIS is a portable software framework for instantiating high-performance BLAS-like dense linear algebra libraries" - _pkgurl="https://developer.amd.com/amd-aocl/blas-library/" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - # fix lib: symlink libblis-mt.so -> libblis.so.2.0.0 collides with amd-blis - # since the linker resolves the link during compile time - # when all the lib directories are set in LD_LIBRARY_PATH - mv ${prefix}/${_pkgname}/lib/libblis.so.2.0.0 ${prefix}/${_pkgname}/lib/libblis-mt.so - - gen_pkg_config_file \ - ${_pkgname} lib include/blis -lblis-mt - - gen_static_pkg_config_file \ - ${_pkgname}-static lib include/blis -l:libblis-mt.a "$(get_dynlibs blis-mt)" - - # ========================= - # amd-fftw - # ------------------------- - _pkgname="amd-fftw" - _pkgver="2.0" - _pkgdesc="Fast Fourier transform library" - _pkgurl="https://developer.amd.com/amd-aocl/fftw/" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - # pkg-config fftw3 - gen_pkg_config_file \ - ${_pkgname} lib include -lfftw3 - gen_static_pkg_config_file \ - ${_pkgname}-static lib include -l:libfftw3.a "$(get_dynlibs fftw3)" - gen_pkg_config_file \ - ${_pkgname}-mpi lib include -lfftw3_mpi ${_pkgname} - gen_static_pkg_config_file \ - ${_pkgname}-mpi-static lib include -l:libfftw3_mpi.a "$(get_dynlibs fftw3_mpi)" ${_pkgname}-static - gen_pkg_config_file \ - ${_pkgname}-omp lib include -lfftw3_omp ${_pkgname} - gen_static_pkg_config_file \ - ${_pkgname}-omp-static lib include -l:libfftw3_omp.a "$(get_dynlibs fftw3_omp)" ${_pkgname}-static - - # pkg-config fftw3f - gen_pkg_config_file \ - ${_pkgname}f lib include -lfftw3f - gen_static_pkg_config_file \ - ${_pkgname}f-static lib include -l:libfftw3f.a "$(get_dynlibs fftw3f)" - gen_pkg_config_file \ - ${_pkgname}f-mpi lib include -lfftw3f_mpi ${_pkgname}f - gen_static_pkg_config_file \ - ${_pkgname}f-mpi-static lib include -l:libfftw3f_mpi.a "$(get_dynlibs fftw3f_mpi)" ${_pkgname}f-static - gen_pkg_config_file \ - ${_pkgname}f-omp lib include -lfftw3f_omp ${_pkgname}f - gen_static_pkg_config_file \ - ${_pkgname}f-omp-static lib include -l:libfftw3f_omp.a "$(get_dynlibs fftw3f_omp)" ${_pkgname}f-static - - # ========================= - # amd-libflame - # ------------------------- - _pkgname="amd-libflame" - _pkgver="2.0" - _pkgdesc="libFLAME is a portable library for dense matrix computations, providing much of the functionality present in LAPACK" - _pkgurl="https://developer.amd.com/amd-aocl/blas-library/#libflame" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - gen_pkg_config_file \ - ${_pkgname} lib include -lflame - gen_static_pkg_config_file \ - ${_pkgname}-static lib include -l:libflame.a $(get_dynlibs flame) - - # ========================= - # amd-libm - # ------------------------- - _pkgname="amd-libm" - _pkgver="3.4.0" - _pkgdesc="AMD LibM is a software library containing a collection of basic math functions optimized for x86-64 processor based machines" - _pkgurl="https://developer.amd.com/amd-aocl/amd-math-library-libm/" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - # amd-libm cleanup - mv ${prefix}/${_pkgname}/lib/dynamic/* ${prefix}/${_pkgname}/lib - mv ${prefix}/${_pkgname}/lib/static/* ${prefix}/${_pkgname}/lib - rmdir ${prefix}/${_pkgname}/lib/dynamic - rmdir ${prefix}/${_pkgname}/lib/static - - gen_pkg_config_file \ - ${_pkgname} lib include -lamdlibm - gen_pkg_config_file \ - ${_pkgname}-static lib include -l:libamdlibm.a $(get_dynlibs amdlibm) - - # ========================= - # amd-rng - # ------------------------- - _pkgname="amd-rng" - _pkgver="2.0" - _pkgdesc="AMD Random Number Generator Library is a pseudorandom number generator library. A pseudo-random number generator (PRNG) produces a stream of variates that are independent and statistically indistinguishable from a random sequence" - _pkgurl="https://developer.amd.com/amd-aocl/rng-library/" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - # amd-rng cleanup - mv ${prefix}/${_pkgname}/rng/* ${prefix}/${_pkgname} - rm -r ${prefix}/${_pkgname}/rng - mv ${prefix}/${_pkgname}/rng-omp/lib_omp/* ${prefix}/${_pkgname}/lib - rm -r ${prefix}/${_pkgname}/rng-omp - rm -r ${prefix}/${_pkgname}/lib/libamdsecrng* # duplicate from aocl-securerng? not linked to rng_amd - chmod a-x ${prefix}/${_pkgname}/include/rng.h # for some reason this is executable - - gen_pkg_config_file \ - ${_pkgname} lib include -lrng_amd - gen_static_pkg_config_file \ - ${_pkgname}-static lib include -l:librng_amd.a $(get_dynlibs rng_amd) - gen_pkg_config_file \ - ${_pkgname}-omp lib include -lrng_omp_amd - gen_static_pkg_config_file \ - ${_pkgname}-omp-static lib include -l:librng_omp_amd.a $(get_dynlibs rng_omp_amd) - - # ========================= - # amd-securerng - # ------------------------- - _pkgname="amd-securerng" - _pkgver="2.0" - _pkgdesc="The AMD Secure Random Number Generator (RNG) is a library that provides APIs to access the cryptographically secure random numbers generated by AMD’s hardware-based random number generator implementation" - _pkgurl="https://developer.amd.com/amd-aocl/rng-library/" - - echo -e "\nInstalling ${_pkgname} to '${prefix}/${_pkgname}/..." - mkdir -p ${prefix}/${_pkgname} - tar --no-same-owner -xf \ - ${src_prefix}/aocl-${_pkgname#"amd-"}-${os}-${_pkgver}.tar.gz \ - --strip-components=1 \ - -C ${prefix}/${_pkgname} - - # Name this lib properly - mv ${prefix}/${_pkgname}/lib/libamdsecrng-*.so ${prefix}/${_pkgname}/lib/libamdsecrng.so - mv ${prefix}/${_pkgname}/lib/libamdsecrng-*.a ${prefix}/${_pkgname}/lib/libamdsecrng.a - - gen_pkg_config_file \ - ${_pkgname} lib include -lamdsecrng - gen_static_pkg_config_file \ - ${_pkgname}-static lib include -l:libamdsecrng.a $(get_dynlibs amdsecrng) - - # ========================= - # Finalize - # ------------------------- - # Delete symlinks, remove version string from dynamic libs so they can be linked directly - echo -e "\nRemoving lib symlinks and renaming the libs..." - find ${prefix} -type l \( -name "lib*.so*" -o -name "lib*.a*" \) -delete - sofiles=`find ${prefix} -type f -name "lib*.so*" -printf '%p\n' | sort` - - for so in ${sofiles}; do - if [ ${so} != ${so%.so*}.so ]; then - mv ${so} ${so%.so*}.so - fi - done + cd ${srcdir}/${pkgname}-linux-gcc-${pkgver} - afiles=`find ${prefix} -type f -name "lib*.a*" -printf '%p\n' | sort` + cp AOCL_User_Guide_${pkgver}.pdf ${prefix} - for a in ${afiles}; do - if [ ${a} != ${a%.a*}.a ]; then - mv ${a} ${a%.a*}.a - fi - done + ./install.sh -t ${prefix} - # Some dynamic libs are not executable for some reason, fix this - echo -e "\nFixing some dynamic libs not being executable..." - find ${prefix} -type f -name "lib*.so" -exec chmod a+x {} \; + # strip unneeded directories + mv ${prefix}/amd/${pkgname}/${pkgver}/* ${prefix} + rm -r ${prefix}/amd - # Clean pkg-config files - echo -e "\nCleaning pkg-config files..." - find ${prefix} -type f -name "*.pc" -exec sed -i {} -e "s/[[:space:]]*$//g" \; + # fix amd-libm + sed -e "s/__mm256/__m256/g" \ + -e "s/emmintrin.h/immintrin.h/g" \ + -i ${prefix}/amd-libm/include/amdlibm.h - # modulefile - echo -e "\nSymlinking modulefile '${modulefile}'..." + echo -e "\nSymlinking modulefile..." cp ${srcdir}/modulefile ${pkgdir}${aocl_prefix} mkdir -p ${pkgdir}${MODULESHOME}/modulefiles/ ln -s ${aocl_prefix}/modulefile ${pkgdir}${MODULESHOME}/modulefiles/${pkgname} diff --git a/modulefile b/modulefile index dd849bffab1d..a4f0c4d477b1 100644 --- a/modulefile +++ b/modulefile @@ -5,31 +5,39 @@ set MODULE "aocl" set BASE_DIR "/opt" -set VERSION "2.0" -set AOCL_ROOT "$BASE_DIR/$MODULE" +set VERSION "2.1" +set AOCL_ROOT "${BASE_DIR}/${MODULE}" set AOCL_TEXT "AMD Optimizing CPU Libraries (AOCL)" +prepend-path CPATH ${AOCL_ROOT}/amd-securerng/include +prepend-path CPATH ${AOCL_ROOT}/amd-scalapack/include +prepend-path CPATH ${AOCL_ROOT}/amd-rng/include +prepend-path CPATH ${AOCL_ROOT}/amd-libm/include +prepend-path CPATH ${AOCL_ROOT}/amd-libflame/include +prepend-path CPATH ${AOCL_ROOT}/amd-fftw/include +prepend-path CPATH ${AOCL_ROOT}/amd-blis/include +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-securerng/lib +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-scalapack/lib +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-rng/lib +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-libm/lib +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-libflame/lib +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-fftw/lib +prepend-path LIBRARY_PATH ${AOCL_ROOT}/amd-blis/lib prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-securerng/lib +prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-scalapack/lib prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-rng/lib prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-libm/lib prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-libflame/lib prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-fftw/lib -prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-blis-mt/lib prepend-path LD_LIBRARY_PATH ${AOCL_ROOT}/amd-blis/lib -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-securerng/lib/pkgconfig -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-rng/lib/pkgconfig -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-libm/lib/pkgconfig -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-libflame/lib/pkgconfig -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-fftw/lib/pkgconfig -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-blis-mt/lib/pkgconfig -prepend-path PKG_CONFIG_PATH ${AOCL_ROOT}/amd-blis/lib/pkgconfig -module-whatis "$AOCL_TEXT version $VERSION" +module-whatis "${AOCL_TEXT} version ${VERSION}" proc ModulesHelp {} { global AOCL_TEXT - puts stderr "This module sets up the environment for $AOCL_TEXT" + puts stderr "This module sets up the environment for ${AOCL_TEXT}" puts stderr "by adapting the following environment variables:" + puts stderr "CPATH" + puts stderr "LIBRARY_PATH" puts stderr "LD_LIBRARY_PATH" - puts stderr "PKG_CONFIG_PATH" } |