Bug 1453 (libaacs)

Summary: Review Request: libaacs - Open implementation of AACS specification
Product: Package Reviews Reporter: Xavier Bachelot <xavier>
Component: Review RequestAssignee: Alex Lancaster <alexl>
Status: RESOLVED FIXED    
Severity: normal CC: alexl, belegdol, hobbes1069, rpmfusion-package-review
Priority: P5    
Version: Current   
Hardware: All   
OS: GNU/Linux   
namespace:
Bug Depends on:    
Bug Blocks: 4    

Description Xavier Bachelot 2010-10-13 21:12:28 CEST
Spec URL: http://www.bachelot.org/fedora/SPECS/libaacs.spec
SRPM URL:
http://www.bachelot.org/fedora/SRPMS/libaacs-0.1-0.1.20100817.fc13.src.rpm
Description: 
This library is an open implementation of the AACS specification. It can be dlopen'ed by libbluray if present and allows decryption of AACS protected bluray disc. The keys are NOT provided.

This package was rejected by Red Hat Legal team.
See https://bugzilla.redhat.com/show_bug.cgi?id=625603
It depends on libbluray, which is under review for Fedora.
See https://bugzilla.redhat.com/show_bug.cgi?id=625602

I'm already a Fedora packager, but I don't maintain any package for RPM Fusion.
Comment 1 Alex Lancaster 2010-10-21 06:41:08 CEST
Pre-review running of rpmlint:

$ rpmlint x86_64/libaacs-* ~/RPMS/SRPMS/libaacs-0.1-0.1.20100817.fc13.src.rpm 
libaacs.x86_64: W: shared-lib-calls-exit /usr/lib64/libaacs.so.0.0.0 exit@GLIBC_2.2.5
libaacs-debuginfo.x86_64: E: non-standard-dir-perm /usr/src/debug/libaacs-20100817/src/libaacs 0775L
libaacs-debuginfo.x86_64: E: non-standard-dir-perm /usr/lib/debug 0775L
libaacs-debuginfo.x86_64: E: non-standard-dir-perm /usr/src/debug/libaacs-20100817 0775L
libaacs-debuginfo.x86_64: E: non-standard-dir-perm /usr/src/debug/libaacs-20100817/src/file 0775L
libaacs-debuginfo.x86_64: E: non-standard-dir-perm /usr/src/debug/libaacs-20100817/src/util 0775L
libaacs-devel.x86_64: W: no-documentation
libaacs.src:13: W: macro-in-comment %Y
libaacs.src:13: W: macro-in-comment %m
libaacs.src:13: W: macro-in-comment %d
libaacs.src:13: W: macro-in-comment %Y
libaacs.src:13: W: macro-in-comment %m
libaacs.src:13: W: macro-in-comment %d
libaacs.src: W: invalid-url Source0: libaacs-20100817.tar.bz2
4 packages and 0 specfiles checked; 5 errors, 9 warnings.

Seems that there is an issue with shared-lib-calls-exit that might need to be addressed.  The debuginfo and macro-in-comment, I already mentioned in the libbluray review: https://bugzilla.redhat.com/show_bug.cgi?id=625602
Comment 2 Xavier Bachelot 2010-10-21 11:23:36 CEST
The shared-lib-calls-exit issue is fixed in current git tree, I'll update the snapshot. I'll fix the Source0 URL in the same way as libbluray at the same time.
Comment 3 Xavier Bachelot 2010-10-22 01:31:01 CEST
New release :
Spec URL: http://www.bachelot.org/fedora/SPECS/libaacs.spec
SRPM URL:
http://www.bachelot.org/fedora/SRPMS/libaacs-0.1-0.2.20101021git00b2df2bb7598.fc13.src.rpm

This address the tarball generation and the debuginfo package perms issue. 
I thought the shared-lib-calls-exit issue was fixed in git, but it's unfortunately not. I'll mail upstream.
Comment 5 Alex Lancaster 2011-01-29 23:09:21 CET
(In reply to comment #4)
> New release :
> Spec URL: http://www.bachelot.org/fedora/SPECS/libaacs.spec
> SRPM URL:
> http://www.bachelot.org/fedora/SRPMS/libaacs-0.1-0.4.20110107gite7aa4fd42c0d4.fc14.src.rpm
> 

Thanks, will try to get to this soon.
Comment 9 Richard 2011-09-26 22:29:19 CEST
Some observations:

1. Should the devel subpackage requirement for the main package be arch specific? 

Requires:       %{name} = %{version}-%{release}
to
Requires:       %{name}%{?_isa} = %{version}-%{release}

2. If you're not going to build for EL5, the following can be omitted:

BuildRoot: entirely
rm -rf $RPM_BUILD_ROOT from %install
%clean entirely
%defattr(-,root,root,-) from all %files sections.
Comment 10 Xavier Bachelot 2011-09-26 22:52:47 CEST
(In reply to comment #9)
> Some observations:
> 
> 1. Should the devel subpackage requirement for the main package be arch
> specific? 
> 
> Requires:       %{name} = %{version}-%{release}
> to
> Requires:       %{name}%{?_isa} = %{version}-%{release}
> 

Right, I'll fix that in the next release.

> 2. If you're not going to build for EL5, the following can be omitted:
> 
> BuildRoot: entirely
> rm -rf $RPM_BUILD_ROOT from %install
> %clean entirely
> %defattr(-,root,root,-) from all %files sections.
> 
I plan to build for EL5.
Comment 11 Alex Lancaster 2011-11-05 06:53:13 CET
OK, trying to get around to reviewing this, this weekend.  Is this the latest version?
Comment 12 Alex Lancaster 2011-11-05 07:29:54 CET
Ok, so there are a couple of queries to fix:

1. the rpmlint warning
2. the _isa in the Requires for -devel (as identifed in comment #9).

Everything else looks fine (build successfully in koji).  Please post an updated .spec and I'll do a final check before approving.

Here's the full review:

Key:

x  = passed
?  = needs work
NA = not applicable to this package 

[  ?   ] MUST: rpmlint must be run on the source rpm and all binary rpms the
         build produces. The output should be posted in the review.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint)

# rpmlint libaacs-*
libaacs.x86_64: W: shared-lib-calls-exit /usr/lib64/libaacs.so.0.0.0 exit@GLIBC_2.2.5
libaacs-devel.x86_64: W: no-documentation

Please investigate the shared-lib-call-exit error.
The 'no-documentation' can be ignored.

# rpmlint libaacs-0.2-0.1.20110925gite854d6673ad6c.fc14.src.rpm 
libaacs.src:15: W: macro-in-comment %{git_hash}
libaacs.src:15: W: macro-in-comment %Y
libaacs.src:15: W: macro-in-comment %m
libaacs.src:15: W: macro-in-comment %d
libaacs.src:15: W: macro-in-comment %{git_short}
libaacs.src: W: invalid-url Source0: libaacs-20110925gite854d6673ad6c.tar.bz2
1 packages and 0 specfiles checked; 0 errors, 6 warnings.

These can probably be ignored because they are needed to regenerate
the source tarball

[  x   ] MUST: The package must be named according to the
         http://fedoraproject.org/wiki/Packaging/NamingGuidelines
[  x   ] MUST: The spec file name must match the base package
         <code>%{name}</code>, in the format <code>%{name}.spec</code> unless your
         package has an exemption. (refer to
         http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Spec_file_name).
[  x   ] MUST: The package must meet the
         http://fedoraproject.org/wiki/Packaging/Guidelines.
[  x   ] MUST: The package must be licensed with a Fedora approved license and
         meet the http://fedoraproject.org/wiki/Packaging/LicensingGuidelines.

Yes: LGPLv2+.  Headers show it is v2+, matching the license described.

[  x   ] MUST: The License field in the package spec file must match the actual
         license. (refer to
         http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#ValidLicenseShortNames)

Yes: COPYING is LGPL

[  x   ] MUST: 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 must be included in <code>%doc</code>.(refer to
         http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License Text)
[  x   ] MUST: The spec file must be written in American English. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#summary)
[  x   ] MUST: The spec file for the package '''MUST''' be legible. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Spec_Legibility)
[  NA  ] MUST: The sources used to build the package must match the upstream
         source, as provided in the spec URL. Reviewers should use md5sum for this task.
         If no upstream URL can be specified for this package, please see the
         http://fedoraproject.org/wiki/Packaging/SourceURL for how to deal with
         this.

N/A: Builds from a git snapshot

[  x  ] MUST: The package '''MUST''' successfully compile and build into
         binary rpms on at least one primary architecture. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Architecture_Support)
[  x   ] MUST: If the package does not successfully compile, build or work on
         an architecture, then those architectures should be listed in the spec in
         <code>ExcludeArch</code>. Each architecture listed in <code>ExcludeArch</code>
         '''MUST''' have a bug filed in bugzilla, describing the reason that the package
         does not compile/build/work on that architecture. The bug number '''MUST''' be
         placed in a comment, next to the corresponding <code>ExcludeArch</code> line.
         (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Architecture_Build_Failures)
[  x   ] MUST: All build dependencies must be listed in
         <code>BuildRequires</code>, except for any that are listed in the
         http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2 section of the
         Packaging Guidelines ; inclusion of those as <code>BuildRequires</code> is
         optional. Apply common sense.

BuildRequires OK: Did a successful scratch build on koji:  
http://koji.fedoraproject.org/koji/taskinfo?taskID=3490525

[  NA  ] MUST: The spec file MUST handle locales properly. This is done by
         using the <code>%find_lang</code> macro. Using
         <code>%{_datadir}/locale/*</code> is strictly forbidden.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Handling_Locale_Files)
[  x   ] MUST: Every binary RPM package (or subpackage) which stores shared
         library files (not just symlinks) in any of the dynamic linker's default paths,
         must call ldconfig in <code>%post</code> and <code>%postun</code>. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Shared_Libraries)
[  x   ] MUST: Packages must NOT bundle copies of system libraries.(refer to
         http://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries)
[  NA   ] MUST: If the package is designed to be relocatable, the packager must
         state this fact in the request for review, along with the rationalization for
         relocation of that specific package. Without this, use of Prefix: /usr is
         considered a blocker. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#RelocatablePackages)
[  x   ] MUST: A package must own all directories that it creates. If it does
         not create a directory that it uses, then it should require a package which
         does create that directory.  (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FileAndDirectoryOwnership)
[  x   ] MUST: A Fedora package must not list a file more than once in the spec
         file's %files listings. (Notable exception: license texts in specific
         situations)(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#DuplicateFiles)
[  x   ] MUST: Permissions on files must be set properly. Executables should be
         set with executable permissions, for example. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FilePermissions)
[  x   ] MUST: Each package must consistently use macros. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#macros)
[  x   ] MUST: The package must contain code, or permissable content. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#CodeVsContent)
[  NA  ] MUST: Large documentation files must go in a -doc subpackage. (The
         definition of large is left up to the packager's best judgement, but is not
         restricted to size. Large can refer to either size or quantity). (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#PackageDocumentation)
[  x   ] MUST: If a package includes something as %doc, it must not affect the
         runtime of the application. To summarize: If it is in %doc, the program must
         run properly if it is not present. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#PackageDocumentation)
[  x   ] MUST: Header files must be in a -devel package. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages)
[  NA  ] MUST: Static libraries must be in a -static package. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#StaticLibraries)
[  x   ] MUST: If a package contains library files with a suffix (e.g.
         libfoo.so.1.1), then library files that end in .so (without suffix) must go in
         a -devel package. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages)
[  ?    ] MUST: In the vast majority of cases, devel packages must require the
         base package using a fully versioned dependency: <code>Requires:
         %{name}%{?_isa} = %{version}-%{release} </code> (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#RequiringBasePackage)

Please fix this as per comment #9.

[  x   ] MUST: Packages must NOT contain any .la libtool archives, these must
         be removed in the spec if they are built.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#StaticLibraries)
[  NA  ] MUST: Packages containing GUI applications must include a
         %{name}.desktop file, and that file must be properly installed with
         desktop-file-install in the %install section. If you feel that your packaged
         GUI application does not need a .desktop file, you must put a comment in the
         spec file with your explanation. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#desktop)
[  x   ] MUST: Packages must not own files or directories already owned by
         other packages. The rule of thumb here is that the first package to be
         installed should own the files or directories that other packages may rely
         upon. This means, for example, that no package in Fedora should ever share
         ownership with any of the files or directories owned by the
         <code>filesystem</code> or <code>man</code> package. If you feel that you have
         a good reason to own a file or directory that another package owns, then please
         present that at package review time. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FileAndDirectoryOwnership)
[  x   ] MUST: All filenames in rpm packages must be valid UTF-8. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FilenameEncoding)

[  x   ] SHOULD: If the source package does not include license text(s) as a
         separate file from upstream, the packager SHOULD query upstream to include it.
         (refer to
         http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text)
[  NA  ] SHOULD: The description and summary sections in the package spec file
         should contain translations for supported Non-English languages, if available.
         (refer to http://fedoraproject.org/wiki/Packaging/Guidelines#summary)
[  x   ] SHOULD: The reviewer should test that the package builds in mock.
         (refer to http://fedoraproject.org/wiki/PackageMaintainers/MockTricks)

Done in koji build, see above.

[  x   ] SHOULD: The package should compile and build into binary rpms on all
         supported architectures. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#ArchitectureSupport)

Done: see koji build.

[  x   ] SHOULD: The reviewer should test that the package functions as
         described. A package should not segfault instead of running, for example.

Haven't been able to test as yet, no Blu-ray player.  Not a blocker, however. 

[  x   ] SHOULD: If scriptlets are used, those scriptlets must be sane. This is
         vague, and left up to the reviewers judgement to determine sanity. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Scriptlets)

They look OK (only ldconfig)
 
[  NA  ] SHOULD: Usually, subpackages other than devel should require the base
         package using a fully versioned dependency. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#RequiringBasePackage)
[  x    ] SHOULD: The placement of pkgconfig(.pc) files depends on their
         usecase, and this is usually for development purposes, so should be placed in a
         -devel pkg.  A reasonable exception is that the main pkg itself is a devel tool
         not installed in a user runtime, e.g. gcc or gdb. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#PkgconfigFiles)

Yes: .pc file is in -devel subpackage

[  NA   ] SHOULD: If the package has file dependencies outside of /etc, /bin,
         /sbin, /usr/bin, or /usr/sbin consider requiring the package which provides the
         file instead of the file itself. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FileDeps)
[  NA   ] SHOULD: your package should contain man pages for binaries/scripts. If
         it doesn't, work with upstream to add them where they make sense.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Man_pages)
Comment 13 Xavier Bachelot 2011-11-05 22:26:24 CET
(In reply to comment #12)
> Ok, so there are a couple of queries to fix:
> 
> 1. the rpmlint warning

I don't know how to fix this one. I've searched the sources, but there's no call to exit. I've mailed upstream about this one year ago, but I hadn't had an answer. I'll try again.

> 2. the _isa in the Requires for -devel (as identifed in comment #9).
> 
I fixed this when Richard noted it, but did not upload the spec and srpm.

> Everything else looks fine (build successfully in koji).  Please post an
> updated .spec and I'll do a final check before approving.
> 
Thanks for the review.

Updated spec ans srpm with very latest snapshot :
http://www.bachelot.org/fedora/SPECS/libaacs.spec
http://www.bachelot.org/fedora/SRPMS/libaacs-0.2-0.3.20111105git876f45a3f727e.fc15.src.rpm
Comment 14 Alex Lancaster 2011-11-05 23:49:36 CET
(In reply to comment #13)
> (In reply to comment #12)
> > Ok, so there are a couple of queries to fix:
> > 
> > 1. the rpmlint warning
> 
> I don't know how to fix this one. I've searched the sources, but there's no
> call to exit. I've mailed upstream about this one year ago, but I hadn't had > an answer. I'll try again.

As this is just a warning, this isn't a blocker, but please work with upstream to fix this.   If you open up a ticket/bug report/email thread, please post a link to it here and in the spec file before you upload/build the package for the first time.

> > 2. the _isa in the Requires for -devel (as identifed in comment #9).
> > 
> I fixed this when Richard noted it, but did not upload the spec and srpm.

Thanks, looks good.

> Thanks for the review.
> 
> Updated spec ans srpm with very latest snapshot :
> http://www.bachelot.org/fedora/SPECS/libaacs.spec
> http://www.bachelot.org/fedora/SRPMS/libaacs-0.2-0.3.20111105git876f45a3f727e.fc15.src.rpm

All blockers addressed, so this package is:

APPROVED
Comment 15 Xavier Bachelot 2011-11-06 10:34:55 CET
Package CVS request
======================
Package Name: libaacs
Short Description: Open implementation of AACS specification
Owners: xavierb
Branches: f15 f16 el5 el6
InitialCC:
----------------------
License tag: free
Comment 16 Xavier Bachelot 2011-11-06 23:18:04 CET
Imported and built for F-16, F-15, EL-6 and EL-5.

The EL-5 build failed, I'll take a look later.

For the record, here's the thread about the shared-lib-calls-exit issue. I forgot to add the link into the spec before importing/building, but will do for the next release.
http://mailman.videolan.org/pipermail/libaacs-devel/2011-November/000100.html

Thanks all.