I suppose it would be useful to be able to track server hardware changes via SMBIOS/DMI. In my case, after replacing server RAM I could not find exact failed module by serial number because did not save dmidecode output before memory swap. The attached script should help in such and related situations. To enable tracking dmidecode diffs in daily mail the admin should set the variable daily_status_dmidecode_enable to "YES" in /etc/periodic.conf Fix: Property changes on: files/dmidecode.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property--NIv951IkonxdJaiuwNYyiFrqnSjkPlELs7r1B0QeJvPuCedE Content-Type: text/plain; name="file.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="file.diff" Index: Makefile =================================================================== --- Makefile (revision 351962) +++ Makefile (working copy) @@ -3,6 +3,7 @@ PORTNAME= dmidecode PORTVERSION= 2.12 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= ${MASTER_SITE_SAVANNAH} \ ftp://ftp.nuug.no/pub/anders/distfiles/ @@ -19,10 +20,17 @@ MAKE_ENV+= DOCSDIR="${DOCSDIR}" PLIST_FILES= sbin/dmidecode \ - man/man8/dmidecode.8.gz + man/man8/dmidecode.8.gz \ + etc/periodic/daily/dmidecode PORTDOCS= AUTHORS CHANGELOG README +USE_RC_SUBR= dmidecode +post-install: + ${MKDIR} ${STAGEDIR}${PREFIX}/etc/periodic/daily + ${INSTALL_SCRIPT} ${WRKDIR}/dmidecode \ + ${STAGEDIR}${PREFIX}/etc/periodic/daily + .include <bsd.port.pre.mk> .if ${ARCH} == "amd64" || ${ARCH} == "i386" Index: files/dmidecode.in =================================================================== --- files/dmidecode.in (revision 0) +++ files/dmidecode.in (working copy) @@ -0,0 +1,53 @@ +#!/bin/sh - +# +# Copyright (c) 2001-2014 The FreeBSD Project +# Copyright (c) 2014 Dmitry Morozovsky <marck@rinet.ru> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +# +# $FreeBSD$ +# + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +dmidecode=%%PREFIX%%/sbin/dmidecode + +. /etc/periodic/security/security.functions + +rc=0 + +case "$daily_status_dmidecode_enable" in + [Yy][Ee][Ss]) + $dmidecode 2>/dev/null | + check_diff dmidecode - "${host} hardware dmi status:" + rc=$?;; + *) rc=0;; +esac + +exit $rc
Responsible Changed From-To: freebsd-ports-bugs->anders Over to maintainer (via the GNATS Auto Assign Tool)
I would have assigned this to you since you're a committer Dmitry, and gladly helped to review it if you dont have a ports bit. But it turns out the maintainer of sysutils/dmidecode is also a committerm, so assign accordingly. Anyone could have done this (correctly assign) since October 2014 btw :) Dmitry, can you please include your patch as an attachment, updated against ports HEAD if required, as well as the following QA results: * portlint -AC * poudriere testport (or bulk -t)
Created attachment 156035 [details] patch as an attachment I'm attaching patch against contemporary port state; While here, it also fixes one small portlint warning about non-compliant patch-Makefile format. poudriere for 10amd64 and 10i386 passed (unfortunately I have no -CURRENT machine handy to test with)
Maybe it would be also useful to mention periodic in pkg_display?
Created attachment 156036 [details] fixed Makefile Argh, USE_RC_SUBR is still needed, otherwise dmidecode script misses staging area.
Testbuilds fine on 11a, 10.2a+i, 9.3a.
A commit references this bug: Author: pi Date: Sun Dec 6 10:04:51 UTC 2015 New revision: 403097 URL: https://svnweb.freebsd.org/changeset/ports/403097 Log: sysutils/dmidecode: add dmidecode to periodic/daily to track hardware changes To enable tracking dmidecode diffs in daily mail the admin should set the variable daily_status_dmidecode_enable to "YES" in /etc/periodic.conf PR: 188941 Submitted by: marck Approved by: sunpoet (timeout) Changes: head/sysutils/dmidecode/Makefile head/sysutils/dmidecode/files/dmidecode.in head/sysutils/dmidecode/files/patch-Makefile
Committed, thanks.
A commit references this bug: Author: pi Date: Mon Dec 7 19:52:20 UTC 2015 New revision: 403232 URL: https://svnweb.freebsd.org/changeset/ports/403232 Log: sysutils/dmidecode: remove rc.d/dmidecode introduced with r403097 PR: 188941 Submitted by: matthew, dim Pointy hat to: pi Changes: head/sysutils/dmidecode/Makefile
A commit references this bug: Author: pi Date: Tue Dec 8 06:14:00 UTC 2015 New revision: 403253 URL: https://svnweb.freebsd.org/changeset/ports/403253 Log: sysutils/dmidecode: really fix problem from r403232 PR: 188941 Submitted by: mat Changes: head/sysutils/dmidecode/Makefile