https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Bug ID: 1591910 Summary: Review Request: blis - BLAS-like Library Instantiation Software Product: Fedora Version: rawhide Component: Package Review Severity: medium Priority: medium Assignee: nobody@fedoraproject.org Reporter: dave.love@manchester.ac.uk QA Contact: extras-qa@fedoraproject.org CC: package-review@lists.fedoraproject.org
Spec URL: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/epel-7-x86... SRPM URL: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/epel-7-x86... 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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Antonio Trande anto.trande@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |anto.trande@gmail.com Assignee|nobody@fedoraproject.org |anto.trande@gmail.com Flags| |fedora-review?
--- Comment #1 from Antonio Trande anto.trande@gmail.com --- Is this package for both epel7 and fedora?
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #2 from Antonio Trande anto.trande@gmail.com --- - 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#Qui...
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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #3 from Dave Love dave.love@manchester.ac.uk --- (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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #4 from Dave Love dave.love@manchester.ac.uk --- (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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #5 from Dave Love dave.love@manchester.ac.uk --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #6 from Dave Love dave.love@manchester.ac.uk --- 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-raw... SPEC: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/fedora-raw...
Scratch build for other arches at https://koji.fedoraproject.org/koji/taskinfo?taskID=29765289
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #7 from Antonio Trande anto.trande@gmail.com --- 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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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@GLIBC_2.2.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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #8 from Dave Love dave.love@manchester.ac.uk --- (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.)
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #10 from Dave Love dave.love@manchester.ac.uk --- (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?
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #11 from Antonio Trande anto.trande@gmail.com --- (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?
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Orion Poplawski orion@nwra.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |orion@nwra.com
--- Comment #12 from Orion Poplawski orion@nwra.com --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #13 from Dave Love dave.love@manchester.ac.uk --- (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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #14 from Dave Love dave.love@manchester.ac.uk --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #9 from Antonio Trande anto.trande@gmail.com --- (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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #15 from Dave Love dave.love@manchester.ac.uk --- 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-raw... SRPM: https://copr-be.cloud.fedoraproject.org/results/loveshack/testing/fedora-raw...
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Antonio Trande anto.trande@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|fedora-review? |fedora-review+
--- Comment #16 from Antonio Trande anto.trande@gmail.com ---
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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #17 from Dave Love dave.love@manchester.ac.uk --- Thanks. I wonder if there's any chance of rationalizing the linear algebra library situation...
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #19 from Gwyn Ciesla limburgher@gmail.com --- (fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/blis
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #18 from Orion Poplawski orion@nwra.com --- Sure - just needs someone to do the heavy lifting...
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Fedora Update System updates@fedoraproject.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |MODIFIED
--- Comment #20 from Fedora Update System updates@fedoraproject.org --- blis-0.4.1-2.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2018-3f6022d60a
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #21 from Fedora Update System updates@fedoraproject.org --- blis-0.4.1-2.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2018-46d6335965
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #22 from Fedora Update System updates@fedoraproject.org --- 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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #23 from Fedora Update System updates@fedoraproject.org --- blis-0.4.1-2.fc28 has been submitted as an update to Fedora 28. https://bodhi.fedoraproject.org/updates/FEDORA-2018-d9e29001bf
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Fedora Update System updates@fedoraproject.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|MODIFIED |ON_QA
--- Comment #24 from Fedora Update System updates@fedoraproject.org --- 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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #26 from Fedora Update System updates@fedoraproject.org --- 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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #25 from Fedora Update System updates@fedoraproject.org --- 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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #27 from Fedora Update System updates@fedoraproject.org --- 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
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
Fedora Update System updates@fedoraproject.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|ON_QA |CLOSED Resolution|--- |ERRATA Last Closed| |2018-10-19 11:49:56
--- Comment #28 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #29 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #30 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1591910
--- Comment #31 from Fedora Update System updates@fedoraproject.org --- 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.
package-review@lists.fedoraproject.org