retitle 543064 FTBFS: "You need to have the SmartArray driver in the kernel."
tags 543064 +patch
thanks

Hi,

The original title didn't accurately describe what the cause of failure was. 
The message about the kernel not being configured was always there and not a 
problem. The problem is this:

checking ida_ioctl.h usability... no
configure: WARNING: ida_ioctl.h: present but cannot be compiled
configure: WARNING: ida_ioctl.h:     check for missing prerequisite headers?
configure: WARNING: ida_ioctl.h: see the Autoconf documentation
configure: WARNING: ida_ioctl.h:     section "Present But Cannot Be Compiled"
configure: WARNING: ida_ioctl.h: proceeding with the compiler's result
checking ida_ioctl.h presence... yes
configure: WARNING:     ## ------------------------------- ##
configure: WARNING:     ## Report this to [email protected] ##
configure: WARNING:     ## ------------------------------- ##
checking for ida_ioctl.h... no
configure: error: You need to have the SmartArray driver in the kernel.
make[1]: *** [config.status] Error 1
make[1]: Leaving directory 
`/build/user-cpqarrayd_2.3-1-amd64-8Sshsp/cpqarrayd-2.3'
make: *** [build-stamp] Error 2

I looked at how other distributions handle this and it seems Fedora and 
Mandrake solve it by disabling the dependency of cpqarrayid on ida. I've 
applied their patch and the package builds fine again. Also I've tested it on 
a range of Compaq/HP SmartArray hardware we have here, from oldest to newest 
and the package still works. Must note that we use the /dev/cciss driver.

Attached patch is the package I built. I'll leave it up to the maintainer to 
judge whether this is a good way forward, but my advice would be to go for it 
if no better options surface: apparently this has worked fine for other 
distributions and in any case this makes the package work again for a large 
range of machines at the least.

Probably it's too late for squeeze (although this is a completely leaf package 
and would add support for a wide and popular range of server hardware), but 
it would be great if this could be fixed for unstable at least.

Interested parties can also find built packages for amd64 and i386 in our 
repository: http://non-gnu.uvt.nl/debian/squeeze/cpqarrayd/


Cheers,
Thijs

-- 
Thijs Kinkhorst <[email protected]> – LIS Unix

Universiteit van Tilburg – Library and IT Services • Postbus 90153, 5000 LE
Bezoekadres > Warandelaan 2 • Tel. 013 466 3035 • G 236 • http://www.uvt.nl
diff -u cpqarrayd-2.3/cpqarrayd.c cpqarrayd-2.3/cpqarrayd.c
--- cpqarrayd-2.3/cpqarrayd.c
+++ cpqarrayd-2.3/cpqarrayd.c
@@ -36,9 +36,11 @@
   #include <linux/compiler.h>
 #endif
 
+#ifdef WITH_IDA
 #if defined(__linux__)
   #include <ida_ioctl.h>
 #endif
+#endif
 
 #if defined(__freebsd__)
   #include <idavar.h>
@@ -258,7 +260,10 @@
   syslog(LOG_INFO, "Logging Enabled...");
   
   while (keeprunning) {
+
+#ifdef WITH_IDA
     status_check(opts);
+#endif
     cciss_status_check(opts);
     if (keeprunning) { sleep(30); }
   }
diff -u cpqarrayd-2.3/status.c cpqarrayd-2.3/status.c
--- cpqarrayd-2.3/status.c
+++ cpqarrayd-2.3/status.c
@@ -33,9 +33,13 @@
 #endif
 
 #include <sys/ioctl.h>
+
+#ifdef HAVE_IDA
 #include <ida_ioctl.h>
 #include <ida_cmd.h>
 #include <cpqarray.h>
+#endif
+
 #include <syslog.h>
 
 #include "cpqarrayd.h"
@@ -45,7 +49,8 @@
 #include "cciss_structs.h"
 #include "cciss_functions.h"
 
-int status_check (struct opts opts) 
+#ifdef HAVE_IDA
+int status_check (struct opts opts)
 {
   
   int devicefd;
@@ -183,6 +188,7 @@
   return 1;
  
 }
+#endif
 
 int cciss_status_check (struct opts opts) 
 {
@@ -190,7 +196,6 @@
   int devicefd;
   int ctrl_cntr, result;
   int logd_cntr;
-  ida_ioctl_t io, io2;
   int status, nr_blks, blks_tr, trap_stat;
   float pvalue;
   char statusmsg[2048];
diff -u cpqarrayd-2.3/discover.c cpqarrayd-2.3/discover.c
--- cpqarrayd-2.3/discover.c
+++ cpqarrayd-2.3/discover.c
@@ -33,12 +33,14 @@
   #include <linux/compiler.h>
 #endif
 
+#ifdef WITH_IDA
 #if defined(__linux__)
   #include <ida_ioctl.h>
   #include <ida_ioctl.h>
   #include <ida_cmd.h>
   #include <cpqarray.h>
 #endif
+#endif
 
 #if defined(__freebsd__)
   #include <idavar.h>
@@ -52,8 +54,12 @@
 
 
 int discover_controllers (struct opts);
+
+#ifdef WITH_IDA
 int interrogate_controller (struct opts, const char *);
 int interrogate_logical(struct opts, int, int);
+#endif
+
 void boardid2str (unsigned long , char *);
 
 /* Added devfs devices 
@@ -84,6 +90,7 @@
   int cntr;
   int foundone = 0;
 
+#ifdef WITH_IDA
   for (cntr = 0; cntr < 8; cntr++)
     {
       /* does this device exist ? */
@@ -104,6 +111,8 @@
 	  perror ("DEBUG: reason");
 	}
     }
+#endif
+
   for (cntr = 0; cntr < 16; cntr++)
     {
       /* does this device exist ? */
@@ -127,6 +136,7 @@
    return foundone;
 }
 
+#ifdef WITH_IDA
 int
 interrogate_controller (struct opts opts, const char *devicefile)
 {
@@ -228,6 +238,7 @@
 
   return 1;
 }
+#endif
 
 void
 boardid2str (unsigned long board_id, char *name)
diff -u cpqarrayd-2.3/configure.ac cpqarrayd-2.3/configure.ac
--- cpqarrayd-2.3/configure.ac
+++ cpqarrayd-2.3/configure.ac
@@ -46,13 +46,13 @@
 AC_CHECK_HEADERS(linux/compiler.h)
                                                                        
 dnl Check Headers
-AC_CHECK_HEADERS(ida_ioctl.h ida_cmd.h cpqarray.h,, 
-  AC_MSG_ERROR(You need to have the SmartArray driver in the kernel.))
+dnl AC_CHECK_HEADERS(ida_ioctl.h ida_cmd.h cpqarray.h,, 
+dnl   AC_MSG_ERROR(You need to have the SmartArray driver in the kernel.))
 
 dnl Check version of SmartArray driver
-AC_MSG_CHECKING(SmartArray driver version)
-AC_EGREP_HEADER(blk_cnt, ida_ioctl.h,AC_MSG_RESULT(ok), 
-  AC_MSG_ERROR(You need to have the SmartArray driver version 1.0.1 or higher installed.))
+dnl AC_MSG_CHECKING(SmartArray driver version)
+dnl AC_EGREP_HEADER(blk_cnt, ida_ioctl.h,AC_MSG_RESULT(ok), 
+dnl   AC_MSG_ERROR(You need to have the SmartArray driver version 1.0.1 or higher installed.))
 
 dnl Check for CCISS header file
 AC_CHECK_HEADERS(linux/cciss_ioctl.h,,
diff -u cpqarrayd-2.3/debian/changelog cpqarrayd-2.3/debian/changelog
--- cpqarrayd-2.3/debian/changelog
+++ cpqarrayd-2.3/debian/changelog
@@ -1,3 +1,10 @@
+cpqarrayd (2.3-1+uvt1) unstable; urgency=low
+
+  * Apply no_ida patch from Fedora to make package build again
+    in a squeeze context (closes: #543064).
+
+ -- Thijs Kinkhorst <[email protected]>  Mon, 17 Jan 2011 10:50:03 +0000
+
 cpqarrayd (2.3-1) unstable; urgency=low
 
   * New upstream release.

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to