Bug 1591910 - Review Request: blis - BLAS-like Library Instantiation Software
Summary: Review Request: blis - BLAS-like Library Instantiation Software
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Antonio T. (sagitter)
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-06-15 18:21 UTC by Dave Love
Modified: 2018-10-30 17:24 UTC (History)
3 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2018-10-19 15:49:56 UTC
Type: ---
Embargoed:
anto.trande: fedora-review+


Attachments (Terms of Use)

Description Dave Love 2018-06-15 18:21:21 UTC
Spec URL: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/epel-7-x86_64/00767554-blis/blis.spec
SRPM URL: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/epel-7-x86_64/00767554-blis/blis-0.3.2-6.el7.src.rpm
Description:
BLIS is a portable software framework for instantiating
high-performance BLAS-like dense linear algebra libraries.  The
framework was designed to isolate essential kernels of computation
that, when optimized, immediately enable optimized implementations of
most of its commonly used and computationally intensive operations.
While BLIS exports a new BLAS-like API, it also includes a BLAS
compatibility layer which gives application developers access to BLIS
implementations via traditional BLAS routine calls.

This packaging contains automatically-dispatched
architecture-optimized kernels for some targets, notably recent x86_64.

Fedora Account System Username: loveshack

EPEL7 and rawhide builds in the copr above

Comment 1 Antonio T. (sagitter) 2018-06-15 18:35:12 UTC
Is this package for both epel7 and fedora?

Comment 2 Antonio T. (sagitter) 2018-06-16 16:01:31 UTC
- Fedora default flags are never used.

- Note these warnings:

BUILDSTDERR: DEPRECATION WARNING: python2 invoked with /usr/bin/python.
BUILDSTDERR:     Use /usr/bin/python3 or /usr/bin/python2
BUILDSTDERR:     /usr/bin/python will be removed or switched to Python 3 in the future.
BUILDSTDERR:     If you cannot make the switch now, please follow instructions at https://fedoraproject.org/wiki/Changes/Avoid_usr_bin_python_in_RPM_Build#Quick_Opt-Out

You can explicitly use Python2, but BLIS could be ready for using Python3 by now.

- You're using double installation commands, in %%build before and manually in %%install then. I guess you can install just one time by using LIBBLIS_NAME and  INSTALL_PREFIX/PREFIX variables.

Comment 3 Dave Love 2018-06-18 09:53:43 UTC
(In reply to Antonio Trande from comment #1)
> Is this package for both epel7 and fedora?

I've built it for all releases, though I'm only actually interested in free avx512 BLAS support on EPEL for HPC purposes.

Comment 4 Dave Love 2018-06-18 10:11:42 UTC
(In reply to Antonio Trande from comment #2)
> - Fedora default flags are never used.

I think there's a fixme in the spec.  It's not easy to insert them in the build framework, and Pabst found some of them hurt performance for libxsmm, though I don't know if that's connected with the JIT and/or the static parts, and it's difficult to deal with this as they're different in different versions. (Binary hardening is the least of one's worries for HPC security...)

> - Note these warnings:
> 
> BUILDSTDERR: DEPRECATION WARNING: python2 invoked with /usr/bin/python.
> BUILDSTDERR:     Use /usr/bin/python3 or /usr/bin/python2
> BUILDSTDERR:     /usr/bin/python will be removed or switched to Python 3 in
> the future.
> BUILDSTDERR:     If you cannot make the switch now, please follow
> instructions at
> https://fedoraproject.org/wiki/Changes/
> Avoid_usr_bin_python_in_RPM_Build#Quick_Opt-Out

Sigh.  Where does that come from?  I guess it's a rawhide thing which I can't easily check due to rawhide mock not working under RHEL7.

> You can explicitly use Python2, but BLIS could be ready for using Python3 by
> now.

It works with python 2.7+.  It was just easiest to base the spec on 2.7.

> - You're using double installation commands, in %%build before and manually
> in %%install then. I guess you can install just one time by using
> LIBBLIS_NAME and  INSTALL_PREFIX/PREFIX variables.

That didn't work last I tried.  I'll see if something has changed, but it doesn't seem a big deal.

Comment 5 Dave Love 2018-06-19 09:37:01 UTC
I've got it using python3 now.

I'll see whether I can make any sense of the default flags, but it's not clear to me if that's actually important, and it will probably take a while.

Comment 6 Dave Love 2018-09-21 12:37:29 UTC
I eventually got back to this after being able to test the effects of the Fedora hardening flags. They don't seem to have a significant effect on serial dgemm, at least, so I've used the defaults.  There's an updated version for the current BLIS release at

SRPM: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/fedora-rawhide-x86_64/00801206-blis/blis-0.4.1-1.fc30.src.rpm
SPEC: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/fedora-rawhide-x86_64/00801206-blis/blis.spec

Scratch build for other arches at https://koji.fedoraproject.org/koji/taskinfo?taskID=29765289

Comment 7 Antonio T. (sagitter) 2018-09-22 13:21:38 UTC
Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======

- libblas* libraries are not hardened:

$ checksec --file libblas.so.3
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH	FORTIFY	Fortified Fortifiable  FILE
Partial RELRO   No canary found   NX enabled    DSO             No RPATH   No RUNPATH   No	0		0	libblas.so.3

- These packages provide same blas* libraries:

$ repoquery --whatprovides libblas.so.*
Last metadata expiration check: 2:17:11 ago on sab 22 set 2018 12:57:31 CEST.
blas-0:3.8.0-8.fc28.i686
blas-0:3.8.0-8.fc28.x86_64
blas-0:3.8.0-9.fc28.i686
blas-0:3.8.0-9.fc28.x86_64

Must be filtered, i guess.

===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "BSD (3 clause)", "BSD (2 clause)", "Unknown or generated". 330
     files have unknown license. Detailed output of licensecheck in
     /home/sagitter/1591910-blis/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package does not own files or directories owned by other packages.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[x]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: No %config files under /usr.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[x]: Uses parallel make %{?_smp_mflags} macro.
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in blis-
     serial64 , blis-openmp , blis-openmp64 , blis-threads , blis-threads64
     , blis-debuginfo , blis-debugsource
[ ]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[?]: %check is present and all tests pass.
[ ]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 1720320 bytes in /usr/share
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: blis-0.4.1-1.fc30.x86_64.rpm
          blis-devel-0.4.1-1.fc30.x86_64.rpm
          blis-serial64-0.4.1-1.fc30.x86_64.rpm
          blis-openmp-0.4.1-1.fc30.x86_64.rpm
          blis-openmp64-0.4.1-1.fc30.x86_64.rpm
          blis-threads-0.4.1-1.fc30.x86_64.rpm
          blis-threads64-0.4.1-1.fc30.x86_64.rpm
          blis-debuginfo-0.4.1-1.fc30.x86_64.rpm
          blis-debugsource-0.4.1-1.fc30.x86_64.rpm
          blis-0.4.1-1.fc30.src.rpm
blis.x86_64: W: shared-lib-calls-exit /usr/lib64/libblis.so.1.0.0 exit.5
blis.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblas/libblas.so
blis-serial64.x86_64: W: shared-lib-calls-exit /usr/lib64/libblis64.so.1.0.0 exit.5
blis-serial64.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblas64/libblas64.so
blis-openmp.x86_64: W: shared-lib-calls-exit /usr/lib64/libbliso.so.1.0.0 exit.5
blis-openmp.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblaso/libblas.so
blis-openmp64.x86_64: W: shared-lib-calls-exit /usr/lib64/libbliso64.so.1.0.0 exit.5
blis-openmp64.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblaso64/libblas64.so
blis-threads.x86_64: W: spelling-error Summary(en_US) pthreads -> threads, p threads, thread
blis-threads.x86_64: W: spelling-error %description -l en_US pthreads -> threads, p threads, thread
blis-threads.x86_64: W: spelling-error %description -l en_US parallelized -> paralleled, palatalized, pluralized
blis-threads.x86_64: W: shared-lib-calls-exit /usr/lib64/libblisp.so.1.0.0 exit.5
blis-threads.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblasp/libblas.so
blis-threads64.x86_64: W: spelling-error Summary(en_US) pthreads -> threads, p threads, thread
blis-threads64.x86_64: W: spelling-error %description -l en_US pthreads -> threads, p threads, thread
blis-threads64.x86_64: W: spelling-error %description -l en_US parallelized -> paralleled, palatalized, pluralized
blis-threads64.x86_64: W: shared-lib-calls-exit /usr/lib64/libblisp64.so.1.0.0 exit.5
blis-threads64.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblasp64/libblas64.so
blis.src:145: W: configure-without-libdir-spec
blis.src:149: W: configure-without-libdir-spec
blis.src:169: W: configure-without-libdir-spec
blis.src:173: W: configure-without-libdir-spec
blis.src:177: W: configure-without-libdir-spec
blis.src:196: W: configure-without-libdir-spec
10 packages and 0 specfiles checked; 0 errors, 24 warnings.




Rpmlint (debuginfo)
-------------------
Checking: blis-openmp-debuginfo-0.4.1-1.fc30.x86_64.rpm
          blis-serial64-debuginfo-0.4.1-1.fc30.x86_64.rpm
          blis-debuginfo-0.4.1-1.fc30.x86_64.rpm
          blis-threads64-debuginfo-0.4.1-1.fc30.x86_64.rpm
          blis-openmp64-debuginfo-0.4.1-1.fc30.x86_64.rpm
          blis-threads-debuginfo-0.4.1-1.fc30.x86_64.rpm
6 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
blis-threads64.x86_64: W: spelling-error Summary(en_US) pthreads -> threads, p threads, thread
blis-threads64.x86_64: W: spelling-error %description -l en_US pthreads -> threads, p threads, thread
blis-threads64.x86_64: W: spelling-error %description -l en_US parallelized -> paralleled, palatalized, pluralized
blis-threads64.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-threads64.x86_64: W: shared-lib-calls-exit /usr/lib64/libblisp64.so.1.0.0 exit.5
blis-threads64.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblasp64/libblas64.so
blis-openmp-debuginfo.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-devel.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-threads.x86_64: W: spelling-error Summary(en_US) pthreads -> threads, p threads, thread
blis-threads.x86_64: W: spelling-error %description -l en_US pthreads -> threads, p threads, thread
blis-threads.x86_64: W: spelling-error %description -l en_US parallelized -> paralleled, palatalized, pluralized
blis-threads.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-threads.x86_64: W: shared-lib-calls-exit /usr/lib64/libblisp.so.1.0.0 exit.5
blis-threads.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblasp/libblas.so
blis-serial64-debuginfo.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-debugsource.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-openmp.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-openmp.x86_64: W: shared-lib-calls-exit /usr/lib64/libbliso.so.1.0.0 exit.5
blis-openmp.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblaso/libblas.so
blis.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis.x86_64: W: shared-lib-calls-exit /usr/lib64/libblis.so.1.0.0 exit.5
blis.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblas/libblas.so
blis-threads-debuginfo.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-openmp64.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-openmp64.x86_64: W: shared-lib-calls-exit /usr/lib64/libbliso64.so.1.0.0 exit.5
blis-openmp64.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblaso64/libblas64.so
blis-debuginfo.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-openmp64-debuginfo.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-serial64.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
blis-serial64.x86_64: W: shared-lib-calls-exit /usr/lib64/libblis64.so.1.0.0 exit.5
blis-serial64.x86_64: W: devel-file-in-non-devel-package /usr/lib64/blisblas64/libblas64.so
blis-threads64-debuginfo.x86_64: W: invalid-url URL: https://github.com/flame/blis <urlopen error [Errno -2] Name or service not known>
14 packages and 0 specfiles checked; 0 errors, 32 warnings.



Requires
--------
blis-threads64 (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libblas64.so.3()(64bit)
    libblisp64.so.1()(64bit)
    libc.so.6()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    rtld(GNU_HASH)

blis-devel (rpmlib, GLIBC filtered):
    blis(x86-64)
    blis-openmp(x86-64)
    blis-openmp64(x86-64)
    blis-serial64(x86-64)
    blis-threads(x86-64)
    blis-threads64(x86-64)
    libblis.so.1()(64bit)
    libblis64.so.1()(64bit)
    libbliso.so.1()(64bit)
    libbliso64.so.1()(64bit)
    libblisp.so.1()(64bit)
    libblisp64.so.1()(64bit)

blis-threads (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libblas.so.3()(64bit)
    libblisp.so.1()(64bit)
    libc.so.6()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    rtld(GNU_HASH)

blis-debugsource (rpmlib, GLIBC filtered):

blis-openmp (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libblas.so.3()(64bit)
    libbliso.so.1()(64bit)
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libgomp.so.1()(64bit)
    libgomp.so.1(GOMP_4.0)(64bit)
    libgomp.so.1(OMP_1.0)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    rtld(GNU_HASH)

blis (rpmlib, GLIBC filtered):
    config(blis)
    ld-linux-x86-64.so.2()(64bit)
    libblas.so.3()(64bit)
    libblis.so.1()(64bit)
    libc.so.6()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    rtld(GNU_HASH)

blis-openmp64 (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libblas64.so.3()(64bit)
    libbliso64.so.1()(64bit)
    libc.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libgomp.so.1()(64bit)
    libgomp.so.1(GOMP_4.0)(64bit)
    libgomp.so.1(OMP_1.0)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    rtld(GNU_HASH)

blis-debuginfo (rpmlib, GLIBC filtered):

blis-serial64 (rpmlib, GLIBC filtered):
    config(blis-serial64)
    ld-linux-x86-64.so.2()(64bit)
    libblas64.so.3()(64bit)
    libblis64.so.1()(64bit)
    libc.so.6()(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    librt.so.1()(64bit)
    rtld(GNU_HASH)



Provides
--------
blis-threads64:
    blis-threads64
    blis-threads64(x86-64)
    libblas64.so.3()(64bit)
    libblisp64.so.1()(64bit)

blis-devel:
    blis-devel
    blis-devel(x86-64)

blis-threads:
    blis-threads
    blis-threads(x86-64)
    libblas.so.3()(64bit)
    libblisp.so.1()(64bit)

blis-debugsource:
    blis-debugsource
    blis-debugsource(x86-64)

blis-openmp:
    blis-openmp
    blis-openmp(x86-64)
    libblas.so.3()(64bit)
    libbliso.so.1()(64bit)

blis:
    blis
    blis(x86-64)
    config(blis)
    libblas.so.3()(64bit)
    libblis.so.1()(64bit)

blis-openmp64:
    blis-openmp64
    blis-openmp64(x86-64)
    libblas64.so.3()(64bit)
    libbliso64.so.1()(64bit)

blis-debuginfo:
    blis-debuginfo
    blis-debuginfo(x86-64)
    debuginfo(build-id)

blis-serial64:
    blis-serial64
    blis-serial64(x86-64)
    config(blis-serial64)
    libblas64.so.3()(64bit)
    libblis64.so.1()(64bit)



Unversioned so-files
--------------------
blis: /usr/lib64/blisblas/libblas.so
blis-serial64: /usr/lib64/blisblas64/libblas64.so
blis-openmp: /usr/lib64/blisblaso/libblas.so
blis-openmp64: /usr/lib64/blisblaso64/libblas64.so
blis-threads: /usr/lib64/blisblasp/libblas.so
blis-threads64: /usr/lib64/blisblasp64/libblas64.so

Source checksums
----------------
https://github.com/flame/blis/archive/0.4.1/blis-0.4.1.tar.gz :
  CHECKSUM(SHA256) this package     : a0c00e6e4ae215e8d965226c2446c2e53f121b31c3b8ff5ca983b0a51ed2fd25
  CHECKSUM(SHA256) upstream package : a0c00e6e4ae215e8d965226c2446c2e53f121b31c3b8ff5ca983b0a51ed2fd25


Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1591910
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6

Comment 8 Dave Love 2018-09-24 16:38:55 UTC
(In reply to Antonio Trande from comment #7)

> - libblas* libraries are not hardened:
> 
> $ checksec --file libblas.so.3
> RELRO           STACK CANARY      NX            PIE             RPATH     
> RUNPATH	FORTIFY	Fortified Fortifiable  FILE
> Partial RELRO   No canary found   NX enabled    DSO             No RPATH  
> No RUNPATH   No	0		0	libblas.so.3

Do you know how to change that?  Linking with %build_ldflags doesn't affect that result.  I assume it doesn't make any real difference for the shims.

> - These packages provide same blas* libraries:
> 
> $ repoquery --whatprovides libblas.so.*
> Last metadata expiration check: 2:17:11 ago on sab 22 set 2018 12:57:31 CEST.
> blas-0:3.8.0-8.fc28.i686
> blas-0:3.8.0-8.fc28.x86_64
> blas-0:3.8.0-9.fc28.i686
> blas-0:3.8.0-9.fc28.x86_64
> 
> Must be filtered, i guess.

Sorry, I don't know what that's getting at.  Could you explain? (It's arguable clear how the libblas shims should be handled, especially as either openblas of blis might win in different circumstances.)

Comment 9 Antonio T. (sagitter) 2018-09-24 17:10:33 UTC
(In reply to Dave Love from comment #8)
> (In reply to Antonio Trande from comment #7)
> 
> > - libblas* libraries are not hardened:
> > 
> > $ checksec --file libblas.so.3
> > RELRO           STACK CANARY      NX            PIE             RPATH     
> > RUNPATH	FORTIFY	Fortified Fortifiable  FILE
> > Partial RELRO   No canary found   NX enabled    DSO             No RPATH  
> > No RUNPATH   No	0		0	libblas.so.3
> 
> Do you know how to change that?  Linking with %build_ldflags doesn't affect
> that result.  I assume it doesn't make any real difference for the shims.

It depends by these commands:

+ cc -shared -Wl,-soname=libblas.so.3 ...

Add %__global_ldflags as options.

> 
> > - These packages provide same blas* libraries:
> > 
> > $ repoquery --whatprovides libblas.so.*
> > Last metadata expiration check: 2:17:11 ago on sab 22 set 2018 12:57:31 CEST.
> > blas-0:3.8.0-8.fc28.i686
> > blas-0:3.8.0-8.fc28.x86_64
> > blas-0:3.8.0-9.fc28.i686
> > blas-0:3.8.0-9.fc28.x86_64
> > 
> > Must be filtered, i guess.
> 
> Sorry, I don't know what that's getting at.  Could you explain? (It's
> arguable clear how the libblas shims should be handled, especially as either
> openblas of blis might win in different circumstances.)

This package provides libblas.so.* libraries (inside a private directory):

blis:
    blis
    blis(x86-64)
    config(blis)
    libblas.so.3()(64bit)
    libblis.so.1()(64bit)

like 'blas': https://koji.fedoraproject.org/koji/rpminfo?rpmID=14724212

libblas from 'blis' and libblas from 'blas' have same name.
Probably, you'll need to filter libblas from 'blis' and set rpath links from libblis* to %_libdir/blisblas/libblas* .

Please, ask in devel mailing list if this is right approach.

Comment 10 Dave Love 2018-09-25 10:25:25 UTC
(In reply to Antonio Trande from comment #9)
> (In reply to Dave Love from comment #8)
> > (In reply to Antonio Trande from comment #7)
> > 
> > > - libblas* libraries are not hardened:
> > > 
> > > $ checksec --file libblas.so.3
> > > RELRO           STACK CANARY      NX            PIE             RPATH     
> > > RUNPATH	FORTIFY	Fortified Fortifiable  FILE
> > > Partial RELRO   No canary found   NX enabled    DSO             No RPATH  
> > > No RUNPATH   No	0		0	libblas.so.3
> > 
> > Do you know how to change that?  Linking with %build_ldflags doesn't affect
> > that result.  I assume it doesn't make any real difference for the shims.
> 
> It depends by these commands:
> 
> + cc -shared -Wl,-soname=libblas.so.3 ...
> 
> Add %__global_ldflags as options.

__global_ldflags is defined as %build_ldflags. Have you actually made it work? I guess the only reason to worry about it at all is so it doesn't show up. Those libraries are as close as possible to an alias of libblis etc., so I doubt there's much scope for compromising them anyhow.

> > 
> > > - These packages provide same blas* libraries:
> > > 
> > > $ repoquery --whatprovides libblas.so.*
> > > Last metadata expiration check: 2:17:11 ago on sab 22 set 2018 12:57:31 CEST.
> > > blas-0:3.8.0-8.fc28.i686
> > > blas-0:3.8.0-8.fc28.x86_64
> > > blas-0:3.8.0-9.fc28.i686
> > > blas-0:3.8.0-9.fc28.x86_64
> > > 
> > > Must be filtered, i guess.
> > 
> > Sorry, I don't know what that's getting at.  Could you explain? (It's
> > arguable clear how the libblas shims should be handled, especially as either
> > openblas of blis might win in different circumstances.)
> 
> This package provides libblas.so.* libraries (inside a private directory):
> 
> blis:
>     blis
>     blis(x86-64)
>     config(blis)
>     libblas.so.3()(64bit)
>     libblis.so.1()(64bit)
> 
> like 'blas': https://koji.fedoraproject.org/koji/rpminfo?rpmID=14724212
> 
> libblas from 'blis' and libblas from 'blas' have same name.
> Probably, you'll need to filter libblas from 'blis' and set rpath links from
> libblis* to %_libdir/blisblas/libblas* .
> 
> Please, ask in devel mailing list if this is right approach.

No, the idea is that you should be able to swap BLAS implementations at run time via LD_LIBRARY_PATH/ld.so.conf; perhaps README.Fedora needs a better explanation.  (See also  https://loveshack.fedorapeople.org/blas-subversion.html for what I've run in anger with OpenBLAS.) Fedora does need a useful linear algebra policy, but that's been rejected in committee. Can you see a real problem in practice with this approach?

Comment 11 Antonio T. (sagitter) 2018-09-25 17:37:41 UTC
(In reply to Dave Love from comment #10)
> (In reply to Antonio Trande from comment #9)
> > (In reply to Dave Love from comment #8)
> > > (In reply to Antonio Trande from comment #7)
> > > 
> > > > - libblas* libraries are not hardened:
> > > > 
> > > > $ checksec --file libblas.so.3
> > > > RELRO           STACK CANARY      NX            PIE             RPATH     
> > > > RUNPATH	FORTIFY	Fortified Fortifiable  FILE
> > > > Partial RELRO   No canary found   NX enabled    DSO             No RPATH  
> > > > No RUNPATH   No	0		0	libblas.so.3
> > > 
> > > Do you know how to change that?  Linking with %build_ldflags doesn't affect
> > > that result.  I assume it doesn't make any real difference for the shims.
> > 
> > It depends by these commands:
> > 
> > + cc -shared -Wl,-soname=libblas.so.3 ...
> > 
> > Add %__global_ldflags as options.
> 
> __global_ldflags is defined as %build_ldflags. Have you actually made it
> work? I guess the only reason to worry about it at all is so it doesn't show
> up. Those libraries are as close as possible to an alias of libblis etc., so
> I doubt there's much scope for compromising them anyhow.

Setting ldflags in 'cc' commands does make libraries 'Full Relro'. I don't know if it's a real improvement in these cases.

> 
> > > 
> > > > - These packages provide same blas* libraries:
> > > > 
> > > > $ repoquery --whatprovides libblas.so.*
> > > > Last metadata expiration check: 2:17:11 ago on sab 22 set 2018 12:57:31 CEST.
> > > > blas-0:3.8.0-8.fc28.i686
> > > > blas-0:3.8.0-8.fc28.x86_64
> > > > blas-0:3.8.0-9.fc28.i686
> > > > blas-0:3.8.0-9.fc28.x86_64
> > > > 
> > > > Must be filtered, i guess.
> > > 
> > > Sorry, I don't know what that's getting at.  Could you explain? (It's
> > > arguable clear how the libblas shims should be handled, especially as either
> > > openblas of blis might win in different circumstances.)
> > 
> > This package provides libblas.so.* libraries (inside a private directory):
> > 
> > blis:
> >     blis
> >     blis(x86-64)
> >     config(blis)
> >     libblas.so.3()(64bit)
> >     libblis.so.1()(64bit)
> > 
> > like 'blas': https://koji.fedoraproject.org/koji/rpminfo?rpmID=14724212
> > 
> > libblas from 'blis' and libblas from 'blas' have same name.
> > Probably, you'll need to filter libblas from 'blis' and set rpath links from
> > libblis* to %_libdir/blisblas/libblas* .
> > 
> > Please, ask in devel mailing list if this is right approach.
> 
> No, the idea is that you should be able to swap BLAS implementations at run
> time via LD_LIBRARY_PATH/ld.so.conf; perhaps README.Fedora needs a better
> explanation.  (See also 
> https://loveshack.fedorapeople.org/blas-subversion.html for what I've run in
> anger with OpenBLAS.) Fedora does need a useful linear algebra policy, but
> that's been rejected in committee. Can you see a real problem in practice
> with this approach?

What i wish prevent is conflict among BLAS packages.
Do you think it's out discussion with BLIS?

Comment 12 Orion Poplawski 2018-09-27 02:03:58 UTC
Creating the new libblas.so.3 libraries is a pretty clever trick, and I think solves one of the problems I was running into while working on https://fedoraproject.org/wiki/PackagingDrafts:BLAS_LAPACK

However, I think there are still issues that need to be fleshed out.  The main issues with how this is packaged now are:
- Installing packages may bring in (unexpectedly) blis instead of blas because blis provides libblas.so.3()(64bit)
- There is no consistent/managed way to switch between implementations
- How do you select between the serial and different parallel versions of the libblas libraries?  They all appear to have the same soname so any could be selected which is almost certainly incorrect.
- The 64-bit libblas soname is actually libblas64_.so.3()(64bit)

For now I think it would be fine to package without the ld.so.conf.d files and filtering out the libblas* sonames.  Users can create their own ld.so.conf.d file or set LD_LIBRARY_PATH however they choose (e.g. modules).  But beyond that requires distro wide coordination.

Comment 13 Dave Love 2018-09-27 11:18:02 UTC
(In reply to Antonio Trande from comment #11)
> Setting ldflags in 'cc' commands does make libraries 'Full Relro'. I don't
> know if it's a real improvement in these cases.

Apologies. I'd somehow missed the difference in relro when comparing the results. I've added LDFLAGS to the link step anyhow.

> What i wish prevent is conflict among BLAS packages.
> Do you think it's out discussion with BLIS?

I'm not sure what "out discussion" means. Maybe it's relevant to Orion's comments.

Comment 14 Dave Love 2018-09-27 11:36:00 UTC
This is probably worth holding for a while, as someone else is packaging BLIS for Debian, and I've asked if we can try to coordinate, and use a common approach to the extent it's not ruled out by Fedora.

(In reply to Orion Poplawski from comment #12)
> However, I think there are still issues that need to be fleshed out.  

I'm happy to have discussions and iron out problems/trades-off, of course,
which was one reason for submitting it.

> The
> main issues with how this is packaged now are:
> - Installing packages may bring in (unexpectedly) blis instead of blas
> because blis provides libblas.so.3()(64bit)

I regarded it as similar to other cases where you can swap implementations according to what's installed, but I'm assuming BLIS is strictly better than reference BLAS (though not OpenBLAS).

> - There is no consistent/managed way to switch between implementations

Yes.  Alternatives would have to be in blas, openblas, and atlas as well (not that I can see any need for atlas).

> - How do you select between the serial and different parallel versions of
> the libblas libraries?  They all appear to have the same soname so any could
> be selected which is almost certainly incorrect.

LD_LIBRARY_PATH is the idea, as in the R example in the URL I referenced. Perhaps an ld.so.conf for the threaded versions is a mistake, though they get lower priority than serial.

> - The 64-bit libblas soname is actually libblas64_.so.3()(64bit)

Where do you mean?  I see this:

$ sudo repoquery --provides blas64
blas64 = 3.4.2-8.el7
blas64(x86-64) = 3.4.2-8.el7
libblas64.so.3()(64bit)
$ sudo repoquery --provides blis-serial64
blis-serial64 = 0.3.2-3.el7.centos
blis-serial64(x86-64) = 0.3.2-3.el7.centos
config(blis-serial64) = 0.3.2-3.el7.centos
libblas64.so.3()(64bit)
libblis64.so.0()(64bit)

> For now I think it would be fine to package without the ld.so.conf.d files
> and filtering out the libblas* sonames.  Users can create their own
> ld.so.conf.d file or set LD_LIBRARY_PATH however they choose (e.g. modules).
> But beyond that requires distro wide coordination.

OK, but let's wait and see if anything useful comes back from Debian.  I can't remember exactly what was raised before, but it didn't look as though there was much chance of reversing the decision not to sort this stuff out in Fedora (and Debian doesn't seem actually have the policy I thought I'd seen as a model).

Thanks for the comments.

Comment 15 Dave Love 2018-10-08 11:34:34 UTC
I didn't get a response to the suggestion to discuss this with Debian packagers, so here's a version without the ld.so.conf additions and with some other changes.

Spec: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/fedora-rawhide-x86_64/00806501-blis/blis.spec
SRPM: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/fedora-rawhide-x86_64/00806501-blis/blis-0.4.1-2.fc30.src.rpm

Comment 16 Antonio T. (sagitter) 2018-10-09 09:23:14 UTC
>> What i wish prevent is conflict among BLAS packages.
>> Do you think it's out discussion with BLIS?
>
> I'm not sure what "out discussion" means. Maybe it's relevant to Orion's 
> comments.

I meant that maybe i was wrong to expect a conflict between BLIS and other BLAS libraries.

I don't have any reason to block this review still.
Package approved.

Comment 17 Dave Love 2018-10-09 15:03:11 UTC
Thanks.  I wonder if there's any chance of rationalizing the linear algebra library situation...

Comment 18 Orion Poplawski 2018-10-09 15:17:52 UTC
Sure - just needs someone to do the heavy lifting...

Comment 19 Gwyn Ciesla 2018-10-09 15:37:13 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/blis

Comment 20 Fedora Update System 2018-10-10 19:11:39 UTC
blis-0.4.1-2.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2018-3f6022d60a

Comment 21 Fedora Update System 2018-10-10 19:11:46 UTC
blis-0.4.1-2.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2018-46d6335965

Comment 22 Fedora Update System 2018-10-10 19:11:52 UTC
blis-0.4.1-2.el7 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2018-53a17f0b37

Comment 23 Fedora Update System 2018-10-10 19:11:58 UTC
blis-0.4.1-2.fc28 has been submitted as an update to Fedora 28. https://bodhi.fedoraproject.org/updates/FEDORA-2018-d9e29001bf

Comment 24 Fedora Update System 2018-10-10 23:20:25 UTC
blis-0.4.1-2.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-3f6022d60a

Comment 25 Fedora Update System 2018-10-10 23:27:19 UTC
blis-0.4.1-2.fc28 has been pushed to the Fedora 28 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-d9e29001bf

Comment 26 Fedora Update System 2018-10-10 23:40:00 UTC
blis-0.4.1-2.el7 has been pushed to the Fedora EPEL 7 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2018-53a17f0b37

Comment 27 Fedora Update System 2018-10-11 18:59:46 UTC
blis-0.4.1-2.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-46d6335965

Comment 28 Fedora Update System 2018-10-19 15:49:56 UTC
blis-0.4.1-2.fc27 has been pushed to the Fedora 27 stable repository. If problems still persist, please make note of it in this bug report.

Comment 29 Fedora Update System 2018-10-19 16:06:31 UTC
blis-0.4.1-2.fc28 has been pushed to the Fedora 28 stable repository. If problems still persist, please make note of it in this bug report.

Comment 30 Fedora Update System 2018-10-26 17:52:49 UTC
blis-0.4.1-2.el7 has been pushed to the Fedora EPEL 7 stable repository. If problems still persist, please make note of it in this bug report.

Comment 31 Fedora Update System 2018-10-30 17:24:16 UTC
blis-0.4.1-2.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.