Bug 203227

Summary: No development package/headers for drac
Product: [openSUSE] SUSE Linux 10.1 Reporter: Peter Nixon <nix>
Component: NetworkAssignee: Ralf Haferkamp <ralf>
Status: RESOLVED INVALID QA Contact: E-mail List <qa-bugs>
Severity: Minor    
Priority: P5 - None    
Version: Final   
Target Milestone: ---   
Hardware: All   
OS: SUSE Other   
Whiteboard:
Found By: Third Party Developer/Partner Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: Updated SPEC to create a devel package and include drac.h

Description Peter Nixon 2006-09-01 12:56:56 UTC
The drac package that comes with all current versions of SUSE does not have an associated -devel package which makes it impossible to compile any software which relies on drac headers. Can these headers be made available in a devel package?
Comment 1 Ralf Haferkamp 2006-09-05 12:43:28 UTC
drac doesn't does come with any headers (and doesn't need them). Applications that want to use drac, communicate via RPC with the daemon. You might want to have a look at http://mail.cc.umanitoba.ca/drac/index.html#works for details.
Comment 2 Ralf Haferkamp 2006-09-05 13:05:08 UTC
The above command might be a bit misleading. drac comes with a static library (libdrac), which is packaged in our drac package. But there is no header file (not even in the drac sources) that you can include to use libdrac. I guess you nee to declare those few function yourself. See also the dracauth manpage.
Comment 3 Peter Nixon 2006-10-19 10:15:44 UTC
There IS a drac.h generated as part of the build, but it is not inclded by the suse spec. I need it to build flexpop packages which on debian require the drac-dev package (which contains drac.h) See my test below:

koala:/usr/src/packages/SPECS # rpm -Uvh ftp://mirrors.kernel.org/opensuse/distribution/SL-OSS-factory/inst-source/suse/src/drac-1.12-24.src.rpm
Retrieving ftp://mirrors.kernel.org/opensuse/distribution/SL-OSS-factory/inst-source/suse/src/drac-1.12-24.src.rpm
   1:drac                   ########################################### [100%]
koala:/usr/src/packages/SPECS # nice rpmbuild -ba drac.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.49507
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd /usr/src/packages/BUILD
+ rm -rf drac
+ /usr/bin/gzip -dc /usr/src/packages/SOURCES/drac-1.12.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd drac
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chown -Rhf root .
++ /usr/bin/id -u
+ '[' 0 = 0 ']'
+ /bin/chgrp -Rhf root .
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ echo 'Patch #0 (drac.dif):'
Patch #0 (drac.dif):
+ patch -p1 -s
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.24757
+ umask 022
+ cd /usr/src/packages/BUILD
+ /bin/rm -rf /var/tmp/drac-1.12-build
++ dirname /var/tmp/drac-1.12-build
+ /bin/mkdir -p /var/tmp
+ /bin/mkdir /var/tmp/drac-1.12-build
+ cd drac
+ make 'OPTFLAGS=-O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC'
gcc -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC   -c -o testing.o testing.c
rpcgen -C drac.x
gcc -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC   -c -o dracauth.o dracauth.c
gcc -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC   -c -o drac_xdr.o drac_xdr.c
gcc -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC   -c -o drac_clnt.o drac_clnt.c
rm -f libdrac.a
ar cq libdrac.a dracauth.o drac_xdr.o drac_clnt.o
: libdrac.a
gcc -o testing testing.o -L. -ldrac -lnsl
gcc -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC   -c -o rpc.dracd.o rpc.dracd.c
gcc -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -O2 -g -m32 -march=i586 -mtune=i686 -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fPIC   -c -o drac_svc.o drac_svc.c
gcc -o rpc.dracd rpc.dracd.o drac_xdr.o drac_svc.o -lnsl -ldb -lpthread -pie
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.98780
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd drac
+ mkdir -p /var/tmp/drac-1.12-build//usr/share/man/man8
+ mkdir -p /var/tmp/drac-1.12-build//usr/share/man/man3
+ mkdir -p /var/tmp/drac-1.12-build/sbin
+ mkdir -p /var/tmp/drac-1.12-build//usr/lib
+ mkdir -p /var/tmp/drac-1.12-build/usr/sbin
+ mkdir -p /var/tmp/drac-1.12-build/etc/init.d
+ make install EBIN=/var/tmp/drac-1.12-build/usr/sbin/rpc.dracd
/usr/bin/install -c -m 0755 rpc.dracd /var/tmp/drac-1.12-build/usr/sbin/rpc.dracd
+ make install-man MAN=/var/tmp/drac-1.12-build//usr/share/man/man
/usr/bin/install -c -m 0444 rpc.dracd.1m /var/tmp/drac-1.12-build//usr/share/man/man8/rpc.dracd.8
/usr/bin/install -c -m 0444 dracauth.3 /var/tmp/drac-1.12-build//usr/share/man/man3/dracauth.3
+ install -m 644 libdrac.a /var/tmp/drac-1.12-build//usr/lib/libdrac.a
+ install -m 755 rc.dracd /var/tmp/drac-1.12-build/etc/init.d/dracd
+ ln -sf ../etc/init.d/dracd /var/tmp/drac-1.12-build/sbin/rcdracd
+ mkdir -p /var/tmp/drac-1.12-build/var/adm/fillup-templates
+ install -m 644 sysconfig.dracd /var/tmp/drac-1.12-build/var/adm/fillup-templates/sysconfig.dracd
+ /usr/lib/rpm/find-debuginfo.sh /usr/src/packages/BUILD/drac
extracting debug info from /var/tmp/drac-1.12-build/usr/sbin/rpc.dracd
cpio: glibc-2.5/cc-nptl/csu/crti.S: No such file or directory
cpio: glibc-2.5/cc-nptl/csu/crtn.S: No such file or directory
cpio: glibc-2.5/csu/init.c: No such file or directory
32 blocks
+ RPM_BUILD_ROOT=/var/tmp/drac-1.12-build
+ export RPM_BUILD_ROOT
+ test -x /usr/sbin/Check -a 0 = 0 -o -x /usr/sbin/Check -a '!' -z /var/tmp/drac-1.12-build
+ echo 'I call /usr/sbin/Check...'
I call /usr/sbin/Check...
+ /usr/sbin/Check
-r--r--r-- 1 root root 917 Oct 19 13:13 /var/tmp/drac-1.12-build//usr/share/man/man3/dracauth.3.gz
-r--r--r-- 1 root root 986 Oct 19 13:13 /var/tmp/drac-1.12-build//usr/share/man/man8/rpc.dracd.8.gz
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-symlink
INFO: relinking /sbin/rcdracd -> /etc/init.d/dracd (was ../etc/init.d/dracd)
Processing files: drac-1.12-24
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.92726
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd drac
+ DOCDIR=/var/tmp/drac-1.12-build/usr/share/doc/packages/drac
+ export DOCDIR
+ rm -rf /var/tmp/drac-1.12-build/usr/share/doc/packages/drac
+ /bin/mkdir -p /var/tmp/drac-1.12-build/usr/share/doc/packages/drac
+ cp -pr COPYRIGHT Changes INSTALL PORTING README dracd.allow-sample /var/tmp/drac-1.12-build/usr/share/doc/packages/drac
+ exit 0
Finding  Provides: /usr/lib/rpm/find-provides drac
Finding  Requires: /usr/lib/rpm/find-requires drac
Finding  Supplements: /usr/lib/rpm/find-supplements drac
Requires(interp): /bin/sh /bin/sh /bin/sh
Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Requires(post): /bin/sh
Requires(preun): /bin/sh
Requires(postun): /bin/sh
Requires: /bin/sh libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.2.3) libc.so.6(GLIBC_2.3.4) libc.so.6(GLIBC_2.4) libdb-4.4.so libnsl.so.1 libpthread.so.0 libpthread.so.0(GLIBC_2.0)
Processing files: drac-debuginfo-1.12-24
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/drac-1.12-build
Wrote: /usr/src/packages/SRPMS/drac-1.12-24.src.rpm
Wrote: /usr/src/packages/RPMS/i586/drac-1.12-24.i586.rpm
Wrote: /usr/src/packages/RPMS/i586/drac-debuginfo-1.12-24.i586.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.9895
+ umask 022
+ cd /usr/src/packages/BUILD
+ cd drac
+ rm -rf /var/tmp/drac-1.12-build
+ exit 0
koala:/usr/src/packages/SPECS # cat /usr/src/packages/BUILD/drac/drac.h
/*
 * Please do not edit this file.
 * It was generated using rpcgen.
 */

#ifndef _DRAC_H_RPCGEN
#define _DRAC_H_RPCGEN

#include <rpc/rpc.h>


#ifdef __cplusplus
extern "C" {
#endif

#ifndef CLIENT
#include <rpc/rpc.h>
#endif

struct drac_add_parm {
        u_long ip_addr;
};
typedef struct drac_add_parm drac_add_parm;

enum addstat {
        ADD_SUCCESS = 0,
        ADD_PERM = 1,
        ADD_SYSERR = 2,
        ADD_UNKOWN = 3,
};
typedef enum addstat addstat;

#define DRACPROG 900101
#define DRACVERS 1

#if defined(__STDC__) || defined(__cplusplus)
#define DRACPROC_ADD 1
extern  addstat * dracproc_add_1(drac_add_parm *, CLIENT *);
extern  addstat * dracproc_add_1_svc(drac_add_parm *, struct svc_req *);
extern int dracprog_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);

#else /* K&R C */
#define DRACPROC_ADD 1
extern  addstat * dracproc_add_1();
extern  addstat * dracproc_add_1_svc();
extern int dracprog_1_freeresult ();
#endif /* K&R C */

/* the xdr functions */

#if defined(__STDC__) || defined(__cplusplus)
extern  bool_t xdr_drac_add_parm (XDR *, drac_add_parm*);
extern  bool_t xdr_addstat (XDR *, addstat*);

#else /* K&R C */
extern bool_t xdr_drac_add_parm ();
extern bool_t xdr_addstat ();

#endif /* K&R C */

#ifdef __cplusplus
}
#endif

#endif /* !_DRAC_H_RPCGEN */
Comment 4 Peter Nixon 2006-10-19 10:42:28 UTC
Created attachment 102020 [details]
Updated SPEC to create a devel package and include drac.h

Here is a patch to update the suse spec file. I have also built the new package for all SUSE versions on the build service at:
http://build.opensuse.org/package/show?package=drac&project=home%3Apeternixon
Comment 5 Ralf Haferkamp 2006-10-19 10:59:03 UTC
Thanks for your effort, but I just had a quick look at the flexpop sources.

You are right in that flexpop checks for a file drac.h in configure. But grepping through the flexpop source doesn't reveal any point where that file is really included and used. In fact it just defines the required libdrac prototype itself in popupd.h :
extern int  dracauth(char *, unsigned long, char **);

Additionally the drac.h file that is created during the build of drac is just needed internally for the RPC communication between libdrac and the drac-daemon. It is of no usage to applications that want to use libdrac like flexpop.

So this really a bug in the configure.in of flexpop. You could just workaround that by doing e.g:
touch /tmp/drac.h
export CPPFLAGS="-I/tmp/"
Comment 6 Peter Nixon 2006-10-19 12:03:33 UTC
Hmm.. OK. I will take this up with the developers. I was talking to them earlier on IRC but as they are all in Japan they have just left for home. I have mailed them about it and will get back to you.

Note I also opened a related Bug #213589 for postfix (also no headers)
Comment 7 Ralf Haferkamp 2006-10-23 11:18:25 UTC
Setting back to invalid.