Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1222334 - Review Request: bup - Efficient backup system based on git
Summary: Review Request: bup - Efficient backup system based on git
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: William Moreno
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: F-ExcludeArch-s390x
TreeView+ depends on / blocked
 
Reported: 2015-05-17 19:41 UTC by Tadej Janež
Modified: 2015-12-30 17:49 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-12-29 22:24:32 UTC
Type: ---
Embargoed:
williamjmorenor: fedora-review+


Attachments (Terms of Use)

Description Tadej Janež 2015-05-17 19:41:05 UTC
Spec URL: https://raw.githubusercontent.com/tjanez/bup-package/master/bup.spec
SRPM URL: https://tadej.fedorapeople.org/bup-0.27-0.1.fc23.src.rpm

COPR: https://copr.fedoraproject.org/coprs/tadej/bup

Description:
Very efficient backup system based on the git packfile format, providing fast
incremental saves and global deduplication (among and within files, including
virtual machine images). Some of its features are:
* It uses a rolling checksum algorithm and hence it can backup huge files
  incrementally.
* It uses packfile format from git, so one can access the stored data even if
  he doesn't like bup's user interface.
* It writes packfiles directly so it is fast even with huge amounts of data:
  it can track millions of files and keep track of hundreds or thousands of
  gigabytes of objects.
* Data is "automagically" shared between incremental backups without having to
  know which backup is based on which other one.
* One can make a backup directly to a remote bup server, without needing tons
  of temporary disk space on the computer being backed up. If the backup is
  interrupted halfway through, the next run will pick up where the previous
  backup left off.
* It can use "par2" redundancy to recover corrupted backups even if the disk
  has undetected bad sectors.
* Each incremental backup acts as if it's a full backup, it just takes less
  disk space.
* One can mount a bup repository as a FUSE filesystem and access the contents
  that way, or even export it over Samba.


Fedora Account System Username: tadej

Note: Rpmlint reports 7 spelling warnings, which I decided to ignore since the description is taken directly from upstream's README file.

Rpmlint (installed packages)
----------------------------
bup.x86_64: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.x86_64: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.x86_64: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.x86_64: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
2 packages and 0 specfiles checked; 0 errors, 7 warnings.

Comment 1 Upstream Release Monitoring 2015-10-06 17:09:21 UTC
williamjmorenor's scratch build of bup-0.27-0.1.fc21.src.rpm for rawhide failed http://koji.fedoraproject.org/koji/taskinfo?taskID=11351834

Comment 2 William Moreno 2015-10-06 17:12:50 UTC
Package Review
==============

Need Work:
[ ]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.

1- Create a -devel subpackage

2- There is a daemon command than work as a system service so you will to provide a unit service file to handle the service with systemd.
https://fedoraproject.org/wiki/Packaging:Systemd

Test Builds:
Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=11351834 (Failed)
ARM:  http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3219703 (Failed)
PPC:  http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2785514 (Failed)
S390: http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=1953880 (Failed)

My local build run fine in mock but al kojis test build in rawhide are failing see:
Can't locate Time/HiRes.pm in @INC (you may need to install the Time::HiRes module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./wvtestrun line 10.
BEGIN failed--compilation aborted at ./wvtestrun line 10.
Makefile:130: recipe for target 'test' failed

Looks like a missing BuildRequires

===== MUST items =====
C/C++:
[PASS]: Package does not contain kernel modules.
[PASS]: Package contains no static executables.
[PASS]: Package does not contain any libtool archives (.la)
[PASS]: Rpath absent or only used for internal libs.
Generic:
[PASS]: Package is licensed with an open-source compatible license and meets
        other legal requirements as defined in the legal section of Packaging
        Guidelines.
[PASS]: License field in the package spec file matches the actual license.
[PASS]: If the package is under multiple licenses, the licensing breakdown
        must be documented in the spec.
[PASS]: %build honors applicable compiler flags or justifies otherwise.
[PASS]: Package contains no bundled libraries without FPC exception.
[PASS]: Changelog in prescribed format.
[PASS]: Sources contain only permissible code or content.
[NA]:   Package contains desktop file if it is a GUI application.
[PASS]: Package uses nothing in %doc for runtime.
[PASS]: Package consistently uses macros (instead of hard-coded directory
        names).
[PASS]: Package is named according to the Package Naming Guidelines.
[PASS]: Package does not generate any conflict.
[PASS]: Package obeys FHS, except libexecdir and /usr/target.
[NA]:   If the package is a rename of another package, proper Obsoletes and
        Provides are present.
[PASS]: Requires correct, justified where necessary.
[PASS]: Spec file is legible and written in American English.
[PASS]: Package contains systemd file(s) if in need.
[PASS]: Useful -debuginfo package or justification otherwise.
[PASS]: Package is not known to require an ExcludeArch tag.
[PASS]: Large documentation must go in a -doc subpackage. Large could be size
        (~1MB) or number of files.
        Note: Documentation size is 30720 bytes in 2 files.
[PASS]: Package complies to the Packaging Guidelines
[PASS]: Package successfully compiles and builds into binary rpms on at least
        one supported primary architecture.
[PASS]: Package installs properly.
[PASS]: Rpmlint is run on all rpms the build produces.
[PASS]: 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.
[PASS]: Package requires other packages for directories it uses.
[PASS]: Package must own all directories that it creates.
[PASS]: Package does not own files or directories owned by other packages.
[PASS]: All build dependencies are listed in BuildRequires, except for any
        that are listed in the exceptions section of Packaging Guidelines.
[PASS]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[PASS]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
        beginning of %install.
[PASS]: Macros in Summary, %description expandable at SRPM build time.
[PASS]: Dist tag is present.
[PASS]: Package does not contain duplicates in %files.
[PASS]: Permissions on files are set properly.
[PASS]: Package use %makeinstall only when make install DESTDIR=... doesn't
        work.
[PASS]: Package is named using only allowed ASCII characters.
[PASS]: Package does not use a name that already exists.
[PASS]: Package is not relocatable.
[PASS]: Sources used to build the package match the upstream source, as
        provided in the spec URL.
[PASS]: Spec file name must match the spec package %{name}, in the format
        %{name}.spec.
[PASS]: File names are valid UTF-8.
[PASS]: Packages must not store files under /srv, /opt or /usr/local

Python:
[NA]:   Python eggs must not download any dependencies during the build
        process.
[NA]:   A package which is used by another package via an egg interface should
        provide egg info.
[NA]:   Package meets the Packaging Guidelines::Python
[PASS]: Package contains BR: python2-devel or python3-devel
[PASS]: Binary eggs must be removed in %prep

===== SHOULD items =====
Generic:
[PASS]: If the source package does not include license text(s) as a separate
        file from upstream, the packager SHOULD query upstream to include it.
[PASS]: Final provides and requires are sane (see attachments).
[PASS]: Package functions as described.
[PASS]: Latest version is packaged.
[PASS]: Package does not include license text files separate from upstream.
[PASS]: Patches link to upstream bugs/comments/lists or are otherwise
        justified.
[PASS]: Description and summary sections in the package spec file contains
        translations for supported Non-English languages, if available.
[PASS]: Package should compile and build into binary rpms on all supported
        architectures.
[PASS]: %check is present and all tests pass.
[PASS]: Packages should try to preserve timestamps of original installed
        files.
[PASS]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[PASS]: Sources can be downloaded from URI in Source: tag
[PASS]: Reviewer should test that the package builds in mock.
[PASS]: Buildroot is not present
[PASS]: Package has no %clean section with rm -rf %{buildroot} (or
        $RPM_BUILD_ROOT)
[PASS]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[PASS]: Uses parallel make %{?_smp_mflags} macro.
[PASS]: SourceX is a working URL.
[PASS]: Spec use %global instead of %define unless justified.

===== EXTRA items =====
Generic:
[PASS]: Rpmlint is run on debuginfo package(s).
[PASS]: Rpmlint is run on all installed packages.
[PASS]: Large data in /usr/share should live in a noarch subpackage if package
        is arched.
[PASS]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: bup-0.27-0.1.fc21.x86_64.rpm
          bup-0.27-0.1.fc21.src.rpm
bup.x86_64: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.x86_64: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.x86_64: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.x86_64: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
bup.src: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.src: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.src: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.src: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.src: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.src: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.src: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
2 packages and 0 specfiles checked; 0 errors, 14 warnings.

Rpmlint (debuginfo)
-------------------
Checking: bup-debuginfo-0.27-0.1.fc21.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

Rpmlint (installed packages)
----------------------------
bup.x86_64: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.x86_64: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.x86_64: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.x86_64: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
2 packages and 0 specfiles checked; 0 errors, 7 warnings.

Requires
--------
bup (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/env
    fuse-python
    git
    libc.so.6()(64bit)
    libpthread.so.0()(64bit)
    libpython2.7.so.1.0()(64bit)
    pylibacl
    python-tornado
    pyxattr
    rtld(GNU_HASH)

Provides
--------
bup:
    bup
    bup(x86-64)

Unversioned so-files
--------------------
bup: /usr/lib64/bup/bup/_helpers.so

Source checksums
----------------
https://github.com/bup/bup/archive/d612d9a599590cb53a76711754f9e031f66a330a/bup-d612d9a599590cb53a76711754f9e031f66a330a.tar.gz :
  CHECKSUM(SHA256) this package     : 0a8816898363b5844564c3e95f98b31d923d091634245baf3f159b054e37a268
  CHECKSUM(SHA256) upstream package : 0a8816898363b5844564c3e95f98b31d923d091634245baf3f159b054e37a268

Comment 3 Christopher Meng 2015-10-07 11:34:25 UTC
Have been tracking bup for 3 years, I'd like to say it's good to be packaged into Fedora.

You need to add some missing BRs for testing, and drop all programs which require /usr/bin/env.

Comment 4 Upstream Release Monitoring 2015-10-07 21:54:58 UTC
tadej's scratch build of bup-0.27-0.1.fc23.src.rpm for rawhide failed http://koji.fedoraproject.org/koji/taskinfo?taskID=11361477

Comment 5 Upstream Release Monitoring 2015-10-07 22:19:44 UTC
tadej's scratch build of bup-0.27-0.2.fc21.src.rpm for rawhide failed http://koji.fedoraproject.org/koji/taskinfo?taskID=11361744

Comment 6 William Moreno 2015-10-08 14:45:16 UTC
I see in the last build than %%prep %%build and %%install work fine, but the issue is with the test, maybe disabling test for now and work with upstream or pathing the faling tests can work.

WvTest: 2432 tests, 2 failures, total time 9.778s.

To failures of 2432 tests do not look like a bloquer.

Comment 7 Upstream Release Monitoring 2015-10-14 15:40:47 UTC
tadej's scratch build of bup-0.27-0.2.fc21.src.rpm for rawhide completed http://koji.fedoraproject.org/koji/taskinfo?taskID=11445764

Comment 8 Tadej Janež 2015-11-23 23:02:51 UTC
Hi William,

thanks for the review!

Sorry that it took so long to reply. While fixing the package, I encountered some problems that needed quite some time to get fixed.

(In reply to William Moreno from comment #2)
> Package Review
> ==============
> 
> Need Work:
> [ ]: Development (unversioned) .so files in -devel subpackage, if present.
>      Note: Unversioned so-files in private %_libdir subdirectory (see
>      attachment). Verify they are not in ld path.

I assume you are referring to /usr/lib64/bup/bup/_helpers.so, which is also listed below.
The _helpers.so file represents a private shared library which is not meant for development purposes, rather it is an essential part of bup (you can check this with a simple 'grep -rni _helpers' on the bup source code directory).
Since it is a private shared library, it shouldn't be added as "Provides" for other packages [1].

> 2- There is a daemon command than work as a system service so you will to
> provide a unit service file to handle the service with systemd.
> https://fedoraproject.org/wiki/Packaging:Systemd

Done.

I've decided to split-out "bup web" into a separate subpackage.
Since the nature of "bup web" is to run a web server for browsing through bup repositories, it only makes sense to provide a systemd unit file for running "bup web" as a service with the systemd user instance (i.e. 'systemd --user').

Along the way, I discovered that there are no guidelines for packaging user instance services [2].
I also encountered two bugs while trying to use systemd's %systemd_user_post macro and fixed them [3].
To make it easier for the user who would want to use the bup-web user service, I've written a Fedora README [4].

> Test Builds:
> Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=11351834 (Failed)
> ARM:  http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3219703 (Failed)
> PPC:  http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2785514 (Failed)
> S390: http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=1953880
> (Failed)
> 
> My local build run fine in mock but al kojis test build in rawhide are
> failing see:
> Can't locate Time/HiRes.pm in @INC (you may need to install the Time::HiRes
> module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5
> /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5
> /usr/share/perl5 .) at ./wvtestrun line 10.
> BEGIN failed--compilation aborted at ./wvtestrun line 10.
> Makefile:130: recipe for target 'test' failed
> 
> Looks like a missing BuildRequires

Yes, it was a missing BuildRequires. Fixed.

Subsequently, I encountered a problem with a failing test. I temporarily disabled it, as you suggested and I'm working with upstream to fix it.

> Unversioned so-files
> --------------------
> bup: /usr/lib64/bup/bup/_helpers.so

Already addressed above.

The new Spec URL: https://github.com/tjanez/bup-package/blob/ff9588f/bup.spec
The new SRPM URL: https://tadej.fedorapeople.org/bup-0.27-0.3.fc23.src.rpm

Thanks and best regards,
Tadej


[1] https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering

[2] https://lists.fedoraproject.org/archives/list/packaging%40lists.fedoraproject.org/thread/VKTC6FSQGX6DUQAZHC7F6ZEUFXHRTD4F/

[3] https://github.com/systemd/systemd/pull/1986

[4] https://github.com/tjanez/bup-package/blob/ff9588fa67e6e431c24371c673b9e32656b362d7/README-bup-web.Fedora.md

Comment 9 William Moreno 2015-11-25 21:43:20 UTC
I will run again the review, you should ask upstream about python3 support as part of:

http://portingdb-encukou.rhcloud.com/

Comment 11 William Moreno 2015-11-26 22:40:40 UTC
s390 builds still fails, you MUST include a ExcludeArch: s390 tag in your spec. Please wait I finish the review to update the spec.

Comment 12 Upstream Release Monitoring 2015-11-26 22:52:22 UTC
williamjmorenor's scratch build of bup-0.27-0.3.fc23.src.rpm for rawhide completed http://koji.fedoraproject.org/koji/taskinfo?taskID=11988462

Comment 13 William Moreno 2015-11-26 23:02:48 UTC
rpmlint bup-web-0.27-0.3.fc24.x86_64.rpm
bup-web.x86_64: W: empty-%postun
1 packages and 0 specfiles checked; 0 errors, 1 warnings.

Comment 14 Dan Horák 2015-11-27 07:32:32 UTC
(In reply to William Moreno from comment #11)
> s390 builds still fails, you MUST include a ExcludeArch: s390 tag in your
> spec. Please wait I finish the review to update the spec.

But the problem on s390 is broken buildroot for GHC, so not bup's fault, and we are going to fix it with the planned GHC 7.10 rebase in F-24. No need to exclude s390/s390x.

Comment 15 William Moreno 2015-11-27 17:56:01 UTC
Last review here:
https://paste.fedoraproject.org/295213/48646777/

Fix the empty %postun in the spec.
Include the ExcludeArch tag about the s390 arch

Comment 16 William Moreno 2015-11-30 23:14:01 UTC
Thanks Dan for the feedbak about the s390 build, so please fix the macros in %postun.

Comment 17 Tadej Janež 2015-12-02 22:58:29 UTC
Hi William,

thanks for a re-review!

(In reply to William Moreno from comment #9)
> you should ask upstream about python3 support
> as part of:
> 
> http://portingdb-encukou.rhcloud.com/

Agreed, I'll ask upstream about Python3 support.

On a related note, I'm pushing upstream to accept a patch that detects the correct version of Python 2 and places it as a shebang in all bup commands:
https://groups.google.com/d/msg/bup-list/sF6SC0zNowg/7grBUs5bDgAJ

(In reply to William Moreno from comment #15)
> Last review here:
> https://paste.fedoraproject.org/295213/48646777/

I would suggest that you also paste it here as a comment so the whole review will be archived here.

> Fix the empty %postun in the spec.

I think this rpmlint warning should be ignored.

Systemd's %systemd_user_postun_with_restart macro is currently defined as %{nil} [1], hence the rpmlint warning.

However, this may change in the future, so I think it is better to include it in the SPEC file.


[1] https://github.com/systemd/systemd/blob/master/src/core/macros.systemd.in#L73

Comment 18 William Moreno 2015-12-03 15:15:47 UTC
There is a unversioned .so library than you must package as a -devel subpackage or request upstream to use a versioned version of the file.

Please see:
https://fedoraproject.org/wiki/Packaging:Guidelines#Downstream_.so_name_versioning
http://fedoraproject.org/wiki/Packaging:Guidelines#Devel_Packages

The web subpackage must requires the same arched main package, change too:
Requires: bup %{?_isa} = %{version}-%{release}

Just check this issue and I will aprove this package.

Package Review
==============
 
===== MUST items =====
C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[!]: Development (unversioned) .so files in -devel subpackage, if present.
[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:
[!]: 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.
[x]: License file installed when any subpackage combination is installed.
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[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.
[x]: 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.
[x]: 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.
[x]: 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.
[x]: Large documentation must go in a -doc subpackage. 
[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]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[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 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
 
Python:
[x]: Python eggs must not download any dependencies during the build
     process.
[-]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Package contains BR: python2-devel or python3-devel
[x]: Binary eggs must be removed in %prep
 
===== 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).
[!]: Fully versioned dependency in subpackages if applicable.
[x]: 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.
[-]: Scriptlets must be sane, if 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.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: Uses parallel make %{?_smp_mflags} macro.
[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.
 
Rpmlint
-------
Checking: bup-0.27-0.3.fc21.x86_64.rpm
          bup-web-0.27-0.3.fc21.x86_64.rpm
          bup-debuginfo-0.27-0.3.fc21.x86_64.rpm
          bup-0.27-0.3.fc21.src.rpm
bup.x86_64: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.x86_64: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.x86_64: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.x86_64: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
bup-web.x86_64: W: empty-%postun
bup.src: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.src: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.src: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.src: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.src: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.src: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.src: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
4 packages and 0 specfiles checked; 0 errors, 15 warnings.
 
Rpmlint (debuginfo)
-------------------
Checking: bup-debuginfo-0.27-0.3.fc21.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.
 
Rpmlint (installed packages)
----------------------------
bup.x86_64: W: spelling-error Summary(en_US) packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US packfile -> pack file, pack-file, packsaddle
bup.x86_64: W: spelling-error %description -l en_US deduplication -> reduplication, duplication, quadruplication
bup.x86_64: W: spelling-error %description -l en_US checksum -> check sum, check-sum, checks um
bup.x86_64: W: spelling-error %description -l en_US packfiles -> pack files, pack-files, packsaddles
bup.x86_64: W: spelling-error %description -l en_US automagically -> automatically, auto magically, auto-magically
bup.x86_64: W: spelling-error %description -l en_US filesystem -> file system, file-system, systemically
bup-web.x86_64: W: empty-%postun
3 packages and 0 specfiles checked; 0 errors, 8 warnings.
 
Requires
--------
bup (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/env
    fuse-python
    git
    libc.so.6()(64bit)
    libpthread.so.0()(64bit)
    libpython2.7.so.1.0()(64bit)
    pylibacl
    pyxattr
    rtld(GNU_HASH)
bup-web (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/env
    bup
    python-tornado
    systemd
bup-debuginfo (rpmlib, GLIBC filtered):
 
Provides
--------
bup:
    bup
    bup(x86-64)
bup-web:
    bup-web
    bup-web(x86-64)
bup-debuginfo:
    bup-debuginfo
    bup-debuginfo(x86-64)
 
Unversioned so-files
--------------------
bup: /usr/lib64/bup/bup/_helpers.so
 
Source checksums
----------------
https://github.com/bup/bup/archive/d612d9a599590cb53a76711754f9e031f66a330a/bup-d612d9a599590cb53a76711754f9e031f66a330a.tar.gz :
  CHECKSUM(SHA256) this package     : 0a8816898363b5844564c3e95f98b31d923d091634245baf3f159b054e37a268
  CHECKSUM(SHA256) upstream package : 0a8816898363b5844564c3e95f98b31d923d091634245baf3f159b054e37a268

Comment 19 Tadej Janež 2015-12-04 00:04:29 UTC
William,

(In reply to William Moreno from comment #18)
> There is a unversioned .so library than you must package as a -devel
> subpackage or request upstream to use a versioned version of the file.
> 
> Please see:
> https://fedoraproject.org/wiki/Packaging:Guidelines#Downstream_.
> so_name_versioning
> http://fedoraproject.org/wiki/Packaging:Guidelines#Devel_Packages

as I said in comment #8, the _helpers.so file represents a private shared library which is not meant for development purposes, rather it is an essential part of bup (you can check this with a simple 'grep -rni _helpers' on the bup source code directory).

The guidelines you point to [1] actually state:
"As an additional complication, some software generates unversioned shared objects which are not intended to be used as system libraries. These files are usually plugins or modular functionality specific to an application, and are not located in the ld library paths or cache. This means that they are not located directly in /usr/lib or /usr/lib64, or in a directory listed as a library path in /etc/ld.so.conf (or an /etc/ld.so.conf.d/config file). Usually, these unversioned shared objects can be found in a dedicated subdirectory under /usr/lib or /usr/lib64 (e.g. /usr/lib/purple-2/ is the plugin directory used for libpurple applications). In these cases, the unversioned shared objects do not need to be placed in a -devel package."

To sum up, /usr/lib64/bup/bup/_helpers.so is an unversioned so-file that is in a private %_libdir subdirectory which is not in ld path. Therefore, it does not need to be placed in a -devel subpackage.

> The web subpackage must requires the same arched main package, change too:
> Requires: bup %{?_isa} = %{version}-%{release}

Good catch, thanks!

Fixed it. Here is the: 
- new Spec URL: https://github.com/tjanez/bup-package/blob/f04700b/bup.spec
- new SRPM URL: https://tadej.fedorapeople.org/bup-0.27-0.4.fc23.src.rpm

> Just check this issue and I will aprove this package.

Great, thanks!

Best regards,
Tadej

Comment 20 William Moreno 2015-12-04 14:22:47 UTC
Packaged Aproved
================

Comment 21 Tadej Janež 2015-12-13 15:21:32 UTC
William, thanks again for the review and approval!

Comment 22 Gwyn Ciesla 2015-12-13 22:45:18 UTC
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/bup

Comment 23 Fedora Update System 2015-12-14 23:15:20 UTC
bup-0.27-1.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2015-c35b007349

Comment 24 Fedora Update System 2015-12-15 10:52:19 UTC
bup-0.27-1.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update bup'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-c35b007349

Comment 25 Fedora Update System 2015-12-20 15:42:33 UTC
bup-0.27-1.fc22 has been submitted as an update to Fedora 22. https://bodhi.fedoraproject.org/updates/FEDORA-2015-7349d4e979

Comment 26 Fedora Update System 2015-12-22 15:33:50 UTC
bup-0.27-1.fc22 has been pushed to the Fedora 22 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-7349d4e979

Comment 27 Fedora Update System 2015-12-29 22:24:28 UTC
bup-0.27-1.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report.

Comment 28 Fedora Update System 2015-12-30 17:49:59 UTC
bup-0.27-1.fc22 has been pushed to the Fedora 22 stable repository. If problems still persist, 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.