Bug 849026 - Review Request: jam-control - audioserver gui app
Review Request: jam-control - audioserver gui app
Status: CLOSED NEXTRELEASE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Mario Blättermann
Fedora Extras Quality Assurance
:
Depends On:
Blocks: FedoraAudio
  Show dependency treegraph
 
Reported: 2012-08-17 02:03 EDT by Jørn Lomax
Modified: 2012-11-03 16:27 EDT (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2012-11-03 16:27:19 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
mario.blaettermann: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Jørn Lomax 2012-08-17 02:03:58 EDT
Spec URL: http://jvlomax.fedorapeople.org/jam-control.spec
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.0-1.fc17.src.rpm
Description: Gui app to controll audio servers
Fedora Account System Username: jvlomax

rpmlint jam-control.spec 
jam-control.spec: W: no-%build-section

rpmlint ../SRPMS/jam-control-1.0-1.fc17.src.rpm 
jam-control.src: W: spelling-error %description -l en_US pulseaudio -> pulse audio, pulse-audio, pulsed
jam-control.src: W: no-url-tag
jam-control.src: W: no-%build-section
1 packages and 0 specfiles checked; 0 errors, 3 warnings.

There is no build-section because the application doesn't need it
Comment 1 Mario Blättermann 2012-08-19 14:30:21 EDT
You might drop python from "Requires" because it is needed by PyQt4 anyway.

(In reply to comment #0)
> ...
> jam-control.src: W: no-url-tag
> jam-control.src: W: no-%build-section
> 1 packages and 0 specfiles checked; 0 errors, 3 warnings.
> 
> There is no build-section because the application doesn't need it

Just add it and leave it empty to make rpmlint happy again.

In any case, you have to add an URL of the upstream project. Since you are the upstream author, create a homepage at Github, Fedorahosted or anywhere else. Would be better in any case to see the development in particular.
Comment 2 Jørn Lomax 2012-08-19 14:54:49 EDT
Spec URL: http://jvlomax.fedorapeople.org/jam-control.specg
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.0-2.fc17.src.rpm

rpmlint runs clean (1 "spelling error")
Comment 3 Mario Blättermann 2012-08-19 15:26:22 EDT
There's a typo in the spec url, removing the trailing "g" leads to the valid spec. I will have a deeper look into your spec tomorrow.
Comment 4 Brendan Jones 2012-08-19 20:13:33 EDT
Hi Jørn 

I think you may need Requires: pulseaudio-utils and Requires: jack-audio-connection-kit as there's no way for RPM to pick up those runtime dependencies due to os calls. Goes for anything else you don't explicity check for the presence of in your program.

Spotted a typo builroot in one of your macros and you need to rename your dektop file.

+ install -p -m 755 jackController.py jackDbusController.py jam-control.py main_ui.py pulseController.py util.py /home/bsjones/rpmbuild/BUILDROOT/jam-control-1.0-2.fc17.x86_64/usr/share/jam-control
+ mkdir -p /home/bsjones/rpmbuild/BUILDROOT/jam-control-1.0-2.fc17.x86_64/usr/share/applications
+ desktop-file-install --vendor fedora --dir /home/bsjones/rpmbuild/BUILDROOT/jam-control-1.0-2.fc17.x86_64/usr/share/applications dist/jam-control.desktop
Error on file "dist/jam-control.desktop": No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.x4YfYe (%install)

Apart from that looks good
Comment 5 Brendan Jones 2012-08-19 20:49:18 EDT
PS: always I good idea to bump the tarball minor/bug relase when you make changes within

I had to remove the --vendor tag in the dektop file install to get it named properly. There's a a few desktop-file-install warnings you should address as well

There's a different module path in /usr/bin/jam-control (/usr/share/fedora-audio-control) that needs amending
Comment 6 Jørn Lomax 2012-08-20 06:34:54 EDT
>I think you may need Requires: pulseaudio-utils and Requires: jack-audio->connection-kit as there's no way for RPM to pick up those runtime dependencies >due to os calls. Goes for anything else you don't explicity check for the >presence of in your program.

The app does check for the presence of these at runtime, so there is no requirement for them to be present. 

>PS: always I good idea to bump the tarball minor/bug relase when you make >changes within

And i always do when i actually make changes to the source code


All the problems have noe been fixed

Spec URL: http://jvlomax.fedorapeople.org/jam-control.spec 
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.01-1.fc17.src.rpm
Comment 7 Mario Blättermann 2012-08-21 15:57:14 EDT
(In reply to comment #6)
>> I think you may need Requires: pulseaudio-utils and Requires: jack-audio-
>> connection-kit as there's no way for RPM to pick up those runtime dependencies
>> due to os calls. Goes for anything else you don't explicity check for the
>> presence of in your program.
> 
> The app does check for the presence of these at runtime, so there is no
> requirement for them to be present. 
> 
But if this check fails, the app doesn't start...? No good idea actually. If it doesn't run without those deps, it is buggy. Please add all it needs to "Requires", unless it is optional.
Comment 8 Jørn Lomax 2012-08-21 16:01:49 EDT
It will boot just fine without either pulse and/or jack. The app will have two greyed out buttons and won't do anything if you don't have either installed. But what would be the point of installing this app if you don't have any sound servers installed?
Comment 9 Mario Blättermann 2012-08-21 16:14:34 EDT
Doesn't make sense. An application shouldn't require some interactive post-install action to make it usable. Well, there's a way to let users choose from either the one or the other requirement, but this is when a needed unique requirement is provided by two or more packages. A typical case are "clean" packages from Fedora itself and somewhat "dirty" packages from RPMfusion. But there's no way known to me to users let choose from more than one dependency (correct me if I'm wrong).

An alternative way to get satisfy users is the app itself. Maybe you could add an "first time assistant" which enforces the user (who is also sysadmin in many cases) to install one of the needed sound servers. Sorry, I haven't tested your application, perhaps you have it already implemented.
Comment 10 Brendan Jones 2012-08-22 00:31:49 EDT
(In reply to comment #8)
> It will boot just fine without either pulse and/or jack. The app will have
> two greyed out buttons and won't do anything if you don't have either
> installed. But what would be the point of installing this app if you don't
> have any sound servers installed?

I think this should be OK. IT is perfectly reasonable that someone would have neither installed and simply use ALSA, although the way it stands at the moment the app would not be very useful. I remember you mentioning that the scope of the app may include tweaks to ALSA/a.soundrc and other config options down the track so this might change. 

As this app is aimed more at novice users I would expect thatp pulseaudio is going to be present in any case.
Comment 11 Mario Blättermann 2012-08-23 08:02:30 EDT
(In reply to comment #10)
> As this app is aimed more at novice users I would expect thatp pulseaudio is
> going to be present in any case.

"Requires" is for adding requirements which are needed at runtime. Please add there all what is really required and don't assume that is anything present anyway. Assuming something for a common system is the contrary of clean and proper packaging. A sound server gui without to force at least one sound server to have installed doesn't make sense.
Comment 12 Jørn Lomax 2012-08-28 03:21:46 EDT
I added pulseaudio to the requirements

Spec URL: http://jvlomax.fedorapeople.org/jam-control.spec 
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.01-2.fc17.src.rpm
Comment 13 Mario Blättermann 2012-10-04 18:14:07 EDT
Taking this for a full review.
Comment 14 Mario Blättermann 2012-10-05 16:19:21 EDT
Scratch build:
koji.fedoraproject.org/koji/taskinfo?taskID=4564142


$ rpmlint -i -v *
jam-control.src: I: checking
jam-control.src: W: spelling-error %description -l en_US pulseaudio -> pulse audio, pulse-audio, pulsation
The value of this tag appears to be misspelled. Please double-check.

jam-control.src: I: checking-url https://gitorious.org/jam-control (timeout 10 seconds)
jam-control.src: I: checking-url http://jvlomax.fedorapeople.org/jam-control/jam-control-1.01.tar.gz (timeout 10 seconds)
jam-control.noarch: I: checking
jam-control.noarch: I: checking-url https://gitorious.org/jam-control (timeout 10 seconds)
jam-control.noarch: W: no-manual-page-for-binary jam-control
Each executable in standard binary directories should have a man page.

jam-control.spec: I: checking-url http://jvlomax.fedorapeople.org/jam-control/jam-control-1.01.tar.gz (timeout 10 seconds)
2 packages and 1 specfiles checked; 0 errors, 2 warnings.

Seems to be OK so far (excepting the missing man page, which to fix is not up to you with your packager's hat on), but build.log says:

warning: File listed twice: /usr/share/jam-control/jackController.py
warning: File listed twice: /usr/share/jam-control/jackDbusController.py
warning: File listed twice: /usr/share/jam-control/jam-control.py
warning: File listed twice: /usr/share/jam-control/main_ui.py
warning: File listed twice: /usr/share/jam-control/pulseController.py
warning: File listed twice: /usr/share/jam-control/util.py

In your %files list, there's the line

%{_datadir}/%{name}

which means the folder itself and its contents. This is followed by explicit files, which leads to duplicate listings. Either use

%dir %{_datadir}/%{name}

or omit the specific files.
Comment 15 Ian Malone 2012-10-12 20:21:32 EDT
Python dependencies: I ran into some issues over this. The rpm was being built with these dependencies:
rpm -qRp ~/build/RPMS/jam-control-1.01-2.fc18.noarch.rpm 
/bin/python
/bin/sh
/bin/sh
/bin/sh
PyQt4
hicolor-icon-theme
pulseaudio
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1

- this was okay if installing directly, but when trying to build a livecd /bin/python wasn't being identified correctly and getting me this error:
Error creating Live CD : Failed to build transaction : jam-control-1.01-2.fc18.noarch requires /bin/python
(yes, whatprovides was finding it okay, maybe the real bug here is somewhere else)

The /bin/python dependency is actually picked up straight from the shebangs at the top of the scripts by rpmbuild. I've actually just managed to work around it by sed-ing them back to /usr/bin/python. Not sure what the correct fix should be (and it could probably be done at either the spec or source level).
Comment 16 Jørn Lomax 2012-10-14 06:22:40 EDT
Sorry for the long delay in responding. I have fixed the file ownership problem, but I'm wondering if it would be ok just to add python as a requirement to fix the last issue?
Comment 17 Mario Blättermann 2012-10-14 11:29:52 EDT
There are still one issue to be fixed:

(In reply to comment #14)
> warning: File listed twice: /usr/share/jam-control/jackController.py
> warning: File listed twice: /usr/share/jam-control/jackDbusController.py
> warning: File listed twice: /usr/share/jam-control/jam-control.py
> warning: File listed twice: /usr/share/jam-control/main_ui.py
> warning: File listed twice: /usr/share/jam-control/pulseController.py
> warning: File listed twice: /usr/share/jam-control/util.py
> 
> In your %files list, there's the line
> 
> %{_datadir}/%{name}
> 
> which means the folder itself and its contents. This is followed by explicit
> files, which leads to duplicate listings. Either use
> 
> %dir %{_datadir}/%{name}
> 
> or omit the specific files.


Regarding the problem mentioned in comment #15:

#!/bin/python

Such hardcoded paths don't make sense. Better:

#!/usr/bin/env python

or even

#!/usr/bin/env python2 (which is eventually not usable for all distributions)
Comment 18 Jørn Lomax 2012-10-14 18:23:35 EDT
Spec URL: http://jvlomax.fedorapeople.org/jam-control.spec
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.02-3.fc17.src.rpm

It took me a while to realise it, but yes! It's not supposed to be /bin/python, it was supposed to be /usr/bin/python. Thanks for spotting that!
Comment 19 Mario Blättermann 2012-10-15 14:06:32 EDT
Still a small issue:

* Sun Oct 14 2012 Jørn Lomax <northlomax@gmail.com> 1.01-3

Besides that you have the wrong upstream version in the changelog: You have to bump the release tag each time you change something, but this refers only to a certain upstream version. Once the version number has changed, you have to set the release tag back to 1.
Comment 20 Jørn Lomax 2012-10-21 13:44:01 EDT
Spec URL: http://jvlomax.fedorapeople.org/jam-control.spec
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.02-1.fc17.src.rpm

Jepp, this is true. In my haste i forgot to fix that. Fixed now, sorry for the long wait
Comment 21 Brendan Jones 2012-10-21 14:06:24 EDT
Hey Jorn,

just a couple of warnings in your desktop file install:

+ desktop-file-install --dir /home/bsjones/rpmbuild/BUILDROOT/jam-control-1.02-1.fc18.x86_64/usr/share/applications dist/jam-control.desktop
/home/bsjones/rpmbuild/BUILDROOT/jam-control-1.02-1.fc18.x86_64/usr/share/applications/jam-control.desktop: error: (will be fatal in the future): value "application-default-icon.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path
/home/bsjones/rpmbuild/BUILDROOT/jam-control-1.02-1.fc18.x86_64/usr/share/applications/jam-control.desktop: error: (will be fatal in the future): value "Audio" in key "Categories" in group "Desktop Entry" requires another category to be present among the following categories: AudioVideo

I'd add X-Jack;X-AudioVideoTools; to the categories. It will add it to the Jack and Tools submenus of the multimedia menus
Comment 22 Jørn Lomax 2012-10-28 09:37:20 EDT
Spec URL: http://jvlomax.fedorapeople.org/jam-control.spec
SRPM URL: http://jvlomax.fedorapeople.org/jam-control-1.03-1.fc17.src.rpm

Fixed the above issues and uploaded the updated stuff. I guess third release is a charm ;)
Comment 23 Mario Blättermann 2012-10-28 12:35:55 EDT
Scratch build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=4633650


$ rpmlint -i -v *
jam-control.src: I: checking
jam-control.src: W: spelling-error %description -l en_US pulseaudio -> pulse audio, pulse-audio, audiovisuals
The value of this tag appears to be misspelled. Please double-check.

jam-control.src: I: checking-url https://gitorious.org/jam-control (timeout 10 seconds)
jam-control.src: I: checking-url http://jvlomax.fedorapeople.org/jam-control/jam-control-1.03.tar.gz (timeout 10 seconds)
jam-control.noarch: I: checking
jam-control.noarch: I: checking-url https://gitorious.org/jam-control (timeout 10 seconds)
jam-control.noarch: W: no-manual-page-for-binary jam-control
Each executable in standard binary directories should have a man page.

jam-control.spec: I: checking-url http://jvlomax.fedorapeople.org/jam-control/jam-control-1.03.tar.gz (timeout 10 seconds)
2 packages and 1 specfiles checked; 0 errors, 2 warnings.

No recognizable issues.


---------------------------------
key:

[+] OK
[.] OK, not applicable
[X] needs work
---------------------------------

[+] MUST: rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review.
[+] MUST: The package must be named according to the Package Naming Guidelines.
[+] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption.
[+] MUST: The package must meet the Packaging Guidelines.
[+] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines.
[+] MUST: The License field in the package spec file must match the actual license.
    GPLv3+
[+] 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 %doc.
[+] MUST: The spec file must be written in American English.
[+] MUST: The spec file for the package MUST be legible.
[+] MUST: The sources used to build the package must match the upstream source, as provided in the spec URL. Reviewers should use sha256sum for this task as it is used by the sources file once imported into git. If no upstream URL can be specified for this package, please see the Source URL Guidelines for how to deal with this.
    $ sha256sum *
    585c68c2e8321dc662b12320bc48a1d949f24008f163fca567081284dedc1711  jam-control-1.03.tar.gz
    585c68c2e8321dc662b12320bc48a1d949f24008f163fca567081284dedc1711  jam-control-1.03.tar.gz.orig

[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture.
[.] MUST: If the package does not successfully compile, build or work on an architecture, then those architectures should be listed in the spec in ExcludeArch. Each architecture listed in ExcludeArch 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 ExcludeArch line.
[+] MUST: All build dependencies must be listed in BuildRequires, except for any that are listed in the exceptions section of the Packaging Guidelines ; inclusion of those as BuildRequires is optional. Apply common sense.
[.] MUST: The spec file MUST handle locales properly. This is done by using the %find_lang macro. Using %{_datadir}/locale/* is strictly forbidden.
[.] 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 %post and %postun.
[.] MUST: Packages must NOT bundle copies of system libraries.
[.] 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.
[+] 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.
[+] 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)
[+] MUST: Permissions on files must be set properly. Executables should be set with executable permissions, for example.
[+] MUST: Each package must consistently use macros.
[+] MUST: The package must contain code, or permissable content.
[.] 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).
[+] 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.
[.] MUST: Static libraries must be in a -static package.
[.] MUST: Development files must be in a -devel package.
[.] MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name}%{?_isa} = %{version}-%{release}
[.] MUST: Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built.
[+] 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.
[+] 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 filesystem or man 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.
[+] MUST: All filenames in rpm packages must be valid UTF-8.


[.] 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.
[.] SHOULD: The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available.
[+] SHOULD: The reviewer should test that the package builds in mock.
    See Koji build above (which uses Mock anyway).
[+] SHOULD: The package should compile and build into binary rpms on all supported architectures.
[.] SHOULD: The reviewer should test that the package functions as described. A package should not segfault instead of running, for example.
[.] SHOULD: If scriptlets are used, those scriptlets must be sane. This is vague, and left up to the reviewers judgement to determine sanity.
[.] SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency.
[.] 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.
[.] 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.
[.] SHOULD: your package should contain man pages for binaries/scripts. If it doesn't, work with upstream to add them where they make sense.

----------------

PACKAGE APPROVED

----------------
Comment 24 Jørn Lomax 2012-10-28 18:13:42 EDT
New Package SCM Request
=======================
Package Name: jam-control
Short Description: Audioserver control gui
Owners: jvlomax
Branches: f17 f18 
InitialCC:
Comment 25 Gwyn Ciesla 2012-10-29 09:10:34 EDT
Git done (by process-git-requests).

Note You need to log in before you can comment on or make changes to this bug.