https://bugzilla.redhat.com/show_bug.cgi?id=2091317
Bug ID: 2091317 Summary: Review Request: libeatmydata - A LD_PRELOAD library that disables fsync() and friends, and a script to run it Product: Fedora Version: rawhide Hardware: All OS: Linux Status: NEW Component: Package Review Severity: medium Assignee: nobody@fedoraproject.org Reporter: trawets@amazon.com QA Contact: extras-qa@fedoraproject.org CC: package-review@lists.fedoraproject.org Target Milestone: --- Classification: Fedora
Spec URL: https://github.com/stewartsmith/pkg-libeatmydata/blob/01d64b6/libeatmydata.s... SRPM URL: https://download.copr.fedorainfracloud.org/results/trawets/libeatmydata/srpm... Description:
This package contains a small LD_PRELOAD library (libeatmydata) and a couple of helper utilities (eatmydata) designed to transparently disable fsync and friends (like open(O_SYNC)). This has two side-effects: making software that writes data safely to disk a lot quicker and making this software no longer crash safe.
Fedora Account System Username: trawets
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
--- Comment #1 from Stewart Smith trawets@amazon.com --- I am the upstream maintainer of this package.
This is my first package and will need a sponsor.
Successful builds: https://copr.fedorainfracloud.org/coprs/trawets/libeatmydata/build/4456284/
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
Tom "spot" Callaway spotrh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |spotrh@gmail.com Flags| |fedora-review? Assignee|nobody@fedoraproject.org |spotrh@gmail.com Status|NEW |ASSIGNED Doc Type|--- |If docs needed, set a value
--- Comment #2 from Tom "spot" Callaway spotrh@gmail.com --- *blows dust off reviewer hat* Okay, lets see if I still remember how to do this.
*** PACKAGE REVIEW ***
- Need: BuildRequires: gcc - You should not need to set defattr - You should not need to explicitly set %attr to 755 for the binary and script (doesn't the Makefile install them with 755 perms?) - You need to include a copy of the license: %license COPYING - You have an unversioned library (libeatmydata.so) in the main libeatmydata package. AND - You do not have a -devel package (that said, there don't really appear to be headers of any consequence here..) I think given the unique nature of this library, I would just recommend versioning it and having a -devel subpackage with the .so. You should not need to package up header files in -devel, but having a proper versioned library is helpful in case the way it is used ever changes.
=========================================================================================================== rpmlint session starts =========================================================================================================== rpmlint: 2.2.0 configuration: /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/licenses.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 32, packages: 5
libeatmydata-debuginfo.x86_64: W: unstripped-binary-or-object /usr/lib/debug/usr/lib64/libeatmydata.so-130-2.fc36.x86_64.debug libeatmydata.src: E: unknown-key a422e098 libeatmydata-debuginfo.x86_64: E: shared-library-without-dependency-information /usr/lib/debug/usr/lib64/libeatmydata.so-130-2.fc36.x86_64.debug libeatmydata.x86_64: E: invalid-soname /usr/lib64/libeatmydata.so libeatmydata.so eatmydata.noarch: E: explicit-lib-dependency libeatmydata libeatmydata-debuginfo.x86_64: W: dangling-relative-symlink /usr/lib/debug/.build-id/10/3dd63c971bb4c9f1600e590879ab96caf8edbd ../../../.build-id/10/3dd63c971bb4c9f1600e590879ab96caf8edbd ============================================================================ 5 packages and 0 specfiles checked; 4 errors, 2 warnings, 4 badness; has taken 0.3 s ============================================================================
* rpmlint errors are either covered at top, or safe to ignore. Warnings on the debuginfo packages are safe to ignore.
[Y] package meets naming guidelines [Y] package meets packaging guidelines [Y] license (GPLv3) OK [!] license text in %license [Y] matches source [Y] spec file legible, in am. english [Y] source matches upstream (48731cd7e612ff73fd6339378fbbff38dd3bcf6c243593b0d9773ca0051541c0) [Y] package compiles on Fedora 36 (x86_64) [!] no missing BR gcc missing [Y] no unnecessary BR [Y] no locales [Y] not relocatable [Y] owns all directories that it creates [Y] no duplicate files [!] permissions ok permissions not wrong, just unnecessarily explicit [Y] no %clean [Y] macro use consistent [Y] code, not content [Y] no need for -docs [Y] nothing in %doc affects runtime [Y] no need for .desktop file [!] missing devel package library unversioned
*****
Please fix issues noted and show me a -3 and I should be able to approve it (and sponsor you).
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
--- Comment #3 from Stewart Smith trawets@amazon.com --- Have the shared library be unversioned was a conscious choice a number of years back (OMG it's actually 9 years) as it doesn't really make any sense to version it as the use case is LD_PRELOAD rather than ever directly linking against. A major version bump would mean "We just threw out POSIX or broke kernel/userspace ABI" and minor bumps aren't visible as applications aren't linking directly with it.
libeatmydata is more like `fakeroot`, `libkeepalive`, `preeny`, and `trickle`, which are also LD_PRELOAD libraries packaged for Fedora which also do not have versioned libraries. Mind you, `libfaketime` is a packaged LD_PRELOAD library that *does* have a versioned library (just a .so.1). So I think that since (at least so far) the majority of LD_PRELOAD focused libraries packaged in Fedora have been erring on the side of having unversioned libraries, it should be okay for libeatmydata to also be this way.
I went with putting it in `libeatmydata` as a package rather than putting the .so in a devel package as it's not a library that's ever used for development, it's the Actual Thing you want to run. The `eatmydata` script just works out where `libeatmydata.so` is in order to LD_PRELOAD it. There seems to be a mix of existing LD_PRELOAD focused packages in Fedora where some have helper scripts and some don't. A least for `fakeroot` it is split between the `fakeroot` package with the helper script and `fakeroot-libs` with the libraries, although `libfaketime` just bundles everything in one.
So, I agree on %license, BuildRequires: gcc, and attr/defattr and will spin a -3, but think the library should remain unversioned and not be in a -devel package, instead remaining in the libeatmydata package.
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
--- Comment #4 from Tom "spot" Callaway spotrh@gmail.com --- Okay. Your logic checks out. Show me the -3 with the other items fixed and I'll approve.
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
--- Comment #5 from Stewart Smith trawets@amazon.com --- Updated spec file: https://raw.githubusercontent.com/stewartsmith/pkg-libeatmydata/53fb19f6fda5... Updated SRPM: https://download.copr.fedorainfracloud.org/results/trawets/libeatmydata/fedo... Updated build: https://copr.fedorainfracloud.org/coprs/trawets/libeatmydata/build/4461435/
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
Tom "spot" Callaway spotrh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|fedora-review? |fedora-review+
--- Comment #6 from Tom "spot" Callaway spotrh@gmail.com --- Looks good to me. APPROVED.
I have sponsored you into the Fedora Packager group. Remember, with great power comes great responsibilities. If you're unsure if something is a good idea (or the right action), please feel free to ask me.
You can now continue the new package process from this step (it may take the accounts system a bit to see you in the packager group, so if it doesn't work immediately, come back later):
https://docs.fedoraproject.org/en-US/package-maintainers/New_Package_Process...
https://bugzilla.redhat.com/show_bug.cgi?id=2091317
--- Comment #7 from Gwyn Ciesla gwync@protonmail.com --- (fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/libeatmydata
package-review@lists.fedoraproject.org