system/rasdaemon: Added (RAS logging tool)

Signed-off-by: bedlam <dave@slackbuilds.org>

Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
This commit is contained in:
Julian Grinblat 2023-04-13 21:05:34 +01:00 committed by Willy Sudiarto Raharjo
parent 8459d36171
commit b43c76b00c
No known key found for this signature in database
GPG key ID: 3F617144D7238786
7 changed files with 282 additions and 0 deletions

28
system/rasdaemon/README Normal file
View file

@ -0,0 +1,28 @@
Rasdaemon is a RAS (Reliability, Availability and Serviceability)
logging tool. It records memory errors, using the EDAC tracing
events. EDAC is a Linux kernel subsystem with handles detection of
ECC errors from memory controllers for most chipsets on i386 and
x86_64 architectures. EDAC drivers for other architectures like
arm also exists.
In order to use rasdaemon, you must have mounted a debugfs
filesystem.
sudo mount -t debugfs none /sys/kernel/debug
You can add this to fstab:
debugfs /sys/kernel/debug debugfs defaults 0 0
To have rasdaemon start and stop with your host,
add to /etc/rc.d/rc.local:
if [ -x /etc/rc.d/rc.rasdaemon ]; then
/etc/rc.d/rc.rasdaemon start
fi
and to /etc/rc.d/rc.local_shutdown (creating it if needed):
if [ -x /etc/rc.d/rc.rasdaemon ]; then
/etc/rc.d/rc.rasdaemon stop
fi

View file

@ -0,0 +1,25 @@
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
# If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
# toss the redundant copy
rm $NEW
fi
# Otherwise, we leave the .new copy for the admin to consider...
}
preserve_perms() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
if [ -e $OLD ]; then
cp -a $OLD ${NEW}.incoming
cat $NEW > ${NEW}.incoming
mv ${NEW}.incoming $NEW
fi
config $NEW
}
preserve_perms etc/rc.d/rc.rasdaemon.new

View file

@ -0,0 +1,12 @@
diff --color -Naur ./rasdaemon-0.8.0/configure.ac ./rasdaemon-0.8.0-patched/configure.ac
--- ./rasdaemon-0.8.0/configure.ac 2023-02-18 18:02:41.000000000 +0900
+++ ./rasdaemon-0.8.0-patched/configure.ac 2023-04-10 14:53:22.668527535 +0900
@@ -3,7 +3,7 @@
AC_CANONICAL_TARGET
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_PROG_INSTALL
LT_INIT

View file

@ -0,0 +1,127 @@
#!/bin/bash
# Slackware Package Build Script for rasdaemon
# Home Page https://github.com/mchehab/rasdaemon
# Copyright (c) 2023, Julian Grinblat (julian _AT_ mnspace _DOT_ net)
# All rights reserved.
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of script must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rasdaemon
VERSION=${VERSION:-0.8.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -fr $TMP/$PRGNAM-$VERSION $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root.root .
find -L . \
\( -perm 664 -o -perm 666 -o -perm 600 -o -perm 440 -o -perm 444 -o -perm 400 \) \
-exec chmod 644 {} \;
find -L . \
\( -perm 777 -o -perm 755 -o -perm 711 -o -perm 700 -o -perm 555 -o -perm 511 -o -perm 500 \) \
-exec chmod 755 {} \;
patch -p2 < $CWD/fix-old-automake.patch
autoreconf -vfi
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--sbindir=/usr/bin \
--sysconfdir=/etc \
--with-sysconfdefdir=/etc/sysconfig \
--localstatedir=/var \
--mandir=/usr/man \
--disable-static \
--enable-shared \
--enable-sqlite3 \
--enable-aer \
--enable-mce \
--build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
install -D -m 0644 $CWD/rc.rasdaemon $PKG/etc/rc.d/rc.rasdaemon.new
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
cp -a AUTHORS COPYING ChangeLog NEWS README.md TODO $PKG/usr/doc/$PRGNAM-$VERSION
### strip binaries
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
( cd $PKG/usr/man
find . -type f -exec gzip -9 {} \;
for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE

View file

@ -0,0 +1,10 @@
PRGNAM="rasdaemon"
VERSION="0.8.0"
HOMEPAGE="https://github.com/mchehab/rasdaemon"
DOWNLOAD="https://www.infradead.org/~mchehab/rasdaemon/rasdaemon-0.8.0.tar.bz2"
MD5SUM="3784a8049aef41365e2b7c1c9bd082b3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libtraceevent"
MAINTAINER="Julian Grinblat"
EMAIL="julian@dotcore.co.il"

View file

@ -0,0 +1,61 @@
#!/bin/sh
#
# Rasdaemon startup script for Slackware Linux
BASE=rasdaemon
UNSHARE=/usr/bin/unshare
RASDAEMON=/usr/bin/${BASE}
# Check if rasdaemon is present.
if [ ! -x ${RASDAEMON} ]; then
echo "${RASDAEMON} not present or not executable"
exit 1
fi
rasdaemon_start() {
echo "Starting ${BASE} ..."
${RASDAEMON} -r
${RASDAEMON} --enable
}
rasdaemon_stop() {
echo -n "Stopping ${BASE} ..."
${RASDAEMON} --disable
echo " done"
}
rasdaemon_restart() {
rasdaemon_stop
sleep 1
rasdaemon_start
}
rasdaemon_status() {
pid=$(pidof ${BASE})
if [ ! -z "${pid}" ] && ps -o cmd $pid | grep -q ${BASE} ; then
echo "Status of ${BASE}: running"
else
echo "Status of ${BASE}: stopped"
fi
}
case "$1" in
'start')
rasdaemon_start
;;
'stop')
rasdaemon_stop
;;
'restart')
rasdaemon_restart
;;
'status')
rasdaemon_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac
exit 0

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.
# Line up the first '|' above the ':' following the base package name, and
# the '|' on the right side marks the last column you can put a character in.
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
rasdaemon: rasdaemon (RAS logging tool)
rasdaemon:
rasdaemon: Rasdaemon is a RAS (Reliability, Availability and Serviceability)
rasdaemon: logging tool. It records memory errors, using the EDAC tracing
rasdaemon: events.
rasdaemon:
rasdaemon: Home Page https://github.com/mchehab/rasdaemon
rasdaemon:
rasdaemon:
rasdaemon:
rasdaemon: