diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /src/pmns/Make.stdpmid | |
download | pcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'src/pmns/Make.stdpmid')
-rwxr-xr-x | src/pmns/Make.stdpmid | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/src/pmns/Make.stdpmid b/src/pmns/Make.stdpmid new file mode 100755 index 0000000..c50423e --- /dev/null +++ b/src/pmns/Make.stdpmid @@ -0,0 +1,169 @@ +#!/bin/sh +# +# Copyright (c) 1995,2003 Silicon Graphics, Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# + +# source the PCP configuration environment variables +. $PCP_DIR/etc/pcp.env + +if [ -d "$PCP_TMPFILE_DIR" ] +then + tmp=`mktemp -d "$PCP_TMPFILE_DIR/pcp.XXXXXXXXX"` || exit 1 +else + # if configure --prefix is used in a the build, then $PCP_TMPFILE_DIR + # may not yet exist ... /tmp is a safe bet + # + tmp=`mktemp -d /tmp/pcp.XXXXXXXXX` || exit 1 +fi +status=1 +trap "rm -rf $tmp; exit \$status" 0 1 2 3 15 + +prog=`basename $0` +OLD=stdpmid +NEW=$tmp/new +SOURCE="" +for file in `echo stdpmid.*` +do + case $file + in + stdpmid.'*'|stdpmid.O|stdpmid.O.*|stdpmid.N|stdpmid.N.*|stdpmid.rpmorig|stdpmid.*.rpmorig) + ;; + *) + SOURCE="$SOURCE $file" + ;; + esac +done + +[ -z "$SOURCE" ] && exit # nothing to do - the norm nowadays + +# post-processing with sed ... +# - removes comments +# - maps white space to a single space +# - performs domain re-numbering that occured for LAB and ASH +# between PCP 2.0 and PCP 2.1 to avoid duplicates in the interim +# +# Note on sort. Used to be "sort -n +1 -2", but changed to "sort -n -k2,3" +# to avoid problems with more recent Linux coreutils versions. +# +for file in $SOURCE +do + sed <$file \ + -e '/^#/d' \ + -e 's/[ ][ ]*/ /' \ + -e '/^LAB /s/254/246/' \ + -e '/^ASH /s/7/11/' +done \ +| sort -n -k2,3 \ +| uniq >$tmp/tmp + +if [ -s "$tmp/tmp" ] +then + error=false +else + echo "$prog: Error: failed to create temporary file" + exit +fi + +# scan for duplicate domain name, but different domain number +# +$PCP_AWK_PROG '{ print $1 }' <$tmp/tmp \ +| sort \ +| uniq -c \ +| while read cnt domain +do + [ $cnt -eq 1 ] && continue + echo "$prog: Error: duplicate for domain name \"$domain\" ..." + grep "^$domain[ ]" $SOURCE | sed -e 's/^/ /' + error=true +done + +# scan for duplicate domain number, but different domain name +# +$PCP_AWK_PROG '{ print $2 }' <$tmp/tmp \ +| sort \ +| uniq -c \ +| while read cnt number +do + [ $cnt -eq 1 ] && continue + echo "$prog: Error: duplicate for domain number \"$number\" ..." + grep "[ ]$number\$" $SOURCE | sed -e 's/^/ /' + error=true +done + +$error && exit + +# preamble +# +cat <<'End-of-File' >$NEW +/* + * NOTE: + * Do not edit this file (it is re-created by Make.stdpmid). + * To make changes, edit one of the stdpmid.* files, most probably + * stdpmid.local, and as root + * # make stdpmid + * + * The following domain number assignments are assumed to apply + * + * Domain Number Range Use + * 0 reserved -- DO NOT USE + * 1-31 production PMDAs from PCP packages (#1) + * 32-39 ORACLE DBMS PMDAs + * 40-47 Sybase DBMS PMDAs + * 48-55 Informix DBMS PMDAs + * 56-58 SNMP Gateway PMDA + * 59-63 Linux PMDAs + * 64-69 ISV PMDAs + * 70-128 production PMDAs from PCP packages (#2) + * 129-510 End-User PMDAs and demo PMDAs + * 511 reserved for dynamic PMNS entries -- DO NOT USE + * + * A Performance Metrics Identifier (PMID) is internally encoded as + * 1 bits - flag reserved for internal use + * 9 bits - the Performance Metric Domain Agent (PMDA) domain number + * from the list below + * 12 bits - cluster within domain + * 10 bits - serial within cluster + */ + +#ifndef __STDPMID +#define __STDPMID + +End-of-File + +cat $tmp/tmp \ +| while read domain number +do + echo "#define $domain $number" >>$NEW +done + +echo ' +#endif' >>$NEW + +# only update if it has changed +# +if [ -f $OLD ] +then + if cmp -s $OLD $NEW >/dev/null 2>&1 + then + rm -f $NEW + fi +fi + +if [ -f $NEW ] +then + cp $NEW $OLD + chmod 444 $NEW +fi + +status=0 +exit |