Bug 852174
Summary: | Review Request: snapper - Tool for filesystem snapshot management | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Ondrej Kozina <okozina> |
Component: | Package Review | Assignee: | Elad Alfassa <elad> |
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | rawhide | CC: | agk, asaha, davidz, elad, gwync, johannbg, notting, package-review, prajnoha, rhughes, volker27 |
Target Milestone: | --- | Flags: | elad:
fedora-review+
|
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2012-11-19 09:20:57 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Ondrej Kozina
2012-08-27 18:35:05 UTC
Hi, just a little comment: rpmlint says there are spelling errors + setup-not-quiet: snapper-libs.x86_64: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper-libs.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper.x86_64: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper-devel.x86_64: W: spelling-error Summary(en_US) libsnapper -> lib snapper, lib-snapper, whippersnapper snapper.src: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper.src: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper.src:26: W: setup-not-quiet snapper.src: W: invalid-url Source0: snapper-0.0.14.tar.bz2 6 packages and 0 specfiles checked; 0 errors, 9 warnings. Regards, Milan Hi, sure. I'm aware of it (I ran fedora-review test as well), but frankly, I don't know how would you like to correct spelling errors like "libsnapper" or "filesystem" :) ad setup-not-quiet: I'll correct that, thanks. missed that one. ad invalid-url: Snapper is a heavily work in progress project. There are no tags or official source releases so far. I've packed tarball from the latest commit myself. Anyway, I'm going to add comment about that fact into specfile. also: - Removed explicit CFLAGS and CXXFLAFGS from the specfile as well - Removed patches as both changes has been pushed upstream (both the new specfile and srpm are at the same location) Remove %clean. Use the _bindir and _includedir macro. Including COPYING multiple times is not necessary. For instance, if devel requires libs, including it in libs is enough. Your Requires should use ?_isa, as of http://fedoraproject.org/wiki/Packaging:Guidelines#Requires I'm not sure if that file should be where it is: %{_libdir}/%{name}/bin/compare-dirs Use the name macro in Source0. Remove "-n snapper-%{version}" because it's the default. Since this is no upstream release, the naming rules for snapshots apply: http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Non-Numeric_Version_in_Release Also state the exact command necessary to create the tarball. Make "%{_mandir}/man8/%{name}.*.gz" "...%{name}.*" or "...%{name}.8*". Compression might change.
> (both the new specfile and srpm are at the same location)
Please don't do that. Create a changelog entry and bump the release. This makes life easier for reviewers.
Thank you for the comments. Anyway does it mean you are going to review the package (oficially)? > I'm not sure if that file should be where it is: > %{_libdir}/%{name}/bin/compare-dirs Unfortunately, me neither. I took the location from upstream Hope I fixed all other issues with the package. Spec URL: http://okozina.fedorapeople.org/snapper/0.0.14/2/snapper.spec SRPM URL: http://okozina.fedorapeople.org/snapper/0.0.14/2/snapper-0.0.14-2.20120905gitb0d0145.fc19.src.rpm Update to latest devel version with dbus interface. I've done some basic code review but it would be nice if someone would look at it as well. Moreover I think selinux policy will have to be updated to enable dbus communcation for the snapper package. > I'm not sure if that file should be where it is: > %{_libdir}/%{name}/bin/compare-dirs The binary is considered obsolete and removed completely from dbus version. Background tasks are handled by snapperd daemon. Spec URL: http://okozina.fedorapeople.org/snapper/0.0.14/3/snapper.spec SRPM URL: http://okozina.fedorapeople.org/snapper/0.0.14/3/snapper-0.0.14-3.20120926git7918e5c.fc19.src.rpm Hi David, just wanted to let you know I request to add new dbus enabled service (In reply to comment #7) > just wanted to let you know I request to add new dbus enabled service Any package can include D-Bus services, there is no central registry or anything like that. So it doesn't make sense to "request" one... COPYING is not necessary in the main package, as it requires the libs package, which has it. ?_isa also applies in a few more locations, like in the main and devel package: Requires: %{name}-libs = %{version}-%{release} There's a better method for filtering Provides now: https://fedoraproject.org/wiki/User:Tibbs/AutoProvidesAndRequiresFiltering Please leave a comment in the specfile why you're removing ext4 support and what this is for: rm -rf %{buildroot}/%{_prefix}/lib*/zypp Commonly, all %files sections are at the end of the spec file, while %package and %description sections are at the beginning. A few bits I've spotted related to the dependencies and usability: As for the Requires: lvm >= ... in the spec file - the tool is supposed to be used with btrfs and/or LVM. However, one can have LVM installed, but not btrfs tools or vice versa. Creating a requirement for both will bring in both btrfs tools as well as LVM tools. Taking into account that snapper works only with mounted volumes, these must have been activated before. In case of LVM, we can't activate without having LVM tools installed - so we couldn't even use that LVM mountpoint on command line if LVM tools were not installed. The same applies for btrfs tools I guess... So it's disputable whether it's really necessary to add a requirement for lvm/btrfs tools (as without having these devs mounted and activated, we couldn't even refer to them). Also, I'd probably add EXAMPLES section to the snapper man page so people can quickly see what to do to create a simple snapshot scheme - just for convenience. As for functionality itself: (/mnt/temp1 is not mounted!) [0] rawhide/~ # snapper create-config -f "lvm(ext4)" /mnt/temp1 Creating config failed (invalid filesystem type). - maybe a better message to explain that /mnt/temp1 is not mounted at all and so it can't create a snapshot in this case (as snapper is targeted for mounted volumes only) The man page also refers to a "subvolume". For LVM, this could be easily misinterpreted as the device itself, not the mountpoint and we could end up with: [0] rawhide/~ # snapper create-config -f "lvm(ext4)" /dev/vg/thin_lv Creating config failed (illegal subvolume). - if possible, a better message would be welcome that would explain that we can't refer to devices themselves, but the mountpoints only. Refering to the mountpoint works with LVM, of course: [0] rawhide/~ # snapper create-config -f "lvm(ext4)" /mnt/temp (In reply to comment #10) > installed. The same applies for btrfs tools I guess... So it's disputable > whether it's really necessary to add a requirement for lvm/btrfs tools (as > without having these devs mounted and activated, we couldn't even refer to > them). (...if the introduction of the snapshot feature of each of these backends used was added later than the basic functionality of the backend, then the Requires field is needed, of course... otherwise I think we don't need it.) I have assembled new spec file. Snapper is updated to the latest commit in master branch and patched to reflect the bug discussed here and also few others. (reported upstream): - patch: avoid abrt when 'diff' command is executed without arguments - patch: do not check for btrfs-progs binary - patch: do not allow 'create-config' command on non-thin LVM volumes Also, I have removed python bindings since python users can communicate directly with snapperd via dbus interface. Removed both btrfs-progs and LVM direct dependencies. LVM has been discussed here and btrfs-progs are not needed anymore. Snapper's been rewritten to call directly ioctl instead. (In reply to comment #10) > Also, I'd probably add EXAMPLES section to the snapper man page so people > can quickly see what to do to create a simple snapshot scheme - just for > convenience. > > As for functionality itself: > > (/mnt/temp1 is not mounted!) > [0] rawhide/~ # snapper create-config -f "lvm(ext4)" /mnt/temp1 > Creating config failed (invalid filesystem type). > > - maybe a better message to explain that /mnt/temp1 is not mounted at all > and so it can't create a snapshot in this case (as snapper is targeted for > mounted volumes only) this will require a change in error reporting design of snapperd so this'll take some time, I suppose. Anyway, I'll report that with some patch proposal soon. Spec URL: http://okozina.fedorapeople.org/snapper/0.1.0/1/snapper.spec SRPM URL: http://okozina.fedorapeople.org/snapper/0.1.0/1/snapper-0.1.0-1.20121026git1aaa372.fc19.src.rpm When rebuilding that srpm on F17 I get... Making all in server make[2]: Entering directory `/rpmbuild/BUILD/snapper-0.1.0/server' ... ... Client.cc: In static member function 'static void Client::introspect(DBus::Connection&, DBus::Message&)': Client.cc:124:2: error: inconsistent user-defined literal suffixes 'DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER' and 'DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER' in string literal Client.cc:276:2: error: unable to find string literal operator 'operator"" DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER' Hi, I believe it's related to: https://bugs.freedesktop.org/show_bug.cgi?id=46147 Fedora 17 runs dbus-1.4.10 and it's not patched until 1.4.20 Filed as bug 870786 I'm quite keen on using snapper for https://fedoraproject.org/wiki/Features/OfflineSystemUpdates so if I can persuade someone to finish this review with a couple of drinks that'd be great :) Package Review ============== Key: [x] = Pass [!] = Fail [-] = Not applicable [?] = Not evaluated [ ] = Manual review needed ===== MUST items ===== C/C++: [x]: Header files in -devel subpackage, if present. [x]: ldconfig called in %post and %postun if required. [x]: Package does not contain any libtool archives (.la) [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [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]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: %build honors applicable compiler flags or justifies otherwise. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [x]: Package contains no bundled libraries. [X]: Changelog in prescribed format. [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Sources contain only permissible code or content. [x]: %config files are marked noreplace or the reason is justified. [x]: Each %files section contains %defattr if rpm < 4.4 [x]: Macros in Summary, %description expandable at SRPM build time. [-]: Package contains desktop file if it is a GUI application. [x]: Development files must be in a -devel package [x]: Package requires other packages for directories it uses. [x]: Package uses nothing in %doc for runtime. [x]: Package is not known to require ExcludeArch. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Fully versioned dependency in subpackages, if present. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in %package libs, %package devel [x]: Package complies to the Packaging Guidelines [x]: Spec file lacks Packager, Vendor, PreReq tags. [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 %doc. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "GPL (v2)", "Unknown or generated". 2 files have unknown license. Detailed output of licensecheck in /home/elad/852174-snapper/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: The spec file handles locales properly. [x]: Package consistently uses macro is (instead of hard-coded directory names). [x]: Package is named using only allowed ASCII characters. [x]: Package is named according to the Package Naming Guidelines. [x]: No %config files under /usr. [x]: Package does not generate any conflict. Note: Package contains no Conflicts: tag(s) [x]: Package do not use a name that already exist [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]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [x]: Package installs properly. [x]: Package is not relocatable. [x]: Requires correct, justified where necessary. [x]: CheckResultdir [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file is legible and written in American English. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [-]: Package contains systemd file(s) if in need. [x]: File names are valid UTF-8. [x]: Useful -debuginfo package or justification otherwise. [-]: Large documentation must go in a -doc subpackage. Note: Documentation size is 81920 bytes in 10 files. [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. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [ x: 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]: Dist tag is present. [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [ ]: Final provides and requires are sane (rpm -q --provides and rpm -q --requires). [ ]: Package functions as described. [ ]: 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]: The placement of pkgconfig(.pc) files are correct. [ ]: Scriptlets must be sane, if used. [x]: SourceX tarball generation or download is documented. Note: Package contains tarball without URL, check comments [x]: SourceX / PatchY prefixed with %{name}. [x]: SourceX is a working URL. [-]: 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. [x]: Packages should try to preserve timestamps of original installed files. [x]: Spec use %global instead of %define. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Spec file according to URL is the same as in SRPM. [-]: Large data in /usr/share should live in a noarch subpackage if package is arched. Rpmlint ------- Checking: snapper-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm snapper-0.1.0-1.20121026git1aaa372.fc18.src.rpm snapper-libs-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm snapper-debuginfo-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm snapper-devel-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm snapper.x86_64: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper.src: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper.src: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper.src: W: invalid-url Source0: snapper-0.1.0.tar.bz2 snapper-libs.x86_64: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper-libs.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper-devel.x86_64: W: spelling-error Summary(en_US) libsnapper -> lib snapper, lib-snapper, whippersnapper 5 packages and 0 specfiles checked; 0 errors, 8 warnings. Rpmlint (installed packages) ---------------------------- # rpmlint snapper-debuginfo snapper-libs snapper snapper-devel snapper-libs.x86_64: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper-libs.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper.x86_64: W: spelling-error Summary(en_US) filesystem -> file system, file-system, systemically snapper.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically snapper-devel.x86_64: W: spelling-error Summary(en_US) libsnapper -> lib snapper, lib-snapper, whippersnapper 4 packages and 0 specfiles checked; 0 errors, 5 warnings. # echo 'rpmlint-done:' Requires -------- snapper-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm (rpmlib, GLIBC filtered): /bin/sh config(snapper) = 0.1.0-1.20121026git1aaa372.fc18 libboost_system-mt.so.1.50.0()(64bit) libboost_thread-mt.so.1.50.0()(64bit) libc.so.6()(64bit) libdbus-1.so.3()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libpthread.so.0()(64bit) librt.so.1()(64bit) libsnapper.so.2()(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libxml2.so.2()(64bit) libz.so.1()(64bit) rtld(GNU_HASH) snapper-libs(x86-64) = 0.1.0-1.20121026git1aaa372.fc18 snapper-libs-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm (rpmlib, GLIBC filtered): /sbin/ldconfig config(snapper-libs) = 0.1.0-1.20121026git1aaa372.fc18 diffutils libboost_system-mt.so.1.50.0()(64bit) libboost_thread-mt.so.1.50.0()(64bit) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libxml2.so.2()(64bit) libxml2.so.2(LIBXML2_2.4.30)(64bit) libxml2.so.2(LIBXML2_2.6.0)(64bit) rtld(GNU_HASH) util-linux snapper-debuginfo-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm (rpmlib, GLIBC filtered): snapper-devel-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm (rpmlib, GLIBC filtered): boost-devel(x86-64) libsnapper.so.2()(64bit) libstdc++-devel(x86-64) libxml2-devel(x86-64) snapper(x86-64) = 0.1.0-1.20121026git1aaa372.fc18 Provides -------- snapper-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm: config(snapper) = 0.1.0-1.20121026git1aaa372.fc18 snapper = 0.1.0-1.20121026git1aaa372.fc18 snapper(x86-64) = 0.1.0-1.20121026git1aaa372.fc18 snapper-libs-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm: config(snapper-libs) = 0.1.0-1.20121026git1aaa372.fc18 libsnapper.so.2()(64bit) snapper-libs = 0.1.0-1.20121026git1aaa372.fc18 snapper-libs(x86-64) = 0.1.0-1.20121026git1aaa372.fc18 snapper-debuginfo-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm: snapper-debuginfo = 0.1.0-1.20121026git1aaa372.fc18 snapper-debuginfo(x86-64) = 0.1.0-1.20121026git1aaa372.fc18 snapper-devel-0.1.0-1.20121026git1aaa372.fc18.x86_64.rpm: snapper-devel = 0.1.0-1.20121026git1aaa372.fc18 snapper-devel(x86-64) = 0.1.0-1.20121026git1aaa372.fc18 MD5-sum check ------------- Generated by fedora-review 0.3.1 (b71abc1) last change: 2012-10-16 Buildroot used: fedora-18-x86_64 Command line :/usr/bin/fedora-review -b 852174 I see no issues with this package. Package is APPROVED. New Package SCM Request ======================= Package Name: snapper Short Description: Tool for filesystem snapshot management Owners: lvm-team okozina agk Branches: InitialCC: "lvm-team" is not in the packager group. That's because it's not a 'person' and so cannot legally sign the agreement. (Ref. spot.) Nevertheless, it's the owner of our team's packages. (Background: I got lvm-team added to the package group some time ago, but spot removed it citing the reason I gave.) (And the owner has to be set to the lvm-team alias so that that mailing list - not any individual - owns the component in bugzilla.) (In reply to comment #19) > "lvm-team" is not in the packager group. Please, could you be more specific (or any admin who would look into it) on why 'lvm-team' can't be set as the package owner? Actually, I can see lvm-team owns following packages: device-mapper-multipath, device-mapper-persistent-data, dmraid, lvm2, right? Git done (by process-git-requests). I didn't think it would work, but it seems to have. Unsetting flag No f18 packages? :( I'm afraid for f18, it's too late. I mean, is it _really_ necessary? Otherwise I think I wouldn't provoke QA people w/o very good reason that late in release cycle. No reason not to build for f18, it'll just come as an update. QA will be unaffected, we're frozen. |