https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Bug ID: 1906980 Summary: Review Request: highway - Efficient and performance-portable SIMDEfficient and performance-portable SIMD Product: Fedora Version: rawhide Status: NEW Component: Package Review Assignee: nobody@fedoraproject.org Reporter: zebob.m@gmail.com QA Contact: extras-qa@fedoraproject.org CC: package-review@lists.fedoraproject.org Target Milestone: --- Classification: Fedora
Spec URL: https://eclipseo.fedorapeople.org/for-review/highway.spec SRPM URL: https://eclipseo.fedorapeople.org/for-review/highway-0-0.1.20201212git8205c2...
Description: Highway is a C++ library for SIMD (Single Instruction, Multiple Data), i.e. applying the same operation to 'lanes'. Highway is a C++ library for SIMD (Single Instruction, Multiple Data), i.e. applying the same operation to 'lanes'.
Fedora Account System Username: eclipseo
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Comment|0 |updated
--- Comment #0 has been edited ---
Spec URL: https://eclipseo.fedorapeople.org/for-review/highway.spec SRPM URL: https://eclipseo.fedorapeople.org/for-review/highway-0-0.1.20201212git8205c2...
Description: Highway is a C++ library for SIMD (Single Instruction, Multiple Data), i.e. applying the same operation to 'lanes'. Fedora Account System Username: eclipseo
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Comment|0 |updated
--- Comment #0 has been edited ---
Spec URL: https://eclipseo.fedorapeople.org/for-review/highway.spec SRPM URL: https://eclipseo.fedorapeople.org/for-review/highway-0-0.1.20201212git8205c2...
Description: Highway is a C++ library for SIMD (Single Instruction, Multiple Data), i.e. applying the same operation to 'lanes'.
Fedora Account System Username: eclipseo
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Egor Artemov egor.artemov@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |egor.artemov@gmail.com
--- Comment #1 from Egor Artemov egor.artemov@gmail.com --- 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_bui...
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-...
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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Doc Type|--- |If docs needed, set a value
--- Comment #2 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Troy Curtis troy@troycurtisjr.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |troy@troycurtisjr.com Whiteboard| |NotReady
--- Comment #3 from Troy Curtis troy@troycurtisjr.com --- Adding NotReady for now since it looks like Egor has some good suggestions and it sounds like there is some discussion with upstream needed.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |1922638 (jpeg-xl)
Referenced Bugs:
https://bugzilla.redhat.com/show_bug.cgi?id=1922638 [Bug 1922638] Review Request: jpeg-xl - JPEG XL image format reference implementation
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #4 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- 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
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Whiteboard|NotReady |
--- Comment #5 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- (In reply to Egor Artemov from comment #1)
I'm not in the packagers group however has some recommendations:
Thanks for your informative review.
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.
- 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.
- 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.
- 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.
- It seems it is better to move commands for tests running into `%check`
section.
Done.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #6 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=65535439
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |code@musicinmybrain.net
--- Comment #7 from Ben Beasley code@musicinmybrain.net --- 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...). 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #8 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #9 from Ben Beasley code@musicinmybrain.net --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #10 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- Ok, thanks for taking a look!
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags| |needinfo?(code@musicinmybra | |in.net)
--- Comment #11 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- Spec URL: https://eclipseo.fedorapeople.org/for-review/highway.spec SRPM URL: https://eclipseo.fedorapeople.org/for-review/highway-0-0.1.20201212git8205c2...
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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|needinfo?(code@musicinmybra | |in.net) |
--- Comment #12 from Ben Beasley code@musicinmybrain.net --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #13 from Ben Beasley code@musicinmybrain.net --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #14 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- Okay, thanks a lot for your time!
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|nobody@fedoraproject.org |code@musicinmybrain.net Flags| |needinfo?(zebob.m@gmail.com | |)
--- Comment #15 from Ben Beasley code@musicinmybrain.net --- 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.... 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|needinfo?(zebob.m@gmail.com | |) |
--- Comment #16 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- (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:
- 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.)
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags| |fedora-review?
--- Comment #17 from Ben Beasley code@musicinmybrain.net --- Thanks, I didn’t know about the --prebuilt flag. Reviewing now.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #18 from Ben Beasley code@musicinmybrain.net --- Created attachment 1774089 --> https://bugzilla.redhat.com/attachment.cgi?id=1774089&action=edit Spec file as reviewed
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #19 from Ben Beasley code@musicinmybrain.net --- Created attachment 1774091 --> https://bugzilla.redhat.com/attachment.cgi?id=1774091&action=edit Spec file as reviewed
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags| |needinfo?(zebob.m@gmail.com | |)
--- Comment #20 from Ben Beasley code@musicinmybrain.net --- 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_bui....
===== 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_bui...).
[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
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|needinfo?(zebob.m@gmail.com | |) |
--- Comment #21 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|fedora-review? |fedora-review+
--- Comment #22 from Ben Beasley code@musicinmybrain.net --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Ben Beasley code@musicinmybrain.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags| |needinfo?(zebob.m@gmail.com | |)
--- Comment #23 from Ben Beasley code@musicinmybrain.net --- (This is just a ping in case you missed the ”package approved“ notifications).
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Robert-André Mauchin 🐧 zebob.m@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |POST Flags|needinfo?(zebob.m@gmail.com | |) |
--- Comment #24 from Robert-André Mauchin 🐧 zebob.m@gmail.com --- Thanks, I'm just really busy these days.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #25 from Gwyn Ciesla gwync@protonmail.com --- (fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/highway
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Fedora Update System updates@fedoraproject.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|POST |MODIFIED
--- Comment #26 from Fedora Update System updates@fedoraproject.org --- FEDORA-2021-62ef6cf16e has been submitted as an update to Fedora 34. https://bodhi.fedoraproject.org/updates/FEDORA-2021-62ef6cf16e
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #27 from Fedora Update System updates@fedoraproject.org --- FEDORA-2021-ef700ec6c4 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2021-ef700ec6c4
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #28 from Fedora Update System updates@fedoraproject.org --- FEDORA-EPEL-2021-acd6b0882a has been submitted as an update to Fedora EPEL 8. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-acd6b0882a
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #29 from Fedora Update System updates@fedoraproject.org --- FEDORA-EPEL-2021-fb5cae13e6 has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2021-fb5cae13e6
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Fedora Update System updates@fedoraproject.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|MODIFIED |ON_QA
--- Comment #30 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #31 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #32 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #33 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #34 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #35 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #36 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #37 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
Fedora Update System updates@fedoraproject.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|ON_QA |CLOSED Resolution|--- |ERRATA Last Closed| |2021-06-01 01:03:39
--- Comment #38 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #39 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #40 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #41 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #42 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #43 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #44 from Fedora Update System updates@fedoraproject.org --- 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.
https://bugzilla.redhat.com/show_bug.cgi?id=1906980
--- Comment #45 from Fedora Update System updates@fedoraproject.org --- 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.
package-review@lists.fedoraproject.org