Spec URL: https://github.com/stewartsmith/pkg-libeatmydata/blob/01d64b6/libeatmydata.spec SRPM URL: https://download.copr.fedorainfracloud.org/results/trawets/libeatmydata/srpm-builds/04456284/libeatmydata-130-2.fc35.src.rpm 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
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/
*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).
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.
Okay. Your logic checks out. Show me the -3 with the other items fixed and I'll approve.
Updated spec file: https://raw.githubusercontent.com/stewartsmith/pkg-libeatmydata/53fb19f6fda51808f2da969cf0dad513f83bcf96/libeatmydata.spec Updated SRPM: https://download.copr.fedorainfracloud.org/results/trawets/libeatmydata/fedora-36-x86_64/04461435-libeatmydata/libeatmydata-130-3.fc36.src.rpm Updated build: https://copr.fedorainfracloud.org/coprs/trawets/libeatmydata/build/4461435/
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_for_New_Contributors/#add_package_to_source_code_management_scm_system_and_set_owner
(fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/libeatmydata
Package is now in repositories, closing review.