Index: ossp-pkg/shtool/AUTHORS RCS File: /v/ossp/cvs/ossp-pkg/shtool/AUTHORS,v rcsdiff -q -kk '-r1.5' '-r1.6' -u '/v/ossp/cvs/ossp-pkg/shtool/AUTHORS,v' 2>/dev/null --- AUTHORS 2001/06/14 14:24:16 1.5 +++ AUTHORS 2003/12/13 21:23:55 1.6 @@ -21,7 +21,3 @@ Written by: Ulrich Drepper, Ralf S. Engelschall Edited by: Ralf S. Engelschall - o sh.guessos: - Written by: Jim Jagielski et all, ASF - Edited by: Ralf S. Engelschall - Index: ossp-pkg/shtool/ChangeLog RCS File: /v/ossp/cvs/ossp-pkg/shtool/ChangeLog,v rcsdiff -q -kk '-r1.191' '-r1.192' -u '/v/ossp/cvs/ossp-pkg/shtool/ChangeLog,v' 2>/dev/null --- ChangeLog 2003/11/17 12:36:42 1.191 +++ ChangeLog 2003/12/13 21:23:55 1.192 @@ -9,8 +9,16 @@ ChangeLog - Changes between 1.6.2 and 2.0.0 (02-Nov-2002 to 17-Nov-2003): - + Changes between 1.6.2 and 2.0.0 (02-Nov-2002 to xx-Dec-2003): + + *) Replaced old and inflexible "shtool guessos" command + with a completely new command "shtool platform" command. + It distinguishes a Unix platform according to its hardware + architecture and operating system. For both there is a class, + product and technology identification. For each of those six + identifications, there is a verbose, regular and concise version. + [Ralf S. Engelschall] + *) Upgraded to GNU Autoconf 2.58 environment. [Ralf S. Engelschall] Index: ossp-pkg/shtool/Makefile.in RCS File: /v/ossp/cvs/ossp-pkg/shtool/Makefile.in,v rcsdiff -q -kk '-r1.47' '-r1.48' -u '/v/ossp/cvs/ossp-pkg/shtool/Makefile.in,v' 2>/dev/null --- Makefile.in 2003/02/11 13:00:49 1.47 +++ Makefile.in 2003/12/13 21:23:55 1.48 @@ -54,7 +54,7 @@ sh.rotate \ sh.tarball \ sh.subst \ - sh.guessos \ + sh.platform \ sh.arx \ sh.slo \ sh.scpp \ Index: ossp-pkg/shtool/NEWS RCS File: /v/ossp/cvs/ossp-pkg/shtool/NEWS,v rcsdiff -q -kk '-r1.6' '-r1.7' -u '/v/ossp/cvs/ossp-pkg/shtool/NEWS,v' 2>/dev/null --- NEWS 2003/11/14 17:21:37 1.6 +++ NEWS 2003/12/13 21:23:55 1.7 @@ -9,8 +9,9 @@ This is a list of user-visible and/or major changes to GNU shtool. For more details please have a look at the ChangeLog file. - Changes between 1.6 and 2.0 (02-Nov-2002 to xx-Nov-2003) + Changes between 1.6 and 2.0 (02-Nov-2002 to xx-Dec-2003) + *) Replaced old `shtool guessos' with a new `shtool platform' command *) Even more POSIX 1003.1-2001 compliancy and portability. *) Many workarounds and fixed for permission related problems *) Fixed error exit in all commands by introducing an "shtool_exit" Index: ossp-pkg/shtool/README RCS File: /v/ossp/cvs/ossp-pkg/shtool/README,v rcsdiff -q -kk '-r1.96' '-r1.97' -u '/v/ossp/cvs/ossp-pkg/shtool/README,v' 2>/dev/null --- README 2003/08/13 14:23:21 1.96 +++ README 2003/12/13 21:23:55 1.97 @@ -35,7 +35,7 @@ rotate Rotate logfiles tarball Roll distribution tarballs subst Apply sed(1) substitution operations - guessos Simple OS/platform guesser + platform Platform identification utility arx Extended archive command slo Separate linker options by library class scpp Sharing C Pre-Processor Index: ossp-pkg/shtool/sh.common RCS File: /v/ossp/cvs/ossp-pkg/shtool/sh.common,v rcsdiff -q -kk '-r1.21' '-r1.22' -u '/v/ossp/cvs/ossp-pkg/shtool/sh.common,v' 2>/dev/null --- sh.common 2003/08/13 14:20:34 1.21 +++ sh.common 2003/12/13 21:23:55 1.22 @@ -174,6 +174,16 @@ chmod 600 $tmpfile fi +# utility function: map string to lower case +util_lower () { + echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' +} + +# utility function: map string to upper case +util_upper () { + echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +} + # cleanup procedure shtool_exit () { rc="$1" Index: ossp-pkg/shtool/sh.guessos RCS File: /v/ossp/cvs/ossp-pkg/shtool/Attic/sh.guessos,v co -q -kk -p'1.23' '/v/ossp/cvs/ossp-pkg/shtool/Attic/sh.guessos,v' | diff -u - /dev/null -L'ossp-pkg/shtool/sh.guessos' 2>/dev/null --- ossp-pkg/shtool/sh.guessos +++ /dev/null 2024-05-09 23:55:00.000000000 +0200 @@ -1,257 +0,0 @@ -## -## guessos -- Simple operating system guesser -## Copyright (c) 1996-1999 The Apache Group, http://www.apache.org/ -## The Apache license applies (see http://www.apache.org/docs/LICENSE) -## Originally written for Apache -## - -str_tool="guessos" -str_usage="" -arg_spec="0=" -opt_spec="" -opt_alias="" - -. ./sh.common - -MACHINE=`(uname -m) 2>/dev/null` || MACHINE=`(uname -p) 2>/dev/null` || MACHINE="unknown" -RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown" - SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown" -VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown" - -XREL=`(uname -X) 2>/dev/null | grep "^Release" | awk '{print $3}'` -if [ "x$XREL" != "x" ]; then - if [ -f /etc/kconfig ]; then - case "$XREL" in - 4.0|4.1) echo "${MACHINE}-whatever-isc4"; shtool_exit 0 ;; - esac - else - case "$XREL" in - 3.2v4.2) - echo "whatever-whatever-sco3"; shtool_exit 0 - ;; - 3.2v5.0*) - echo "whatever-whatever-sco5"; shtool_exit 0 - ;; - 4.2MP) - if [ "x$VERSION" = "x2.1.1" ]; then - echo "${MACHINE}-whatever-unixware211"; shtool_exit 0 - elif [ "x$VERSION" = "x2.1.2" ]; then - echo "${MACHINE}-whatever-unixware212"; shtool_exit 0 - else - echo "${MACHINE}-whatever-unixware2"; shtool_exit 0 - fi - ;; - 4.2) - echo "whatever-whatever-unixware1"; shtool_exit 0 - ;; - 5) - case "$VERSION" in - 7*) echo "${MACHINE}-whatever-unixware7"; shtool_exit 0 ;; - esac - ;; - esac - fi -fi -case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in - MiNT:*) - echo "m68k-atari-mint"; shtool_exit 0 - ;; - A/UX:*) - echo "m68k-apple-aux3"; shtool_exit 0 - ;; - AIX:*) - MACH=`echo $MACHINE | sed -e 's;[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F];;'` - echo "${MACH}-ibm-aix${VERSION}.${RELEASE}"; shtool_exit 0 - ;; - dgux:*) - echo "${MACHINE}-dg-dgux"; shtool_exit 0 - ;; - HI-UX:*) - echo "${MACHINE}-hi-hiux"; shtool_exit 0 - ;; - HP-UX:*) - HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'` - MACHINE=`echo ${MACHINE}|sed -e 's:/:_:'` - echo "${MACHINE}-hp-hpux${HPUXVER}"; shtool_exit 0 - ;; - IRIX:*) - if [ -f /usr/lib32/mips4/libm.so ]; then - echo "${MACHINE}/32-sgi-irix${RELEASE}"; shtool_exit 0 - else - echo "${MACHINE}-sgi-irix${RELEASE}"; shtool_exit 0 - fi - ;; - IRIX64:*) - echo "${MACHINE}/64-sgi-irix${RELEASE}"; shtool_exit 0 - ;; - Linux:*) - V='whatever' - case "$MACHINE" in - i?86) V='pc' ;; - esac - R='' - case "$RELEASE" in - [1-9].*) R=`echo $RELEASE | cut -c1` ;; - esac - echo "${MACHINE}-${V}-linux-gnu${R}"; shtool_exit 0 - ;; - LynxOS:*) - echo "${MACHINE}-lynx-lynxos"; shtool_exit 0 - ;; - BSD/386|BSD/OS:3.*) - echo "${MACHINE}-whatever-bsdi3"; shtool_exit 0 - ;; - BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*) - echo "i486-whatever-bsdi"; shtool_exit 0 - ;; - BSD/386:*|BSD/OS:*) - echo "${MACHINE}-whatever-bsdi"; shtool_exit 0 - ;; - FreeBSD:*) - VERS=`echo ${RELEASE} | sed -e 's/[-(].*//'` - MACH=`/sbin/sysctl -n hw.model` - ARCH='whatever' - case ${MACH} in - *386* ) MACH="i386" ;; - *486* ) MACH="i486" ;; - Pentium\ II*) MACH="i686" ;; - Pentium* ) MACH="i586" ;; - Alpha* ) MACH="alpha" ;; - * ) MACH="$MACHINE" ;; - esac - case ${MACH} in - i[0-9]86 ) ARCH="pc" ;; - esac - echo "${MACH}-${ARCH}-freebsd${VERS}"; shtool_exit 0 - ;; - NetBSD:*:*:*486*) - echo "i486-whatever-netbsd${RELEASE}"; shtool_exit 0 - ;; - NetBSD:*) - echo "${MACHINE}-whatever-netbsd${RELEASE}"; shtool_exit 0 - ;; - OpenBSD:*) - echo "${MACHINE}-whatever-openbsd"; shtool_exit 0 - ;; - OSF1:*:*:*alpha*) - VERS=`echo $RELEASE | sed -e 's;^V;;'` - echo "${MACHINE}-dec-osf${VERS}"; shtool_exit 0 - ;; - QNX:*) - if [ "$VERSION" -gt 422 ]; then - echo "${MACHINE}-qssl-qnx32" - else - echo "${MACHINE}-qssl-qnx" - fi - shtool_exit 0 - ;; - Paragon*:*:*:*) - echo "i860-intel-osf1"; shtool_exit 0 - ;; - SunOS:5.*) - VERSION=`echo $RELEASE | sed -e 's;^5\.;;'` - echo "${MACHINE}-sun-solaris2.${VERSION}"; shtool_exit 0 - ;; - SunOS:*) - echo "${MACHINE}-sun-sunos4"; shtool_exit 0 - ;; - UNIX_System_V:4.*:*) - echo "${MACHINE}-whatever-sysv4"; shtool_exit 0 - ;; - unix:3.0.9*:*:88k) - echo "${MACHINE}-encore-sysv4"; shtool_exit 0 - ;; - *:4*:R4*:m88k) - echo "${MACHINE}-whatever-sysv4"; shtool_exit 0 - ;; - UnixWare:5:99*:*) - # Gemini, beta release of next rev of unixware - echo "${MACHINE}-whatever-unixware212"; shtool_exit 0 - ;; - DYNIX/ptx:4*:*) - echo "${MACHINE}-whatever-sysv4"; shtool_exit 0 - ;; - *:4.0:3.0:[345][0-9]?? | *:4.0:3.0:3[34]??[/,]* | library:*) - echo "x86-ncr-sysv4"; shtool_exit 0 - ;; - ULTRIX:*) - echo "${MACHINE}-unknown-ultrix"; shtool_exit 0 - ;; - SINIX-?:* | ReliantUNIX-?:*) - echo "${MACHINE}-siemens-sysv4"; shtool_exit 0 - ;; - POSIX*BS2000) - echo "${MACHINE}-siemens-sysv4"; shtool_exit 0 - ;; - machten:*) - echo "${MACHINE}-tenon-${SYSTEM}"; shtool_exit 0; - ;; - ConvexOS:*:11.*:*) - echo "${MACHINE}-v11-${SYSTEM}"; shtool_exit 0; - ;; - UNIX_SV:*:*:maxion) - echo "${MACHINE}-ccur-sysv4"; shtool_exit 0; - ;; - PowerMAX_OS:*:*:Night_Hawk) - MACHINE=`uname -p` - echo "${MACHINE}-concurrent-powermax"; shtool_exit 0; - ;; - UNIX_SV:*) - if [ -d /usr/nec ];then - echo "mips-nec-sysv4"; shtool_exit 0; - fi - ;; - NonStop-UX:4.[02]*:[BC]*:*) - echo "${MACHINE}-tandem-sysv4"; shtool_exit 0; - ;; - Rhapsody:*:*:*) - case "${MACHINE}" in - "Power Macintosh") MACHINE=powerpc ;; - esac - echo "${MACHINE}-apple-rhapsody${RELEASE}"; shtool_exit 0 - ;; - Darwin:*:*:*) - MACHINE=`uname -p` - echo "${MACHINE}-apple-darwin${RELEASE}"; shtool_exit 0 - ;; - "Mac OS":*:*:*) - MACHINE=`uname -p` - echo "${MACHINE}-apple-macos${RELEASE}"; shtool_exit 0 - ;; - "RISC iX":*) - echo "arm-whatever-riscix"; shtool_exit 0; - ;; - *:4.0:2:*) - echo "whatever-unisys-sysv4"; shtool_exit 0; - ;; - *:*:dcosx:NILE*) - echo "pyramid-pyramid-svr4"; shtool_exit 0; - ;; - *:*:*:"DRS 6000") - echo "drs6000-whatever-whatever"; shtool_exit 0; - ;; - AmigaOS:*:*:* ) - echo "${MACHINE}-whatever-${SYSTEM}${RELEASE}"; shtool_exit 0 - ;; -esac - -# Now NeXT -ISNEXT=`(hostinfo) 2>/dev/null` -case "$ISNEXT" in - *NeXT*) - # Swiped from a friendly uname clone for NEXT/OPEN Step. - NEXTOSVER="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`" - if [ "$NEXTOSVER" -gt 3.3 ]; then - NEXTOS="openstep" - else - NEXTOS="nextstep" - fi - NEXTREL="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`" - NEXTARCH=`arch` - echo "${NEXTARCH}-next-${NEXTOS}${NEXTREL}" ; shtool_exit 0 - ;; -esac - -# Fallback -echo "${MACHINE}-unknown-${SYSTEM}/${RELEASE}/${VERSION}" - Index: ossp-pkg/shtool/sh.platform RCS File: /v/ossp/cvs/ossp-pkg/shtool/sh.platform,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/shtool/sh.platform,v' | diff -u /dev/null - -L'ossp-pkg/shtool/sh.platform' 2>/dev/null --- ossp-pkg/shtool/sh.platform +++ - 2024-05-09 23:58:12.463278837 +0200 @@ -0,0 +1,585 @@ +## +## platform -- Platform Identification Utility +## Copyright (c) 2003 Ralf S. Engelschall +## Originally written for use in OpenPKG +## +## This file is part of shtool and 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 file 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. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +## USA, or contact Ralf S. Engelschall . +## + +str_tool="platform" +str_usage="[-F|--format FORMAT]" +str_usage="$str_usage [-S|--sep STRING]" +str_usage="$str_usage [-C|--conc STRING]" +str_usage="$str_usage [-L|--lower]" +str_usage="$str_usage [-U|--upper]" +str_usage="$str_usage [-v|--verbose]" +str_usage="$str_usage [-c|--concise]" +str_usage="$str_usage [-n|--no-newline]" +str_usage="$str_usage [-t|--type TYPE]" +str_usage="$str_usage [-V|--version]" +str_usage="$str_usage [-h|--help]" +arg_spec="0=" +opt_spec="F:S:C:L.U.v.c.n.t:d.V.h." +opt_alias="F:format,S:sep,C:conc,L:lower,U:upper,v:verbose,c:consise,t:type,n:no-newline,V:version,h:help" +opt_F="%{sp} (%{ap})" +opt_S=" " +opt_C="/" +opt_L=no +opt_U=no +opt_t="" +opt_v=no +opt_c=no +opt_n=no +opt_V=no +opt_h=no + +. ./sh.common + +# option post-processing +if [ ".$opt_t" != . ]; then + case "$opt_t" in + binary ) + # binary package id (OpenPKG RPM) + opt_F="%-%" + opt_L=yes + opt_S="" + opt_C="+" + ;; + build ) + # build time checking (OpenPKG RPM) + opt_F="%-%" + opt_L=yes + opt_S="" + opt_C="+" + ;; + gnu ) + # GNU config.guess style -- + opt_F="%-unknown-%" + opt_L=yes + opt_S="" + opt_C="+" + ;; + web ) + # non-whitespace HTTP Server-header id + opt_F="%-%" + opt_S="/" + opt_C="+" + ;; + summary) + # human readable verbose summary information + opt_F="Class: %[sc] (%[ac])\\nProduct: %[sp] (%[ap])\\nTechnology: %[st] (%[at])" + opt_S=" " + opt_C="/" + ;; + all-in-one ) + # full-table all-in-one information + opt_F="" + opt_F="${opt_F}concise architecture class: %\\n" + opt_F="${opt_F}regular architecture class: %{ac}\\n" + opt_F="${opt_F}verbose architecture class: %[ac]\\n" + opt_F="${opt_F}concise architecture product: %\\n" + opt_F="${opt_F}regular architecture product: %{ap}\\n" + opt_F="${opt_F}verbose architecture product: %[ap]\\n" + opt_F="${opt_F}concise architecture technology: %\\n" + opt_F="${opt_F}regular architecture technology: %{at}\\n" + opt_F="${opt_F}verbose architecture technology: %[at]\\n" + opt_F="${opt_F}concise system class: %\\n" + opt_F="${opt_F}regular system class: %{sc}\\n" + opt_F="${opt_F}verbose system class: %[sc]\\n" + opt_F="${opt_F}concise system product: %\\n" + opt_F="${opt_F}regular system product: %{sp}\\n" + opt_F="${opt_F}verbose system product: %[sp]\\n" + opt_F="${opt_F}concise system technology: %\\n" + opt_F="${opt_F}regular system technology: %{st}\\n" + opt_F="${opt_F}verbose system technology: %[st]" + ;; + * ) + echo "$msgprefix:Error: invalid type \`$opt_t'" 1>&2 + exit 1 + ;; + esac +fi + +# assemble initial platform information +UNAME_MACHINE=`(uname -m) 2>/dev/null` ||\ +UNAME_MACHINE=`(uname -p) 2>/dev/null` ||\ +UNAME_MACHINE='unknown' +UNAME_SYSTEM=`(uname -s) 2>/dev/null` ||\ +UNAME_SYSTEM='unknown' +UNAME_RELEASE=`(uname -r) 2>/dev/null` ||\ +UNAME_RELEASE=`(uname -v) 2>/dev/null` ||\ +UNAME_RELEASE='unknown' + +UNAME="${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}" + +AC=""; AP=""; AT="" +SC=""; SP=""; ST="" + +# dispatch into platform specific sections +case "${UNAME}" in + + # FreeBSD + *:FreeBSD:* ) + # determine architecture + AC="${UNAME_MACHINE}" + case "${AC}" in + i386 ) AC="iX86" ;; + esac + AP="${AC}" + AT=`(/sbin/sysctl -n hw.model) 2>&1` + case "${AT}" in + *"Xeon"* | *"Pentium Pro"* | *"Cyrix 6x86MX"* | *"Pentium II"* | *"Pentium III"* | *"Pentium 4"* | *"Celeron"* ) AT="i686" ;; + *"Pentium"* ) AT="i586" ;; *"i486[SD]X"* | *"Cyrix 486"* | *"Cyrix [56]x86"* | *"Blue Lightning" | *"Cyrix 486S/DX" ) AT="i486" ;; + *"i386[SD]X"* | *"NexGen 586"* ) AT="i386" ;; + * ) AT="${AP}" ;; + esac + # determine system + r=`echo "${UNAME_RELEASE}" |\ + sed -e 's;[()];;' -e 's/\(-.*\)$/[\1]/'` + ST="FreeBSD ${r}" + SP="${ST}" + case "${r}" in + 1.* ) SC="4.3BSD" ;; + * ) SC="4.4BSD" ;; + esac + ;; + + # NetBSD + *:NetBSD:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + r=`echo "${UNAME_RELEASE}" | sed -e 's/\(-.*\)$/[\1]/'` + ST="NetBSD ${r}" + SP="${ST}" + case "${r}" in + 0.* ) SC="4.3BSD" ;; + * ) SC="4.4BSD" ;; + esac + ;; + + # OpenBSD + *:OpenBSD:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + r=`echo "${UNAME_RELEASE}" | sed -e 's/\(-.*\)$/[\1]/'` + ST="OpenBSD ${r}" + SP="${ST}" + SC="4.4BSD" + ;; + + # GNU/Linux + *:Linux:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + ia64 ) AT="IA64" ;; + x86_64 ) AT='AMD64' ;; + parisc ) AT="HPPA32" ;; + parisc64 ) AT="HPPA64" ;; + esac + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP='iX86' ;; + esac + AC="${AP}" + # determine system + v_kern=`echo "${UNAME_RELEASE}" |\ + sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'` + v_libc=`(strings /lib/libc.so.* | grep '^GLIBC_' | sed -e 's/^GLIBC_//' |\ + sort -n | tail -1 | sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/') 2>/dev/null` + ST="GNU/${v_libc}/<${v_kern}>" + if [ -f /etc/lsb-release ]; then + eval `( . /etc/lsb-release + echo "SC=\"LSB${LSB_VERSION}\"" + if [ ".${DISTRIB_ID}" != . -a ".${DISTRIB_RELEASE}" != . ]; then + echo "SP=\"${DISTRIB_ID} ${DISTRIB_RELEASE}\"" + fi + ) 2>/dev/null` + fi + if [ ".$SP" = . ]; then + for tagfile in x \ + `cd /etc && \ + /bin/ls *[_-]release *[_-]version 2>/dev/null | \ + sed -e '/^redhat-release$/d' -e '/^lsb-release$/d'; \ + echo redhat-release lsb-release` + do + [ ".${tagfile}" = .x ] && continue + [ ! -f "/etc/${tagfile}" ] && continue + n=`echo ${tagfile} | sed -e 's/[_-]release$//' -e 's/[_-]version$//'` + v=`(grep VERSION /etc/${tagfile}; cat /etc/${tagfile}) | grep '[0-9]' | head -1 |\ + sed -e 's/^/#/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ + -e 's/^#.*$//'` + t="" + if [ ".${n}" = .redhat ]; then + t=`head -1 /etc/${tagfile} | \ + sed -e 's/^/#/' \ + -e 's/^#.*Red Hat Enterprise Linux \([AEW]S\).*$/\1/' \ + -e 's/^#.*$//'` + fi + case "`util_lower ${n}`" in + debian ) n="Debian[ GNU/Linux]" ;; + fedora ) n="Fedora[ GNU/Linux]" ;; + redhat ) n="RedHat[ Linux]" ;; + suse ) n="SuSE[ Linux]" ;; + mandrake ) n="Mandrake[ Linux]" ;; + gentoo ) n="Gentoo[ Linux]" ;; + slackware ) n="Slackware[ Linux]" ;; + turbolinux ) n="TurboLinux" ;; + unitedlinux ) n="UnitedLinux" ;; + * ) n="${n}[ GNU/Linux]" ;; + esac + if [ ".${t}" != . ]; then + n="${n} ${t}" + fi + SP="$n $v" + break + done + fi + [ ".$SP" = . ] && SP="${ST}" + [ ".$SC" = . ] && SC="LSB" + ;; + + # Sun Solaris + *:SunOS:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + i86pc ) AT="iX86" ;; + esac + AP="${AT}" + case "${AP}" in + sun4[cdm] ) AP="SPARC32" ;; + sun4u ) AP="SPARC64" ;; + sun4* ) AP="SPARC" ;; + esac + AC="${AP}" + case "${AC}" in + SPARC* ) AC="SPARC" ;; + esac + # determine system + ST="[Sun ]SunOS ${UNAME_RELEASE}" + v=`echo "${UNAME_RELEASE}" |\ + sed -e 's;^4\.;1.;' \ + -e 's;^5\.\([0-6]\)[^0-9]*$;2.\1;' \ + -e 's;^5\.\([0-9][0-9]*\).*;\1;'` + SP="[Sun ]Solaris $v" + case "${UNAME_RELEASE}" in + 4.* ) SC="4.3BSD" ;; + 5.* ) SC="SVR4" ;; + esac + ;; + + # SCO UnixWare + *:UnixWare:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + i[3-6]86 | ix86at ) AT="iX86" ;; + esac + AP="${AT}" + # determine system + v=`/sbin/uname -v` + ST="[SCO ]UnixWare ${v}" + SP="${ST}" + SC="SVR${UNAME_RELEASE}" + ;; + + # QNX + *:QNX:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + x86pc ) AT="iX86" ;; + esac + AP="${AT}" + # determine system + v="${UNAME_RELEASE}" + ST="QNX[ Neutrino RTOS] ${v}" + v=`echo "${v}" | sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;'` + SP="QNX[ Neutrino RTOS] ${v}" + SC="QNX" + ;; + + # SGI IRIX + *:IRIX*:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}:${UNAME_SYSTEM}" in + IP*:IRIX64 ) AP="MIPS64" ;; + IP*:* ) AP="MIPS" ;; + esac + AC="${AP}" + # determine system + v=`(/bin/uname -R || /bin/uname -r) 2>/dev/null | sed -e 's;[0-9.]* ;;'` + ST="[SGI ]IRIX ${v}" + v="${UNAME_RELEASE}" + SP="[SGI ]IRIX ${v}" + SC="4.2BSD/SVR3" + ;; + + # HP HP-UX + *:HP-UX:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + ia64 ) AT="IA64" ;; + 9000/[34]?? ) AT=M68K ;; + 9000/[678][0-9][0-9]) + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523 ) AT="HPPA1.0" ;; + 528 ) AT="HPPA1.1" ;; + 532 ) AT="HPPA2.0" + case "${sc_kernel_bits}" in + 32 ) AT="${AT}n" ;; + 64 ) AT="${AT}w" ;; + esac + ;; + esac + ;; + esac + AP="${AT}" + case "${AP}" in + HPPA* ) AP="HPPA" ;; + esac + AC="${AP}" + # determine system + v=`echo "${UNAME_RELEASE}" | sed -e 's;^[^0-9]*;;'` + ST="[HP ]- ${v}" + SP="${ST}" + case "${v}" in + 10.* ) SC="SVR4.2" ;; + [7-9]* ) SC="SVR4" ;; + esac + ;; + + # HP Tru64 (OSF1) + *:OSF1:* ) + # determine architecture + AP="${UNAME_MACHINE}" + case "${AP}" in + alpha ) AP="Alpha" ;; + esac + alpha_type=`(/usr/sbin/psrinfo -v) 2>/dev/null |\ + sed -n -e 's/^.*The alpha \([^ ][^ ]*\).*processor.*$/\1/p' | head -n 1` + AT="${AP}${alpha_type}" + AC="${AP}" + # determine system + v=`echo "${UNAME_RELEASE}" | sed -e 's;^[VTX];;'` + ST="[HP ]Tru64 ${v}" + SP="${ST}" + SC="OSF1" + ;; + + # IBM AIX + *:AIX:* ) + cpu_arch=rs6000 + if [ -x /usr/sbin/lsdev -a -x /usr/sbin/lsattr ]; then + cpu_id=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if [ ".`/usr/sbin/lsattr -El ${cpu_id} | grep -i powerpc`" != . ]; then + cpu_arch=powerpc + fi + fi + if [ -x /usr/bin/oslevel ]; then + os_level=`/usr/bin/oslevel` + else + os_level="`uname -r`.`uname -v`" + fi + os_level=`echo "${os_level}" |\ + sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(\.[0-9][0-9]*\)\(.*\)$;<\1>\2[\3];' \ + -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(.*\)$;<\1>\2;'` + AT="${cpu_arch}" + AP="${AT}" + AC="${AP}" + ST="[IBM ]AIX ${os_level}" + SP="${ST}" + case "${os_level}" in + [12]* ) SC="SVR2" ;; + * ) SC="SVR4" ;; + esac + ;; + + # Apple MacOS X Darwin + *:Darwin:* ) + AT=`uname -p` + case "${AT}" in + powerpc ) AT="PPC" ;; + esac + AP="${AT}" + AC="${AP}" + case "${AC}" in + i?86 ) AC="iX86" ;; + esac + ST="[Apple ]${UNAME_SYSTEM} ${UNAME_RELEASE}" + SP="${ST}" + SC="4.4BSD/Mach3" + ;; + + # TODO ...ADD YOUR NEW PLATFORM CHECK HERE... TODO + # *:XXX:* ) + # ... + # ;; + + # ...A STILL UNKNOWN PLATFORM... + * ) + AT=`echo "${UNAME_MACHINE}" | sed -e "s; ;${opt_C};g"` + AP="${AT}" + AC="${AP}" + v=`echo "${UNAME_RELEASE}" |\ + sed -e 's/^/#/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ + -e 's/^#.*$/?/'` + ST="${UNAME_SYSTEM} ${v}" + SP="${ST}" + SC="${SP}" + ;; + +esac + +# provide fallback values +[ ".$AT" = . ] && AT="${AP:-${AC}}" +[ ".$AP" = . ] && AP="${AT:-${AC}}" +[ ".$AC" = . ] && AC="${AP:-${AT}}" +[ ".$ST" = . ] && ST="${SP:-${SC}}" +[ ".$SP" = . ] && SP="${ST:-${SC}}" +[ ".$SC" = . ] && SC="${SP:-${ST}}" + +# support explicit enforced verbose/concise output +if [ ".$opt_v" = .yes ]; then + opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%[\1]/g'` +elif [ ".$opt_c" = .yes ]; then + opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%<\1>/g'` +fi + +# provide verbose and concise variants +AC_V=""; AC_N=""; AC_C="" +AP_V=""; AP_N=""; AP_C="" +AT_V=""; AT_N=""; AT_C="" +SC_V=""; SC_N=""; SC_C="" +SP_V=""; SP_N=""; SP_C="" +ST_V=""; ST_N=""; ST_C="" +for var_lc in at ap ac st sp sc; do + case "$opt_F" in + *"%[${val_lc}]"* | *"%{${val_lc}}"* | *"%${val_lc}"* | *"%<${val_lc}>"* ) + var_uc=`util_upper "$var_lc"` + eval "val=\"\$${var_uc}\"" + val_V=""; val_N=""; val_C="" + case "$opt_F" in + *"%[${var_lc}]"* ) + val_V=`echo ":$val" | \ + sed -e 's/^://' \ + -e 's;\[\([^]]*\)\];\1;g' \ + -e 's;<\([^>]*\)>;\1;g' \ + -e "s; ;§§;g" \ + -e "s;/;%%;g" \ + -e "s;§§;${opt_S};g" \ + -e "s;%%;${opt_C};g"` + eval "${var_uc}_V=\"\${val_V}\"" + ;; + esac + case "$opt_F" in + *"%{${var_lc}}"* | *"%${var_lc}"* ) + val_N=`echo ":$val" | \ + sed -e 's/^://' \ + -e 's;\[\([^]]*\)\];;g' \ + -e 's;<\([^>]*\)>;\1;g' \ + -e "s; ;§§;g" \ + -e "s;/;%%;g" \ + -e "s;§§;${opt_S};g" \ + -e "s;%%;${opt_C};g"` + eval "${var_uc}_N=\"\${val_N}\"" + ;; + esac + case "$opt_F" in + *"%<${var_lc}>"* ) + val_C=`echo ":$val" | \ + sed -e 's/^://' \ + -e 's;\[\([^]]*\)\];;g' \ + -e 's;[^<]*<\([^>]*\)>;\1;g' \ + -e "s; ;§§;g" \ + -e "s;/;%%;g" \ + -e "s;§§;${opt_S};g" \ + -e "s;%%;${opt_C};g"` + eval "${var_uc}_C=\"\${val_C}\"" + ;; + esac + ;; + esac +done + +# create output string +output=`echo ":$opt_F" |\ + sed -e "s/^://" \ + -e "s;%\\[ac\\];${AC_V};g" \ + -e "s;%{ac};${AC_N};g" \ + -e "s;%ac;${AC_N};g" \ + -e "s;%;${AC_C};g" \ + -e "s;%\\[ap\\];${AP_V};g" \ + -e "s;%{ap};${AP_N};g" \ + -e "s;%ap;${AP_N};g" \ + -e "s;%;${AP_C};g" \ + -e "s;%\\[at\\];${AT_V};g" \ + -e "s;%{at};${AT_N};g" \ + -e "s;%at;${AT_N};g" \ + -e "s;%;${AT_C};g" \ + -e "s;%\\[sc\\];${SC_V};g" \ + -e "s;%{sc};${SC_N};g" \ + -e "s;%sc;${SC_N};g" \ + -e "s;%;${SC_C};g" \ + -e "s;%\\[sp\\];${SP_V};g" \ + -e "s;%{sp};${SP_N};g" \ + -e "s;%sp;${SP_N};g" \ + -e "s;%;${SP_C};g" \ + -e "s;%\\[st\\];${ST_V};g" \ + -e "s;%{st};${ST_N};g" \ + -e "s;%st;${ST_N};g" \ + -e "s;%;${ST_C};g" \ + -e 's/\\\\n/^/g' |\ + tr '^' '\012'` + +# support lower/upper-case mapping +if [ ".$opt_L" = .yes ]; then + output=`util_lower "$output"` +elif [ ".$opt_U" = .yes ]; then + output=`util_upper "$output"` +fi + +# display output string +if [ ".$opt_n" = .yes ]; then + echo . | awk '{ printf("%s", output); }' output="$output" +else + echo "$output" +fi + Index: ossp-pkg/shtool/shtool.pod RCS File: /v/ossp/cvs/ossp-pkg/shtool/shtool.pod,v rcsdiff -q -kk '-r1.63' '-r1.64' -u '/v/ossp/cvs/ossp-pkg/shtool/shtool.pod,v' 2>/dev/null --- shtool.pod 2003/02/11 13:00:50 1.63 +++ shtool.pod 2003/12/13 21:23:55 1.64 @@ -259,10 +259,9 @@ Apply sed(1) substitution operations. -=item B +=item B -Simple operating system and platform architecture guesser which -determines a GNU I style identification string. +Determines platform identification information. =item B @@ -674,17 +673,130 @@ `find . -name Makefile -print` make install -=item B +=item B [B<-F>|B<--format> I] [B<-S>|B<--sep> I] [B<-C>|B<--conc> I] [B<-L>|B<--lower>] [B<-U>|B<--upper>] [B<-v>|B<--verbose>] [B<-c>|B<--concise>] [B<-n>|B<--newline>] [B<-t>|B<--type> I] [B<-V>|B<--version>] [B<-h>|B<--help>] -This command is a simple operating system and platform architecture guesser -which determines a so-called ``GNU I'' style identification -string ``I-I-II''. For instance a FreeBSD 3.1 -running on a Pentium II is identified as ``C''. When you -need a more sophisticated platform guesser, use the GNU -C/C scripts, please. +This command privides Unix platform identifications. It distinguishes +a platform according to its I and I. For both there is a I, I and I +identification. For each of those six identifications, there is a +I, I and I version. + +This leads to eighteen (2x3x3) available identification strings for each +platform, from which usually 2 are chosen in a particular situation. +This is done by assembling the platform identification string using a +I string containing one or more identification constructs of the +forms "C<%[xx]>" (verbose), "C<%{xx}>" (regular) and "C<%ExxE>" +(concise). + +Option B<-F> controls the output formatting of this command. It is a +plain-text string with the "C<%>I" constructs which expand to the +various platform information strings. "C<%{>IC<}>" is the canonical +regular version of the information. "C<%[>IC<]>" is the verbose +version of the information. "C<%E>IC>" is the concise +version of the information. In total, the following constructs +are available for expansion: + + %[ac] verbose hardware architecture class + %{ac} regular hardware architecture class + % concise hardware architecture class + %[ap] verbose hardware architecture product + %{ap} regular hardware architecture product + % concise hardware architecture product + %[at] verbose hardware architecture technology + %{at} regular hardware architecture technology + % concise hardware architecture technology + %[sc] verbose operating system class + %{sc} regular operating system class + % concise operating system class + %[sp] verbose operating system product + %{sp} regular operating system product + % concise operating system product + %[st] verbose operating system technology + %{st} regular operating system technology + % concise operating system technology + +The default I string is "C<%{sp} (%{ap})>", providing the +regular operating system and hardware architecture product information. + +Option B<-S> sets the word I string for the platform +information strings. By default it is "C< >" (whitespace). It is +especially used for separating the operating system name and the +operating system version. Option B<-C> sets the word I +string for the platform information strings. By default it is "C". +It is especially used to concatenate multiple parts in operating +system name and version parts. Option B<-L> enforces conversion of the +output to all I case. Option B<-U> enforces conversion of the +output to all I case. + +Option B<-v> enforces verbose versions of all expansion constructs +in I string of option B<-F>. It is equal to specifying all +expansion constructs as "C<%[>IC<]>". Option B<-c> enforces +concise versions of all expansion constructs in I string of +option B<-F>. It is equal to specifying all expansion constructs as +"C<%E>IC>". Option B<-n> omits the usual trailing newline +character in the output. + +Option B<-t> is a meta option which internally sets options B<-F>, +B<-S>, B<-C>, B<-L>, B<-U>, B<-v> or B<-c> according to I. It can +be used to easily specify various commonly known outputs. The following +Is are available: + +=over 4 + +=item B + +Binary Package Id (OpenPKG RPM). +This is equal to "C<-F '%-%' -L -S '' -C '+'>" +and results in outputs like "C" and "C". + +=item B + +Build-Time Checking (OpenPKG RPM). +This is equal to "C<-F '%-%' -L -S '' -C '+'>" +and results in outputs like "C" and "C". + +=item B + +GNU F Style Id. +This is similar to B and is equal to "C<-F '"%-unknown-%' -L -S '' -C '+'>" +and results in outputs like "C" and "C". + +=item B + +HTTP Server Header Id. +This is equal to "C<-F '"%-%' -S '/' -C '+'>" +and results in outputs like "C" and "C". + +=item B + +Human Readable Verbose Summary Information. This is equal to "C<-F +'Class: %[sc] (%[ac])\nProduct: %[sp] (%[ap])\nTechnology: %[st] +(%[at])' -S ' ' -C '/'>" and results in outputs like: + + Class: 4.4BSD (iX86) + Product: FreeBSD 4.9-RC (iX86) + Technology: FreeBSD 4.9-RC (i686) + +and + + Class: LSB (iX86) + Product: Debian GNU/Linux 3.0 (iX86) + Technology: GNU/Linux 2.2/2.4 (i686) + +=item B + +All-In-One Full-Table Information. This just outputs really +all 2x2x3 identification strings as a table. + +=back + +Option B<-V> outputs the version information of B only. +Option B<-h> outputs the usage information of B only. + +Example: # configure.in - OS=`shtool guessos` + PLATFORM=`shtool platform --type=binary` =item B [B<-t>|B<--trace>] [B<-C>|B<--command> I] I I I [I ...] Index: ossp-pkg/shtool/shtoolize.in RCS File: /v/ossp/cvs/ossp-pkg/shtool/shtoolize.in,v rcsdiff -q -kk '-r1.31' '-r1.32' -u '/v/ossp/cvs/ossp-pkg/shtool/shtoolize.in,v' 2>/dev/null --- shtoolize.in 2003/08/13 14:20:34 1.31 +++ shtoolize.in 2003/12/13 21:23:55 1.32 @@ -35,7 +35,7 @@ # Available modules my @available = qw( echo mdate table prop move install mkdir mkln mkshadow - fixperm rotate tarball subst guessos arx slo scpp version path + fixperm rotate tarball subst platform arx slo scpp version path ); ## Index: ossp-pkg/shtool/shtoolize.pod RCS File: /v/ossp/cvs/ossp-pkg/shtool/shtoolize.pod,v rcsdiff -q -kk '-r1.10' '-r1.11' -u '/v/ossp/cvs/ossp-pkg/shtool/shtoolize.pod,v' 2>/dev/null --- shtoolize.pod 2003/02/11 13:00:50 1.10 +++ shtoolize.pod 2003/12/13 21:23:55 1.11 @@ -57,7 +57,7 @@ rotate Rotate a logfile tarball Roll distribution tarballs subst Apply sed(1) substitution operations - guessos Simple OS/platform guesser + platform Platform identification utility arx Extended archive command slo Separate linker options by library class scpp Sharing C Pre-Processor @@ -66,7 +66,7 @@ Additionally there is a pseudo-module ``C'' which can be used as a short-hand for ``C'', i.e. to build a B script +fixperm platform arx slo scpp version path>'', i.e. to build a B script with all modules in the standard order. An installed B is usually built this way via ``C''. Index: ossp-pkg/shtool/test.db RCS File: /v/ossp/cvs/ossp-pkg/shtool/test.db,v rcsdiff -q -kk '-r1.20' '-r1.21' -u '/v/ossp/cvs/ossp-pkg/shtool/test.db,v' 2>/dev/null --- test.db 2003/02/11 13:00:50 1.20 +++ test.db 2003/12/13 21:23:55 1.21 @@ -130,10 +130,10 @@ test ".`cat baz`" = ".CbazC" @end{subst} -@begin{guessos} +@begin{platform} # cannot be checked easily, so just start it -shtool guessos -@end{guessos} +shtool platform +@end{platform} @begin{arx} echo foo >foo.o