Add new package genwqe-user >= 4.0.5 for z Systems for Fedora 24. As preparation for inclusion into RHEL7. The package is upstream available at https://github.com/ibm-genwqe/genwqe-user/releases
I had a quick look at genwqe-user-4.0.7 and found several issues that need to be addressed before this package can be included in Fedora. - 'make' downloads and copies libz-1.2.8 into the build directory. Downloading files during the build process is not allowed by the Fedora packaging guidelines [1]. Bundling a copy of libz in the genwqe-user tarball most likely isn't allowed, although there are some exceptions [2] which might apply for this accelerated version. - this downloaded libz will then be built and statically linked with the genwqe-user binaries. This is not allowed be the Fedora packaging guidelines [3], exceptions can only be granted by the Fedora Steering Comitee (FeSCo). - including 3 spec files in one tarball in not necessary. It is much better to use a single spec file with subpackages [1] https://fedoraproject.org/wiki/Packaging:Guidelines#Networking_Support (Build time network access) [2] https://fedoraproject.org/wiki/Packaging:Guidelines#Bundling_and_Duplication_of_system_libraries [3] https://fedoraproject.org/wiki/Packaging:Guidelines#Statically_Linking_Executables
------- Comment From haverkam.com 2015-12-07 10:46 EDT------- Hi Karsten, thanks for making us aware about the guidelines you have before including our package. Let me try to explain why we do certain things the way we do, to explore what how we can adjust it to meet yours and our needs best. Our alternate zlib version is intended to provide the same user interface software zlib does. At the same time it allows using our GenWQE/PCIe compression acceleration card. In some cases using the hardware accelerator is not helpful e.g. when the data is too small, or if there is no card available for the moment or if it needs recovery. For those cases we implemented a fallback to software zlib. The first version of this was to compile the software zlib with a z_ prefix (zlib allows to do this). Linking this together with our code enables us to implement a switch: inflate(): if input buffer is too small return z_inflate() // software else return h_inflate() // our special inflate which uses hardware Our implementation had a rather complicated Makefile putting on this together nicely. And it was duplicating software zlib. So our 2nd atttempt was to try, if we could use the system software zlib and load it dynamically with dlopen(), dlsym() to avoid software zlib duplication. This is how it is currently setup. But it comes with some deficiencies I do not like: 1. If we do not find zlib.so at a defined location we might load ourselves. This created deadlocks when loading the application. We finally recommended to put zlib.so at /opt/genwqe/lib/genwqe/zlib.so such that it always can be found. 2. Backlevel distros using zlib 1.2.3 which was lacking some functions we needed to have. 3. When dynamically linking against our code, it turned out that software zlib functions were calling (in our version at least) not internal functions, but our wrapper functions. Example: software inflate (used via dlsym) calls inflateReset, but not software inflateReset, but the first available inflateReset, which was our wrappers inflateReset. Since both functions used the private data field in z_stream differently, this caused problems (see wrapper.c). 4. Our zlibz version has different external dependencies compared to software zlib Now I figured out that objcopy offers a way to prefix functions in an archive. That allows me to change inflate into z_inflate, just as it was in our first version. The next try I wanted to do is to use this and switch back to method 1. So I included building zlib-1.2.8 again. I currently do not use it, it is a preparation for the next tryout. I furthermore build that thing my own, because unfortunately the zlib/zlib-devel rpms are not providing libz.a. As you can see, we looking for an optimal solution to provide our alternate zlib implementation. Constructive proposals are welcome. So if you have good ideas how to solve the optimal software zlib integration, let us know. Is there a way to get libz.a such that we could integrate it during build time? Regards Frank
------- Comment From haverkam.com 2015-12-07 13:03 EDT------- I think installing the zlib-static packet might solve one of my previous problems. [haver@station04 ~]$ rpm -qil zlib-static Name : zlib-static Version : 1.2.8 Release : 7.fc22 ... Summary : Static libraries for Zlib development Description : The zlib-static package includes static libraries needed to develop programs that use the zlib compression and decompression library. /usr/lib64/libz.a /usr/share/licenses/zlib-static /usr/share/licenses/zlib-static/README
------- Comment From haverkam.com 2015-12-14 08:41 EDT------- Hi Karsten, I just wanted to let you know that Gabriel and I are trying to find solutions for the problems you have addressed. Some of the conversation is just between Gabriel and me, such that you do not see it directly. But some results are already visible in our github code along with some issues triggered by your comments. So stay tuned, we are working on it. Regards Frank
------- Comment From gbertazi.com 2016-01-20 07:21 EDT------- Hi Karsten, I believe Frank and I have addressed all the things you pointed in the upstream repository. The package should be much more compliant with Fedora guidelines now. Please let us know if we need to fix anything else before its accepted upstream. This package must also be enabled for Power, not only Z.
(In reply to IBM Bug Proxy from comment #6) > ------- Comment From gbertazi.com 2016-01-20 07:21 EDT------- > Hi Karsten, > > I believe Frank and I have addressed all the things you pointed in the > upstream repository. The package should be much more compliant with Fedora > guidelines now. Please let us know if we need to fix anything else before > its accepted upstream. > > This package must also be enabled for Power, not only Z. . Hello Red Hat / Karsten or Dan, ... the current version of the package upstream at https://github.com/ibm-genwqe/genwqe-user/releases is "4.0.12" ... ... what are the next steps to make this package available in Fedora ..? Please advise ... Thanks in advance for your support.
I just had a look at 4.0.16. It looks much better now. Although the code to download the zlib tarball from upstream is still there, it doesn't get executed during the build process. There are still some issues, though. - rpmlint complains about Apache-2.0 being an invalid license. This is about the License tag in the spec file, that needs to be changed to 'ASL 2.0' per https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing - not required, but I'd suggest adding the CLA to the devel package Now the formal review (https://fedoraproject.org/wiki/Packaging:ReviewGuidelines) with the fedora-review program: Issues: ======= - Static libraries in -static or -devel subpackage, providing -devel if present. Note: Package has .a files: genwqe-tools-devel. Does not provide -static: genwqe-tools-devel. See: http://fedoraproject.org/wiki/Packaging/Guidelines#StaticLibraries - 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. Note: License file LICENSE is marked as %doc instead of %license See: http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text - Spec file name must match the spec package %{name}, in the format %{name}.spec. Note: genwqe.spec should be genwqe-tools.spec See: http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Spec_file_name ===== MUST items ===== C/C++: [ ]: Provides: bundled(gnulib) in place as required. Note: Sources not installed [ ]: Package does not contain kernel modules. [ ]: Package contains no static executables. [ ]: Development (unversioned) .so files in -devel subpackage, if present. Note: Unversioned so-files in private %_libdir subdirectory (see attachment). Verify they are not in ld path. [x]: Header files in -devel subpackage, if present. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. eneric: [ ]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [ ]: License field in the package spec file matches the actual license. Note: There is no build directory. Running licensecheck on vanilla upstream sources. No licenses found. Please check the source files for licenses manually. [ ]: License file installed when any subpackage combination is installed. [ ]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib64/genwqe [ ]: %build honors applicable compiler flags or justifies otherwise. [ ]: Package contains no bundled libraries without FPC exception. [ ]: Changelog in prescribed format. [ ]: Sources contain only permissible code or content. [ ]: Each %files section contains %defattr if rpm < 4.4 Note: %defattr present but not needed [ ]: Package contains desktop file if it is a GUI application. [ ]: Development files must be in a -devel package [ ]: Package uses nothing in %doc for runtime. [ ]: Package consistently uses macros (instead of hard-coded directory names). [ ]: Package is named according to the Package Naming Guidelines. [ ]: Package does not generate any conflict. [ ]: Package obeys FHS, except libexecdir and /usr/target. [ ]: If the package is a rename of another package, proper Obsoletes and Provides are present. [ ]: Requires correct, justified where necessary. [ ]: Spec file is legible and written in American English. [ ]: Package contains systemd file(s) if in need. [ ]: Useful -debuginfo package or justification otherwise. [ ]: Package is not known to require an ExcludeArch tag. [ ]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 61440 bytes in 3 files. [ ]: Package complies to the Packaging Guidelines [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Package installs properly. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: Package requires other packages for directories it uses. [x]: Package does not own files or directories owned by other packages. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [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 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]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [!]: Buildroot is not present Note: Invalid buildroot found: %{_tmppath}/%{name}-root See: http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag [ ]: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [ ]: Final provides and requires are sane (see attachments). [ ]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in genwqe- zlib , genwqe-vpd , genwqe-tools-devel , genwqe-tools-debuginfo [ ]: Package functions as described. [ ]: Latest version is packaged. [ ]: Package does not include license text files separate from upstream. [ ]: 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. [ ]: %check is present and all tests pass. [ ]: Packages should try to preserve timestamps of original installed files. [ ]: Spec use %global instead of %define unless justified. Note: %define requiring justification: %define libcxl "BUNDLE_LIBCXL=1" [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: Reviewer should test that the package builds in mock. [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]: SourceX is a working URL. ===== EXTRA items ===== Generic: [!]: Spec file according to URL is the same as in SRPM. Note: Bad spec filename: /tmp/genwqe/review-genwqe/srpm- unpacked/genwqe.spec See: (this test has no URL) [x]: Rpmlint is run on debuginfo package(s). Note: There are rpmlint messages (see attachment). [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. Rpmlint ------- Checking: genwqe-tools-4.0.16-1.fc23.x86_64.rpm genwqe-zlib-4.0.16-1.fc23.x86_64.rpm genwqe-vpd-4.0.16-1.fc23.x86_64.rpm genwqe-tools-devel-4.0.16-1.fc23.x86_64.rpm genwqe-tools-debuginfo-4.0.16-1.fc23.x86_64.rpm genwqe-tools-4.0.16-1.fc23.src.rpm genwqe-tools.x86_64: W: spelling-error Summary(en_US) userspace -> user space, user-space, users pace genwqe-tools.x86_64: W: incoherent-version-in-changelog 4.0.16 ['4.0.16-1.fc23', '4.0.16-1'] genwqe-tools.x86_64: W: invalid-license Apache-2.0 genwqe-tools.x86_64: W: only-non-binary-in-usr-lib genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_test_gz genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_mt_perf genwqe-zlib.x86_64: W: spelling-error Summary(en_US) libz -> lib, lib z genwqe-zlib.x86_64: W: spelling-error %description -l en_US libz -> lib, lib z genwqe-zlib.x86_64: W: invalid-license Apache-2.0 genwqe-vpd.x86_64: W: invalid-license Apache-2.0 genwqe-vpd.x86_64: W: non-conffile-in-etc /etc/genwqe_vpd.csv genwqe-tools-devel.x86_64: W: invalid-license Apache-2.0 genwqe-tools-devel.x86_64: W: no-documentation genwqe-tools-debuginfo.x86_64: W: invalid-license Apache-2.0 genwqe-tools.src: W: spelling-error Summary(en_US) userspace -> user space, user-space, users pace genwqe-tools.src: W: invalid-license Apache-2.0 genwqe-tools.src: E: invalid-spec-name genwqe-tools.src:18: W: macro-in-comment %{_libdir} genwqe-tools.src:77: W: mixed-use-of-spaces-and-tabs (spaces: line 24, tab: line 77) 6 packages and 0 specfiles checked; 1 errors, 18 warnings. Rpmlint (debuginfo) ------------------- Checking: genwqe-tools-debuginfo-4.0.16-1.fc23.x86_64.rpm genwqe-tools-debuginfo.x86_64: W: invalid-license Apache-2.0 1 packages and 0 specfiles checked; 0 errors, 1 warnings. Rpmlint (installed packages) ---------------------------- sh: /usr/bin/python: Datei oder Verzeichnis nicht gefunden genwqe-vpd.x86_64: W: invalid-license Apache-2.0 genwqe-vpd.x86_64: W: non-conffile-in-etc /etc/genwqe_vpd.csv genwqe-tools-debuginfo.x86_64: W: invalid-license Apache-2.0 genwqe-tools-devel.x86_64: W: invalid-license Apache-2.0 genwqe-tools-devel.x86_64: W: no-documentation genwqe-zlib.x86_64: W: invalid-license Apache-2.0 genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.0)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.0.2)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.0.8)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.2)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.2.3)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.2.4)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.3.3)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.3.4)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.3.5)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.5.1)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.5.2)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so(ZLIB_1.2.7.1)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC-4.0.16.so libzADC-4.0.16.so()(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.0)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.0.2)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.0.8)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.2)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.2.3)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.2.4)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.3.3)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.3.4)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.3.5)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.5.1)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.5.2)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so(ZLIB_1.2.7.1)(64bit) genwqe-zlib.x86_64: W: private-shared-object-provides /usr/lib64/genwqe/libzADC.so libzADC-4.0.16.so()(64bit) genwqe-tools.x86_64: W: incoherent-version-in-changelog 4.0.16 ['4.0.16-1.fc23', '4.0.16-1'] genwqe-tools.x86_64: W: invalid-license Apache-2.0 genwqe-tools.x86_64: W: only-non-binary-in-usr-lib genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_test_gz genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_mt_perf 5 packages and 0 specfiles checked; 0 errors, 37 warnings. Requires -------- genwqe-vpd (rpmlib, GLIBC filtered): libc.so.6()(64bit) libpthread.so.0()(64bit) librt.so.1()(64bit) rtld(GNU_HASH) genwqe-tools-debuginfo (rpmlib, GLIBC filtered): genwqe-tools-devel (rpmlib, GLIBC filtered): genwqe-tools genwqe-zlib (rpmlib, GLIBC filtered): libc.so.6()(64bit) libdl.so.2()(64bit) libpthread.so.0()(64bit) librt.so.1()(64bit) rtld(GNU_HASH) genwqe-tools (rpmlib, GLIBC filtered): /bin/bash libc.so.6()(64bit) libdl.so.2()(64bit) libpthread.so.0()(64bit) librt.so.1()(64bit) libz.so.1()(64bit) rtld(GNU_HASH) zlib Provides -------- genwqe-vpd: genwqe-vpd genwqe-vpd(x86-64) genwqe-tools-debuginfo: genwqe-tools-debuginfo genwqe-tools-debuginfo(x86-64) genwqe-tools-devel: genwqe-tools-devel genwqe-tools-devel(x86-64) genwqe-zlib: genwqe-zlib genwqe-zlib(x86-64) libzADC-4.0.16.so()(64bit) libzADC-4.0.16.so(ZLIB_1.2.0)(64bit) libzADC-4.0.16.so(ZLIB_1.2.0.2)(64bit) libzADC-4.0.16.so(ZLIB_1.2.0.8)(64bit) libzADC-4.0.16.so(ZLIB_1.2.2)(64bit) libzADC-4.0.16.so(ZLIB_1.2.2.3)(64bit) libzADC-4.0.16.so(ZLIB_1.2.2.4)(64bit) libzADC-4.0.16.so(ZLIB_1.2.3.3)(64bit) libzADC-4.0.16.so(ZLIB_1.2.3.4)(64bit) libzADC-4.0.16.so(ZLIB_1.2.3.5)(64bit) libzADC-4.0.16.so(ZLIB_1.2.5.1)(64bit) libzADC-4.0.16.so(ZLIB_1.2.5.2)(64bit) libzADC-4.0.16.so(ZLIB_1.2.7.1)(64bit) genwqe-tools: genwqe-tools genwqe-tools(x86-64) Unversioned so-files -------------------- genwqe-zlib: /usr/lib64/genwqe/libz.so genwqe-zlib: /usr/lib64/genwqe/libzADC-4.0.16.so genwqe-zlib: /usr/lib64/genwqe/libzADC.so Source checksums ---------------- https://github.com/ibm-genwqe/genwqe-user/archive/v4.0.16.tar.gz : CHECKSUM(SHA256) this package : 3f929e2f80fd6e0f22638679d706963e0cf16085606cc221203a81dcf1e42217 CHECKSUM(SHA256) upstream package : 3f929e2f80fd6e0f22638679d706963e0cf16085606cc221203a81dcf1e42217
Package build on ppc64, but here's another MUSTFIX as it doesn't build on ppc64le: Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.FEWBHQ + umask 022 + cd /builddir/build/BUILD + cd genwqe-user-4.0.16 + /usr/bin/make -C ext/libcxl CFLAGS=-I../include make: Entering directory '/builddir/build/BUILD/genwqe-user-4.0.16/ext/libcxl' make: Leaving directory '/builddir/build/BUILD/genwqe-user-4.0.16/ext/libcxl' make: *** No targets specified and no makefile found. Stop. error: Bad exit status from /var/tmp/rpm-tmp.FEWBHQ (%build) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.FEWBHQ (%build) Child return code was: 1 EXCEPTION: [Error()] Traceback (most recent call last): File "/usr/lib/python3.4/site-packages/mockbuild/trace_decorator.py", line 88, in trace result = func(*args, **kw) File "/usr/lib/python3.4/site-packages/mockbuild/util.py", line 547, in do raise exception.Error("Command failed. See logs for output.\n # %s" % (command,), child.returncode) mockbuild.exception.Error: Command failed. See logs for output. # bash --login -c /usr/bin/rpmbuild -bb --target ppc64le --nodeps /builddir/build/SPECS/genwqe.spec This package also fails to build on s390 (31bit). As this bugzilla is about ppc64/ppc64le and s390x only, the spec file needs this: ExclusiveArch: %{power64} s390x Btw, is there a way that we can test the functionality of genwqe on our Power8 ? From the description it looks like we'd need a special PCIe card.
------- Comment From gbertazi.com 2016-04-15 13:30 EDT------- (In reply to comment #22) > Package build on ppc64, but here's another MUSTFIX as it doesn't build on > ppc64le: > Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.FEWBHQ > + umask 022 > + cd /builddir/build/BUILD > + cd genwqe-user-4.0.16 > + /usr/bin/make -C ext/libcxl CFLAGS=-I../include > make: Entering directory > '/builddir/build/BUILD/genwqe-user-4.0.16/ext/libcxl' > make: Leaving directory '/builddir/build/BUILD/genwqe-user-4.0.16/ext/libcxl' > make: *** No targets specified and no makefile found. Stop. libcxl is either provided as a bundled version in etx/libcxl (need to prefetch with git submodule) or you can use the distro version. F24 should already have that included, so I suggest you use that one for packaging. > error: Bad exit status from /var/tmp/rpm-tmp.FEWBHQ (%build) > RPM build errors: > Bad exit status from /var/tmp/rpm-tmp.FEWBHQ (%build) > Child return code was: 1 > EXCEPTION: [Error()] > Traceback (most recent call last): > File "/usr/lib/python3.4/site-packages/mockbuild/trace_decorator.py", line > 88, in trace > result = func(*args, **kw) > File "/usr/lib/python3.4/site-packages/mockbuild/util.py", line 547, in do > raise exception.Error("Command failed. See logs for output.\n # %s" % > (command,), child.returncode) > mockbuild.exception.Error: Command failed. See logs for output. > # bash --login -c /usr/bin/rpmbuild -bb --target ppc64le --nodeps > /builddir/build/SPECS/genwqe.spec > This package also fails to build on s390 (31bit). As this bugzilla is about > ppc64/ppc64le and s390x only, the spec file needs this: > ExclusiveArch: %{power64} s390x I spoke to Frank and we don't need to support s390. We can go with power and s390x. > Btw, is there a way that we can test the functionality of genwqe on our > Power8 ? From the description it looks like we'd need a special PCIe card. I think you'll need the card for that. Otherwise, you won't be able to do much, maybe try the software fallback. :)
(In reply to IBM Bug Proxy from comment #10) > ------- Comment From gbertazi.com 2016-04-15 13:30 EDT------- > (In reply to comment #22) > > Package build on ppc64, but here's another MUSTFIX as it doesn't build on > > ppc64le: > > Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.FEWBHQ > > + umask 022 > > + cd /builddir/build/BUILD > > + cd genwqe-user-4.0.16 > > + /usr/bin/make -C ext/libcxl CFLAGS=-I../include > > make: Entering directory > > '/builddir/build/BUILD/genwqe-user-4.0.16/ext/libcxl' > > make: Leaving directory '/builddir/build/BUILD/genwqe-user-4.0.16/ext/libcxl' > > make: *** No targets specified and no makefile found. Stop. > > libcxl is either provided as a bundled version in etx/libcxl (need to > prefetch with git submodule) or you can use the distro version. F24 should > already have that included, so I suggest you use that one for packaging. > . ... yes, libcxl is available with Fedora ... see LTC bug 135962 - RH1301116- Fedora - Review Request: libcxl - Coherent accelerator interface ...
------- Comment From haverkam.com 2016-04-20 05:01 EDT------- We found a bug in the ppc64le build. The following issue tracks this: https://github.com/ibm-genwqe/genwqe-user/issues/106 Please make sure you use at least v4.0.17 for ppc64le builds. Thanks.
(In reply to IBM Bug Proxy from comment #12) > ------- Comment From haverkam.com 2016-04-20 05:01 EDT------- > We found a bug in the ppc64le build. The following issue tracks this: > https://github.com/ibm-genwqe/genwqe-user/issues/106 > > Please make sure you use at least v4.0.17 for ppc64le builds. Thanks. the v4.0.17 doesn't build on ppc64le. I fixed the build failure, and made it build with the system libcxl and uploaded new srpm and specfile on https://than.fedorapeople.org/f24/ specfile: https://than.fedorapeople.org/f24/genwqe.spec srpm: https://than.fedorapeople.org/f24/genwqe-tools-4.0.17-1.fc24.src.rpm --- diff -up genwqe-user-4.0.17/config.mk.than genwqe-user-4.0.17/config.mk --- genwqe-user-4.0.17/config.mk.than 2016-04-19 09:51:29.000000000 -0400 +++ genwqe-user-4.0.17/config.mk 2016-06-10 12:55:36.528440784 -0400 @@ -124,9 +124,13 @@ ifndef DISABLE_LIBCXL ifeq ($(PLATFORM), ppc64le) WITH_LIBCXL=1 -BUNDLE_LIBCXL ?= 1 endif +ifeq ($(PLATFORM), ppc64) +WITH_LIBCXL=1 +endif + + ifdef BUILD_SIMCODE WITH_LIBCXL=1 BUNDLE_LIBCXL ?= 1 diff -up genwqe-user-4.0.17/tools/Makefile.than genwqe-user-4.0.17/tools/Makefile --- genwqe-user-4.0.17/tools/Makefile.than 2016-04-19 09:51:29.000000000 -0400 +++ genwqe-user-4.0.17/tools/Makefile 2016-06-10 12:38:37.761929035 -0400 @@ -44,10 +44,10 @@ projs += genwqe_maint genwqe_loadtree CAPI_INSTALL=capi_install # If we are bundling, we need to link statically. Otherwise, go dynamic. -ifdef BUNDLE_LIBCXL +ifeq ($(BUNDLE_LIBCXL),1) LDLIBS += $(libcxl_a) else -LDLIBS = -lcxl +LDLIBS += -lcxl endif # !CONFIG_LIBCXL_PATH endif # WITH_LIBCXL --- diff -Nur genwqe-user-4.0.17/spec/genwqe.spec ../SPECS/genwqe.spec --- genwqe-user-4.0.17/spec/genwqe.spec 2016-04-19 09:51:29.000000000 -0400 +++ ../SPECS/genwqe.spec 2016-06-10 12:59:00.251746404 -0400 @@ -28,9 +28,14 @@ Group: Development/Tools URL: https://github.com/ibm-genwqe/genwqe-user/ Requires: zlib >= 1.2.7 -BuildRequires: zlib-devel >= 1.2.7 help2man +BuildRequires: zlib-devel >= 1.2.7 +BuildRequires: help2man +%ifarch %{power64} +BuildRequires: libcxl-devel +%endif BuildRoot: %{_tmppath}/%{name}-root Source0: https://github.com/ibm-genwqe/genwqe-user/archive/v%{version}.tar.gz +Patch0: genwqe-user-4.0.17-libcxl.patch %description Provide a suite of utilities to manage and configure the IBM GenWQE card. @@ -58,10 +63,7 @@ %prep %setup -q -n genwqe-user-%{version} - -%ifarch ppc64le -%define libcxl "BUNDLE_LIBCXL=1" -%endif +%patch0 -p1 -b .than %build @@ -121,10 +123,10 @@ %{_mandir}/man1/genwqe_update.1.gz %{_mandir}/man1/zlib_mt_perf.1.gz -%ifarch ppc64le +%ifarch %{power64} %{_bindir}/genwqe_maint %{_bindir}/genwqe_loadtree -%{_unitdir}/genwqe_maint.service +/%{_unitdir}/genwqe_maint.service %{_mandir}/man1/genwqe_maint.1.gz %{_mandir}/man1/genwqe_loadtree.1.gz %endif @@ -155,6 +157,9 @@ %{_libdir}/genwqe/*.a %changelog +* Fri Jun 10 2016 Than Ngo <than> - 4.0.17-1 +- fixed to build system libcxl on power64 + * Wed Apr 06 2016 Gabriel Krisman Bertazi <krisman.ibm.com> - 4.0.16 - dlopen uses SONAME when opening libz. - Support CAPI version. --- build on power64/s390x http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=3451346 http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=2257035 --- Karsten, could you please check my new srpm/specfile so we can import it into f24? In my opinion it looks fine for me. Thanks
I'll take a look
[!]: Spec file according to URL is the same as in SRPM. Note: Bad spec filename: /home/karsten/review-genwqe/review-genwqe- tools/srpm-unpacked/genwqe.spec The spec file needs to be renamed to genwge-tools.spec https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#StaticLibraries clearly states that if the package contains shared AND static libraries, the static library (/usr/lib64/genwqe/libzADC.a) MUST be placed in a -static subpackage. That leaves us with -devel containing just genwqe/zaddons.h, but that's probably ok. 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. Note: License file LICENSE is not marked as %license See: http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text Solution: change %doc LICENSE to %license LICENSE RPmlint output: Checking: genwqe-tools-4.0.17-1.fc24.x86_64.rpm genwqe-zlib-4.0.17-1.fc24.x86_64.rpm genwqe-vpd-4.0.17-1.fc24.x86_64.rpm genwqe-tools-devel-4.0.17-1.fc24.x86_64.rpm genwqe-tools-debuginfo-4.0.17-1.fc24.x86_64.rpm genwqe-tools-4.0.17-1.fc24.src.rpm genwqe-tools.x86_64: W: spelling-error Summary(en_US) userspace -> user space, user-space, users pace genwqe-tools.x86_64: W: invalid-license Apache-2.0 genwqe-tools.x86_64: W: only-non-binary-in-usr-lib genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_mt_perf genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_test_gz genwqe-zlib.x86_64: W: spelling-error Summary(en_US) libz -> lib, lib z genwqe-zlib.x86_64: W: spelling-error %description -l en_US libz -> lib, lib z genwqe-zlib.x86_64: W: invalid-license Apache-2.0 genwqe-zlib.x86_64: W: devel-file-in-non-devel-package /usr/lib64/genwqe/libzADC.so genwqe-zlib.x86_64: W: devel-file-in-non-devel-package /usr/lib64/genwqe/libz.so genwqe-vpd.x86_64: W: invalid-license Apache-2.0 genwqe-vpd.x86_64: W: non-conffile-in-etc /etc/genwqe_vpd.csv genwqe-tools-devel.x86_64: W: invalid-license Apache-2.0 genwqe-tools-devel.x86_64: W: no-documentation genwqe-tools-debuginfo.x86_64: W: invalid-license Apache-2.0 genwqe-tools.src: W: spelling-error Summary(en_US) userspace -> user space, user-space, users pace genwqe-tools.src: W: invalid-license Apache-2.0 genwqe-tools.src: E: invalid-spec-name genwqe-tools.src:18: W: macro-in-comment %{_libdir} genwqe-tools.src:76: W: mixed-use-of-spaces-and-tabs (spaces: line 24, tab: line 76) 6 packages and 0 specfiles checked; 1 errors, 19 warnings. So the License still needs to be changet to 'ASL 2.0' as described in https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing Using a macro inside of comments like # CONFIG_ZLIB_PATH=%{_libdir}/libz.so can cause problems.
(In reply to Karsten Hopp from comment #15) > [!]: Spec file according to URL is the same as in SRPM. > Note: Bad spec filename: /home/karsten/review-genwqe/review-genwqe- > tools/srpm-unpacked/genwqe.spec > > The spec file needs to be renamed to genwge-tools.spec fixed, it's renamed to genwge-tools.spec > > > https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/ > Guidelines#StaticLibraries clearly states that if the package contains > shared AND static libraries, the static library > (/usr/lib64/genwqe/libzADC.a) MUST be placed in a -static subpackage. > That leaves us with -devel containing just genwqe/zaddons.h, but that's > probably ok. > > > > 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. Note: License file LICENSE is not marked > as %license > See: > http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text > > Solution: change %doc LICENSE to %license LICENSE > it's fixed in new specfile > > RPmlint output: > Checking: genwqe-tools-4.0.17-1.fc24.x86_64.rpm > genwqe-zlib-4.0.17-1.fc24.x86_64.rpm > genwqe-vpd-4.0.17-1.fc24.x86_64.rpm > genwqe-tools-devel-4.0.17-1.fc24.x86_64.rpm > genwqe-tools-debuginfo-4.0.17-1.fc24.x86_64.rpm > genwqe-tools-4.0.17-1.fc24.src.rpm > genwqe-tools.x86_64: W: spelling-error Summary(en_US) userspace -> user > space, user-space, users pace > genwqe-tools.x86_64: W: invalid-license Apache-2.0 > genwqe-tools.x86_64: W: only-non-binary-in-usr-lib > genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_mt_perf > genwqe-tools.x86_64: W: no-manual-page-for-binary genwqe_test_gz > genwqe-zlib.x86_64: W: spelling-error Summary(en_US) libz -> lib, lib z > genwqe-zlib.x86_64: W: spelling-error %description -l en_US libz -> lib, lib > z > genwqe-zlib.x86_64: W: invalid-license Apache-2.0 > genwqe-zlib.x86_64: W: devel-file-in-non-devel-package > /usr/lib64/genwqe/libzADC.so > genwqe-zlib.x86_64: W: devel-file-in-non-devel-package > /usr/lib64/genwqe/libz.so > genwqe-vpd.x86_64: W: invalid-license Apache-2.0 > genwqe-vpd.x86_64: W: non-conffile-in-etc /etc/genwqe_vpd.csv > genwqe-tools-devel.x86_64: W: invalid-license Apache-2.0 > genwqe-tools-devel.x86_64: W: no-documentation > genwqe-tools-debuginfo.x86_64: W: invalid-license Apache-2.0 > genwqe-tools.src: W: spelling-error Summary(en_US) userspace -> user space, > user-space, users pace > genwqe-tools.src: W: invalid-license Apache-2.0 > genwqe-tools.src: E: invalid-spec-name > genwqe-tools.src:18: W: macro-in-comment %{_libdir} > genwqe-tools.src:76: W: mixed-use-of-spaces-and-tabs (spaces: line 24, tab: > line 76) > 6 packages and 0 specfiles checked; 1 errors, 19 warnings. > > So the License still needs to be changet to 'ASL 2.0' as described in > https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing > fixed, changed to ASL 2.0 > Using a macro inside of comments like > # CONFIG_ZLIB_PATH=%{_libdir}/libz.so > can cause problems. fixed, drop it as it's not needed in specfile. new specfille and srpm uploaded. specfile: https://than.fedorapeople.org/f24/genwqe.spec srpm: https://than.fedorapeople.org/f24/genwqe-tools-4.0.17-1.fc24.src.rpm
Karsten, could you please take a look at the new specfile and srpm? the above issues are fixed. Thanks,
uploaded new specfile and srpm for review: specfile: https://than.fedorapeople.org/f24/genwqe-tools.spec srpm: https://than.fedorapeople.org/f24/genwqe-tools-4.0.17-1.fc24.src.rpm
few more notes - Requires: zlib - should not be necessary, rpm should resolve the library dependencies - make, mkdir, install should move from the macro style, using macros doesn't bring anything - remove %defattr(), they are set by rpmbuild itself - a new -static subpackage should contain the static library - do not strip binaries - man pages should be packages as foo.1* instead of explicit foo.1.gz
(In reply to Dan Horák from comment #19) > few more notes > - Requires: zlib - should not be necessary, rpm should resolve the library > dependencies > - make, mkdir, install should move from the macro style, using macros > doesn't bring anything > - remove %defattr(), they are set by rpmbuild itself > - a new -static subpackage should contain the static library > - do not strip binaries > - man pages should be packages as foo.1* instead of explicit foo.1.gz it's fixed and new specfile/srpm are uploaded. Could you please check again? thanks specfile: https://than.fedorapeople.org/f25/genwqe-tools.spec srpm: https://than.fedorapeople.org/f25/genwqe-tools-4.0.17-1.fc25.src.rpm
any update after last spec/srpm changes of comment #20 ?
------- Comment From hannsj_uhl.com 2016-11-24 08:42 EDT------- Hello Red Hat, ... with Fedora 25 now generally available is there any outlook whether the package from this bugzilla will be included in Fedora 26 ...? Thanks for your support.
genwqe-tools.src:77: W: mixed-use-of-spaces-and-tabs (spaces: line 24, tab: line >77) In the genwqe-tools package, the dir /usr/lib64/genwqe is not owned by the package. Also comment #19 suggested the binaries not to be stripped.
Oh, two additional comments: MUST: Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun. MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name}%{?_isa} = %{version}-%{release}
(In reply to Rafael Fonseca from comment #24) > Oh, two additional comments: > > MUST: Every binary RPM package (or subpackage) which stores shared library > files (not just symlinks) in any of the dynamic linker's default paths, must > call ldconfig in %post and %postun. > > MUST: In the vast majority of cases, devel packages must require the base > package using a fully versioned dependency: Requires: %{name}%{?_isa} = > %{version}-%{release} Rafael, i fixed all reported issues and did some cleanup. The new srpm and specfile were uploaded. Please review it again, thanks! specfile: https://than.fedorapeople.org/f25/genwqe-tools.spec srpm: https://than.fedorapeople.org/f25/genwqe-tools-4.0.17-1.fc25.src.rpm
I guess something went wrong with the variable expansion during compilation: $ /usr/bin/zlib_mt_perf software.c:560: Error: %{_libdir}/libz.so: cannot open shared object file: No such file or directory Error: Can't open file thread ; TID ; err ; #defl ; bytes ; time msec ; throughput MiB/sec ; checksum ; in/out KiB 1 ; all ; ; 0 ; 0 ; 0 ; 0.000 ; 00000000 ; 128/128 Error: Thread failed The same thing happens for the binaries genwqe_gunzip and genwqe_gzip. Another issue is that the -zlib-devel package does not require the -zlib package. That means it's possible to install only the devel package, which in turn results on a broken symlink to libzADC.so.4.0.17. Finally, the binaries are still being stripped and Dan's recommendation is that they should not. P.S: I don't know if it matters, but there seems to be a stray '/' at the beginning of line 132: /%{_unitdir}/genwqe_maint.service
(In reply to Rafael Fonseca from comment #26) > I guess something went wrong with the variable expansion during compilation: > > $ /usr/bin/zlib_mt_perf > software.c:560: Error: %{_libdir}/libz.so: cannot open shared object file: > No such file or directory > Error: Can't open file > thread ; TID ; err ; #defl ; bytes ; time msec ; throughput > MiB/sec ; checksum ; in/out KiB > 1 ; all ; ; 0 ; 0 ; 0 ; 0.000 > ; 00000000 ; 128/128 > Error: Thread failed > > The same thing happens for the binaries genwqe_gunzip and genwqe_gzip. > > Another issue is that the -zlib-devel package does not require the -zlib > package. That means it's possible to install only the devel package, which > in turn results on a broken symlink to libzADC.so.4.0.17. > i'm looking at this > Finally, the binaries are still being stripped and Dan's recommendation is > that they should not. > i checked the "make install" process, no binaries are stripped. How have you check it? rpmlin? > P.S: I don't know if it matters, but there seems to be a stray '/' at the > beginning of line 132: > /%{_unitdir}/genwqe_maint.service '/' should be removed. it will be fixed in version
i also checked the binaries they are eu-strip. And it's expected, not a bug.
all reported issues are fixed. The new srpm and specfile were uploaded. Please review it again, thanks! specfile: https://than.fedorapeople.org/f25/genwqe-tools.spec srpm: https://than.fedorapeople.org/f25/genwqe-tools-4.0.17-1.fc25.src.rpm
Than, according to the guidelines [1], "The BuildRoot: tag and %clean section SHOULD NOT be used." Another thing that rpmlint is complaining about is: $: rpmlint -i genwqe-vpd-4.0.17-1.fc24.x86_64.rpm genwqe-vpd.x86_64: W: non-conffile-in-etc /etc/genwqe_vpd.csv A non-executable file in your package is being installed in /etc, but is not a configuration file. All non-executable files in /etc should be configuration files. Mark the file as %config in the spec file. [1] https://fedoraproject.org/wiki/Packaging:Guidelines
All issues were fixed. review+
closing, built in s390 koji as https://s390.koji.fedoraproject.org/koji/buildinfo?buildID=474635