# Arch Linux ARM openblas

**URL:** <https://forum.endeavouros.com/t/arch-linux-arm-openblas/14315>\
**Category:** ARM\
**Created:** [May 10, 2021, 8:22am UTC](https://forum.endeavouros.com/t/arch-linux-arm-openblas/14315 "2021-05-10T08:22:51Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Feakster](https://forum.endeavouros.com/user_avatar/forum.endeavouros.com/feakster/32/24784_2.png) [@Feakster](https://forum.endeavouros.com/u/Feakster)\
**Post date:** [May 10, 2021, 8:22am UTC](https://forum.endeavouros.com/t/arch-linux-arm-openblas/14315/1 "2021-05-10T08:22:51Z")

</div>

I see the openblas is still broken upstream in Arch Linux ARM. If anyone’s having problems with it I made/adapted this PKGBUILD a while ago:

```bash
# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Giuseppe Borzi <gborzi _AT_ ieee _DOT_ org>
# Contributor: Feakster <feakster at posteo dot eu>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - set build targets
# - clear Makefile.arm (bad cflags overrides)

pkgname=openblas
_pkgname=OpenBLAS
pkgver=0.3.15
pkgrel=1
pkgdesc='An optimized BLAS library based on GotoBLAS2 1.13 BSD'
arch=('arm' 'armv6h' 'armv7h' 'aarch64')
url='https://www.openblas.net/'
license=('BSD') # BSD 3-clause license
depends=('gcc-libs' 'openmp')
makedepends=('gcc-fortran')
provides=('blas=3.8.0') # 3.9.0? Does the version even need to be set?
conflicts=('blas')
source=("${_pkgname}-v${pkgver}.tar.gz::https://github.com/xianyi/${_pkgname}/archive/v${pkgver}.tar.gz")
sha512sums=('c07964ead5ffe9cf088364697bfe5cb409170663e420bdcd08a6366a028625d2a3c23ee4ddbaf0e625860a9fd08cbbb39f97eb985c366c052696d6f8598a844f')

prepare() {
    # Change Directory
    cd "$srcdir"/$_pkgname-$pkgver

    # Wipe 32-Bit ARM Makefile Contents
    truncate -s 0 Makefile.arm # See 'ALARM'.

    # Manually Set CONFIG Target & Opts
    if [$CARCH = arm]; then
        _CONFIG='TARGET=ARMV5'
    elif [$CARCH = armv6h]; then
        _CONFIG='TARGET=ARMV6'
    elif [$CARCH = armv7h]; then
        _CONFIG='TARGET=ARMV7'
        CFLAGS=`echo $CFLAGS | sed 's/vfpv3-d16/neon/'` # See 'ALARM'.
        CXXFLAGS="$CFLAGS" # See 'ALARM'. Used?
    elif [$CARCH = aarch64]; then
        _CONFIG='TARGET=ARMV8 DYNAMIC_ARCH=1'
    else
        echo 'CPU architecture not supported'
        exit 1
    fi
}

build() {
    # Change Directory
    cd "$srcdir"/$_pkgname-$pkgver

    # Build Libs
    make \
    NO_STATIC=1 NO_LAPACK=1 NO_LAPACKE=1 NO_CBLAS=1 NO_AFFINITY=1 USE_OPENMP=1 \
    CFLAGS="$CPPFLAGS $CFLAGS" $_CONFIG \
    NUM_THREADS=64 MAJOR_VERSION=3 \
    libs shared
}

package() {
    # Change Directory
    cd "$srcdir"/$_pkgname-$pkgver

    # Install
    make install \
    PREFIX="$pkgdir"/usr

    # Remove Crud
    rm -f "$pkgdir"/usr/include/cblas.h "$pkgdir"/usr/include/lapack*
    rmdir "$pkgdir"/usr/bin

    # Install License
    install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE

    # Change Directory
    cd "$pkgdir"/usr/lib

    # Fix File Naming
    find . -maxdepth 1 -type f -name 'libopenblas*.so*' -exec mv {} libopenblas.so.${pkgver} \;
    find . -maxdepth 1 -type f -name 'libopenblas*.a' -exec mv {} libopenblas.${pkgver}.a \;

    # Regenerate Symlinks
    find . -maxdepth 1 -type l -name 'lib*.so*' -delete
    ln -frs libopenblas.${pkgver}.a libopenblas.a
    for LIB in libblas.so libblas.so.3 libopenblas.so libopenblas.so.3
    do
        ln -frs libopenblas.so.${pkgver} $LIB
    done

    # Mod Ancillary Files
    ln -rs "$pkgdir"/usr/lib/pkgconfig/openblas.pc "$pkgdir"/usr/lib/pkgconfig/blas.pc
    sed -i "s|$pkgdir||" "$pkgdir"/usr/lib/pkgconfig/openblas.pc
    sed -i "s|$pkgdir||" "$pkgdir"/usr/lib/cmake/openblas/OpenBLASConfig.cmake
}

# vim:set ts=2 sw=2 et:

```

Should serve as a temporary solution. Remove the `DYNAMIC_ARCH=1` flag if you’re on `aarch64`, but don’t want `openblas` built for all possible ARMv8 targets. I’ll revisit this script at some point, but I haven’t had time recently.

---

<div class="post-metadata">

**Author:** ![Pudge](https://forum.endeavouros.com/user_avatar/forum.endeavouros.com/pudge/32/17155_2.png) [@Pudge](https://forum.endeavouros.com/u/Pudge)\
**Post date:** [May 10, 2021, 7:39pm UTC](https://forum.endeavouros.com/t/arch-linux-arm-openblas/14315/2 "2021-05-10T19:39:12Z")

</div>

Thank you for your contribution!

Pudge
