Spec URL: https://rathann.fedorapeople.org/review/binaryen/binaryen.spec SRPM URL: https://rathann.fedorapeople.org/review/binaryen/binaryen-95-1.fc32.src.rpm Description: Binaryen is a compiler and toolchain infrastructure library for WebAssembly, written in C++. It aims to make compiling to WebAssembly easy, fast, and effective: * Easy: Binaryen has a simple C API in a single header, and can also be used from JavaScript. It accepts input in WebAssembly-like form but also accepts a general control flow graph for compilers that prefer that. * Fast: Binaryen's internal IR uses compact data structures and is designed for completely parallel codegen and optimization, using all available CPU cores. Binaryen's IR also compiles down to WebAssembly extremely easily and quickly because it is essentially a subset of WebAssembly. * Effective: Binaryen's optimizer has many passes that can improve code very significantly (e.g. local coloring to coalesce local variables; dead code elimination; precomputing expressions when possible at compile time; etc.). These optimizations aim to make Binaryen powerful enough to be used as a compiler backend by itself. One specific area of focus is on WebAssembly-specific optimizations (that general-purpose compilers might not do), which you can think of as wasm minification , similar to minification for JavaScript, CSS, etc., all of which are language-specific (an example of such an optimization is block return value generation in SimplifyLocals). Fedora Account System Username: rathann
Scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=47760545
Package builds cleanly in a Fedora 33/Rawhide x86_64 local mock environment, but fails via `fedora-review` (possibly related to recent annobin issues). However, it fails in COPR for Fedora 31 and 32: https://copr.fedorainfracloud.org/coprs/andymenderunix/binaryen/build/1575944/ and in Koji for Fedora 32: https://koji.fedoraproject.org/koji/taskinfo?taskID=47867411 Issues are related to the build dir hierarchy. > Summary: Compiler and toolchain infrastructure library for WebAssembly > Name: binaryen > Version: 95 > Release: 1%{?dist} > URL: https://github.com/WebAssembly/binaryen > Source0: %{url}/archive/version_%{version}/%{name}-version_%{version}.tar.gz > # https://github.com/WebAssembly/binaryen/issues/2970 > Patch0: %{name}-95-node-warn.patch > License: ASL 2.0 > # tests fail on big-endian > # https://github.com/WebAssembly/binaryen/issues/2983 > ExcludeArch: ppc64 s390x > BuildRequires: cmake3 > BuildRequires: gcc-c++ > %if %{with check} > BuildRequires: nodejs > %endif - Could you fix the alignment in these blocks? There should be spaces between the tags and the values. - I would add "gcc" as a BuildRequires as well. > %{_includedir}/binaryen-c.h > %{_libdir}/%{name}/libbinaryen.so The header and unversioned SO should probably live in a separate -devel package. Not 100% sure in this case. The review matrix (some items are missing due to issues with building): Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - Package installs properly. Note: Installation errors (see attachment) See: https://docs.fedoraproject.org/en-US/packaging-guidelines/ ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [?]: 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 Review: Problems in f31 and f32 [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]: 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]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated", "Apache License 2.0", "*No copyright* Apache License 2.0", "Unicode strict", "Public domain", "Apache License 2.0 GNU General Public License (v2)". 1696 files have unknown license. Detailed output of licensecheck in [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. [!]: 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. [?]: 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. [ ]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Package is not known to require an ExcludeArch tag. Review: ExcludeArch included and justified. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 153600 bytes in 5 files. [x]: Package complies to the Packaging Guidelines [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 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]: 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). [?]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. [-]: 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. [x]: Package should compile and build into binary rpms on all supported architectures. Review: ExcludeArch defined and justified. [x]: %check is present and all tests pass. [?]: Packages should try to preserve timestamps of original installed files. Review: check whether bare %cmake_install preserves timestamps. [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]: Fully versioned dependency in subpackages if applicable. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [!]: Rpmlint is run on all installed packages. Note: Mock build failed See: https://docs.fedoraproject.org/en-US/packaging- guidelines/#_use_rpmlint [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. Installation errors ------------------- INFO: mock.py version 2.4 starting (python version = 3.8.3)... Start: init plugins INFO: selinux enabled Finish: init plugins INFO: Signal handler active Start: run Start: chroot init INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin Mock Version: 2.4 INFO: Mock Version: 2.4 Finish: chroot init INFO: installing package(s): /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.x86_64.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.i686.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.aarch64.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.armv7hl.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.ppc64le.rpm ERROR: Command failed: # /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 33 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk install /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.x86_64.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.i686.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.aarch64.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.armv7hl.rpm /home/amender/rpmbuild/SPECS/binaryen/binaryen-debuginfo-95-1.fc33.ppc64le.rpm --setopt=tsflags=nocontexts Rpmlint ------- Checking: binaryen-95-1.fc33.src.rpm binaryen.src: W: spelling-error Summary(en_US) toolchain -> tool chain, tool-chain, touchline binaryen.src: W: spelling-error %description -l en_US toolchain -> tool chain, tool-chain, touchline binaryen.src: W: spelling-error %description -l en_US codegen -> code gen, code-gen, encode binaryen.src: W: spelling-error %description -l en_US precomputing -> recomputing, p recomputing, computing binaryen.src: W: spelling-error %description -l en_US wasm -> was, swam, warm binaryen.src: W: spelling-error %description -l en_US minification -> magnification, indemnification, mummification binaryen.src: W: invalid-url BugURL: https://bugz.fedoraproject.org/binaryen HTTP Error 503: Service Temporarily Unavailable 1 packages and 0 specfiles checked; 0 errors, 7 warnings. Source checksums ---------------- https://github.com/WebAssembly/binaryen/archive/version_95/binaryen-version_95.tar.gz : CHECKSUM(SHA256) this package : d0fc0f7b5ec147a886aea7dc40a2fff7a675e970c8fc38768e1908458b97aaab CHECKSUM(SHA256) upstream package : d0fc0f7b5ec147a886aea7dc40a2fff7a675e970c8fc38768e1908458b97aaab Requires -------- Provides --------
(In reply to Andy Mender from comment #2) > Package builds cleanly in a Fedora 33/Rawhide x86_64 local mock environment, > but fails via `fedora-review` (possibly related to recent annobin issues). > However, it fails in COPR for Fedora 31 and 32: > https://copr.fedorainfracloud.org/coprs/andymenderunix/binaryen/build/ > 1575944/ > and in Koji for Fedora 32: > https://koji.fedoraproject.org/koji/taskinfo?taskID=47867411 > Issues are related to the build dir hierarchy. I'll fix any build issues on 32 and older in the respective branches. > > Summary: Compiler and toolchain infrastructure library for WebAssembly > > Name: binaryen > > Version: 95 > > Release: 1%{?dist} > > URL: https://github.com/WebAssembly/binaryen > > Source0: %{url}/archive/version_%{version}/%{name}-version_%{version}.tar.gz > > # https://github.com/WebAssembly/binaryen/issues/2970 > > Patch0: %{name}-95-node-warn.patch > > License: ASL 2.0 > > # tests fail on big-endian > > # https://github.com/WebAssembly/binaryen/issues/2983 > > ExcludeArch: ppc64 s390x > > BuildRequires: cmake3 > > BuildRequires: gcc-c++ > > %if %{with check} > > BuildRequires: nodejs > > %endif > > - Could you fix the alignment in these blocks? There should be spaces > between the tags and the values. There are spaces after each semi-colon. I'm not sure what needs fixing here. > - I would add "gcc" as a BuildRequires as well. gcc-c++ depends on gcc. > > %{_includedir}/binaryen-c.h > > %{_libdir}/%{name}/libbinaryen.so > > The header and unversioned SO should probably live in a separate -devel > package. Not 100% sure in this case. This is a compiler and the unversioned SO is an internal shared library, so it doesn't make sense to split it out as it's not usable on its own (unlike libgcc). Arguably, I should filter out that SO from both Provides: and Requires:. > The review matrix (some items are missing due to issues with building): > > Package Review > ============== > > Legend: > [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated > [ ] = Manual review needed > > > Issues: > ======= > - Package installs properly. > Note: Installation errors (see attachment) > See: https://docs.fedoraproject.org/en-US/packaging-guidelines/ The x86_64 RPM from the scratch build I pasted above installs fine. Why are you trying to install binary RPMs for all arches at the same time on a single machine? I cannot work. [...] > ===== 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). > [?]: Package functions as described. It actually doesn't. See below. [...] > > ===== EXTRA items ===== > > Generic: > [!]: Rpmlint is run on all installed packages. I ran rpmlint manually and it caught binaries having the wrong RPATH. I'll fix that. Thanks for the review!
Spec URL: https://rathann.fedorapeople.org/review/binaryen/binaryen.spec SRPM URL: https://rathann.fedorapeople.org/review/binaryen/binaryen-95-2.fc33.src.rpm - use built binaries in tests - fix (r)paths to internal shared library - filter internal shared library from Provides/Requires
Spec URL: https://rathann.fedorapeople.org/review/binaryen/binaryen.spec SRPM URL: https://rathann.fedorapeople.org/review/binaryen/binaryen-95-3.fc33.src.rpm - fix build on F31/F32
> There are spaces after each semi-colon. I'm not sure what needs fixing here. I meant splitting the initial tags into blocks and tabulating the visually into columns (with spaces) like this: Name: epic5 Version: 2.1.2 Release: 1%{?dist} Summary: Enhanced Programmable ircII Client # contrib/ircman.c is GPL licensed License: BSD and GPL URL: http://www.epicsol.org Source0: http://ftp.epicsol.org/pub/epic/EPIC5-PRODUCTION/%{name}-%{version}.tar.xz BuildRequires: gcc BuildRequires: gdbm-devel BuildRequires: pkgconfig(ncurses) BuildRequires: pkgconfig(openssl) I don't know whether it's mandatory, but it aides readability :). > This is a compiler and the unversioned SO is an internal shared library, so it doesn't make sense to split it out as it's not usable on its own (unlike libgcc). Thanks for clarifying this. I am new to packaging for Fedora and especially to packaging compilers. > - use built binaries in tests > - fix (r)paths to internal shared library > - filter internal shared library from Provides/Requires > - fix build on F31/F32 Nice! I re-ran `fedora-review` and it picked up a couple of new items: [ ]: Package requires other packages for directories it uses. Note: No known owner of /usr/lib64/binaryen [ ]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib64/binaryen "%{_libdir}/%{name}/" should be listed in the %files section perhaps? Rpmlint ------- Checking: binaryen-95-3.fc33.x86_64.rpm binaryen-debuginfo-95-3.fc33.x86_64.rpm binaryen-debugsource-95-3.fc33.x86_64.rpm binaryen-95-3.fc33.src.rpm [...] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-as ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-ctor-eval ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-dis ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-emscripten-finalize ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-metadce ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-opt ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-reduce ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-shell ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm2js ['$ORIGIN/../lib64/binaryen'] binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/lib64/binaryen/libbinaryen.so ['$ORIGIN/../lib64/binaryen'] Just double-checking - these come from your RPATH fixes, correct?
(In reply to Andy Mender from comment #6) > > There are spaces after each semi-colon. I'm not sure what needs fixing here. > > I meant splitting the initial tags into blocks and tabulating the visually > into columns (with spaces) like this: > Name: epic5 > Version: 2.1.2 Got it. > I don't know whether it's mandatory, but it aides readability :). It's not mandatory, but I can reformat if you think it makes a difference. > I re-ran `fedora-review` and it picked up a couple of new items: > [ ]: Package requires other packages for directories it uses. > Note: No known owner of /usr/lib64/binaryen > [ ]: Package must own all directories that it creates. > Note: Directories without known owners: /usr/lib64/binaryen > > "%{_libdir}/%{name}/" should be listed in the %files section perhaps? Good catch, thanks. I'll fix this. > Rpmlint > ------- > Checking: binaryen-95-3.fc33.x86_64.rpm > binaryen-debuginfo-95-3.fc33.x86_64.rpm > binaryen-debugsource-95-3.fc33.x86_64.rpm > binaryen-95-3.fc33.src.rpm > [...] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-as > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-ctor-eval > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-dis > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath > /usr/bin/wasm-emscripten-finalize ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-metadce > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-opt > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-reduce > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm-shell > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/wasm2js > ['$ORIGIN/../lib64/binaryen'] > binaryen.x86_64: E: binary-or-shlib-defines-rpath > /usr/lib64/binaryen/libbinaryen.so ['$ORIGIN/../lib64/binaryen'] > > Just double-checking - these come from your RPATH fixes, correct? Indeed they do. This is https://docs.fedoraproject.org/en-US/packaging-guidelines/#_rpath_for_internal_libraries . However, I made the path relative to $ORIGIN (== where the binary is physically present in the file system) so that tests run correctly during %check with the binaries in %{buildroot}.
> It's not mandatory, but I can reformat if you think it makes a difference. It would improve maintainability. Appreciated! > Indeed they do. This is https://docs.fedoraproject.org/en-US/packaging-guidelines/#_rpath_for_internal_libraries . However, I made the path relative to $ORIGIN (== where the binary is physically present in the file system) so that tests run correctly during %check with the binaries in %{buildroot}. Thanks for the link. I agree with your approach. Other than that, the package looks good already.
(In reply to Andy Mender from comment #8) > Other than that, the package looks good already. Is there anything else apart from the visual formatting? Do you want me to post another revision with just the formatting changes?
No, sorry, forgot to approve!
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/binaryen
FEDORA-2020-c6a1f4da01 has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2020-c6a1f4da01
FEDORA-2020-73aa80896b has been submitted as an update to Fedora 32. https://bodhi.fedoraproject.org/updates/FEDORA-2020-73aa80896b
FEDORA-2020-c6a1f4da01 has been pushed to the Fedora 31 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2020-c6a1f4da01 \*` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-c6a1f4da01 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2020-73aa80896b has been pushed to the Fedora 32 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2020-73aa80896b \*` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-73aa80896b See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2020-c6a1f4da01 has been pushed to the Fedora 31 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2020-73aa80896b has been pushed to the Fedora 32 stable repository. If problem still persists, please make note of it in this bug report.