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 180897 - Review Request: heartbeat
Summary: Review Request: heartbeat
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Orion Poplawski
QA Contact: Fedora Package Reviews List
URL:
Whiteboard:
Depends On: 180952
Blocks: FE-ACCEPT
TreeView+ depends on / blocked
 
Reported: 2006-02-10 12:44 UTC by Joost Soeterbroek
Modified: 2007-11-30 22:11 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-03-03 12:24:55 UTC
Type: ---
Embargoed:
wtogami: fedora-cvs+


Attachments (Terms of Use)
Tail end of failed build log (2.36 KB, text/plain)
2006-02-10 15:41 UTC, Jason Tibbitts
no flags Details
Package list from host unable to compile send_arp.c (15.96 KB, text/plain)
2006-02-10 22:15 UTC, Jason Tibbitts
no flags Details
rpmlint output for heartbeat-2.0.2-2.fc4.i386.rpm (2.64 KB, text/plain)
2006-02-11 11:41 UTC, Joost Soeterbroek
no flags Details

Description Joost Soeterbroek 2006-02-10 12:44:30 UTC
Spec Name or Url: http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url: http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.2-1.src.rpm 
Description: Heartbeat subsystem for High-Availability Linux

Comment 1 Joost Soeterbroek 2006-02-10 12:45:51 UTC
Still generates a number of rpmlint errors and warnings. 
Need help on determining which are valid and which can be safely ignored.

Comment 2 Jason Tibbitts 2006-02-10 15:39:01 UTC
Build fails for me on FC-4 i386 in send_arp.c; I'll attach a log.

 

Comment 3 Jason Tibbitts 2006-02-10 15:41:07 UTC
Created attachment 124503 [details]
Tail end of failed build log

Comment 4 Jason Tibbitts 2006-02-10 19:18:25 UTC
BTW, I can't build in mock either, because libnet10 and libnet-devel conflict. 
I've opened bug 180952, which I'll add as a blocker for this one.

Comment 5 Joost Soeterbroek 2006-02-10 20:30:45 UTC
Rebuild

- removed BuildRequires libnet-devel

Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.2-2.src.rpm 
Description: Heartbeat subsystem for High-Availability Linux

Jason,

Can you uninstall libnet-devel and try again?

Comment 6 Jason Tibbitts 2006-02-10 20:50:12 UTC
A mock build proceeds further than before, but the various confgure runs die
because glib2-devel is not installed.  Did you mean to BuildRequire: glib2-devel
instead of glib-devel?

A build attempt on an FC4 box with glib2-devel already installed fails as before
in send_arp.c.

Comment 7 Joost Soeterbroek 2006-02-10 21:12:43 UTC
(In reply to comment #6)
 
> A build attempt on an FC4 box with glib2-devel already installed fails as before
> in send_arp.c.

Jason,

Can you send me (or attach) the output of 'rpm -qa | sort' command on the FC4 box?



Comment 8 Jason Tibbitts 2006-02-10 22:15:38 UTC
Created attachment 124535 [details]
Package list from host unable to compile send_arp.c

Comment 9 Joost Soeterbroek 2006-02-11 11:41:30 UTC
Created attachment 124541 [details]
rpmlint output for heartbeat-2.0.2-2.fc4.i386.rpm

rpmlint output for heartbeat-2.0.2-2.fc4.i386.rpm

I would like some help on determining which are valid errors/warnings and which
can be safely ignored.

Comment 10 Patrice Dumas 2006-02-11 15:58:44 UTC
From a look at the configure.in it seems that it may use both old and new libnet
api. So the best is to use the newer, by having

Buildrequires: libnet-devel

instead of libnet10.

Comment 11 Joost Soeterbroek 2006-02-11 17:33:28 UTC
(In reply to comment #10)
> From a look at the configure.in it seems that it may use both old and new libnet
> api. So the best is to use the newer, by having
> 
> Buildrequires: libnet-devel
> 
> instead of libnet10.

Done..

Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.2-3.src.rpm 

- remove BuildRequire libnet10
- add BuildRequire libnet-devel

Builds fine in mock (FC4-i386).

Comment 12 Alan Robertson 2006-02-11 20:43:22 UTC
(In reply to comment #11)
> (In reply to comment #10)
> > From a look at the configure.in it seems that it may use both old and new libnet
> > api. So the best is to use the newer, by having
> > 
> > Buildrequires: libnet-devel
> > 
> > instead of libnet10.
> 
> Done..
> 
> Spec Name or Url:
> http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
> SRPM Name or Url:
>
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.2-3.src.rpm 
> 
> - remove BuildRequire libnet10
> - add BuildRequire libnet-devel
> 
> Builds fine in mock (FC4-i386).


I think some parts use either API for historical reasons, but I believe the IPv6
code (which is newer) only uses the newer libnet API.  Let me know if there's
anything we should change in the project's packaging to make this easier for
you.  There are also lots of bug fixes and some nice new features (GUI, etc.) in
2.0.3 which just came out yesterday.

  Thanks!  -- Alan Robertson alanr

Comment 13 Joost Soeterbroek 2006-02-12 11:38:44 UTC
Rebuilt for 2.0.3

Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-1.src.rpm 

Builds fine in mock (FC4-i386). Needs reviewer.


Comment 14 Orion Poplawski 2006-02-15 20:01:42 UTC
Not full review yet, but close.

- rpmlint checks return:

W: heartbeat non-standard-group Networking/Daemons
E: heartbeat hardcoded-library-path in
$RPM_BUILD_ROOT/usr/lib/heartbeat/crmtest/helper.sh
E: heartbeat hardcoded-library-path in /usr/lib/libhbmgmt.*
E: heartbeat hardcoded-library-path in /usr/lib/libhbmgmtclient.*
E: heartbeat hardcoded-library-path in /usr/lib/libhbmgmtcommon.*
E: heartbeat hardcoded-library-path in /usr/lib/libhbmgmttls.*
  
Needs work:
* Spec file: some paths are not replaced with RPM macros
  (wiki: QAChecklist item 7)
* The BuildRoot must be cleaned at the beginning of %install

- Why split into -stonith and -pils packages but have the base package require them?

Good:
- package meets naming guidelines
- package meets packaging guidelines
- license (GPL/LGPL) OK, text in %doc, matches source
- spec file legible, in am. english
- source matches upstream
- package compiles on devel (x86)
- no missing BR
- no unnecessary BR
- no locales
- not relocatable
- owns all directories that it creates
- no duplicate files
- permissions ok
- %clean ok
- macro use consistent
- code, not content
- no need for -docs
- nothing in %doc affects runtime
- no need for .desktop file

Nitpicks:

- use %setup -q



Comment 15 Joost Soeterbroek 2006-02-15 20:59:20 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-2.src.rpm 

* Wed Feb 15 2006  Joost Soeterbroek <fedora> - 2.0.3-2
- enable mgmt option
- fixes for various rpmlint errors and warnings:
  - fixed setup -q
  - make subpackages depend on basepackage, not reverse
  - clean buildroot at beginning of install
  - replaced a number of hardcoded paths with RPM macros
  - Changed Group from Networking/Daemons to System Environment/Daemons


Comment 16 Orion Poplawski 2006-02-15 22:01:41 UTC
- Get rid of:

Requires:       python
Requires:       gnutls

rpmbuild auto-detects this

Do you really need:

Requires:       sysklogd
Requires:       python-gtk >= 2.4
Requires:       gettext
Requires:       swig

nothing seems to reference them for run time.

- Instead of

echo '#!/bin/sh' > /tmp/tmp.$$ ; cat
$RPM_BUILD_ROOT/%{_libdir}/heartbeat/crmtest/helper.sh >> \                    
                                                                     /tmp/tmp.$$
; mv /tmp/tmp.$$ $RPM_BUILD_ROOT/%{_libdir}/heartbeat/crmtest/helper.sh    

how about:

sed -i -e '1i#!/bin/sh' $RPM_BUILD_ROOT/%{_libdir}/heartbeat/crmtest/helper.sh

 
- ocf stuff gets installed to /usr/lib on 64-bit, so:

%{_prefix}/lib/ocf

though perhaps /usr/share/heartbeat/ocf would be a better location.  Not sure
what heartbeats requirements are.


Comment 17 Alan Robertson 2006-02-16 10:32:00 UTC
The reasons for having the pils package separate is that this is a general
purpose library - usable without heartbeat.

The same is true of the stonith libraries.  Indeed, Red Hat has historically
used these same packages in some of their products.

We probably need to re-do some of these subpackages, but being compatible with
how the project distributes them is also helpful.  (i.e., if it's a mistake, at
least it's a consistent mistake).

The project distributes everything as RPMs, so having the RH RPMs consistent
with the other RPMs we distribute has some value, IMHO...

Comment 18 Alan Robertson 2006-02-16 10:36:01 UTC
AFAIK, we do indeed use SWIG, and python-gtk, but I don't know about the version
issues, but I suspect they´re there for a reason.  I'm sure he's just copying
what Huang Zhen (the developer of this code) put in the project's RPM.

Comment 19 Orion Poplawski 2006-02-16 17:02:13 UTC
(In reply to comment #17)
> The reasons for having the pils package separate is that this is a general
> purpose library - usable without heartbeat.
> 
> The same is true of the stonith libraries.  Indeed, Red Hat has historically
> used these same packages in some of their products.

So, an install of heartbeart *must* have -pils and -stonith, but -pils and
-stonith can be used independently for other things?  Then the original Requires
was correct.

Comment 20 Orion Poplawski 2006-02-16 17:05:50 UTC
(In reply to comment #18)
> AFAIK, we do indeed use SWIG, and python-gtk, but I don't know about the version
> issues, but I suspect they´re there for a reason.  I'm sure he's just copying
> what Huang Zhen (the developer of this code) put in the project's RPM.

swig is definitely used during compile (hence the BR), but I see no runtine
dependency (so no Requires).

Okay, found the pygtk requirement, so Requires: python-gtk stays.



Comment 21 Joost Soeterbroek 2006-02-16 20:20:06 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-3.src.rpm 

* Thu Feb 16 2006  Joost Soeterbroek <fedora> - 2.0.3-3
- removed Requires: python and gnutls
- changed _libdir/ocf -> _prefix/lib/ocf
- reversed subpackages depend on basepackage
- removed Req swig (kept BuildReq)
- added Req pygtk2

Comment 22 Orion Poplawski 2006-02-16 21:40:56 UTC
Okay, moving on.. :-)

%package ldirectord
Summary:        Monitor daemon for maintaining high availability resources
Group:          System Environment/Daemons
Requires:       perl-libwww-perl
Requires:       perl-Crypt-SSLeay
Requires:       ipvsadm
Requires:       perl-HTML-Parser
Requires:       perl-LDAP
#Requires:       perl-Mail-IMAPClient
Requires:       perl-Net-DNS

None of the perl stuff is needed as rpmbuild automatically picks up perl module
dependencies.


- Trying to install heartbeat gave me:

useradd: cannot create directory /home/hacluster
error: %pre(heartbeat-2.0.3-3.fc5.i386) scriptlet failed, exit status 12
error:   install: %pre scriptlet failed (2), skipping heartbeat-2.0.3-3.fc5

The user creation section has to be changed.  Fedora Extras packages can't
create system users.  You might check out
http://fedoraproject.org/wiki/Packaging/UserCreation?action=show&redirect=PackageUserCreation

Also, I get:

useradd: cannot create directory /var/lib/heartbeat/cores/hacluster

with the current useradd command, so I think you need to create the directory as
part of the package (perhaps useradd doesn't use mkdir -p).

- rpmlint:

# rpmlint heartbeat-pils
W: heartbeat-pils devel-file-in-non-devel-package /usr/lib/libpils.so
^ this should be in heartbeat-devel (or heartbeat-pils-devel)

E: heartbeat-pils library-without-ldconfig-postin /usr/lib/libpils.so.1.0.0
E: heartbeat-pils library-without-ldconfig-postun /usr/lib/libpils.so.1.0.0
^ needs:
%post pils -p /sbin/ldconfig
%postun pils -p /sbin/ldconfig

# rpmlint heartbeat-stonith
E: heartbeat-stonith library-without-ldconfig-postin /usr/lib/libstonith.so.1.0.0
E: heartbeat-stonith library-without-ldconfig-postun /usr/lib/libstonith.so.1.0.0
^ needs:
%post stonith -p /sbin/ldconfig
%postun stonith -p /sbin/ldconfig

W: heartbeat-stonith devel-file-in-non-devel-package /usr/lib/libstonith.so
^ should be in heartbeat-devel (or heartbeat-stonith-devel)


# rpmlint -i heartbeat-ldirectord
W: heartbeat-ldirectord devel-file-in-non-devel-package
/usr/sbin/supervise-ldirectord-config
A development file (usually source code) is located in a non-devel
package. If you want to include source code in your package, be sure to
create a development package.

E: heartbeat-ldirectord incoherent-logrotate-file /etc/logrotate.d/ldirectord
Your logrotate file should be named /etc/logrotate.d/<package name>.

W: heartbeat-ldirectord non-conffile-in-etc /etc/logrotate.d/ldirectord
A non-executable file in your package is being installed in /etc, but is not
a configuration file. All non-executable files in /etc should be configuration
files. Mark the file as %config in the spec file.

E: heartbeat-ldirectord init-script-without-chkconfig-postin /etc/init.d/ldirectord
The package contains an init script but doesn't contain a %post with
a call to chkconfig.

E: heartbeat-ldirectord init-script-without-chkconfig-preun /etc/init.d/ldirectord
The package contains an init script but doesn't contain a %preun with
a call to chkconfig.

W: heartbeat-ldirectord service-default-enabled /etc/init.d/ldirectord
The service is enabled by default after "chkconfig --add"; for security
reasons, most services should not be. Use "-" as the default runlevel in the
init script's chkconfig line to fix this if appropriate for this service.

E: heartbeat-ldirectord subsys-not-used /etc/init.d/ldirectord
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.

W: heartbeat-ldirectord incoherent-init-script-name ldirectord
The init script name should be the same as the package name in lower case.




Comment 23 Joost Soeterbroek 2006-02-18 16:25:42 UTC
(In reply to comment #22)

Some questions regarding last comment #22: 
> None of the perl stuff is needed as rpmbuild automatically picks up perl module
> dependencies.
> 
Ok, fair enough. I did not know rpmbuild did this.
> 
> - Trying to install heartbeat gave me:
> 
> useradd: cannot create directory /home/hacluster
> error: %pre(heartbeat-2.0.3-3.fc5.i386) scriptlet failed, exit status 12
> error:   install: %pre scriptlet failed (2), skipping heartbeat-2.0.3-3.fc5
> 
> The user creation section has to be changed.  Fedora Extras packages can't
> create system users.  You might check out
>
http://fedoraproject.org/wiki/Packaging/UserCreation?action=show&redirect=PackageUserCreation
> 
I am not sure I understand what you mean by this. I think you want me to change
this line:
  USEROPT="-g haclient -u 17 -d /var/lib/heartbeat/cores/hacluster"
to:
  USEROPT="-g haclient -u $[ $(cat /etc/fedora/usermgmt/baseuid) + 17 ] -d
/var/lib/heartbeat/cores/hacluster"
Correct?
 
> - rpmlint:
> 
> # rpmlint heartbeat-pils
> W: heartbeat-pils devel-file-in-non-devel-package /usr/lib/libpils.so
> ^ this should be in heartbeat-devel (or heartbeat-pils-devel)
>
I am unsure what to do here:
* Do *.so files always go in a seperate -devel package or just in this case?
What to do with /usr/lib/pils/plugins/InterfaceMgr/generic.so file?
* You know that /usr/lib/libpils.so symlinks to
/usr/lib/libpils.so.1.0.0; should this also go in -devel package?

> E: heartbeat-pils library-without-ldconfig-postin /usr/lib/libpils.so.1.0.0
> E: heartbeat-pils library-without-ldconfig-postun /usr/lib/libpils.so.1.0.0
> ^ needs:
> %post pils -p /sbin/ldconfig
> %postun pils -p /sbin/ldconfig

If these files go to -devel package, then it should be
  %post devel -p /sbin/ldconfig
correct?





Comment 24 Andrew Beekhof 2006-02-21 11:09:36 UTC
Regarding helper.sh

It is *never* supposed to be executed on its own and should not have #!/bin/sh added to to it.

Comment 25 Orion Poplawski 2006-02-24 18:11:39 UTC
(In reply to comment #23)
> 
> I am not sure I understand what you mean by this. I think you want me to change
> this line:
>   USEROPT="-g haclient -u 17 -d /var/lib/heartbeat/cores/hacluster"
> to:
>   USEROPT="-g haclient -u $[ $(cat /etc/fedora/usermgmt/baseuid) + 17 ] -d
> /var/lib/heartbeat/cores/hacluster"
> Correct?
>  

Well, if you can live without a fixed user id, drop the '-u 17'.  If you need a
fixed one, register with http://fedoraproject.org/wiki/Packaging/UserRegistry
and use that offset rather than 17.

I think I would drop the redirection to /dev/null as well.

> > - rpmlint:
> > 
> > # rpmlint heartbeat-pils
> > W: heartbeat-pils devel-file-in-non-devel-package /usr/lib/libpils.so
> > ^ this should be in heartbeat-devel (or heartbeat-pils-devel)
> >
> I am unsure what to do here:
> * Do *.so files always go in a seperate -devel package or just in this case?
> What to do with /usr/lib/pils/plugins/InterfaceMgr/generic.so file?
> * You know that /usr/lib/libpils.so symlinks to
> /usr/lib/libpils.so.1.0.0; should this also go in -devel package?
> 

.so files always go in -devel (and just the .so links, not the actual libraries).
 
> > E: heartbeat-pils library-without-ldconfig-postin /usr/lib/libpils.so.1.0.0
> > E: heartbeat-pils library-without-ldconfig-postun /usr/lib/libpils.so.1.0.0
> > ^ needs:
> > %post pils -p /sbin/ldconfig
> > %postun pils -p /sbin/ldconfig
> 
> If these files go to -devel package

They don't.



Comment 26 Orion Poplawski 2006-02-24 18:13:46 UTC
(In reply to comment #24)
> Regarding helper.sh
> 
> It is *never* supposed to be executed on its own and should not have #!/bin/sh
added to to it.

If this is the case, then you can safely ignore the rpmlint warning here Joost.

Comment 27 Michael Schwendt 2006-02-24 18:53:43 UTC
>  USEROPT="-g haclient -u $[ $(cat /etc/fedora/usermgmt/baseuid) + 17 ] -d
> /var/lib/heartbeat/cores/hacluster"
> Correct?

No. The baseuid is not for immediate use. Use /usr/sbin/fedora-useradd


Comment 28 Joost Soeterbroek 2006-02-24 20:07:47 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-5.src.rpm 

* Fri Feb 24 2006 Joost Soeterbroek <fedora> - 2.0.3-5
- added heartbeat to fedoraproject.org/wiki/Packaging/UserRegistry with uid 24
- group/useradd with fedora-usermgmt
- added *.so file to -devel sub-package

Comment 29 Michael Schwendt 2006-02-24 21:19:14 UTC
> %postun -p /sbin/ldconfig
> test "$1" != 0 || /usr/sbin/fedora-userdel hacluster &>/dev/null || :
> test "$1" != 0 || /usr/sbin/fedora-groupdel haclient &>/dev/null || :

This is broken. What "-p /sbin/ldconfig" does is making /sbin/ldconfig
the interpreter for the following lines up to the beginning of the next
section in the .spec file. Here you try to execute the two lines of shell
code with /sbin/ldconfig instead of the default /bin/sh used for RPM
scriptlets. Try "rpm --erase heartbeat" which gives fatal errors.


Comment 30 Orion Poplawski 2006-02-24 21:39:27 UTC
Need:

Requires(post): /sbin/chkconfig
Requires(preun): /sbin/chkconfig

Change:

%{_libdir}/pils/plugins
to
%{_libdir}/pils/

so that it owns the directory and everything below.



You might want the devel files section to look like:

%{_includedir}/heartbeat/
%{_includedir}/clplumbing/
%{_includedir}/saf/
%{_includedir}/ocf/
%{_includedir}/stonith/
%{_includedir}/pils/

To be clear that they are directories.

Similar with %{_libdir}/stonith/

- Your *.so are duplicated in heartbeat and heartbeat-devel.  Change file lines
in heartbeat to:

%{_libdir}/libapphb.so.*

- Various programs are checked for a config time and not found:

checking for lynx... no
checking for ssh... no
checking for scp... no
checking for mail... no
checking for raidstart... no
checking for raidstop... no
checking for mdadm... no
checking for iptables... no
checking for md5... no
checking for drbdadm... no
checking for drbdsetup... no

I have no idea if this affects functionality or not...

- Is this important?

checking for owcimomd... no
configure: WARNING: Cimom not found, MOF will not be installed!

- Looks like the user ID might get hardcoded?

  HA user user id      = "17"

- Do you want to add snmp support?  Probably just needs BuildRequires:
net-snmp-devel.

  Build snmp subagent  = "no"
  SNMP libraries       = ""

Probably also need an enable flag and another subpackage.

- I think you need a BR: libtool-ltdl-devel , perhaps instead of BR: libtool (as
it seems to use $(top_builddir)/libtool in either case), to get:

  Use system LTDL      = "yes"


Comment 31 Orion Poplawski 2006-02-24 21:47:41 UTC
rpmlint -i heartbeat (edited)

W: heartbeat non-conffile-in-etc /etc/ha.d/README.config
A non-executable file in your package is being installed in /etc, but is not
a configuration file. All non-executable files in /etc should be configuration
files. Mark the file as %config in the spec file.

W: heartbeat dangling-symlink /etc/ha.d/resource.d/ldirectord /usr/sbin/ldirectord
The symbolic link points nowhere.
^ I think this might be duplicate ownership:

# rpm -qf /etc/ha.d/resource.d/ldirectord
heartbeat-2.0.3-5.fc5
heartbeat-ldirectord-2.0.3-5.fc5

perhaps only in heartbeat-ldirectord

W: heartbeat non-conffile-in-etc /etc/ha.d/shellfuncs
A non-executable file in your package is being installed in /etc, but is not
a configuration file. All non-executable files in /etc should be configuration
files. Mark the file as %config in the spec file.

W: heartbeat non-conffile-in-etc /etc/pam.d/hbmgmtd
A non-executable file in your package is being installed in /etc, but is not
a configuration file. All non-executable files in /etc should be configuration
files. Mark the file as %config in the spec file.

W: heartbeat service-default-enabled /etc/init.d/heartbeat
The service is enabled by default after "chkconfig --add"; for security
reasons, most services should not be. Use "-" as the default runlevel in the
init script's chkconfig line to fix this if appropriate for this service.

E: heartbeat subsys-not-used /etc/init.d/heartbeat
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 32 Orion Poplawski 2006-02-24 21:55:38 UTC
# rpmlint -i heartbeat-devel
W: heartbeat-devel no-dependency-on heartbeat

Should have a Requires: heartbeat = %{version}-%{release} in the devel package
section.

# rpmlint -i heartbeat-ldirectord
W: heartbeat-ldirectord devel-file-in-non-devel-package
/usr/sbin/supervise-ldirectord-config
A development file (usually source code) is located in a non-devel
package. If you want to include source code in your package, be sure to
create a development package.

E: heartbeat-ldirectord incoherent-logrotate-file /etc/logrotate.d/ldirectord
Your logrotate file should be named /etc/logrotate.d/<package name>.

W: heartbeat-ldirectord non-conffile-in-etc /etc/logrotate.d/ldirectord
A non-executable file in your package is being installed in /etc, but is not
a configuration file. All non-executable files in /etc should be configuration
files. Mark the file as %config in the spec file.

E: heartbeat-ldirectord init-script-without-chkconfig-postin /etc/init.d/ldirectord
The package contains an init script but doesn't contain a %post with
a call to chkconfig.

E: heartbeat-ldirectord init-script-without-chkconfig-preun /etc/init.d/ldirectord
The package contains an init script but doesn't contain a %preun with
a call to chkconfig.

W: heartbeat-ldirectord service-default-enabled /etc/init.d/ldirectord
The service is enabled by default after "chkconfig --add"; for security
reasons, most services should not be. Use "-" as the default runlevel in the
init script's chkconfig line to fix this if appropriate for this service.

E: heartbeat-ldirectord subsys-not-used /etc/init.d/ldirectord
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.

W: heartbeat-ldirectord incoherent-init-script-name ldirectord
The init script name should be the same as the package name in lower case.


# rpmlint -i heartbeat-stonith
E: heartbeat-stonith library-without-ldconfig-postin /usr/lib/libapphb.so.0.0.0
This package contains a library and provides no %post scriptlet containing
a call to ldconfig.

Comment 33 Joost Soeterbroek 2006-02-26 18:01:33 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-6.src.rpm 

* Sat Feb 25 2006  Joost Soeterbroek <fedora> - 2.0.3-6
- fixed number of rpmlint warnings and errors
- generate 'predictable' uid and gid with fedora-usermgmt to use with
  configure flag -with-ccmuser-id and groupadd, useradd
- added Buildreq's: libtool-ltdl-devel, fedora-usermgmt-setup
  net-snmp-devel, bzip2-devel
- removed *.so duplication in heartbeat and heartbeat-devel
- changed file sections

Builds in mock. There are still some libtool and rpmlint errors and warnings
that I am not sure about what do do with..

Comment 34 Orion Poplawski 2006-02-27 19:46:56 UTC
(In reply to comment #33)
> Builds in mock. There are still some libtool and rpmlint errors and warnings
> that I am not sure about what do do with..

Please read the "rpmlint -i" messages and the packaging guidelines on the wiki
for guidance.

Comment 35 Joost Soeterbroek 2006-02-28 22:02:38 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-7.src.rpm 

* Tue Feb 28 2006  Joost Soeterbroek <fedora> - 2.0.3-7
- fixed more rpmlint errors and warnings

remaining rpmlint issues:

W: heartbeat unstripped-binary-or-object /usr/bin/cl_status
- I do not know how to fix. Is this warning safe to ignore?

W: heartbeat dangling-symlink /etc/ha.d/resource.d/ldirectord /usr/sbin/ldirectord
The symbolic link points nowhere.
- I do not know how to fix. Is this warning safe to ignore?

W: heartbeat dangerous-command-in-%postun userdel
- I do not know how to fix. Is this warning safe to ignore?

W: heartbeat-ldirectord devel-file-in-non-devel-package
/usr/sbin/supervise-ldirectord-config
A development file (usually source code) is located in a non-devel
package. If you want to include source code in your package, be sure to
create a development package.
- I think this is an error on the part of rpmlint. I can not 
  see any reason this file would be flagged as a 
  'development file', while it isn't.

E: heartbeat-ldirectord incoherent-logrotate-file /etc/logrotate.d/ldirectord
Your logrotate file should be named /etc/logrotate.d/<package name>.
- Agree with the error, but changing /etc/logrotate.d/ldirectord 
  to /etc/logrotate.d/heartbeat-ldirectord would mean changing a 
  lot of non-trivial things in source package. Can we safely ignore 
  this?

W: heartbeat-ldirectord incoherent-init-script-name ldirectord
The init script name should be the same as the package name in lower case.
- same as above. Can we safely ignore this?


Comment 36 Paul Howarth 2006-02-28 22:37:28 UTC
(In reply to comment #35)
> remaining rpmlint issues:
> 
> W: heartbeat unstripped-binary-or-object /usr/bin/cl_status
> - I do not know how to fix. Is this warning safe to ignore?

Why isn't it stripped? What permissions does it get installed with?

> W: heartbeat dangling-symlink /etc/ha.d/resource.d/ldirectord /usr/sbin/ldirectord
> The symbolic link points nowhere.
> - I do not know how to fix. Is this warning safe to ignore?

This symlink is explicitly created in the spec file:

(
  cd $RPM_BUILD_ROOT/etc/ha.d/resource.d
  ln -s /usr/sbin/ldirectord ldirectord
)

Is it pointing from the right place to the right place?

> W: heartbeat dangerous-command-in-%postun userdel
> - I do not know how to fix. Is this warning safe to ignore?

Don't delete user or group accounts on package deletion, leave them there.

> W: heartbeat-ldirectord devel-file-in-non-devel-package
> /usr/sbin/supervise-ldirectord-config
> A development file (usually source code) is located in a non-devel
> package. If you want to include source code in your package, be sure to
> create a development package.
> - I think this is an error on the part of rpmlint. I can not 
>   see any reason this file would be flagged as a 
>   'development file', while it isn't.

It's probably the "-config" suffix of the name (without looking at the rpmlint
code). Looks bogus to me too.

> E: heartbeat-ldirectord incoherent-logrotate-file /etc/logrotate.d/ldirectord
> Your logrotate file should be named /etc/logrotate.d/<package name>.
> - Agree with the error, but changing /etc/logrotate.d/ldirectord 
>   to /etc/logrotate.d/heartbeat-ldirectord would mean changing a 
>   lot of non-trivial things in source package. Can we safely ignore 
>   this?

Why wouldn't it just be a "mv"?

Having said that, heartbeat-ldirectord is a bit of a mouthful.

> W: heartbeat-ldirectord incoherent-init-script-name ldirectord
> The init script name should be the same as the package name in lower case.
> - same as above. Can we safely ignore this?

I'd say so, yes.


Comment 37 Orion Poplawski 2006-02-28 23:58:23 UTC
(In reply to comment #35)
> W: heartbeat unstripped-binary-or-object /usr/bin/cl_status
> - I do not know how to fix. Is this warning safe to ignore?

I can't reproduce, might be a local build issue.
 
> W: heartbeat dangling-symlink /etc/ha.d/resource.d/ldirectord /usr/sbin/ldirectord
> The symbolic link points nowhere.
> - I do not know how to fix. Is this warning safe to ignore?
> 

The link is in both heartbeat and heartbeat-ldirectord.  Remove from heartbeat:

--- heartbeat.spec.orig 2006-02-28 15:38:00.000000000 -0700
+++ heartbeat.spec      2006-02-28 16:50:52.000000000 -0700
@@ -200,6 +200,7 @@
 %{_libdir}/libstonithd.so.*
 %{_prefix}/lib/ocf
 %{_sysconfdir}/ha.d/resource.d/
+%exclude %{_sysconfdir}/ha.d/resource.d/ldirectord
 %{_sysconfdir}/init.d/heartbeat
 %config(noreplace) %{_sysconfdir}/logrotate.d/heartbeat
 %dir %{_var}/lib/heartbeat

> W: heartbeat dangerous-command-in-%postun userdel
> - I do not know how to fix. Is this warning safe to ignore?

As above, don't delete the user.
 
> W: heartbeat-ldirectord devel-file-in-non-devel-package
> /usr/sbin/supervise-ldirectord-config
> A development file (usually source code) is located in a non-devel
> package. If you want to include source code in your package, be sure to
> create a development package.
> - I think this is an error on the part of rpmlint. I can not 
>   see any reason this file would be flagged as a 
>   'development file', while it isn't.

Agreed.
 
> E: heartbeat-ldirectord incoherent-logrotate-file /etc/logrotate.d/ldirectord
> Your logrotate file should be named /etc/logrotate.d/<package name>.
> - Agree with the error, but changing /etc/logrotate.d/ldirectord 
>   to /etc/logrotate.d/heartbeat-ldirectord would mean changing a 
>   lot of non-trivial things in source package. Can we safely ignore 
>   this?
> 
> W: heartbeat-ldirectord incoherent-init-script-name ldirectord
> The init script name should be the same as the package name in lower case.
> - same as above. Can we safely ignore this?
> 

Yes, or alternative is to name the subpackage "ldirectord" instead of
"heartbeat-ldirectord".  %package -n ldirectord does this (and same for %files,
%post, etc).  Might be a good idea if it seems likely that this will be split
off (the description indicates that it is "standalone"). 


Comment 38 Michael Schwendt 2006-03-01 08:21:11 UTC
> As above, don't delete the user.

Whether to delete a user in %postun depends merely on whether you can
erase _all_ traces of the package including any files it has created
at run-time owned by that user. If any files owned by that user remain
after package removal, the next package which creates a new user might
get the same uid and get access to the files, which bears a risk.

Comment 39 Joost Soeterbroek 2006-03-01 11:26:57 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-8.src.rpm 

* Wed Mar  1 2006  Joost Soeterbroek <fedora> - 2.0.3-8
- specifically excluded ldirectord symlink from heartbeat package
- removed user and group deletion in postun
- renamed subpackages ldirectord, pils and stonith to lose prefix heartbeat
  by using -n

package builds in mock
rpmlint (virtually) clean

Comment 40 Orion Poplawski 2006-03-01 16:24:45 UTC
- Big issue:

You've changed the user creation:

%define           fuid $[ $(cat /etc/fedora/usermgmt/baseuid) + 24 ]
%define           guid $[ $(cat /etc/fedora/usermgmt/basegid) + 24 ]

(configure)
  --with-ccmuser-id=%{fuid} \

%pre
/usr/sbin/groupadd -g %{guid} -r haclient &>/dev/null || :
/usr/sbin/useradd -u %{fuid} -r -s /sbin/nologin -d
/var/lib/heartbeat/cores/hacluster -M \
        -c 'heartbeat user' -g haclient hacluster &>/dev/null || :


This won't work for several reasons:

- /etc/fedora/usermgmt/baseuid/gid can be different on different machines.  This
is NOT constant across Fedora installs.
- Michael Schwendt pointed out that baseuid is not ready for use, and to use
fedora-useradd/group add instead.

Now it *appears* that heartbeat requires a user id at build time, but the only
place I see it used in the code is 

./cts/CM_LinuxHAv2.py.in:           self.rsh.remote_python_call(node, "os",
"system", "chown @HA_CCMUID@ @HA_VARLIBDIR@/heartbeat/crm/cib.xml")

which I believe could be changed to:

./cts/CM_LinuxHAv2.py.in:           self.rsh.remote_python_call(node, "os",
"system", "chown @HA_CCMUSER@ @HA_VARLIBDIR@/heartbeat/crm/cib.xml")

since the username will be constant.

- After looking at ConfigureMe, you are better off calling %configure with the
appropriate options directly:

%configure \
  --disable-fatal-warnings \
  --disable-static \
%if %{ENABLE_MGMT}
  --enable-mgmt
%else
  --disable-mgmt

- You need to fix up your Requires(pre/post/etc), especially when you move back
to fedora-useradd/groupadd.


Comment 41 Joost Soeterbroek 2006-03-01 19:19:13 UTC
Spec Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat.spec
SRPM Name or Url:
http://www.soeterbroek.com/linux/fedora/extras/heartbeat/heartbeat-2.0.3-9.src.rpm 

* Wed Mar  1 2006  Joost Soeterbroek <fedora> - 2.0.3-9
- changed user creation
- added patch2 heartbeat-2.0.3-fedora-ccmuser.patch

Comment 42 Orion Poplawski 2006-03-01 20:29:39 UTC
With the following:

--- heartbeat.spec.orig 2006-03-01 13:30:52.000000000 -0700
+++ heartbeat.spec      2006-03-01 13:31:28.000000000 -0700
@@ -63,6 +63,8 @@
 Summary:        Monitor daemon for maintaining high availability resources
 Group:          System Environment/Daemons
 Requires:       ipvsadm
+Requires(post): /sbin/chkconfig
+Requires(preun):/sbin/chkconfig

 %description -n ldirectord
 ldirectord is a stand-alone daemon to monitor services of real
@@ -71,7 +73,6 @@
 and works with the heartbeat code (http://www.linux-ha.org/).

 %package -n stonith
-#Requires:       telnet
 Requires:       pils = %{version}-%{release}
 Summary:        Provides an interface to Shoot The Other Node In The Head
 Group:          System Environment/Daemons


It is APPROVED.


Comment 43 Joost Soeterbroek 2006-03-02 21:07:45 UTC
Plague Job failed on arch x86_64

Build logs may be found at
http://buildsys.fedoraproject.org/logs/fedora-development-extras/5703-heartbeat-2.0.3-9.fc5/

Comment 44 Michael Schwendt 2006-03-02 21:57:40 UTC
Could be due to a broken/incomplete libtool dependency chain in
the libpils.la libtool archive.


Comment 45 Joost Soeterbroek 2006-03-03 12:24:55 UTC
packacge built successfuly in plague:

5766 (heartbeat): Build on target fedora-development-extras succeeded.

Comment 46 Kevin Fenzi 2007-02-18 05:45:59 UTC
Hey Joost. Per your post on fedora-extras list: 
https://www.redhat.com/archives/fedora-extras-list/2007-February/msg00100.html

I would be happy to take over maintainership of this package (heartbeat). 
I am setting the fedora-cvs flag here to request a cvsadmin change the ownership
in the owners.list file. 

Thanks for packaging this!

Comment 47 Warren Togami 2007-02-20 01:31:05 UTC
Why is fedora-cvs set to ?  It is unclear.

Comment 48 Kevin Fenzi 2007-02-20 01:53:40 UTC
See comment #46. The current maintainer is going to orphan this package, and 
I said I would take over maintainership. This requires changes to owners.list. 

-Fedora Extras|heartbeat|Heartbeat subsystem for High-Availability
Linux|joost.soeterbroek|extras-qa|
+Fedora Extras|heartbeat|Heartbeat subsystem for High-Availability
Linux|kevin|extras-qa|

Sorry if I was unclear. 


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