Bug 1906980 (highway)
Summary: | Review Request: highway - Efficient and performance-portable SIMD | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Robert-André Mauchin 🐧 <zebob.m> | ||||||
Component: | Package Review | Assignee: | Ben Beasley <code> | ||||||
Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||
Severity: | unspecified | Docs Contact: | |||||||
Priority: | unspecified | ||||||||
Version: | rawhide | CC: | code, egor.artemov, omega13a, package-review, troy | ||||||
Target Milestone: | --- | Flags: | code:
fedora-review+
|
||||||
Target Release: | --- | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | Doc Type: | If docs needed, set a value | |||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2021-06-01 01:03:39 UTC | Type: | --- | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 1922638 | ||||||||
Attachments: |
|
Description
Robert-André Mauchin 🐧
2020-12-12 03:59:32 UTC
I'm not in the packagers group however has some recommendations: 1) Build fails on aarch64, s390x, and ppc64le. It looks like you should list these architectures using the `ExcludeArch:` tag, as per packaging guidelines. Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=57335109 Guideline: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_architecture_build_failures 2) Since the package provides only a static library, it will be better to package it as a `highway-devel` package with virtual '-static' provide as per packaging guidelines. See: https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static-libraries 3) It seems documentation includes large PDF files like slides from the presentation, examples, and project skeleton might be it is better to move them into the separate `-doc` package? 4) It seems you shouldn't install all headers, that upstream installs. As per https://github.com/google/highway/blob/master/g3doc/quick_reference.md The only public headers that should be installed are (with dependencies): hwy/highway.h hwy/base.h hwy/foreach_target.h hwy/aligned_allocator.h hwy/cache_control.h hwy/targets.h hwy/ops/x86_128-inl.h hwy/ops/x86_256-inl.h hwy/ops/x86_512-inl.h hwy/ops/arm_neon-inl.h hwy/ops/wasm_128-inl.h hwy/ops/scalar-inl.h hwy/ops/shared-inl.h hwy/set_macros-inl.h But looks like it is better to fire an issue upstream to fix CMakeFiles.txt 5) It seems it is better to move commands for tests running into `%check` section. I'll ask upstream why building on aarch64 and ppc64le don't work. This is not a very high priority package for me right now. Adding NotReady for now since it looks like Egor has some good suggestions and it sounds like there is some discussion with upstream needed. New Spec URL: https://eclipseo.fedorapeople.org/for-review/highway.spec New SRPM URL: https://eclipseo.fedorapeople.org/for-review/highway-0.11.1-1.fc35.src.rpm (In reply to Egor Artemov from comment #1) > I'm not in the packagers group however has some recommendations: > Thanks for your informative review. > 1) Build fails on aarch64, s390x, and ppc64le. > It looks like you should list these architectures using the `ExcludeArch:` > tag, as per packaging guidelines. > > Koji build: https://koji.fedoraproject.org/koji/taskinfo?taskID=57335109 > Guideline: > https://docs.fedoraproject.org/en-US/packaging-guidelines/ > #_architecture_build_failures > I added a ExclusiveArch since ppc and s390 are not supposed to be supported. > 2) Since the package provides only a static library, it will be better to > package it as a `highway-devel` package with virtual '-static' provide as > per > packaging guidelines. > See: > https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static- > libraries Indeed, fixed. > 3) It seems documentation includes large PDF files like slides from the > presentation, > examples, and project skeleton > might be it is better to move them into the separate `-doc` package? > Done. > 4) It seems you shouldn't install all headers, that upstream installs. > As per > https://github.com/google/highway/blob/master/g3doc/quick_reference.md > The only public headers that should be installed are (with dependencies): > hwy/highway.h > hwy/base.h > hwy/foreach_target.h > hwy/aligned_allocator.h > hwy/cache_control.h > hwy/targets.h > hwy/ops/x86_128-inl.h > hwy/ops/x86_256-inl.h > hwy/ops/x86_512-inl.h > hwy/ops/arm_neon-inl.h > hwy/ops/wasm_128-inl.h > hwy/ops/scalar-inl.h > hwy/ops/shared-inl.h > hwy/set_macros-inl.h > > But looks like it is better to fire an issue upstream to fix > CMakeFiles.txt > I removed the non useful headers and filed a bug upstream. > 5) It seems it is better to move commands for tests running into `%check` > section. Done. Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=65535439 Because my workstation is an antique, this fails to build in mock for me. > /usr/bin/cmake -D TEST_TARGET=hwy_test -D TEST_EXECUTABLE=/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/tests/hwy_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=hwy_test_TESTS -D CTEST_FILE=/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/hwy_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=60 -D TEST_XML_OUTPUT_DIR= -P /usr/share/cmake/Modules/GoogleTestAddTests.cmake > CMake Error at /usr/share/cmake/Modules/GoogleTestAddTests.cmake:77 (message): > Error running test executable. > Path: '/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/tests/hwy_test' > Result: Illegal instruction > Output: > > Call Stack (most recent call first): > /usr/share/cmake/Modules/GoogleTestAddTests.cmake:173 (gtest_discover_tests_impl) You will need to make sure that tests using SIMD extensions that are not in the baseline for the architecture are not executed. SSE2 is inherently part of x86_64, and we can assume it in Fedora for i686 (https://fedoraproject.org/wiki/Changes/Update_i686_architectural_baseline_to_include_SSE2). Everything later needs to be checked by grepping /proc/cpuinfo, using the CLI tool from https://src.fedoraproject.org/rpms/google-cpu_features, or something similar. ----- It’s probably worth justifying shipping static libraries in a spec file comment. In this case it looks like there is simply no upstream support for building as a shared library. The minimum supported instruction set is SSE4. Since it's providing SIMD instructions and it builds on Koji, it doesn't make sense to test if it's lower than SSE4. So, if I may paraphrase, your argument is that a package can require extensions to the architectural baseline in order to build, as long as the Koji builders have these extensions in practice. (It’s established that library packages—but not applications—can require such extensions at runtime, https://pagure.io/packaging-committee/issue/1044.) That might be a reasonable claim, actually. I’d rather see a package that builds everywhere, but I’m willing to go with it. I commented out the %ctest, but the hwy_test executable gets started anyway partway through the build and explodes as in my previous comment, so I’m going to have to skip reviewing this one. Ok, thanks for taking a look! Spec URL: https://eclipseo.fedorapeople.org/for-review/highway.spec SRPM URL: https://eclipseo.fedorapeople.org/for-review/highway-0-0.1.20201212git8205c2c.fc34.src.rpm Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=65535439 Hi, Could you take a look again with your old machine? I added -DCMAKE_CXX_FLAGS="%build_cxxflags -DHWY_COMPILE_ALL_ATTAINABLE" which should enable HWY_SCALAR for non-SIMD. I’ve never seen this before: fedora-review spends a while building, then spits this out: > WARNING: Package highway-devel-0.11.1-1.fc35 not built > WARNING: Package highway-doc-0.11.1-1.fc35 not built > ERROR: 'No srpm found for highway' (logs in /home/reviewer/.cache/fedora-review.log) Eventually I figured out that this was just a consequence of the SRPM in your last comment not matching the spec file. Once I got the correct SRPM from the Koji scratch-build, I got a similar error to before, although it was later in the build this time: > [ 92%] Built target arithmetic_test > [ 95%] Linking CXX executable tests/hwy_test > /usr/bin/cmake -E cmake_link_script CMakeFiles/hwy_test.dir/link.txt --verbose=1 > /usr/bin/g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -O2 -g -DNDEBUG -Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fPIE -pie CMakeFiles/hwy_test.dir/hwy/tests/hwy_test.cc.o -o tests/hwy_test libhwy.a /usr/lib64/libgtest.so /usr/lib64/libgtest_main.so /usr/lib64/libgtest.so -lpthread > /usr/bin/cmake -D TEST_TARGET=hwy_test -D TEST_EXECUTABLE=/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/tests/hwy_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=hwy_test_TESTS -D CTEST_FILE=/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/hwy_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=60 -D TEST_XML_OUTPUT_DIR= -P /usr/share/cmake/Modules/GoogleTestAddTests.cmake > CMake Error at /usr/share/cmake/Modules/GoogleTestAddTests.cmake:77 (message): > Error running test executable. > Path: '/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/tests/hwy_test' > Result: Illegal instruction > Output: > > Call Stack (most recent call first): > /usr/share/cmake/Modules/GoogleTestAddTests.cmake:173 (gtest_discover_tests_impl) > gmake[2]: Leaving directory '/builddir/build/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu' > gmake[2]: *** [CMakeFiles/hwy_test.dir/build.make:111: tests/hwy_test] Error 1 > gmake[2]: *** Deleting file 'tests/hwy_test' > gmake[1]: *** [CMakeFiles/Makefile2:239: CMakeFiles/hwy_test.dir/all] Error 2 > gmake[1]: *** Waiting for unfinished jobs.... It looks like this is the offending section in GoogleTestAddTests.cmake: > # Run test executable to get list of available tests > if(NOT EXISTS "${_TEST_EXECUTABLE}") > message(FATAL_ERROR > "Specified test executable does not exist.\n" > " Path: '${_TEST_EXECUTABLE}'" > ) > endif() > execute_process( > COMMAND ${_TEST_EXECUTOR} "${_TEST_EXECUTABLE}" --gtest_list_tests > WORKING_DIRECTORY "${_TEST_WORKING_DIR}" > TIMEOUT ${_TEST_DISCOVERY_TIMEOUT} > OUTPUT_VARIABLE output > RESULT_VARIABLE result > ) > if(NOT ${result} EQUAL 0) > string(REPLACE "\n" "\n " output "${output}") > message(FATAL_ERROR > "Error running test executable.\n" > " Path: '${_TEST_EXECUTABLE}'\n" > " Result: ${result}\n" > " Output:\n" > " ${output}\n" > ) > endif() So the test executables are getting run with --gtest_list_tests to discover the tests they implement, and the code that sets up the test suites has been compiled such that even this requires–well, here I haven’t waded through all of the macro soup, but something I don’t have, anyway. I think if it required all supported ISA extensions to run it would not be working on Koji. Note that the baseline target is scalar: > ./hwy_list_targets || ( exit 0 ) > Compiled HWY_TARGETS: AVX3 AVX2 SSE4 Scalar > HWY_BASELINE_TARGETS: Scalar …but that this was also the case in your older Koji scratch build, https://koji.fedoraproject.org/koji/taskinfo?taskID=65535443. So I’m pretty sure that adding -DHWY_COMPILE_ALL_ATTAINABLE is not doing anything at all here on x86_64, since scalar is the only baseline target. (This makes sense as baseline targets are supposed to be only those enabled in the compilation environment, and you are not adding anything beyond the default Fedora flags.) is causing it to additionally compile targets below the best baseline for testing, but it does not keep the test executable from requiring extensions. When I have a chance, I’m going to read the CMake and C sources a little more, and perhaps try a couple of experiments, to try to understand better what’s really happening here. It doesn’t make much sense. The code that sets up the test suites, at the bottom of hwy/tests/hwy_test.cc, is outside the HWY_BEFORE_NAMESPACE(); / HWY_AFTER_NAMESPACE();, and is guarded by #if HWY_ONCE / #endif, so it really should be compiled only for the static target (scalar in this case) based on my reading of hwy/foreach_target.h. Okay, thanks a lot for your time! Looks like it’s the benchmarking/timer code, which gets called even with --gtest_list_tests: > [reviewer@musicbox x86_64-redhat-linux-gnu]$ valgrind ./tests/hwy_test --gtest_list_tests > ==147381== Memcheck, a memory error detector > ==147381== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. > ==147381== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info > ==147381== Command: ./tests/hwy_test --gtest_list_tests > ==147381== > vex amd64->IR: unhandled instruction bytes: 0xF 0x1 0xF9 0xF 0xAE 0xE8 0x29 0xF8 0x48 0x83 > vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0 > vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x0 ESC=0F > vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0 > ==147381== valgrind: Unrecognised instruction at address 0x10eb5a. > ==147381== at 0x10EB5A: Stop32 (nanobenchmark.cc:310) > ==147381== by 0x10EB5A: hwy::(anonymous namespace)::TimerResolution() (nanobenchmark.cc:457) > ==147381== by 0x10EBEC: __static_initialization_and_destruction_0 (nanobenchmark.cc:465) > ==147381== by 0x10EBEC: _GLOBAL__sub_I_nanobenchmark.cc (nanobenchmark.cc:721) > ==147381== by 0x1865BC: __libc_csu_init (in /home/reviewer/rpmbuild/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/tests/hwy_test) > ==147381== by 0x4C6616D: (below main) (in /usr/lib64/libc-2.32.so) > ==147381== Your program just tried to execute an instruction that Valgrind > ==147381== did not recognise. There are two possible reasons for this. > ==147381== 1. Your program has a bug and erroneously jumped to a non-code > ==147381== location. If you are running Memcheck and you just saw a > ==147381== warning about a bad jump, it's probably your program's fault. > ==147381== 2. The instruction is legitimate but Valgrind doesn't handle it, > ==147381== i.e. it's Valgrind's fault. If you think this is the case or > ==147381== you are not sure, please let us know and we'll try to fix it. > ==147381== Either way, Valgrind will now raise a SIGILL signal which will > ==147381== probably kill your program. > ==147381== > ==147381== Process terminating with default action of signal 4 (SIGILL): dumping core > ==147381== Illegal opcode at address 0x10EB5A > ==147381== at 0x10EB5A: Stop32 (nanobenchmark.cc:310) > ==147381== by 0x10EB5A: hwy::(anonymous namespace)::TimerResolution() (nanobenchmark.cc:457) > ==147381== by 0x10EBEC: __static_initialization_and_destruction_0 (nanobenchmark.cc:465) > ==147381== by 0x10EBEC: _GLOBAL__sub_I_nanobenchmark.cc (nanobenchmark.cc:721) > ==147381== by 0x1865BC: __libc_csu_init (in /home/reviewer/rpmbuild/BUILD/highway-0.11.1/x86_64-redhat-linux-gnu/tests/hwy_test) > ==147381== by 0x4C6616D: (below main) (in /usr/lib64/libc-2.32.so) > ==147381== > ==147381== HEAP SUMMARY: > […] So it’s actually the RDTSCP instruction that’s the issue here, not any of the SIMD in the library. I don’t love adjusting the build settings based on the build host, but this is a %build section that works on my machine: > %ifarch x86_64 %{ix86} > # Even listing tests invokes the “nanobenchmark” code; on x86, this uses > # RDTSCP, which may not be available, and the build process runs the test > # executables to list the tests. We must therefore skip building the tests on > # hosts without RDTSCP.” > if ! grep -E '\brdtscp\b' /proc/cpuinfo >/dev/null > then > build_testing='OFF' > fi > %endif > %cmake -DHWY_SYSTEM_GTEST:BOOL=ON -DBUILD_TESTING:BOOL="${build_testing-ON}" > %cmake_build On the other hand, while it is difficult to find documentation on exactly which CPU models have supported RDTSCP, I think 64-bit CPUs without it are rather rare. This is mine: https://ark.intel.com/content/www/us/en/ark/products/29765/intel-core-2-quad-processor-q6600-8m-cache-2-40-ghz-1066-mhz-fsb.html. So it really may not be worth working around this case. ----- If you post the spec and SRPM as you want them reviewed, I am prepared to do the review by: 1. Running fedora-review on a copy where I have disabled building the tests. 2. Doing a Koji scratch-build with your unmodified submission, then doing rpmlint and some manual queries on the resulting RPMs. I won’t ask for a workaround for the build-time RDTSCP requirement, as the one I posted above has disadvantages and, considering which particular instruction is the issue, it’s unlikely to be a problem on Koji or on any but a very select few workstations. I expect I will be able to approve this without any further quibbles. (In reply to Ben Beasley from comment #15) > > If you post the spec and SRPM as you want them reviewed, I am prepared to do > the review by: > > 1. Running fedora-review on a copy where I have disabled building the > tests. > 2. Doing a Koji scratch-build with your unmodified submission, then doing > rpmlint and some manual queries on the resulting RPMs. > > I won’t ask for a workaround for the build-time RDTSCP requirement, as the > one I posted above has disadvantages and, considering which particular > instruction is the issue, it’s unlikely to be a problem on Koji or on any > but a very select few workstations. > > I expect I will be able to approve this without any further quibbles. Thanks a lot for the debugging. Could you use the RPMS with https://koji.fedoraproject.org/koji/taskinfo?taskID=65535443 Paste them in the same directory as the SPEC and SRPM then launch fedora-review with the -p option: fedora-review --mock-config fedora-rawhide-x86_64 -n highway -p (-p, --prebuilt When using -n <name>, use prebuilt rpms in current directory.) Thanks, I didn’t know about the --prebuilt flag. Reviewing now. Created attachment 1774089 [details]
Spec file as reviewed
Created attachment 1774091 [details]
Spec file as reviewed
I found only one issue, regarding the placement of the static library. Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated Issues: ======= - Header files in -devel subpackage, if present. Note: highway-doc : /usr/share/doc/highway-doc/examples/skeleton-inl.h highway-doc : /usr/share/doc/highway-doc/examples/skeleton.h highway-doc : /usr/share/doc/highway-doc/examples/skeleton_shared.h See: https://docs.fedoraproject.org/en-US/packaging- guidelines/#_devel_packages This is a false positive, as these are part of an example project. No change required. - Static libraries in -static or -devel subpackage, providing -devel if present. Note: Package has .a files: highway-libs. Illegal package name: highway- libs. See: https://docs.fedoraproject.org/en-US/packaging- guidelines/#packaging-static-libraries From the guidelines: > When a package only provides static libraries you MAY place all the > static library files in the *-devel subpackage. When doing this you also > MUST have a virtual Provide for the *-static package You have correctly added the virtual Provide, but it seems the guidelines require you to put the static library and virtual Provide in the -devel subpackage and drop the now-empty -libs subpackage. - After the package is approved, you will need to file Bugzilla bugs blocking the tracker bugs for unsupported primary architectures, per https://docs.fedoraproject.org/en-US/packaging-guidelines/#_architecture_build_failures. ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: If your application is a C or C++ application you must list a BuildRequires against gcc, gcc-c++ or clang. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. Generic: [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. Note: Using prebuilt packages Builds in Koji. [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: "Apache License 2.0", "Unknown or generated", "*No copyright* Apache License 2.0". 16 files have unknown license. Detailed output of licensecheck in /home/reviewer/review-highway/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [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. [-]: Package contains systemd file(s) if in need. [x]: Useful -debuginfo package or justification otherwise. [-]: Package is not known to require an ExcludeArch tag. ExclusiveArch present and correctly justified. File Bugzilla bugs blocking tracker bugs for unsupported primary architectures after the package is approved (https://docs.fedoraproject.org/en-US/packaging-guidelines/#_architecture_build_failures). [x]: Package complies to the Packaging Guidelines (except as otherwise noted) [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 does not own files or directories owned by other packages. [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]: 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 must not depend on deprecated() packages. [x]: Package use %makeinstall only when make install DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [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]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 0 bytes in 0 files. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [x]: Reviewer should test that the package builds in mock. [-]: 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 highway- libs , highway-devel [x]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [-]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. Note: gpgverify is not used. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [-]: Package should compile and build into binary rpms on all supported architectures. ExclusiveArch present and properly documented. [x]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [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]: The placement of pkgconfig(.pc) files are correct. [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]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: highway-libs-0.11.1-1.fc35.x86_64.rpm highway-devel-0.11.1-1.fc35.x86_64.rpm highway-doc-0.11.1-1.fc35.noarch.rpm highway-0.11.1-1.fc35.src.rpm highway-libs.x86_64: W: no-documentation highway-libs.x86_64: W: devel-file-in-non-devel-package /usr/lib64/libhwy.a highway-devel.x86_64: W: no-documentation 4 packages and 0 specfiles checked; 0 errors, 3 warnings. Rpmlint (installed packages) ---------------------------- highway-devel.x86_64: W: no-documentation highway-libs.x86_64: W: no-documentation highway-libs.x86_64: W: devel-file-in-non-devel-package /usr/lib64/libhwy.a 3 packages and 0 specfiles checked; 0 errors, 3 warnings. Source checksums ---------------- https://github.com/google/highway/archive/0.11.1/highway-0.11.1.tar.gz : CHECKSUM(SHA256) this package : 4c4bb9501c02b27a0944afde8923aaab554384690d37e5b2a7f97553426ea641 CHECKSUM(SHA256) upstream package : 4c4bb9501c02b27a0944afde8923aaab554384690d37e5b2a7f97553426ea641 Requires -------- highway-libs (rpmlib, GLIBC filtered): highway-devel (rpmlib, GLIBC filtered): /usr/bin/pkg-config highway-libs(x86-64) pkgconfig(gtest) highway-doc (rpmlib, GLIBC filtered): Provides -------- highway-libs: highway-libs highway-libs(x86-64) highway-static highway-devel: highway-devel highway-devel(x86-64) pkgconfig(libhwy) pkgconfig(libhwy-test) highway-doc: highway-doc Generated by fedora-review 0.7.6 (b083f91) last change: 2020-11-10 Command line :/usr/bin/fedora-review --mock-config fedora-rawhide-x86_64 -n highway -p Buildroot used: fedora-rawhide-x86_64 Active plugins: C/C++, Generic, Shell-api Disabled plugins: Java, Ocaml, SugarActivity, PHP, Perl, Ruby, R, Python, Haskell, fonts Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH If you check the latest SPEC I posted above, I had already fixed tihs: https://eclipseo.fedorapeople.org/for-review/highway.spec %package devel Summary: Development files for Highway Provides: highway-static = %{version}-%{release} %description devel %{common_description} Development files for Highway. […] %files devel %license LICENSE %{_includedir}/hwy/ %{_libdir}/libhwy.a %{_libdir}/pkgconfig/libhwy.pc %{_libdir}/pkgconfig/libhwy-test.pc Thanks for the review. Indeed. There were a lot of versions floating around. This one looks good. I would suggest removing “-DCMAKE_CXX_FLAGS="%build_cxxflags -DHWY_COMPILE_ALL_ATTAINABLE"”, since: - Compiling worse-than-the-best-guaranteed-available implementations doesn’t do anything useful except allow the upstream developers to test more exhaustively. Specifically, it doesn’t affect the runtime requirements for the tests, which was the goal in adding it. - This does nothing at all on x86_64, according to my study in previous comments. - This might be bloating the installed library with unused implementations on other architectures. Package approved. (This is just a ping in case you missed the ”package approved“ notifications). Thanks, I'm just really busy these days. (fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/highway FEDORA-2021-62ef6cf16e has been submitted as an update to Fedora 34. https://bodhi.fedoraproject.org/updates/FEDORA-2021-62ef6cf16e FEDORA-2021-ef700ec6c4 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2021-ef700ec6c4 FEDORA-EPEL-2021-acd6b0882a has been submitted as an update to Fedora EPEL 8. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-acd6b0882a FEDORA-EPEL-2021-fb5cae13e6 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-fb5cae13e6 FEDORA-EPEL-2021-acd6b0882a has been pushed to the Fedora EPEL 8 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-acd6b0882a See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2021-62ef6cf16e has been pushed to the Fedora 34 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2021-62ef6cf16e \*` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-62ef6cf16e See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-fb5cae13e6 has been pushed to the Fedora EPEL 7 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-fb5cae13e6 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2021-ef700ec6c4 has been pushed to the Fedora 33 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2021-ef700ec6c4 \*` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-ef700ec6c4 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2021-c78a938531 has been pushed to the Fedora 33 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2021-c78a938531` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-c78a938531 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-153a84b92a has been pushed to the Fedora EPEL 7 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-153a84b92a See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2021-5c7f1612ac has been pushed to the Fedora 34 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2021-5c7f1612ac` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2021-5c7f1612ac See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-450e400eba has been pushed to the Fedora EPEL 8 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-450e400eba See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-2021-5c7f1612ac has been pushed to the Fedora 34 stable repository. If problem still persists, please make note of it in this bug report. FEDORA-2021-c78a938531 has been pushed to the Fedora 33 stable repository. If problem still persists, please make note of it in this bug report. FEDORA-EPEL-2021-ce450116fd has been pushed to the Fedora EPEL 8 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-ce450116fd See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-1c7e291c32 has been pushed to the Fedora EPEL 7 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-1c7e291c32 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-334f95447d has been pushed to the Fedora EPEL 8 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-334f95447d See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-eac30f8da6 has been pushed to the Fedora EPEL 7 testing repository. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-eac30f8da6 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates. FEDORA-EPEL-2021-334f95447d has been pushed to the Fedora EPEL 8 stable repository. If problem still persists, please make note of it in this bug report. FEDORA-EPEL-2021-eac30f8da6 has been pushed to the Fedora EPEL 7 stable repository. If problem still persists, please make note of it in this bug report. |