Add ipmitool (#2087)
authorFlorian Fainelli <florian@openwrt.org>
Sun, 9 Nov 2008 15:47:42 +0000 (15:47 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Sun, 9 Nov 2008 15:47:42 +0000 (15:47 +0000)
SVN-Revision: 13147

utils/ipmitool/Makefile [new file with mode: 0644]
utils/ipmitool/patches/100-cubic_root.patch [new file with mode: 0644]

diff --git a/utils/ipmitool/Makefile b/utils/ipmitool/Makefile
new file mode 100644 (file)
index 0000000..8339506
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright (C) 2008, OpenWrt.org
+#
+# $Id: #
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ipmitool
+PKG_VERSION:=1.8.10
+PKG_RELEASE:=1
+
+PKG_SOURCE:=ipmitool-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@SF/ipmitool
+PKG_MD5SUM:=282f3a3837399eae885512a4026bf5e1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/ipmitool
+  SECTION:=utils
+  CATEGORY:=Utilities
+  DEPENDS:=+libopenssl
+  TITLE:=IPMI remote computer management utility
+  URL:=http://ipmitool.sourceforge.net/
+endef
+
+define Package/ipmitool/description
+  IPMItool is a utility for managing and configuring devices
+  that support the Intelligent Platform Management Interface
+  (IPMI) version 1.5 and version 2.0 specifications.
+endef
+
+CONFIGURE_ARGS += \
+       --enable-static=no \
+       --enable-internal-md5 \
+       --enable-intf-lan=yes \
+       --enable-intf-lanplus=no \
+       --enable-intf-free=no \
+       --enable-intf-open=no \
+       --enable-intf-imb=no \
+       --enable-intf-lipmi=no \
+       --enable-intf-bmc=no
+
+define Package/ipmitool/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/ipmitool $(1)/usr/sbin/
+endef
+
+$(eval $(call BuildPackage,ipmitool))
+
diff --git a/utils/ipmitool/patches/100-cubic_root.patch b/utils/ipmitool/patches/100-cubic_root.patch
new file mode 100644 (file)
index 0000000..d061e5f
--- /dev/null
@@ -0,0 +1,147 @@
+--- ipmitool-1.8.9/lib/ipmi_sdr.c.orig 2007-07-16 13:09:13.000000000 +0200
++++ ipmitool-1.8.9/lib/ipmi_sdr.c      2007-07-16 13:09:20.000000000 +0200
+@@ -4264,3 +4264,144 @@
+       return rc;
+ }
++
++/*                                                    cbrt.c
++ *
++ *    Cube root
++ *
++ *
++ *
++ * SYNOPSIS:
++ *
++ * double x, y, cbrt();
++ *
++ * y = cbrt( x );
++ *
++ *
++ *
++ * DESCRIPTION:
++ *
++ * Returns the cube root of the argument, which may be negative.
++ *
++ * Range reduction involves determining the power of 2 of
++ * the argument.  A polynomial of degree 2 applied to the
++ * mantissa, and multiplication by the cube root of 1, 2, or 4
++ * approximates the root to within about 0.1%.  Then Newton's
++ * iteration is used three times to converge to an accurate
++ * result.
++ *
++ *
++ *
++ * ACCURACY:
++ *
++ *                      Relative error:
++ * arithmetic   domain     # trials      peak         rms
++ *    DEC        -10,10     200000      1.8e-17     6.2e-18
++ *    IEEE       0,1e308     30000      1.5e-16     5.0e-17
++ *
++ */
++/*                                                    cbrt.c  */
++
++/*
++Cephes Math Library Release 2.8:  June, 2000
++Copyright 1984, 1991, 2000 by Stephen L. Moshier
++*/
++
++
++static double CBRT2  = 1.2599210498948731647672;
++static double CBRT4  = 1.5874010519681994747517;
++static double CBRT2I = 0.79370052598409973737585;
++static double CBRT4I = 0.62996052494743658238361;
++
++#ifdef ANSIPROT
++extern double frexp ( double, int * );
++extern double ldexp ( double, int );
++extern int isnan ( double );
++extern int isfinite ( double );
++#else
++double frexp(), ldexp();
++int isnan(), isfinite();
++#endif
++
++double cbrt(x)
++double x;
++{
++int e, rem, sign;
++double z;
++
++#ifdef NANS
++if( isnan(x) )
++  return x;
++#endif
++#ifdef INFINITIES
++if( !isfinite(x) )
++  return x;
++#endif
++if( x == 0 )
++      return( x );
++if( x > 0 )
++      sign = 1;
++else
++      {
++      sign = -1;
++      x = -x;
++      }
++
++z = x;
++/* extract power of 2, leaving
++ * mantissa between 0.5 and 1
++ */
++x = frexp( x, &e );
++
++/* Approximate cube root of number between .5 and 1,
++ * peak relative error = 9.2e-6
++ */
++x = (((-1.3466110473359520655053e-1  * x
++      + 5.4664601366395524503440e-1) * x
++      - 9.5438224771509446525043e-1) * x
++      + 1.1399983354717293273738e0 ) * x
++      + 4.0238979564544752126924e-1;
++
++/* exponent divided by 3 */
++if( e >= 0 )
++      {
++      rem = e;
++      e /= 3;
++      rem -= 3*e;
++      if( rem == 1 )
++              x *= CBRT2;
++      else if( rem == 2 )
++              x *= CBRT4;
++      }
++
++
++/* argument less than 1 */
++
++else
++      {
++      e = -e;
++      rem = e;
++      e /= 3;
++      rem -= 3*e;
++      if( rem == 1 )
++              x *= CBRT2I;
++      else if( rem == 2 )
++              x *= CBRT4I;
++      e = -e;
++      }
++
++/* multiply by power of 2 */
++x = ldexp( x, e );
++
++/* Newton iteration */
++x -= ( x - (z/(x*x)) )*0.33333333333333333333;
++#ifdef DEC
++x -= ( x - (z/(x*x)) )/3.0;
++#else
++x -= ( x - (z/(x*x)) )*0.33333333333333333333;
++#endif
++
++if( sign < 0 )
++      x = -x;
++return(x);
++}