Description: The zDNN library provide a user space API for exploitation of the Neural Network Processing Assist Facility. All applications which intend to use that facility on IBM Z are supposed to do this via this library. Fedora Account System Username: ankr Open source repo: https://github.com/IBM/zDNN I've prepared an srpm which I've tested on Fedora 33 so far. I'm not allowed to set up public space on fedorapeople.org yet. I'll upload the files and provide the links as soon as I got the permissions. Alternatively I could attach it to this BZ.
SPEC: https://ankr.fedorapeople.org/libzdnn.spec SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.0-1.fc33.src.rpm
some initial comments - the Source0 value should be an URL, see the Git Hosting Services section in https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/ - it's better to use %{build_cflags} / %{build_cxxflags} instead of ${RPM_OPT_FLAGS} - the %post/%postun scriptlets calling ldconfig are not required any more, it's handled by system-wide triggers - you shouldn't package the static library unless really needed and if needed, then it belongs to a "static" subpackage, see https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static-libraries - we can't move the baseline arch for Fedora to z >= 14 any time soon, can the library gracefully shutdown the app when run on z < 14? We should avoid a situation when an app will suddenly crash with a SIGILL.
(In reply to Dan Horák from comment #2) > some initial comments Thanks! I've just uploaded a new version addressing most of your comments. > - the Source0 value should be an URL, see the Git Hosting Services section > in https://docs.fedoraproject.org/en-US/packaging-guidelines/SourceURL/ Ok. I'll fix it once we have a release tag in the github repo. We will have that within the next couple of days. > - it's better to use %{build_cflags} / %{build_cxxflags} instead of > ${RPM_OPT_FLAGS} Done > - the %post/%postun scriptlets calling ldconfig are not required any more, > it's handled by system-wide triggers Done > - you shouldn't package the static library unless really needed and if > needed, then it belongs to a "static" subpackage, see > https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static- > libraries Some scenarios might require a static version of the lib. I've moved it into a separate package. > - we can't move the baseline arch for Fedora to z >= 14 any time soon, can > the library gracefully shutdown the app when run on z < 14? We should avoid > a situation when an app will suddenly crash with a SIGILL. The library has some init routines which aren't build with z14 and allow to check whether the specific feature is present or not. It is described in the API that every application has to use these functions before invoking anything else.
Thanks for the update, please increase the release number for every iteration during the review. It makes easier to track the actual changes in the spec file. one more nitpick %files devel %{_includedir}/* I would probably be more specific with the headers (as %{_includedir}/zdnn.h), but it's my preference :-)
I think the passing of -march=z14 will need some thinking, because I see 2 kinds of gcc command lines gcc -O3 -march=z14 -mzvector -Wall -std=gnu99 -fstack-protector-all -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 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection -march=z14 -funroll-loops "-Wall" -I ../zdnn -I . -fPIC -c init_ztensor.c -o obj/init_ztensor.o and gcc -O3 -mzvector -Wall -std=gnu99 -fstack-protector-all -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 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection -march=z14 "-Wall" -fPIC -c zdnn_init.c -o obj/zdnn_init.o The first one has -march=z14 twice, the second has one occurrence. The "appended" -march overrides the distro wide flags, which is OK in the first case, I think, but not in the second ...
I've uploaded new versions. We have created a release on github.com and I've adjusted the Source0 line accordingly. I've also followed your suggestions about explicitly listing the header files. SPEC: https://ankr.fedorapeople.org/libzdnn.spec SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.0-2.fc33.src.rpm
(In reply to Dan Horák from comment #5) > I think the passing of -march=z14 will need some thinking, because I see 2 > kinds of gcc command lines > > gcc -O3 -march=z14 -mzvector -Wall -std=gnu99 -fstack-protector-all -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 > -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables > -fstack-clash-protection -march=z14 -funroll-loops "-Wall" -I ../zdnn -I . > -fPIC -c init_ztensor.c -o obj/init_ztensor.o > > and > > gcc -O3 -mzvector -Wall -std=gnu99 -fstack-protector-all -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 -march=zEC12 -mtune=z13 > -fasynchronous-unwind-tables -fstack-clash-protection -march=z14 "-Wall" > -fPIC -c zdnn_init.c -o obj/zdnn_init.o > > The first one has -march=z14 twice, the second has one occurrence. The > "appended" -march overrides the distro wide flags, which is OK in the first > case, I think, but not in the second ... Good catch. The second must not have an -march=z14. I've added a patch to the srpm and pass CFLAGS_INIT to configure as well now. There I do not append -march=z14. The build command lines look ok with that change. Thanks!
Thanks, the 0.3.1-2 looks good to me. One minor nitpick - please add a new line between the %changelog entries. Regarding the -march flags, I think that one option could be removing the distro values from %optflags and then relying on the upstream mechanism to set the -march=z14. Something like %global optflags $(echo %optflags | sed -e 's/-march=z[[:alnum:]]\+//g' -e 's/-mtune=z[[:alnum:]]\+//g') In the current revision you likely end up with -march=z14 -mtune=z13 combination, which might be suboptimal.
(In reply to Dan Horák from comment #8) > Thanks, the 0.3.1-2 looks good to me. One minor nitpick - please add a new > line between the %changelog entries. Done > Regarding the -march flags, I think that one option could be removing the > distro values from %optflags and then relying on the upstream mechanism to > set the -march=z14. Something like > > %global optflags $(echo %optflags | sed -e 's/-march=z[[:alnum:]]\+//g' -e > 's/-mtune=z[[:alnum:]]\+//g') > > In the current revision you likely end up with -march=z14 -mtune=z13 > combination, which might be suboptimal. Right, but for the init routines I still want the distro defaults and once the distro defaults are z14 or higher we always want the distro default to overwrite the upstream options. So for now I've just added also -mtune=z14 to the override options. Here are the updated versions of the files. Thanks for your feedback! SPEC: https://ankr.fedorapeople.org/libzdnn.spec SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.1-3.fc33.src.rpm
one last thing - won't the -mzvector cause any troubles with the distro-wide -march/-mtune settings? gcc -O3 -mzvector -Wall -std=gnu99 -fstack-protector-all -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 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection "-Wall" -fPIC -c zdnn_init.c -o obj/zdnn_init.o
(In reply to Dan Horák from comment #10) > one last thing - won't the -mzvector cause any troubles with the distro-wide > -march/-mtune settings? > > gcc -O3 -mzvector -Wall -std=gnu99 -fstack-protector-all -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 -march=zEC12 -mtune=z13 > -fasynchronous-unwind-tables -fstack-clash-protection "-Wall" -fPIC -c > zdnn_init.c -o obj/zdnn_init.o -mzvector does not influence code generation. It only enables language extensions which are used by the zDNN library. With that option the "vector" keyword is available which allows to define vector data types more easily. For code not using these extensions it doesn't make a difference.
I have tried to rebuild libzdnn rpm in mock and found that g++ is missing, but needed for the initializer.cpp file. Easiest fix would be to add BR: g++ (in addition to BR: gcc), unless there is a way to implement the initialization with gcc/C only.
And few more comments from working on the formal review: - seems there is a space missing in the %description for the static subpackage - ... of%{name} -> ... of %{name} - the Requires for the main package in "devel" needs to be "arched" - see https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_base_package - the "static" subpackage needs to Require the "devel" subpackage, arched again, see https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static-libraries (the "1. Static libraries and shared libraries" subsection)
(In reply to Dan Horák from comment #12) > I have tried to rebuild libzdnn rpm in mock and found that g++ is missing, > but needed for the initializer.cpp file. Easiest fix would be to add BR: g++ > (in addition to BR: gcc), unless there is a way to implement the > initialization with gcc/C only. Oh, right. I'll add g++ as build dependency. With GCC this could be implemented without C++ support but the library also needs to build on z/OS.
(In reply to Dan Horák from comment #13) > And few more comments from working on the formal review: > - seems there is a space missing in the %description for the static > subpackage - ... of%{name} -> ... of %{name} > - the Requires for the main package in "devel" needs to be "arched" - see > https://docs.fedoraproject.org/en-US/packaging-guidelines/ > #_requiring_base_package > - the "static" subpackage needs to Require the "devel" subpackage, arched > again, see > https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static- > libraries (the "1. Static libraries and shared libraries" subsection) Thanks for the review. I've fixed these issues and have uploaded a new version. SPEC: https://ankr.fedorapeople.org/libzdnn.spec SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.1-4.fc33.src.rpm
we are getting closer, but I see a problem when building in F-35 or rawhide (no problem in F-34), perhaps some change in the toolchain ... ... g++ -shared -Wl,-Bsymbolic-functions -Wl,-soname,libzdnn.so.0 -Wl,--version-script=zdnn.map -lm -o lib/libzdnn.so obj/zdnn_init.o obj/aiu_lstm_gru.o obj/aiu_ops.o obj/allochelper.o obj/convert_hw.o obj/get.o obj/init_ztensor.o obj/logger.o obj/malloc4k.o obj/operations.o obj/query.o obj/reshape_ztensor.o obj/status.o obj/stickify.o obj/tensor_desc.o obj/tensor_dump.o obj/tensor_verify.o obj/utils.o obj/version.o obj/zdnn.o obj/initializer.o make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' gcc -E -c ../zdnn/zdnn.h -o zdnn_preprocessed.h readelf -W --dyn-syms lib/libzdnn.so > zdnn.dynsyms awk -f sym_checker.awk zdnn_preprocessed.h ../zdnn/zdnn.map zdnn.dynsyms #0.0: BEGIN of sym_checker.awk #1.1: Processing file zdnn_preprocessed.h => zdnn.h #2.1: Processing file ../zdnn/zdnn.map => zdnn.map #3.1: Processing file zdnn.dynsyms => .dynsym-symbol-table ERROR #1 in .dynsym-symbol-table:5: Found unversioned symbol in .dynsym-symbol-table: .init #4.0: Processing END of sym_checker.awk Please also have a look at the tasks described in zdnn.map: 13: # Task: Introduce a new symbol in a new library version. 25: # Task: Provide a second symbol after making an incompatible change of a symbol. 54: # Task: Remove a symbol and only provide an old version for usage by existing programs. #4.3: END of sym_checker.awk: 1 ERRORs make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' make[1]: *** [t-symcheck:30: symcheck] Error 1 make[1]: *** Waiting for unfinished jobs.... please see the complete log at https://koji.fedoraproject.org/koji/taskinfo?taskID=77604382 You should be able to check it yourself locally with "mock -r fedora-35-s390x libzdnn-0.3.1-4.fc33.src.rpm" (or use fedora-rawhide-s390x for the -r option), "mock -r ... shell" puts you into the build's chroot.
I've just pushed a fix for that: https://github.com/IBM/zDNN/pull/3 SPEC: https://ankr.fedorapeople.org/libzdnn.spec SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.1-5.fc33.src.rpm
formal review is here OK source files match upstream: 8d0028a5ad2267de06bc59d5d81a1df5452c9978 libzdnn-0.3.1.tar.gz OK package meets naming and versioning guidelines. OK specfile is properly named, is cleanly written and uses macros consistently. OK dist tag is present. OK license field matches the actual license (ASL 2.0) OK license is open source-compatible. License text included in package. OK latest version is being packaged. OK BuildRequires are proper. OK compiler flags are appropriate. OK package builds in mock (Rawhide/s390x). OK debuginfo package looks complete. OK rpmlint is silent. OK final provides and requires look sane. N/A %check is present and all tests pass. OK shared libraries are installed correctly. OK owns the directories it creates. OK doesn't own any directories it shouldn't. OK no duplicates in %files. OK file permissions are appropriate. OK no scriptlets present. OK code, not content. OK documentation is small, so no -docs subpackage is necessary. OK %docs are not necessary for the proper functioning of the package. OK headers in -devel OK no pkgconfig files. OK no libtool .la droppings. OK not a GUI app. the package is APPROVED.
But there still something slightly wrong with the dependencies in the Makefile, because it's processing the symbols twice in the %install section (during "make install"), see bellow. It does "make all", whioch should be a no-op, then the actual "make install". ... make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' ar -rc lib/libzdnn.a obj/zdnn_init.nonshared.o obj/aiu_lstm_gru.nonshared.o obj/aiu_ops.nonshared.o obj/allochelper.nonshared.o obj/convert_hw.nonshared.o obj/get.nonshared.o obj/init_ztensor.nonshared.o obj/logger.nonshared.o obj/malloc4k.nonshared.o obj/operations.nonshared.o obj/query.nonshared.o obj/reshape_ztensor.nonshared.o obj/status.nonshared.o obj/stickify.nonshared.o obj/tensor_desc.nonshared.o obj/tensor_dump.nonshared.o obj/tensor_verify.nonshared.o obj/utils.nonshared.o obj/version.nonshared.o obj/zdnn.nonshared.o obj/initializer.nonshared.o make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' g++ -shared -Wl,-Bsymbolic-functions -Wl,-soname,libzdnn.so.0 -Wl,--version-script=zdnn.map -lm -o lib/libzdnn.so obj/zdnn_init.o obj/aiu_lstm_gru.o obj/aiu_ops.o obj/allochelper.o obj/convert_hw.o obj/get.o obj/init_ztensor.o obj/logger.o obj/malloc4k.o obj/operations.o obj/query.o obj/reshape_ztensor.o obj/status.o obj/stickify.o obj/tensor_desc.o obj/tensor_dump.o obj/tensor_verify.o obj/utils.o obj/version.o obj/zdnn.o obj/initializer.o make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' gcc -E -c ../zdnn/zdnn.h -o zdnn_preprocessed.h readelf -W --dyn-syms lib/libzdnn.so > zdnn.dynsyms awk -f sym_checker.awk zdnn_preprocessed.h ../zdnn/zdnn.map zdnn.dynsyms #0.0: BEGIN of sym_checker.awk #1.1: Processing file zdnn_preprocessed.h => zdnn.h #2.1: Processing file ../zdnn/zdnn.map => zdnn.map #3.1: Processing file zdnn.dynsyms => .dynsym-symbol-table #4.0: Processing END of sym_checker.awk #4.3: END of sym_checker.awk: SUCCESS make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' g++ -shared -Wl,-Bsymbolic-functions -Wl,-soname,libzdnn-private.so.0 -Wl,--version-script=zdnn_exportall.map -lm -o lib/libzdnn-private.so obj/zdnn_init.o obj/aiu_lstm_gru.o obj/aiu_ops.o obj/allochelper.o obj/convert_hw.o obj/get.o obj/init_ztensor.o obj/logger.o obj/malloc4k.o obj/operations.o obj/query.o obj/reshape_ztensor.o obj/status.o obj/stickify.o obj/tensor_desc.o obj/tensor_dump.o obj/tensor_verify.o obj/utils.o obj/version.o obj/zdnn.o obj/initializer.o make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.eMSys6 + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x '!=' / ']' + rm -rf /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x ++ dirname /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x + cd zDNN-0.3.1 + /usr/bin/make install DESTDIR=/builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x 'INSTALL=/usr/bin/install -p' /usr/bin/make all -C zdnn make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' g++ -shared -Wl,-Bsymbolic-functions -Wl,-soname,libzdnn.so.0 -Wl,--version-script=zdnn.map -lm -o lib/libzdnn.so obj/zdnn_init.o obj/aiu_lstm_gru.o obj/aiu_ops.o obj/allochelper.o obj/convert_hw.o obj/get.o obj/init_ztensor.o obj/logger.o obj/malloc4k.o obj/operations.o obj/query.o obj/reshape_ztensor.o obj/status.o obj/stickify.o obj/tensor_desc.o obj/tensor_dump.o obj/tensor_verify.o obj/utils.o obj/version.o obj/zdnn.o obj/initializer.o ln -f -s libzdnn.so lib/libzdnn.so.0 ln -f -s libzdnn-private.so lib/libzdnn-private.so.0 gcc -E -c ../zdnn/zdnn.h -o zdnn_preprocessed.h readelf -W --dyn-syms lib/libzdnn.so > zdnn.dynsyms awk -f sym_checker.awk zdnn_preprocessed.h ../zdnn/zdnn.map zdnn.dynsyms #0.0: BEGIN of sym_checker.awk #1.1: Processing file zdnn_preprocessed.h => zdnn.h #2.1: Processing file ../zdnn/zdnn.map => zdnn.map #3.1: Processing file zdnn.dynsyms => .dynsym-symbol-table #4.0: Processing END of sym_checker.awk #4.3: END of sym_checker.awk: SUCCESS make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' /usr/bin/make install -C zdnn make[1]: Entering directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' g++ -shared -Wl,-Bsymbolic-functions -Wl,-soname,libzdnn.so.0 -Wl,--version-script=zdnn.map -lm -o lib/libzdnn.so obj/zdnn_init.o obj/aiu_lstm_gru.o obj/aiu_ops.o obj/allochelper.o obj/convert_hw.o obj/get.o obj/init_ztensor.o obj/logger.o obj/malloc4k.o obj/operations.o obj/query.o obj/reshape_ztensor.o obj/status.o obj/stickify.o obj/tensor_desc.o obj/tensor_dump.o obj/tensor_verify.o obj/utils.o obj/version.o obj/zdnn.o obj/initializer.o g++ -shared -Wl,-Bsymbolic-functions -Wl,-soname,libzdnn-private.so.0 -Wl,--version-script=zdnn_exportall.map -lm -o lib/libzdnn-private.so obj/zdnn_init.o obj/aiu_lstm_gru.o obj/aiu_ops.o obj/allochelper.o obj/convert_hw.o obj/get.o obj/init_ztensor.o obj/logger.o obj/malloc4k.o obj/operations.o obj/query.o obj/reshape_ztensor.o obj/status.o obj/stickify.o obj/tensor_desc.o obj/tensor_dump.o obj/tensor_verify.o obj/utils.o obj/version.o obj/zdnn.o obj/initializer.o ln -f -s libzdnn.so lib/libzdnn.so.0 ln -f -s libzdnn-private.so lib/libzdnn-private.so.0 gcc -E -c ../zdnn/zdnn.h -o zdnn_preprocessed.h readelf -W --dyn-syms lib/libzdnn.so > zdnn.dynsyms awk -f sym_checker.awk zdnn_preprocessed.h ../zdnn/zdnn.map zdnn.dynsyms #0.0: BEGIN of sym_checker.awk #1.1: Processing file zdnn_preprocessed.h => zdnn.h #2.1: Processing file ../zdnn/zdnn.map => zdnn.map #3.1: Processing file zdnn.dynsyms => .dynsym-symbol-table #4.0: Processing END of sym_checker.awk #4.3: END of sym_checker.awk: SUCCESS /usr/bin/install -p -d /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64 /usr/bin/install -p -d /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/include /usr/bin/install -p -t /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64 lib/libzdnn.so /usr/bin/install -p -m 644 -t /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/include zdnn.h mv /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0 ln -f -s libzdnn.so.0 /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so /usr/bin/install -p -m 644 -t /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64 lib/libzdnn.a make[1]: Leaving directory '/builddir/build/BUILD/zDNN-0.3.1/zdnn' + mv /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0 /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0.3.1 + ln -s -r /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0.3.1 /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0 + rm -f /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so + ln -s -r /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0.3.1 /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so + /usr/bin/find-debuginfo -j8 --strict-build-id -m -i --build-id-seed 0.3.1-5.fc36 --unique-debug-suffix -0.3.1-5.fc36.s390x --unique-debug-src-base libzdnn-0.3.1-5.fc36.s390x --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 50000000 -S debugsourcefiles.list /builddir/build/BUILD/zDNN-0.3.1 extracting debug info from /builddir/build/BUILDROOT/libzdnn-0.3.1-5.fc36.s390x/usr/lib64/libzdnn.so.0.3.1 original debug info size: 304kB, size after compression: 280kB /usr/bin/sepdebugcrcfix: Updated 1 CRC32s, 0 CRC32s did match. ...
Yes, there is a problem with the makefile rules for the symbol checker and the symlink creation. I've fixed this with: https://github.com/IBM/zDNN/pull/4 Here is the updated package including the change from the PR as patch: SPEC: https://ankr.fedorapeople.org/libzdnn.spec SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.0-6.fc33.src.rpm
(In reply to Andreas Krebbel from comment #20) > Yes, there is a problem with the makefile rules for the symbol checker and > the symlink creation. I've fixed this with: > https://github.com/IBM/zDNN/pull/4 > > Here is the updated package including the change from the PR as patch: > > SPEC: https://ankr.fedorapeople.org/libzdnn.spec > SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.0-6.fc33.src.rpm This should have been: SRPM: https://ankr.fedorapeople.org/libzdnn-0.3.1-6.fc33.src.rpm
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/libzdnn
libzdnn is now available as a package for Fedora rawhide: https://src.fedoraproject.org/rpms/libzdnn Upstream libzdnn got a new release - 0.4.0 which is already part of the fedora package above.
Package is now in repositories, closing review.