Bug 1887621 - Review Request: folly - An open-source C++ library developed and used at Facebook
Summary: Review Request: folly - An open-source C++ library developed and used at Face...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Antonio T. sagitter
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1891639 1891640 1892101
TreeView+ depends on / blocked
 
Reported: 2020-10-13 02:03 UTC by Michel Lind
Modified: 2020-11-14 01:23 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2020-11-14 01:11:20 UTC
Type: ---
Embargoed:
trpost: fedora-review+


Attachments (Terms of Use)

Description Michel Lind 2020-10-13 02:03:14 UTC
Spec URL: https://salimma.fedorapeople.org/specs/libdevel/folly.spec
SRPM URL: https://salimma.fedorapeople.org/specs/libdevel/folly-2020.10.12.00-1.fc33.src.rpm
Description:
Folly (acronymed loosely after Facebook Open Source Library) is a library of
C++14 components designed with practicality and efficiency in mind. Folly
contains a variety of core library components used extensively at Facebook. In
particular, it's often a dependency of Facebook's other open source C++ efforts
and place where those projects can share code.

It complements (as opposed to competing against) offerings such as Boost and of
course std. In fact, we embark on defining our own component only when something
we need is either not available, or does not meet the needed performance
profile. We endeavor to remove things from folly if or when std or Boost
obsoletes them.

Performance concerns permeate much of Folly, sometimes leading to designs that
are more idiosyncratic than they would otherwise be (see e.g. PackedSyncPtr.h,
SmallLocks.h). Good performance at large scale is a unifying theme in all of
Folly.

Fedora Account System Username: salimma

Comment 1 Antonio T. sagitter 2020-10-14 21:12:23 UTC
Hi Michel.

Please, take care of SeqAn:
https://bugzilla.redhat.com/show_bug.cgi?id=1810293

Comment 2 Antonio T. sagitter 2020-10-15 08:21:06 UTC
- Please, fix the Changelog.

- Why do you leave a 'folly.rpm' just for the License file?

- CXXFLAGS should be automatically set by %cmake

- Why don't build shared libs instead of static ones?

- Fix Version inside 'libfolly.pc' file.

- Package successfully does not compile and build into binary rpms on at least
     one supported primary architecture

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed



===== 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]: 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.

Generic:
[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: "Unknown or generated", "Apache License 2.0", "Expat License",
     "GNU General Public License (v2)", "zlib/libpng license". 202 files
     have unknown license. Detailed output of licensecheck in
     /home/sagitter/1887621-folly/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.
[ ]: Requires correct, justified where necessary.
[x]: 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 20480 bytes in 3 files.
[x]: Package complies to the Packaging Guidelines
[!]: 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]: 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]: Static libraries in -static or -devel subpackage, providing -devel if
     present.
     Note: Package has .a files: folly-devel.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[-]: 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).
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: 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.
[?]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[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]: 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: folly-2020.10.12.00-1.fc34.x86_64.rpm
          folly-devel-2020.10.12.00-1.fc34.x86_64.rpm
          folly-2020.10.12.00-1.fc34.src.rpm
folly.x86_64: W: spelling-error %description -l en_US acronymed -> acronym ed, acronym-ed, acronym
folly.x86_64: W: no-version-in-last-changelog
folly.x86_64: E: no-binary
folly.x86_64: W: no-documentation
folly-devel.x86_64: W: no-version-in-last-changelog
folly.src: W: spelling-error %description -l en_US acronymed -> acronym ed, acronym-ed, acronym
folly.src: W: no-version-in-last-changelog
3 packages and 0 specfiles checked; 1 errors, 6 warnings.




Rpmlint (installed packages)
----------------------------
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly-devel.x86_64: W: no-version-in-last-changelog
folly-devel.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly.x86_64: W: spelling-error %description -l en_US acronymed -> acronym ed, acronym-ed, acronym
folly.x86_64: W: no-version-in-last-changelog
folly.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
folly.x86_64: E: no-binary
folly.x86_64: W: no-documentation
2 packages and 0 specfiles checked; 1 errors, 6 warnings.



Source checksums
----------------
https://github.com/facebook/folly/releases/download/v2020.10.12.00/folly-v2020.10.12.00.tar.gz :
  CHECKSUM(SHA256) this package     : 0fd5642bf6a7855c58fcb57dcc9f3af27e84bcb6b0564e9644de3acc254efc76
  CHECKSUM(SHA256) upstream package : 0fd5642bf6a7855c58fcb57dcc9f3af27e84bcb6b0564e9644de3acc254efc76


Requires
--------
folly (rpmlib, GLIBC filtered):

folly-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    cmake-filesystem
    cmake-filesystem(x86-64)
    folly(x86-64)



Provides
--------
folly:
    folly
    folly(x86-64)

folly-devel:
    cmake(folly)
    folly-devel
    folly-devel(x86-64)
    folly-static
    pkgconfig(libfolly)



Generated by fedora-review 0.7.5 (5fa5b7e) last change: 2020-02-16
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1887621
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, C/C++, Generic
Disabled plugins: Perl, Haskell, fonts, Python, SugarActivity, PHP, Java, Ocaml, R
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 3 Antonio T. sagitter 2020-10-15 08:23:40 UTC
Build failed on Rawhide:

https://koji.fedoraproject.org/koji/taskinfo?taskID=53501450

- Package does not compile and build into binary rpms on at least one supported primary architecture

Comment 4 Davide Cavalca 2020-10-15 16:00:53 UTC
Thanks! About the build failures:
- arm7hl: No matching package to install: 'liburing-devel'
- s390x: multiple build failures, including some endianness issues: https://kojipkgs.fedoraproject.org//work/tasks/1486/53501486/build.log
- i686: template-related build failure: https://kojipkgs.fedoraproject.org//work/tasks/1482/53501482/build.log
I think we may want to exclude these, at least for now -- especially s390x looks like it would require some fairly significant upstream work to properly support.

About the static libraries: folly doesn't have a stable ABI, by design, so it doesn't seem useful to build shared libraries for it

Comment 5 Davide Cavalca 2020-10-19 18:20:16 UTC
https://github.com/facebook/folly/commit/81e350e10b855e5ec48430677bc82d8f7e84015b should fix the i686 build failure

Comment 6 Neal Gompa 2020-10-19 20:27:45 UTC
(In reply to Davide Cavalca from comment #4)
> 
> About the static libraries: folly doesn't have a stable ABI, by design, so
> it doesn't seem useful to build shared libraries for it

There are a couple of issues with not producing shared libraries:

* debuginfo subpackages aren't really possible to generate properly with only static libraries
* it makes it difficult to track things that need to be rebuilt if folly was updated

A suggestion for shared libraries support: you can do something like having the soname change with version bumps to match ABI policy

Comment 7 Davide Cavalca 2020-10-19 22:56:02 UTC
https://src.fedoraproject.org/rpms/liburing/pull-request/1 should take care of liburing-devel on armv7hl

Comment 8 Michel Lind 2020-10-20 18:54:02 UTC
(In reply to Neal Gompa from comment #6)
> (In reply to Davide Cavalca from comment #4)
> > 
> > About the static libraries: folly doesn't have a stable ABI, by design, so
> > it doesn't seem useful to build shared libraries for it
> 
> There are a couple of issues with not producing shared libraries:
> 
> * debuginfo subpackages aren't really possible to generate properly with
> only static libraries

yeah, debuginfo is disabled for now for folly. Is the concern that packages built against folly also can't have proper debuginfo?

> * it makes it difficult to track things that need to be rebuilt if folly was
> updated

Per policy they're supposed to BR folly-static -- so just searching for those and rebuilding should be fine, right?

> 
> A suggestion for shared libraries support: you can do something like having
> the soname change with version bumps to match ABI policy

I suppose we can rename the *.so files manually to *.so.%{flattenedversion} - though we will have to patch the build system to allow building both static and dynamic libs in one pass.

(In reply to Antonio T. sagitter from comment #2)
> - Why do you leave a 'folly.rpm' just for the License file?
> 
Hmm, yes. I was basing this on boost's spec where the license goes into the main package, but without shared libs we might as well only have a -devel/static

> - CXXFLAGS should be automatically set by %cmake
> 
I needed to add -fPIC, which is not in the default CXXFLAGS

> - Fix Version inside 'libfolly.pc' file.
> 
ack

Comment 9 Neal Gompa 2020-10-20 22:15:33 UTC
(In reply to Michel Alexandre Salim from comment #8)
> (In reply to Neal Gompa from comment #6)
> > (In reply to Davide Cavalca from comment #4)
> > > 
> > > About the static libraries: folly doesn't have a stable ABI, by design, so
> > > it doesn't seem useful to build shared libraries for it
> > 
> > There are a couple of issues with not producing shared libraries:
> > 
> > * debuginfo subpackages aren't really possible to generate properly with
> > only static libraries
> 
> yeah, debuginfo is disabled for now for folly. Is the concern that packages
> built against folly also can't have proper debuginfo?
> 

It is potentially problematic, yeah.

> > * it makes it difficult to track things that need to be rebuilt if folly was
> > updated
> 
> Per policy they're supposed to BR folly-static -- so just searching for
> those and rebuilding should be fine, right?
> 

In theory, yes. I don't know if anyone has built any automation for that, though. Most of our automation is built around detecting when the runtime dependency breaks to detect a need for rebuilds.

> > 
> > A suggestion for shared libraries support: you can do something like having
> > the soname change with version bumps to match ABI policy
> 
> I suppose we can rename the *.so files manually to *.so.%{flattenedversion}
> - though we will have to patch the build system to allow building both
> static and dynamic libs in one pass.
> 

You'd want to adjust the build script to set the soversion to match version. Otherwise the generated dependency would be broken or otherwise wrong.

You can see an example of how this was done with Google Test (which has similar issues): https://src.fedoraproject.org/rpms/gtest/blob/master/f/gtest-1.8.1-libversion.patch

Comment 10 Davide Cavalca 2020-10-20 23:02:11 UTC
(In reply to Neal Gompa from comment #9)
> You'd want to adjust the build script to set the soversion to match version.
> Otherwise the generated dependency would be broken or otherwise wrong.
> 
> You can see an example of how this was done with Google Test (which has
> similar issues):
> https://src.fedoraproject.org/rpms/gtest/blob/master/f/gtest-1.8.1-
> libversion.patch

Interesting, it looks like that's overriding PROPERTIES VERSION. Thoughts on doing that vs using OUTPUT_NAME ? From reading https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html and https://www.gnu.org/software/libtool/manual/html_node/Release-numbers.html#Release-numbers it sounds like for the case when the ABI changes on every release one should use libtool -release, and apparently its equivalent in cmake land is overriding OUTPUT_NAME to include the version.

Comment 11 Neal Gompa 2020-10-21 02:15:45 UTC
(In reply to Davide Cavalca from comment #10)
> (In reply to Neal Gompa from comment #9)
> > You'd want to adjust the build script to set the soversion to match version.
> > Otherwise the generated dependency would be broken or otherwise wrong.
> > 
> > You can see an example of how this was done with Google Test (which has
> > similar issues):
> > https://src.fedoraproject.org/rpms/gtest/blob/master/f/gtest-1.8.1-
> > libversion.patch
> 
> Interesting, it looks like that's overriding PROPERTIES VERSION. Thoughts on
> doing that vs using OUTPUT_NAME ? From reading
> https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.
> html and
> https://www.gnu.org/software/libtool/manual/html_node/Release-numbers.
> html#Release-numbers it sounds like for the case when the ABI changes on
> every release one should use libtool -release, and apparently its equivalent
> in cmake land is overriding OUTPUT_NAME to include the version.

Main value of using PROPERTIES VERSION over OUTPUT_NAME is that CMake handles structuring the filename correctly for the target OS for you (e.g. <name>-<version>.dll for Windows and Midipix, lib<name>.<version>.dylib for macOS, lib<name>.so.<version> for Linux/BSD, etc.). My understanding is that OUTPUT_NAME turns all that logic off.

Comment 12 Davide Cavalca 2020-10-21 21:27:05 UTC
(In reply to Neal Gompa from comment #11)
> Main value of using PROPERTIES VERSION over OUTPUT_NAME is that CMake
> handles structuring the filename correctly for the target OS for you (e.g.
> <name>-<version>.dll for Windows and Midipix, lib<name>.<version>.dylib for
> macOS, lib<name>.so.<version> for Linux/BSD, etc.). My understanding is that
> OUTPUT_NAME turns all that logic off.

Thanks, fixed this upstream in https://github.com/facebook/folly/commit/f817aff73bea2ce956ec2212c34d12cd206f31cf

(In reply to Michel Alexandre Salim from comment #8)
> I needed to add -fPIC, which is not in the default CXXFLAGS

This is also fixed upstream in https://github.com/facebook/folly/commit/3b1bdb98c3e2ca1e18db4a74c2674f22a7d05b48

Comment 13 Michel Lind 2020-10-22 05:06:17 UTC
Spec URL: https://salimma.fedorapeople.org/specs/libdevel/folly.spec
SRPM URL: https://salimma.fedorapeople.org/specs/libdevel/folly-2020.10.12.00-3.fc33.src.rpm

Koji scratch build (Rawhide): https://koji.fedoraproject.org/koji/taskinfo?taskID=53951900
Local mock build (Fedora 33): https://salimma.fedorapeople.org/specs/libdevel/folly-2020.10.19.00-3.fc33-logs/

This has both shared libraries (in folly and folly-devel) and static libraries (in folly-static). Davide's fixes are added as patches and I have another fix that's being upstreamed to fix the pkgconfig file to have the right version.

Tests and Python bindings are currently disabled as they don't work yet, will work on fixing them later.

Comment 14 Antonio T. sagitter 2020-10-22 11:08:43 UTC
(In reply to Michel Alexandre Salim from comment #13)
> Spec URL: https://salimma.fedorapeople.org/specs/libdevel/folly.spec
> SRPM URL:
> https://salimma.fedorapeople.org/specs/libdevel/folly-2020.10.12.00-3.fc33.
> src.rpm
> 

The link to src-rpm is wrong.

Comment 15 Davide Cavalca 2020-10-22 16:08:53 UTC
(In reply to Antonio T. sagitter from comment #14)
> The link to src-rpm is wrong.

The right one should be https://salimma.fedorapeople.org/specs/libdevel/folly-2020.10.19.00-3.fc33.src.rpm

Comment 17 Michel Lind 2020-10-23 03:01:44 UTC
Spec URL: https://salimma.fedorapeople.org/specs/libdevel/folly.spec
SRPM URL: https://salimma.fedorapeople.org/specs/libdevel/folly-2020.10.19.00-4.fc33.src.rpm

    - Put static cmake support files in its own directory
    - Add most folly BRs as folly-devel requirements, as dependent packages will need them

Comment 18 Antonio T. sagitter 2020-10-24 12:27:19 UTC
- folly.x86_64: W: crypto-policy-non-compliance-openssl /usr/lib64/libfolly.so.2020.10.19.00 SSL_CTX_set_cipher_list

$ rpmlint -I crypto-policy-non-compliance-openssl
crypto-policy-non-compliance-openssl:
This application package calls a function to explicitly set crypto ciphers for
SSL/TLS. That may cause the application not to use the system-wide set
cryptographic policy and should be modified in accordance to:
https://fedoraproject.org/wiki/Packaging:CryptoPolicies

See https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/

- No tests ran


Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed



===== 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]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

Generic:
[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: "Unknown or generated", "Apache License 2.0", "Expat License",
     "GNU General Public License (v2)", "zlib/libpng license". 214 files
     have unknown license. Detailed output of licensecheck in
     /home/sagitter/1887621-folly/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.
[x]: 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 20480 bytes in 3 files.
[x]: 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]: 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]: Static libraries in -static or -devel subpackage, providing -devel if
     present.
     Note: Package has .a files: folly-static.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[-]: 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 folly-
     static
[?]: 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.
[x]: 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.
[?]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[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 debuginfo package(s).
     Note: No rpmlint messages.
[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: folly-2020.10.19.00-4.fc34.x86_64.rpm
          folly-devel-2020.10.19.00-4.fc34.x86_64.rpm
          folly-static-2020.10.19.00-4.fc34.x86_64.rpm
          folly-debuginfo-2020.10.19.00-4.fc34.x86_64.rpm
          folly-debugsource-2020.10.19.00-4.fc34.x86_64.rpm
          folly-2020.10.19.00-4.fc34.src.rpm
folly.x86_64: W: spelling-error %description -l en_US acronymed -> acronym ed, acronym-ed, acronym
folly.x86_64: W: crypto-policy-non-compliance-openssl /usr/lib64/libfolly.so.2020.10.19.00 SSL_CTX_set_cipher_list
folly.x86_64: W: no-documentation
folly-static.x86_64: W: no-documentation
folly.src: W: spelling-error %description -l en_US acronymed -> acronym ed, acronym-ed, acronym
6 packages and 0 specfiles checked; 0 errors, 5 warnings.




Rpmlint (debuginfo)
-------------------
Checking: folly-debuginfo-2020.10.19.00-4.fc34.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly-devel.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly-debugsource.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly-static.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
folly-static.x86_64: W: no-documentation
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly-debuginfo.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
warning: Found bdb Packages database while attempting sqlite backend: using bdb backend.
folly.x86_64: W: spelling-error %description -l en_US acronymed -> acronym ed, acronym-ed, acronym
folly.x86_64: W: invalid-url URL: https://github.com/facebook/folly <urlopen error [Errno -3] Temporary failure in name resolution>
folly.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 9 warnings.


Source checksums
----------------
https://github.com/facebook/folly/releases/download/v2020.10.19.00/folly-v2020.10.19.00.tar.gz :
  CHECKSUM(SHA256) this package     : 2b0752ce8e1aa032223329675297683452b345313968f5f61d1466b768c97ba3
  CHECKSUM(SHA256) upstream package : 2b0752ce8e1aa032223329675297683452b345313968f5f61d1466b768c97ba3


Requires
--------
folly (rpmlib, GLIBC filtered):
    ld-linux-x86-64.so.2()(64bit)
    libaio.so.1()(64bit)
    libaio.so.1(LIBAIO_0.1)(64bit)
    libaio.so.1(LIBAIO_0.4)(64bit)
    libboost_context.so.1.73.0()(64bit)
    libboost_filesystem.so.1.73.0()(64bit)
    libboost_program_options.so.1.73.0()(64bit)
    libboost_regex.so.1.73.0()(64bit)
    libbz2.so.1()(64bit)
    libc.so.6()(64bit)
    libcrypto.so.1.1()(64bit)
    libcrypto.so.1.1(OPENSSL_1_1_0)(64bit)
    libdl.so.2()(64bit)
    libdouble-conversion.so.3()(64bit)
    libevent-2.1.so.7()(64bit)
    libfolly.so.2020.10.19.00()(64bit)
    libfolly_exception_tracer.so.2020.10.19.00()(64bit)
    libfolly_exception_tracer_base.so.2020.10.19.00()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libgcc_s.so.1(GCC_3.3.1)(64bit)
    libgflags.so.2.2()(64bit)
    libglog.so.0()(64bit)
    liblz4.so.1()(64bit)
    liblzma.so.5()(64bit)
    liblzma.so.5(XZ_5.0)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libsnappy.so.1()(64bit)
    libsodium.so.23()(64bit)
    libssl.so.1.1()(64bit)
    libssl.so.1.1(OPENSSL_1_1_0)(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.11)(64bit)
    libstdc++.so.6(CXXABI_1.3.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.7)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libstdc++.so.6(CXXABI_1.3.9)(64bit)
    libunwind.so.8()(64bit)
    liburing.so.1()(64bit)
    liburing.so.1(LIBURING_0.1)(64bit)
    liburing.so.1(LIBURING_0.2)(64bit)
    libz.so.1()(64bit)
    libz.so.1(ZLIB_1.2.0)(64bit)
    libzstd.so.1()(64bit)
    rtld(GNU_HASH)

folly-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    binutils-devel(x86-64)
    boost-devel(x86-64)
    bzip2-devel(x86-64)
    cmake-filesystem
    cmake-filesystem(x86-64)
    double-conversion-devel(x86-64)
    fmt-devel(x86-64)
    folly(x86-64)
    glog-devel(x86-64)
    gmock-devel(x86-64)
    libaio-devel(x86-64)
    libdwarf-devel(x86-64)
    libevent-devel(x86-64)
    libfolly.so.2020.10.19.00()(64bit)
    libfolly_exception_counter.so.2020.10.19.00()(64bit)
    libfolly_exception_tracer.so.2020.10.19.00()(64bit)
    libfolly_exception_tracer_base.so.2020.10.19.00()(64bit)
    libfolly_test_util.so.2020.10.19.00()(64bit)
    libfollybenchmark.so.2020.10.19.00()(64bit)
    libsodium-devel(x86-64)
    libunwind-devel(x86-64)
    liburing-devel(x86-64)
    libzstd-devel(x86-64)
    lz4-devel(x86-64)
    openssl-devel(x86-64)
    snappy-devel(x86-64)
    xz-devel(x86-64)
    zlib-devel(x86-64)

folly-static (rpmlib, GLIBC filtered):
    cmake-filesystem(x86-64)
    folly-devel(x86-64)

folly-debuginfo (rpmlib, GLIBC filtered):

folly-debugsource (rpmlib, GLIBC filtered):



Provides
--------
folly:
    folly
    folly(x86-64)
    libfolly.so.2020.10.19.00()(64bit)
    libfolly_exception_counter.so.2020.10.19.00()(64bit)
    libfolly_exception_tracer.so.2020.10.19.00()(64bit)
    libfolly_exception_tracer_base.so.2020.10.19.00()(64bit)
    libfolly_test_util.so.2020.10.19.00()(64bit)
    libfollybenchmark.so.2020.10.19.00()(64bit)

folly-devel:
    cmake(folly)
    folly-devel
    folly-devel(x86-64)
    pkgconfig(libfolly)

folly-static:
    cmake(folly)
    folly-static
    folly-static(x86-64)

folly-debuginfo:
    debuginfo(build-id)
    folly-debuginfo
    folly-debuginfo(x86-64)

folly-debugsource:
    folly-debugsource
    folly-debugsource(x86-64)



Generated by fedora-review 0.7.5 (5fa5b7e) last change: 2020-02-16
Command line :/usr/bin/fedora-review -m fedora-rawhide-x86_64 -b 1887621
Buildroot used: fedora-rawhide-x86_64
Active plugins: C/C++, Generic, Shell-api
Disabled plugins: Python, Perl, Ocaml, R, fonts, Haskell, PHP, Java, SugarActivity
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 19 Davide Cavalca 2020-10-24 15:42:50 UTC
(In reply to Antonio T. sagitter from comment #18)
> - folly.x86_64: W: crypto-policy-non-compliance-openssl
> /usr/lib64/libfolly.so.2020.10.19.00 SSL_CTX_set_cipher_list
> 
> $ rpmlint -I crypto-policy-non-compliance-openssl
> crypto-policy-non-compliance-openssl:
> This application package calls a function to explicitly set crypto ciphers
> for
> SSL/TLS. That may cause the application not to use the system-wide set
> cryptographic policy and should be modified in accordance to:
> https://fedoraproject.org/wiki/Packaging:CryptoPolicies
> 
> See https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/

I don't think this is applicable in this case. The code triggering this is https://github.com/facebook/folly/blob/2fa292ded20bb83383c010974bb7796b2832a84d/folly/io/async/SSLContext.cpp#L211-L217 which is just wrapping OpenSSL as part of the SSLContext interface. This is definitely relevant for applications using folly that consume this interface, but I don't think the library itself should hardcode PROFILE=SYSTEM here.

Comment 20 Davide Cavalca 2020-10-24 15:44:29 UTC
(In reply to Antonio T. sagitter from comment #18)
> folly.x86_64: W: no-documentation
> folly-static.x86_64: W: no-documentation

FYI we do have documentation (under folly/docs, see https://github.com/facebook/folly/tree/2fa292ded20bb83383c010974bb7796b2832a84d/folly/docs). We should add a BR on pandoc and build and ship this (possibly in its own subpackage).

Comment 21 Antonio T. sagitter 2020-10-24 16:24:19 UTC
> - No tests ran

Make '%check' section conditional, please.

The review is complete. Package approved.

Comment 22 Michel Lind 2020-10-26 18:09:03 UTC
(In reply to Davide Cavalca from comment #20)
> (In reply to Antonio T. sagitter from comment #18)
> > folly.x86_64: W: no-documentation
> > folly-static.x86_64: W: no-documentation
> 
> FYI we do have documentation (under folly/docs, see
> https://github.com/facebook/folly/tree/
> 2fa292ded20bb83383c010974bb7796b2832a84d/folly/docs). We should add a BR on
> pandoc and build and ship this (possibly in its own subpackage).

I missed this from our discussion, thanks for the reminder

(In reply to Antonio T. sagitter from comment #21)
> > - No tests ran
> 
> Make '%check' section conditional, please.
> 
Good point. It was not failing anyway but a bit misleading and a waste of time to invoke %ctest when we know it will be a no-op

> The review is complete. Package approved.

Thanks so much!

Comment 23 Michel Lind 2020-10-26 18:32:12 UTC
❯ fedpkg request-repo folly 1887621
https://pagure.io/releng/fedora-scm-requests/issue/30071

Comment 24 Gwyn Ciesla 2020-10-26 19:00:31 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/folly

Comment 25 Fedora Update System 2020-11-05 02:22:58 UTC
FEDORA-2020-45065fae47 has been submitted as an update to Fedora 32. https://bodhi.fedoraproject.org/updates/FEDORA-2020-45065fae47

Comment 26 Fedora Update System 2020-11-05 02:25:16 UTC
FEDORA-2020-53f08a8053 has been submitted as an update to Fedora 33. https://bodhi.fedoraproject.org/updates/FEDORA-2020-53f08a8053

Comment 27 Fedora Update System 2020-11-06 02:17:13 UTC
FEDORA-2020-45065fae47 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-45065fae47 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-45065fae47

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 28 Fedora Update System 2020-11-06 02:37:52 UTC
FEDORA-2020-53f08a8053 has been pushed to the Fedora 33 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-53f08a8053 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-53f08a8053

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 29 Fedora Update System 2020-11-14 01:11:20 UTC
FEDORA-2020-53f08a8053 has been pushed to the Fedora 33 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 30 Fedora Update System 2020-11-14 01:23:00 UTC
FEDORA-2020-45065fae47 has been pushed to the Fedora 32 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.