Bug 229910 - Review Request: Conmux - Console Multiplexor, abstracts how to connect via backend drivers.
Summary: Review Request: Conmux - Console Multiplexor, abstracts how to connect via ba...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jarod Wilson
QA Contact: Fedora Package Reviews List
URL:
Whiteboard:
Depends On:
Blocks: FE-ACCEPT
TreeView+ depends on / blocked
 
Reported: 2007-02-24 03:13 UTC by Bill Peck
Modified: 2007-11-30 22:11 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-06-04 20:42:12 UTC
Type: ---
Embargoed:
jarod: fedora-review+
wtogami: fedora-cvs+


Attachments (Terms of Use)

Description Bill Peck 2007-02-24 03:13:23 UTC
Spec URL: http://people.redhat.com/bpeck/conmux/conmux.spec
SRPM URL: http://people.redhat.com/bpeck/conmux/conmux-svn.484-1.src.rpm

This is my first package for Extras and I'm seeking a sponsor

Description: 

Conmux is a console management program designed to support a large
number of console devices and simultaneous users.  It currently supports
IBM's blade and hmc servers.

Its features include:

  - driver interface abstracts how to connect to the console
  - helpers for dealing with autobooting
  - can support additional commands for dealing with power management
  - allows multiple clients to be connected to the same console

Comment 1 manuel wolfshant 2007-02-24 11:15:16 UTC
The value you have selected for %{version} is a bit incorrect. Please read in
http://fedoraproject.org/wiki/Packaging/NamingGuidelines the sections on
"Non-Numeric Version in Release" and most specifically "Pre-Release packages".
The  schema you have used will fail to properly upgrade to a newer, stable
(non-svn) version of the software.
Also, when using sources obtained from a cvs/svn repository, you should document
the method to be used by an independent tester in order to recreate the same
%source as you have used. In this particular case you could for instance include
the instructions from http://test.kernel.org/autotest/QuickStart and timestamp
them, so as to make sure a tester will retrieve the same version as the one you
have included.

The last line in %files is
%{_libdir}/conmux/*
This makes the package architecture-dependent (so it cannot be a -noarch). More
then that, build fails on x86_64 with the following error:
RPM build errors:Processing files: conmux-svn.484-1.fc6
error: File not found by glob:
/var/tmp/conmux-svn.484-1.fc6-root-mockbuild/usr/lib64/conmux/*


Comment 2 Bill Peck 2007-02-26 17:06:40 UTC
Thank you for the feedback.  I've updated the spec file and the patches with
your suggestions.

http://people.redhat.com/bpeck/conmux/conmux-0-0.1.r484.src.rpm
http://people.redhat.com/bpeck/conmux/conmux-0.1.r484.tar.gz
http://people.redhat.com/bpeck/conmux/conmux.spec

version-release is now: 0-0.1.r484

comment in the spec file on how to check out this version of conmux from svn.

and I moved the drivers/helpers from /usr/lib/conmux to /usr/share/conmux since
they are just expect/perl/python scripts.



Comment 3 manuel wolfshant 2007-02-26 19:08:40 UTC
Offenders at the first sight:

- I think it would have been better if you have used 
version=0 (or even 0.0..)
release=0.484svn <-- the leading 0 would be used as release tag and increased
for each new version of the spec (for a given snapshot release)
This way the fact that we are dealing with svn snapshots is clearly indicated,
even for those which do not examine the spec or do an actual checkout
- The changelog should contain an entry for the current version; for the moment
there is just one entry which speaks about 0-0.1.20070223svn while the submitted
package is 0-0.1.r484; if 20070223svn and 0.1.r484 are one and the same, please
edit the changelog to fit (do not forget to increase the release tag each time
you submit a new form of the spec file!)
- the license tag should be just "GPL" rather then "GPLv2"
- location of the Conmux.pm in conmux-common does not seem right, the site_perl
directory should be one level higher then the one you install to:
#ll  /usr/lib/perl5/
5.8.5/       5.8.6/       5.8.7/       5.8.8/       site_perl/   vendor_perl/
while your spec creates:
#rpm -qlp conmux-common-0-0.1.r484.fc6.noarch.rpm
/etc/conmux/conmux.conf
/usr/lib/perl5/site_perl/5.8.8/Conmux.pm
- the conmux package includes the whole /etc/conmux directory, overlapping with
conmux-common which includes /etc/conmux/conmux.conf; at install time they would
conflict
- the -client and -common packages are missing the mandatory %defattr line
- since you use service and chkconfig to add/remove the Conmux service, you must
add requirements for them (see the packaging guidelines for details on scriptlets)
- if the /etc/init.d/conmux script would contain restart/reload sections,
rpmlint would be happier (that's a nice-to-have, not a must)
- you create /var/log/conmux; it would be nice if you would also provide a means
for logrotate to handle it. However this is open for debate because you'll need
to %Require logrotate, which OTOH some people might prefer to not use (or
replace with something else).

 As a sidenote, I think that the name "console" used by the client is a bit too
generic and might clash with other console clients


Comment 4 Bill Peck 2007-02-26 20:16:29 UTC

Thanks for the additional feedback.  The spec and srpm have been updated.

- Renamed the versioning again 

- and fixed the changelog entry to match.  Oops

- License fixed to GPL (although I would think people will want to specify)

- I'm unclear how I can fix the Conmux.pm since I'm using the rpm macro to
install it.  
%{perl_sitelib}/Conmux.pm

- Fixed the overlapping /etc/conmux/conmux.conf in both base and common.

- Fixed %defattr for common and client

- Added the requires for chkconfig and service

- I'm currently using the maintainers init script with a small patch for
chkconfig.  I'd like to redo it but its a fairly invasive change that would
require a lot of testing

- added logrotate pieces

- I could change the name but this is the name in the upstream package.

Comment 5 Jarod Wilson 2007-02-26 21:14:17 UTC
Ugh. The package conserver-client contains a /usr/bin/console also. It was there
first, so gotta do something to prevent the namespace collision. I'd probably
make /usr/sbin/conmux into /usr/sbin/conmuxd and make /usr/bin/console into
/usr/bin/conmux.

Question on the Requires: does the base conmux server portion really *require*
the client to be installed to function? If not, I'd say drop that hard Requires.

A few of the comments should be altered slightly, you have "put in our own
initscript and logrotate", but the first file installed is the config file, not
the initscript. Note that the conf file getting installed mode 0644 there also
eliminates the need for the "adjust perms on main config file" comment and
following line.

Not really sure what to do about the .pm file, I try not to touch or even think
about perl... :)

Also, as you update the package from here out, go ahead and bump the package
version each time, along with corresponding changelog entries illustrating
what's been done -- helps make it clear what's been done when, makes it easier
for reviewers to figure out which revision of the package they've got, etc.

Comment 6 Bill Peck 2007-02-26 21:59:40 UTC
http://people.redhat.com/bpeck/conmux/conmux-0-2.484svn.src.rpm
http://people.redhat.com/bpeck/conmux/conmux.spec

conmux renamed to conmuxd
console renamed to conmux

removed erroneous chmod command.

The service conmux status calls console (or conmux now) so the requires on
client is valid.

Comment 7 Bill Peck 2007-03-05 19:14:41 UTC
http://people.redhat.com/bpeck/conmux/conmux-0-1.493svn.src.rpm
http://people.redhat.com/bpeck/conmux/conmux.spec

Updated to newer upstream, dropped socket patch.
Updated perl_sitelib to perl_vendorlib

Can anyone see anything else that I need to fix?

Comment 8 manuel wolfshant 2007-03-05 20:23:17 UTC
Quick glance:
- GOOD: package builds fine in mock/devel/x86_64
- estethic :
[wolfy@wolfy conmux]$ rpmlint conmux-0-1.493svn.fc7.src.rpm
W: conmux mixed-use-of-spaces-and-tabs (spaces: line 21, tab: line 1)
The fix is obvious...
- MUSTFIX:
rpmlint conmux-0-1.493svn.fc7.noarch.rpm
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/text-base/README.svn-base
W: conmux hidden-file-or-dir /usr/share/doc/conmux-0/examples/.svn
W: conmux hidden-file-or-dir /usr/share/doc/conmux-0/examples/.svn
E: conmux version-control-internal-file /usr/share/doc/conmux-0/examples/.svn/props
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/prop-base/direct.cf.svn-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/tmp/prop-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/text-base/command.cf.svn-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/prop-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/text-base/socket.cf.svn-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/prop-base/socket.cf.svn-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/text-base/direct.cf.svn-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/tmp/text-base
E: conmux version-control-internal-file /usr/share/doc/conmux-0/examples/.svn/format
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/tmp/props
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/prop-base/command.cf.svn-base
E: conmux version-control-internal-file /usr/share/doc/conmux-0/examples/.svn/tmp
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/prop-base/README.svn-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/text-base
E: conmux version-control-internal-file
/usr/share/doc/conmux-0/examples/.svn/entries

Since there are a couple of other useless .svn directories, I suggest using
something similar to " find /path -name .svn -type d -exec rm -fR {} \;" in
order to remove all of them.
- other messages from rpmlint:
W: conmux no-reload-entry /etc/init.d/conmux
This one can be ignored

E: conmux subsys-not-used /etc/init.d/conmux
I admit I cannot figure out why does rpmlint complain here

- rpmlint warns about no docs in -common and -client. Those can be safely ignored.

- The name of the doc folder is "/usr/share/doc/conmux-0". Is the ending "-0"
really intended? If yes, why? If not...
- Timestamps of the scripts (init.d / logrotate) are not preserved at install
time. Usually adding INSTALL="%{__install} -p" to "make install" fixes that.


Comment 9 Bill Peck 2007-03-05 22:06:46 UTC
http://people.redhat.com/bpeck/conmux/conmux-0.1-2.493svn.src.rpm
http://people.redhat.com/bpeck/conmux/conmux.spec

Ok, I'm finally getting it through my thick skull to run rpmlint *everytime* I
make a change no matter how small. 

- fixed all spaces to be tabs
- removed all .svn entries from the upstream tarball
- I believe I've fixed all install and cp to always use the -p option
- the doc folder is appended the version, which has been 0.  I've changed the
version to 0.1  This doesn't really matter since there has been no upstream release.

Thanks!

Comment 10 Jarod Wilson 2007-03-06 15:28:16 UTC
Actually, calling it v0.1 could be a problem if upstream does finally put out a
release, and decides to call it something like 0.0.1.

I believe the subsys-not-used bit in the rpmlint output is somehow related to
the use (or non-use) of /var/lock/subsys/ for a lockfile to help the initscript
know when the daemon has been launched.

Comment 11 Paul Howarth 2007-03-07 17:32:27 UTC
$ rpmlint -I subsys-not-used
subsys-not-used :
While your daemon is running, you have to put a lock file in
/var/lock/subsys/. To see an example, look at this directory on your
machine and examine the corresponding init scripts.


Comment 12 Jarod Wilson 2007-03-09 15:31:07 UTC
I'm going to officially take this review now and see it through to completion.
Bill, you mentioned the upstream initscript is a mess... Since we've got some
work to do on it anyway to add proper lock support, how do you feel about going
whole hog and creating a nice, clean, sane initscript?

Comment 13 Bill Peck 2007-03-09 22:51:18 UTC
I was thinking the same thing.  I'm hoping to have an init script ready by
Monday.  The upstream version is far from simple since they spawn a seperate
process per config file.  If you have any suggestions on how to model it so
condreload will work I'm all ears. ;-)

Comment 14 Jarod Wilson 2007-03-10 05:06:10 UTC
(In reply to comment #13)
> I was thinking the same thing.  I'm hoping to have an init script ready by
> Monday.

Eep! How much work have you done already on the initscript? I started in on the same thing earlier 
today... 
:)


> The upstream version is far from simple since they spawn a seperate
> process per config file.  If you have any suggestions on how to model it so
> condreload will work I'm all ears. ;-)

Hrm... No suggestions on that front just yet. Only additional suggestion I've got at the moment is to 
maybe collapse the package down into just conmux instead of conmux, conmux-common and 
conmux-client, since the sub-packages are so small (and required by the main package anyhow).

Comment 15 Bill Peck 2007-03-13 19:34:08 UTC
http://people.redhat.com/bpeck/conmux/conmux.spec

Changed version from 0.1 to 0.0.
merged common and client subpackage.


Comment 16 Bill Peck 2007-03-15 00:29:05 UTC
http://people.redhat.com/bpeck/conmux/conmux.spec
http://people.redhat.com/bpeck/conmux/conmux-0.0-4.493svn.src.rpm

- Includes Jarod's new init script. But I get this warning:
[bpeck@localhost SPECS]$ rpmlint
/home/bpeck/myBuild/RPMS/noarch/conmux-0.0-4.493svn.noarch.rpm
W: conmux incoherent-subsys /etc/init.d/conmux $DAEMON

I also get this error on the noarch

[bpeck@localhost SPECS]$ rpmlint
/home/bpeck/myBuild/SRPMS/conmux-0.0-4.493svn.src.rpm
W: conmux unversioned-explicit-obsoletes conmux-common
W: conmux unversioned-explicit-provides conmux-common

Not sure if I did the obsoletes correctly.

Comment 17 Jarod Wilson 2007-03-15 02:09:01 UTC
Check out the output of rpmlint -i for further information on stuff it prints out. This one is partially that 
rpmlint isn't tracking $DAEMON back to its value conmuxd, though if it did, it would probably complain 
because the initscript name is conmux while the lockfile is conmuxd. Probably okay to ignore this one, 
but lemme give you a slightly updated initscript that'll silence that just the same. Well, that or you could 
just update it. Basically, just change 'LOCK=/var/lock/subsys/$DAEMON' to 'LOCK=/var/lock/subsys/
conmux'.

The obsoletes/provides pair should indeed be versioned, like so:
Obsoletes:      conmux-common < %{version}-%{release}
Provides:       conmux-common = %{version}-%{release}

More review fun tomorrow, time for some commerial-free, pre-recorded HDTV viewing... ;)

Comment 18 Jarod Wilson 2007-03-15 02:13:46 UTC
Just noticed something else in the spec: its got 'service conman condrestart' instead of 'service conmux 
condrestart'... :)

Comment 19 Bill Peck 2007-03-15 12:36:59 UTC
http://people.redhat.com/bpeck/conmux/conmux.spec
http://people.redhat.com/bpeck/conmux/conmux-0.0-5.493svn.src.rpm

Fixed obsoletes/provides
updated init script
and service conmuxd condrestart, gee wonder what spec file I was looking at. ;-)

Comment 20 Jarod Wilson 2007-03-15 14:08:46 UTC
> gee, wonder what spec file I was looking at. ;-)

I have absolutely no idea. :D

Here's the results of a full pass over the spec and resulting packages:

* source files match upstream: n/a, its an svn checkout

* package meets naming and versioning guidelines
* specfile is properly named, is cleanly written and uses macros consistently
  - only consistency issue I see is 'rm -rf $RPM_BUILD_ROOT' in one place, but
'rm -rf "$RPM_BUILD_ROOT"' in another, which is inconsequential, but you get
extra style points if they're made to match. :)

* dist tag is present
* build root is acceptable
      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
* license field matches the actual license: GPL
* license is open source-compatible: GPL License text included in package.
* latest version is being packaged: no release version yet, acceptable use of
svn checkout
* BuildRequires are proper
* compiler flags are appropriate: n/a, its perl noarch stuff
* %clean is present
* package builds in mock (F7/x86_64)
* package installs properly
* debuginfo package looks complete: n/a, its noarch
* rpmlint is silent:
  - only a W: for conmux-client containing no docs. You *could* add the main
README to the conmux-client sub-package if desired (could be useful in the case
where a system only has the client), but its not a requirement.
* final provides and requires are sane:
  conmux provides:
  ----------------
  config(conmux) = 0.0-5.493svn.fc6
  conmux = 0.0-5.493svn.fc6

  conmux requires:
  ----------------
  config(conmux) = 0.0-5.493svn.fc6
  conmux-client = 0.0-5.493svn.fc6
  logrotate  
  perl  
  perl(Conmux)  
  perl(Getopt::Long)  
  perl(IO::Multiplex)  
  perl(IO::Socket)  
  perl(IPC::Open3)  
  perl(Net::Domain)  
  perl(Symbol)  
  perl(URI::Escape)  
  perl(base)  
  perl(lib)  
  perl(strict)

  conmux-client provides:
  -----------------------
  config(conmux-client) = 0.0-5.493svn.fc6
  conmux-common = 0.0-5.493svn.fc6
  perl(Conmux)  
  perl(Conmux::Registry)  
  conmux-client = 0.0-5.493svn.fc6

  conmux-client requires:
  -----------------------
  /usr/bin/perl  
  config(conmux-client) = 0.0-5.493svn.fc6
  perl(Conmux)  
  perl(Getopt::Long)  
  perl(IO::Socket)  
  perl(POSIX)  
  perl(URI::Escape)

  Looks sane enough to me.

* %check is present and all tests pass: n/a
* no shared libraries are added to the regular linker search paths
* owns the directories it creates
* doesn't own any directories it shouldn't
* no duplicates in %files
* file permissions are appropriate
* scriptlets are appropriate
* code, not content
* documentation is small, so no -docs subpackage is necessary
* %docs are not necessary for the proper functioning of the package.
* no headers
* no pkgconfig files
* no libtool .la droppings
* not a GUI app

Only the two minor (non-blocking) issues I raised above, so this package is
APPROVED, and I'll sponsor you. Next up, you need to create an account in the
Fedora Account System and jump through a few hoops to get to the point where you
can check the package in to be built. Basically, continue from here:

http://fedoraproject.org/wiki/Extras/Contributors#head-a89c07b5b8abe7748b6b39f0f89768d595234907

Comment 21 manuel wolfshant 2007-03-15 14:51:54 UTC
ref 
>* source files match upstream: n/a, its an svn checkout
As far as I have understood (please correct me if I am wrong) here "n/a" is not
correct: the reviewer is supposed to do a svn checkout of the same tag
(instructions for that should be included as comment in the spec) and compare
with the file included in the src.rpm. If not the tar.gz, at least a diff -r
should coincide...

Comment 22 manuel wolfshant 2007-03-15 14:53:55 UTC
Jarod, since you have decided to sponsor Bill, the FE-NEEDSPONSOR flag should be
removed.

Comment 23 Jarod Wilson 2007-03-15 15:13:54 UTC
(In reply to comment #21)
> ref 
> >* source files match upstream: n/a, its an svn checkout
> As far as I have understood (please correct me if I am wrong) here "n/a" is not
> correct: the reviewer is supposed to do a svn checkout of the same tag
> (instructions for that should be included as comment in the spec) and compare
> with the file included in the src.rpm. If not the tar.gz, at least a diff -r
> should coincide...

I believe you're correct. I was thinking n/a, since there's no upstream tarball
to grab, but yeah, diff'ing svn checkouts should be done in place of tarball
checksumming.

$ diff -r conmux conmux-r493
Only in conmux-r493/drivers: .svn
Only in conmux-r493/examples: .svn
Only in conmux-r493/helpers: .svn
Only in conmux-r493: .svn

Bill's tarball has the .svn dirs removed, which is fine, and everything else
appears to match.

Went ahead and dropped the FE-NEEDSPONSOR flag too.

Comment 24 Bill Peck 2007-03-23 18:46:12 UTC
New Package CVS Request
=======================
Package Name: conmux
Short Description: conmux is a serial multiplexor which also abstracts the hardware
Owners: bpeck
Branches: EL-5, FC-5, FC-6
InitialCC: 

Comment 25 Jarod Wilson 2007-06-04 20:42:12 UTC
Package was built for all distros a while ago, closing bug.


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