From 2645ef8f6d4aaa702d7933ccabda6ef936a25649 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Sun, 9 Nov 2008 15:47:42 +0000 Subject: [PATCH] Add ipmitool (#2087) SVN-Revision: 13147 --- utils/ipmitool/Makefile | 48 +++++++ utils/ipmitool/patches/100-cubic_root.patch | 147 ++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 utils/ipmitool/Makefile create mode 100644 utils/ipmitool/patches/100-cubic_root.patch diff --git a/utils/ipmitool/Makefile b/utils/ipmitool/Makefile new file mode 100644 index 000000000..8339506a9 --- /dev/null +++ b/utils/ipmitool/Makefile @@ -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 index 000000000..d061e5f1a --- /dev/null +++ b/utils/ipmitool/patches/100-cubic_root.patch @@ -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); ++} -- 2.30.2