diff --git a/build-ubunturepo b/build-ubunturepo index 8379d8201..5c078b0dd 100755 --- a/build-ubunturepo +++ b/build-ubunturepo @@ -232,6 +232,7 @@ then #genesis scripts package, don't remove genesis amd64 files #rm -f ../../$package_dir_name/${file_low}-amd64_*.deb cd $file + CURDIR=$(pwd) dch -v $pkg_version -b -c debian/changelog $build_string if [ "$target_arch" = "all" ]; then #xcat probe use some functions shipped by xCAT, for below reasons we need to copy files to xCAT-probe directory @@ -239,7 +240,6 @@ then #2 don't maintain two files for each script #3 symbolic link can't work during package if [ $file_low = "xcat-probe" ]; then - CURDIR=$(pwd) mkdir -p ${CURDIR}/lib/perl/xCAT/ cp -f ${CURDIR}/../perl-xCAT/xCAT/NetworkUtils.pm ${CURDIR}/lib/perl/xCAT/ cp -f ${CURDIR}/../perl-xCAT/xCAT/GlobalDef.pm ${CURDIR}/lib/perl/xCAT/ @@ -253,9 +253,15 @@ then mv ${CURDIR}/debian/control.save.998 ${CURDIR}/debian/control else if [ "$file" = "xCAT-genesis-scripts" ]; then - CURDIR=$(pwd) - echo "Rename control file to build pkg: cp ${CURDIR}/debian/control-${target_arch} ${CURDIR}/debian/control" + echo "Rename control file to build pkg: mv ${CURDIR}/debian/control-${target_arch} ${CURDIR}/debian/control" cp ${CURDIR}/debian/control-${target_arch} ${CURDIR}/debian/control + elif [ "$file" = "xCAT" ]; then + # shipping bmcsetup and getipmi scripts as part of postscripts + files=("bmcsetup" "getipmi") + for f in "${files[@]}"; do + cp ${CURDIR}/../xCAT-genesis-scripts/bin/$f ${CURDIR}/postscripts/$f + sed -i "s/xcat.genesis.$f/$f/g" ${CURDIR}/postscripts/$f + done fi CURDIR=$(pwd) cp ${CURDIR}/debian/control ${CURDIR}/debian/control.save.998 @@ -264,9 +270,13 @@ then dpkg-buildpackage -rfakeroot -uc -us -a$target_arch mv ${CURDIR}/debian/control.save.998 ${CURDIR}/debian/control if [ "$file" = "xCAT-genesis-scripts" ]; then - CURDIR=$(pwd) echo "Move control file back: mv ${CURDIR}/debian/control ${CURDIR}/debian/control-${target_arch}" rm ${CURDIR}/debian/control + elif [ "$file" = "xCAT" ]; then + files=("bmcsetup" "getipmi") + for f in "${files[@]}"; do + rm -f ${CURDIR}/postscripts/$f + done fi fi rc=$? diff --git a/makerpm b/makerpm index c80ed0edf..ba9dd6292 100755 --- a/makerpm +++ b/makerpm @@ -107,6 +107,13 @@ function makexcat { TARGET="--target $ARCH" if [ "$RPMNAME" = "xCAT" ]; then + cd `dirname $0`/ + # shipping bmcsetup and getipmi scripts as part of postscripts + files=("bmcsetup" "getipmi") + for f in "${files[@]}"; do + cp "xCAT-genesis-scripts/bin/"$f ${RPMNAME}/postscripts/$f + sed -i "s/xcat.genesis.$f/$f/g" ${RPMNAME}/postscripts/$f + done cd `dirname $0`/$RPMNAME tar --exclude .svn --exclude upflag -czf $RPMROOT/SOURCES/postscripts.tar.gz postscripts LICENSE.html tar --exclude .svn -czf $RPMROOT/SOURCES/prescripts.tar.gz prescripts @@ -139,6 +146,12 @@ function makexcat { echo "Building $RPMROOT/RPMS/$ARCH/$RPMNAME-$VER-snap*.$ARCH.rpm $EMBEDTXT..." rpmbuild $QUIET -ba $RPMNAME/$RPMNAME.spec $TARGET --define "version $VER" $REL "$EASE" RC=$? + if [ "$RPMNAME" = "xCAT" ]; then + files=("bmcsetup" "getipmi") + for f in "${files[@]}"; do + rm -f `dirname $0`/${RPMNAME}/postscripts/$f + done + fi fi } diff --git a/xCAT-genesis-scripts/bin/bmcsetup b/xCAT-genesis-scripts/bin/bmcsetup index 1be072fcd..d28a3bf59 100755 --- a/xCAT-genesis-scripts/bin/bmcsetup +++ b/xCAT-genesis-scripts/bin/bmcsetup @@ -29,6 +29,7 @@ TIMEOUT=15 function cold_reset_bmc() { if [ -z $XPROD ]; then logger -s -t $log_label -p local4.crit "CRITICAL ERROR - XPROD must be set before calling ${FUNCNAME[0]}" + rm -f /tmp/ipmicfg.xml exit 1 fi if [ "$XPROD" = "43707" -a "$IPMIMFG" != '0' ]; then @@ -87,6 +88,7 @@ function cold_reset_bmc() { function snooze() { if [ -z $XPROD ]; then logger -s -t $log_label -p local4.crit "CRITICAL ERROR - XPROD must be set before calling ${FUNCNAME[0]}" + rm -f /tmp/ipmicfg.xml exit 1 fi if [ "$XPROD" = "43707" -a "$IPMIMFG" != '0' ]; then @@ -100,7 +102,15 @@ function snooze() { logger -s -t $log_label -p local4.debug "snooze for 1 second..." sleep 1 fi -} +} + +if which ipmitool 2>&1 | grep no; then + echo "No ipmitool find, please install it first"; + exit 1; +fi + +# Add ipmi_devintf module to allow the ipmitool operation in-band +modprobe ipmi_devintf allowcred.awk & CREDPID=$! @@ -605,3 +615,5 @@ while [ $idev -gt 0 ]; do fi done +# remove the bmc configuration information before exit +rm -f /tmp/ipmicfg.xml diff --git a/xCAT-genesis-scripts/bin/getipmi b/xCAT-genesis-scripts/bin/getipmi index f129cb382..ecc046213 100755 --- a/xCAT-genesis-scripts/bin/getipmi +++ b/xCAT-genesis-scripts/bin/getipmi @@ -1,4 +1,5 @@ #!/bin/bash + log_label="xcat.genesis.getipmi" allowcred.awk & @@ -6,6 +7,8 @@ CREDPID=$! if [ -z "$XCATDEST" ]; then XCATDEST=$1 fi + +# This section only works in genesis if [ -z "$XCATDEST" ]; then for parm in `cat /proc/cmdline` ; do if echo $parm |grep xcatd= > /dev/null; then @@ -13,6 +16,12 @@ if [ -z "$XCATDEST" ]; then fi done fi +# This section works in diskless/diskful +# The environment MASTER_IP and XCATDPORT is exported by mypostscript +if [ -z "$XCATDEST" ]; then + XCATDEST=$MASTER_IP:$XCATDPORT +fi + for LANCHAN in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16; do if ipmitool channel info $LANCHAN 2> /dev/null | grep 802.3 > /dev/null 2>&1 && ipmitool raw 0xc 2 $LANCHAN 5 0 0 > /dev/null 2>&1; then break;