From c67c439404968c358f0038857ecef7b16469025a Mon Sep 17 00:00:00 2001 From: "Ralf S. Engelschall" Date: Sat, 13 Dec 2003 21:55:01 +0000 Subject: [PATCH] replaced unreleased OSSP platform script with latest GNU shtool (which includes OSSP platform) --- openpkg/HISTORY | 1 + openpkg/aux.prereq.sh | 4 +- openpkg/openpkg.spec | 27 +- openpkg/platform | 778 ------------------------------------- openpkg/rpmmacros | 4 +- openpkg/rpmtool | 4 +- openpkg/shtool | 878 +++++++++++++++++++++++++++++------------- 7 files changed, 618 insertions(+), 1078 deletions(-) delete mode 100644 openpkg/platform diff --git a/openpkg/HISTORY b/openpkg/HISTORY index c932c5b40c..c4a0f780bc 100644 --- a/openpkg/HISTORY +++ b/openpkg/HISTORY @@ -2,6 +2,7 @@ 2003 ==== +20031213 replaced unreleased OSSP platform script with latest GNU shtool (which includes OSSP platform) 20031211 add support for RedHat WS/ES/AS and Fedora to %{l_platform} via latest OSSP platform 20031211 uprade to GNU tar 1.13.91 (backed out again, because 1.13.91 is partly broken) 20031205 fix rpmtool run-time under openpkg.boot environment diff --git a/openpkg/aux.prereq.sh b/openpkg/aux.prereq.sh index 11889de8eb..ceda68c60c 100644 --- a/openpkg/aux.prereq.sh +++ b/openpkg/aux.prereq.sh @@ -29,8 +29,8 @@ mode="$1" # determine platform ids -platform_prod=`sh ./platform -n -L -S "" -C "+" -F "%-%"` -platform_tech=`sh ./platform -n -L -S "" -C "+" -F "%-%"` +platform_prod=`sh ./shtool platform -n -L -S "" -C "+" -F "%-%"` +platform_tech=`sh ./shtool platform -n -L -S "" -C "+" -F "%-%"` # # CHECK: amount of platform support diff --git a/openpkg/openpkg.spec b/openpkg/openpkg.spec index 75cfc8b303..8bdce70c1f 100644 --- a/openpkg/openpkg.spec +++ b/openpkg/openpkg.spec @@ -39,7 +39,7 @@ # o any cc(1) # the package version/release -%define V_openpkg 20031211 +%define V_openpkg 20031213 # the used software versions %define V_rpm 4.2.1 @@ -116,13 +116,12 @@ Source46: HISTORY Source47: pod2man.sh Source48: rc.8 Source49: rc.pod -Source50: platform -Source51: beecrypt.patch -Source52: bash.patch -Source53: rpm-config.sh -Source54: rpm-config.pod -Source55: rpm-config.8 -Source56: rpmdb +Source50: beecrypt.patch +Source51: bash.patch +Source52: rpm-config.sh +Source53: rpm-config.pod +Source54: rpm-config.8 +Source55: rpmdb # build information Prefix: %{l_prefix} @@ -529,8 +528,8 @@ Provides: openpkg = 1.3.1-1.3.1 # build BeeCrypt library ( cd beecrypt-%{V_beecrypt} opts="" - platform="`SOURCE platform`" - platform="`sh $platform -n -L -S '' -C '+' -F '%-%'`" + shtool="`SOURCE shtool`" + platform="`sh $shtool platform -n -L -S '' -C '+' -F '%-%'`" case "$platform" in ix86-freebsd[45]* ) ;; ix86-debian3.0 | ix86-redhat9 | ix86-suse8* ) ;; @@ -869,12 +868,9 @@ Provides: openpkg = 1.3.1-1.3.1 test -d $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg || \ mkdir $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg - # install platform identification program and output - cp `SOURCE platform` \ - $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/platform - sh `SOURCE platform` -n -L -S "" -C "+" -F "%-any-%" \ + # install platform identification file + sh `SOURCE shtool` platform -n -L -S "" -C "+" -F "%-any-%" \ >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform - chmod 755 $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/platform chmod 644 $RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform # install overriding RPM configuration files @@ -986,7 +982,6 @@ Provides: openpkg = 1.3.1-1.3.1 %{l_prefix}/lib/openpkg/magic.mime.mgc %{l_prefix}/lib/openpkg/mkproxyrpm.pl %{l_prefix}/lib/openpkg/patch - %{l_prefix}/lib/openpkg/platform %{l_prefix}/lib/openpkg/rc %{l_prefix}/lib/openpkg/rpmb %{l_prefix}/lib/openpkg/rpmd diff --git a/openpkg/platform b/openpkg/platform deleted file mode 100644 index 70ce9d91a6..0000000000 --- a/openpkg/platform +++ /dev/null @@ -1,778 +0,0 @@ -## -## OSSP platform - Unix Platform Identification -## Copyright (c) 2003 The OSSP Project -## Copyright (c) 2003 Ralf S. Engelschall -## -## This file is part of OSSP platform, a Unix platform identification -## program which can be found at http://www.ossp.org/pkg/tool/platform/. -## -## 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.0 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. -## -## You should have received a copy of the GNU General Public License -## along with this library; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -## USA, or contact Ralf S. Engelschall . -## -## platform.sh: the program (language: Bourne-Shell) -## - -# program information -prog_run="${0}" -prog_cmd="platform" -prog_name="OSSP platform" -prog_vers="0.1.0" -prog_date="30-Oct-2003" - -## _________________________________________________________________________ -## -## COMMAND LINE PARSING -## (partly derived from GNU shtool's sh.common) -## _________________________________________________________________________ -## - -# the command line specification -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 [-d|--debug]" -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,d:debug,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_d=no -opt_V=no -opt_h=no - -# commonly used ASCII values -ASC_TAB=" " -ASC_NL=" -" - -# parse argument specification string -eval `echo $arg_spec |\ - sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` - -# parse option specification string -eval `echo $opt_spec |\ - sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` - -# parse option alias string -eval `echo $opt_alias |\ - tr 'x-' 'x_' | sed -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'` - -# interate over argument line -opt_PREV='' -while [ $# -gt 0 ]; do - # special option stops processing - if [ ".$1" = ".--" ]; then - shift - break - fi - - # determine option and argument - opt_ARG_OK=no - if [ ".$opt_PREV" != . ]; then - # merge previous seen option with argument - opt_OPT="$opt_PREV" - opt_ARG="$1" - opt_ARG_OK=yes - opt_PREV='' - else - # split argument into option and argument - case "$1" in - --[a-zA-Z0-9]*=*) - eval `echo "x$1" |\ - sed -e 's/^x--\([a-zA-Z0-9-]*\)=\(.*\)$/opt_OPT="\1";opt_ARG="\2"/'` - opt_STR=`echo $opt_OPT | tr 'x-' 'x_'` - eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" - ;; - --[a-zA-Z0-9]*) - opt_OPT=`echo "x$1" | cut -c4-` - opt_STR=`echo $opt_OPT | tr 'x-' 'x_'` - eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" - opt_ARG='' - ;; - -[a-zA-Z0-9]*) - eval `echo "x$1" |\ - sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ - -e 's/";\(.*\)$/"; opt_ARG="\1"/'` - ;; - -[a-zA-Z0-9]) - opt_OPT=`echo "x$1" | cut -c3-` - opt_ARG='' - ;; - *) - break - ;; - esac - fi - - # eat up option - shift - - # determine whether option needs an argument - eval "opt_MODE=\$opt_MODE_${opt_OPT}" - if [ ".$opt_ARG" = . ] && [ ".$opt_ARG_OK" != .yes ]; then - if [ ".$opt_MODE" = ".:" ] || [ ".$opt_MODE" = ".+" ]; then - opt_PREV="$opt_OPT" - continue - fi - fi - - # process option - case $opt_MODE in - '.' ) - # boolean option - eval "opt_${opt_OPT}=yes" - ;; - ':' ) - # option with argument (multiple occurances override) - eval "opt_${opt_OPT}=\"\$opt_ARG\"" - ;; - '+' ) - # option with argument (multiple occurances append) - eval "opt_${opt_OPT}=\"\$opt_${opt_OPT}\${ASC_NL}\$opt_ARG\"" - ;; - * ) - echo "${prog_cmd}:Error: unknown option: \`$opt_OPT'" 1>&2 - echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 - exit 1 - ;; - esac -done -if [ ".$opt_PREV" != . ]; then - echo "${prog_cmd}:Error: missing argument to option \`$opt_PREV'" 1>&2 - echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 - exit 1 -fi - -# process help option -if [ ".$opt_h" = .yes ]; then - echo "Usage: ${prog_run} ${str_usage}" - exit 0 -fi - -# process version option -if [ ".$opt_V" = .yes ]; then - echo "${prog_name} ${prog_vers} (${prog_date})" - exit 0 -fi - -# complain about incorrect number of arguments -case $arg_MODE in - '=' ) - if [ $# -ne $arg_NUMS ]; then - echo "${prog_cmd}:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 - echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 - exit 1 - fi - ;; - '+' ) - if [ $# -lt $arg_NUMS ]; then - echo "${prog_cmd}:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 - echo "${prog_cmd}:Hint: run \`${prog_run} -h' or \`man ${prog_cmd}' for details" 1>&2 - exit 1 - fi - ;; -esac - -## _________________________________________________________________________ -## -## 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 "${prog_cmd}:Error: invalid type \`$opt_t'" 1>&2 - exit 1 - ;; - esac -fi - -## _________________________________________________________________________ -## -## UTILITY FUNCTIONS -## _________________________________________________________________________ -## - -# map string to lower case -util_lower () { - echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' -} - -# map string to upper case -util_upper () { - echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' -} - -## _________________________________________________________________________ -## -## ASSEMBLE INITIAL 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}" - -if [ ".$opt_d" = .yes ]; then - echo "uname => ${UNAME}" 1>&2 -fi - -AC=""; AP=""; AT="" -SC=""; SP=""; ST="" - -## _________________________________________________________________________ -## -## DISPATCH INTO PLATFORMS -## _________________________________________________________________________ -## - -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 RESULT OUTPUT -## _________________________________________________________________________ -## - -# 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 - diff --git a/openpkg/rpmmacros b/openpkg/rpmmacros index 54c281648f..fce8a7b199 100644 --- a/openpkg/rpmmacros +++ b/openpkg/rpmmacros @@ -33,7 +33,7 @@ %l_location @LOC@ # standard RPM host platform identification -# (defaults via "platform" and uname(3); used internally) +# (defaults via "shtool platform" and uname(3); used internally) #%_host_cpu ...USE INTERNAL DEFAULT... #%_host_vendor ...USE INTERNAL DEFAULT... #%_host_os ...USE INTERNAL DEFAULT... @@ -75,7 +75,7 @@ %l_host %{_host_cpu}-%{_host_os} # new OpenPKG platform identification -%l_platform(cptF:) %(if [ ".%{?-F}" != . ]; then fmt="%{-F*}"; else T="%{?-c:c}%{?-p:p}%{?-t:t}"; [ ".$T" = . ] && T="p"; fmt="%%-%%"; fi; @l_prefix@/lib/openpkg/platform -n -L -S "" -C "+" -F "$fmt") +%l_platform(cptF:) %(if [ ".%{?-F}" != . ]; then fmt="%{-F*}"; else T="%{?-c:c}%{?-p:p}%{?-t:t}"; [ ".$T" = . ] && T="p"; fmt="%%-%%"; fi; @l_prefix@/lib/openpkg/shtool platform -n -L -S "" -C "+" -F "$fmt") # old OpenPKG platform identification %l_target %{l_platform -t} diff --git a/openpkg/rpmtool b/openpkg/rpmtool index 0cd037f05a..6dd44296b2 100644 --- a/openpkg/rpmtool +++ b/openpkg/rpmtool @@ -466,8 +466,8 @@ case $tool in fi if [ ".$opt_i" = .yes ]; then arch="unknown"; os_name="unknown"; os_vers="0" - platform=`echo $prog_path | sed -e 's;/[^/]*$;/platform;'` - eval `sh $platform -U -S ":" -C "" -F "%:%" |\ + shtool=`echo $prog_path | sed -e 's;/[^/]*$;/shtool;'` + eval `sh $shtool platform -U -S ":" -C "" -F "%:%" |\ sed -e 's/^\(.*\):\(.*\):\(.*\)$/arch="\1"; os_name="\2"; os_vers="\3";/'` V=0; R=0; L=0 eval `echo "$os_vers" |\ diff --git a/openpkg/shtool b/openpkg/shtool index de5e21e578..0ce420d4ad 100644 --- a/openpkg/shtool +++ b/openpkg/shtool @@ -6,7 +6,7 @@ ## See http://www.gnu.org/software/shtool/ for more information. ## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. ## -## Version: 2.0b0 (03-Jun-2003) +## Version: 2.0b0 (13-Dec-2003) ## Contents: all available modules ## @@ -51,7 +51,7 @@ ## rotate Logfile rotation ## tarball Roll distribution tarballs ## subst Apply sed(1) substitution operations -## guessos Simple operating system guesser +## platform Platform Identification Utility ## arx Extended archive command ## slo Separate linker options by library class ## scpp Sharing C Pre-Processor @@ -64,8 +64,8 @@ if [ $# -eq 0 ]; then echo "$0:Hint: run \`$0 -h' for usage" 1>&2 exit 1 fi -if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then - echo "This is GNU shtool, version 2.0b0 (03-Jun-2003)" +if [ ".$1" = ".-h" ] || [ ".$1" = ".--help" ]; then + echo "This is GNU shtool, version 2.0b0 (13-Dec-2003)" echo "Copyright (c) 1994-2003 Ralf S. Engelschall " echo "Report bugs to " echo '' @@ -110,7 +110,9 @@ if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then echo ' subst [-v|--verbose] [-t|--trace] [-n|--nop] [-s|--stealth]' echo ' [-i|--interactive] [-b|--backup ] [-e|--exec ]' echo ' [-f|--file ] [] [...]' - echo ' guessos ' + echo ' platform [-F|--format FORMAT] [-S|--sep STRING] [-C|--conc STRING]' + echo ' [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise]' + echo ' [-n|--no-newline] [-t|--type TYPE] [-V|--version] [-h|--help]' echo ' arx [-t|--trace] [-C|--command ] [' echo ' ...]' echo ' slo [-p|--prefix ] -- -L -l [-L -l' @@ -127,21 +129,21 @@ if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then echo '' exit 0 fi -if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then - echo "GNU shtool 2.0b0 (03-Jun-2003)" +if [ ".$1" = ".-v" ] || [ ".$1" = ".--version" ]; then + echo "GNU shtool 2.0b0 (13-Dec-2003)" exit 0 fi -if [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then +if [ ".$1" = ".-r" ] || [ ".$1" = ".--recreate" ]; then shtoolize -oshtool all exit 0 fi -if [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then +if [ ".$1" = ".-d" ] || [ ".$1" = ".--debug" ]; then shift set -x fi name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'` case "$name" in - echo|mdate|table|prop|move|install|mkdir|mkln|mkshadow|fixperm|rotate|tarball|subst|guessos|arx|slo|scpp|version|path ) + echo|mdate|table|prop|move|install|mkdir|mkln|mkshadow|fixperm|rotate|tarball|subst|platform|arx|slo|scpp|version|path ) # implicit tool command selection tool="$name" ;; @@ -328,12 +330,23 @@ case $tool in opt_e="" opt_f="" ;; - guessos ) - str_tool="guessos" - str_usage="" + platform ) + str_tool="platform" + str_usage="[-F|--format FORMAT] [-S|--sep STRING] [-C|--conc STRING] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type TYPE] [-V|--version] [-h|--help]" arg_spec="0=" - opt_spec="" - opt_alias="" + 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 ;; arx ) str_tool="arx" @@ -494,8 +507,8 @@ while [ $# -gt 0 ]; do # determine whether option needs an argument eval "opt_MODE=\$opt_MODE_${opt_OPT}" - if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then - if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then + if [ ".$opt_ARG" = . ] && [ ".$opt_ARG_OK" != .yes ]; then + if [ ".$opt_MODE" = ".:" ] || [ ".$opt_MODE" = ".+" ]; then opt_PREV="$opt_OPT" continue fi @@ -567,6 +580,16 @@ if [ ".$gen_tmpfile" = .yes ]; then 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" @@ -611,7 +634,7 @@ echo ) # determine terminal bold sequence term_bold='' term_norm='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[Bb]'`" != . ]; then case $TERM in # for the most important terminal types we directly know the sequences xterm|xterm*|vt220|vt220*) @@ -647,13 +670,13 @@ echo ) break fi done - if [ ".$term_bold" != . -a ".$term_norm" != . ]; then + if [ ".$term_bold" != . ] && [ ".$term_norm" != . ]; then break; fi done ;; esac - if [ ".$term_bold" = . -o ".$term_norm" = . ]; then + if [ ".$term_bold" = . ] || [ ".$term_norm" = . ]; then echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 term_bold='' term_norm='' @@ -662,7 +685,7 @@ echo ) # determine user name username='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uUgG]'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[uUgG]'`" != . ]; then username="`(id -un) 2>/dev/null`" if [ ".$username" = . ]; then str="`(id) 2>/dev/null`" @@ -691,7 +714,7 @@ echo ) # determine user id userid='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%U'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%U'`" != . ]; then userid="`(id -u) 2>/dev/null`" if [ ".$userid" = . ]; then userid="`(id -u ${username}) 2>/dev/null`" @@ -704,11 +727,11 @@ echo ) userid=`(getent passwd ${username}) 2>/dev/null | \ sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$userid" = . ]; then - userid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \ + userid=`grep "^${username}:" /etc/passwd 2>/dev/null | \ sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$userid" = . ]; then userid=`(ypcat passwd) 2>/dev/null | - egrep "^${username}:" | \ + grep "^${username}:" | \ sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$userid" = . ]; then userid='?' @@ -722,7 +745,7 @@ echo ) # determine (primary) group id groupid='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[gG]'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[gG]'`" != . ]; then groupid="`(id -g ${username}) 2>/dev/null`" if [ ".$groupid" = . ]; then str="`(id) 2>/dev/null`" @@ -733,10 +756,10 @@ echo ) groupid=`(getent passwd ${username}) 2>/dev/null | \ sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$groupid" = . ]; then - groupid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \ + groupid=`grep "^${username}:" /etc/passwd 2>/dev/null | \ sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$groupid" = . ]; then - groupid=`(ypcat passwd) 2>/dev/null | egrep "^${username}:" | \ + groupid=`(ypcat passwd) 2>/dev/null | grep "^${username}:" | \ sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$groupid" = . ]; then groupid='?' @@ -749,7 +772,7 @@ echo ) # determine (primary) group name groupname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%g'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%g'`" != . ]; then groupname="`(id -gn ${username}) 2>/dev/null`" if [ ".$groupname" = . ]; then str="`(id) 2>/dev/null`" @@ -758,14 +781,14 @@ echo ) fi if [ ".$groupname" = . ]; then groupname=`(getent group) 2>/dev/null | \ - egrep "^[^:]*:[^:]*:${groupid}:" | \ + grep "^[^:]*:[^:]*:${groupid}:" | \ sed -e 's/:.*$//'` if [ ".$groupname" = . ]; then - groupname=`egrep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \ + groupname=`grep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \ sed -e 's/:.*$//'` if [ ".$groupname" = . ]; then groupname=`(ypcat group) 2>/dev/null | \ - egrep "^[^:]*:[^:]*:${groupid}:" | \ + grep "^[^:]*:[^:]*:${groupid}:" | \ sed -e 's/:.*$//'` if [ ".$groupname" = . ]; then groupname='?' @@ -779,7 +802,7 @@ echo ) # determine host and domain name hostname='' domainname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%h'`" != . ]; then hostname="`(uname -n) 2>/dev/null |\ awk '{ printf("%s", $1); }'`" if [ ".$hostname" = . ]; then @@ -796,16 +819,16 @@ echo ) ;; esac fi - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%d'`" != . ]; then if [ ".$domainname" = . ]; then if [ -f /etc/resolv.conf ]; then - domainname="`egrep '^[ ]*domain' /etc/resolv.conf | sed -e 'q' |\ + domainname="`grep '^[ ]*domain' /etc/resolv.conf | sed -e 'q' |\ sed -e 's/.*domain//' \ -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ -e 's/^\.//' -e 's/^/./' |\ awk '{ printf("%s", $1); }'`" if [ ".$domainname" = . ]; then - domainname="`egrep '^[ ]*search' /etc/resolv.conf | sed -e 'q' |\ + domainname="`grep '^[ ]*search' /etc/resolv.conf | sed -e 'q' |\ sed -e 's/.*search//' \ -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ -e 's/ .*//' -e 's/ .*//' \ @@ -821,7 +844,7 @@ echo ) time_month='' time_year='' time_monthname='' - if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[DMYm]'`" != . ]; then + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[DMYm]'`" != . ]; then time_day=`date '+%d'` time_month=`date '+%m'` time_year=`date '+%Y' 2>/dev/null` @@ -1124,7 +1147,7 @@ move ) dst="$2" # consistency checks - if [ ".$src" = . -o ".$dst" = . ]; then + if [ ".$src" = . ] || [ ".$dst" = . ]; then echo "$msgprefix:Error: Invalid arguments" 1>&2 shtool_exit 1 fi @@ -1251,7 +1274,7 @@ install ) fi # consistency check for destination - if [ $argc -gt 2 -a $dstisdir = 0 ]; then + if [ $argc -gt 2 ] && [ $dstisdir = 0 ]; then echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2 shtool_exit 1 fi @@ -1379,7 +1402,7 @@ mkdir ) for p in ${1+"$@"}; do # if the directory already exists... if [ -d "$p" ]; then - if [ ".$opt_f" = .no -a ".$opt_p" = .no ]; then + if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then echo "$msgprefix:Error: directory already exists: $p" 1>&2 errstatus=1 break @@ -1542,12 +1565,12 @@ mkln ) # split away a common prefix prefix="" - if [ ".$srcdir" = ".$dstdir" -a ".$srcdir" != . ]; then + if [ ".$srcdir" = ".$dstdir" ] && [ ".$srcdir" != . ]; then prefix="$srcdir/" srcdir="" dstdir="" else - while [ ".$srcdir" != . -a ".$dstdir" != . ]; do + while [ ".$srcdir" != . ] && [ ".$dstdir" != . ]; do presrc=`echo $srcdir | sed -e 's;^\([^/]*\)/.*;\1;'` predst=`echo $dstdir | sed -e 's;^\([^/]*\)/.*;\1;'` if [ ".$presrc" != ".$predst" ]; then @@ -1565,7 +1588,12 @@ mkln ) # determine source prefix which is the reverse directory # step-up corresponding to the destination directory srcpre="" - if [ $oneisabs = 0 ] || [ ".$prefix" != . -a ".$prefix" != ./ ]; then + + isroot=0 + if [ ".$prefix" = . ] || [ ".$prefix" = ./ ]; then + isroot=1 + fi + if [ $oneisabs = 0 ] || [ $isroot = 0 ]; then pl="$dstdir/" OIFS="$IFS"; IFS='/' for pe in $pl; do @@ -1807,7 +1835,7 @@ rotate ) fi # option -d/-z consistency - if [ ".$opt_d" = .yes -a ".$opt_z" = . ]; then + if [ ".$opt_d" = .yes ] && [ ".$opt_z" = . ]; then echo "$msgprefix:Error: option -d requires option -z." 1>&2 shtool_exit 1 fi @@ -1861,7 +1889,7 @@ rotate ) -e 's/:/ /g'`" for prg in bzip2 gzip compress; do for path in $paths; do - if [ $minusx "$path/$prg" -a ! -d "$path/$prg" ]; then + if [ $minusx "$path/$prg" ] && [ ! -d "$path/$prg" ]; then comp_prg="$prg" break fi @@ -1970,7 +1998,7 @@ rotate ) m=$n n=`expr $n - 1` n=`echo dummy | awk "{ printf(\"%0${opt_p}d\", n); }" n=$n` - if [ $n -eq 0 -a ".$opt_d" = .yes ]; then + if [ $n -eq 0 ] && [ ".$opt_d" = .yes ]; then # special case: first rotation file under delayed compression situation if [ ! -f "${adir}/${file}.${n}" ]; then continue @@ -2081,7 +2109,7 @@ rotate ) fi # regular compression step - if [ ".$opt_z" != . -a ".$opt_d" = .no ]; then + if [ ".$opt_z" != . ] && [ ".$opt_d" = .no ]; then # compress file if [ ".$opt_b" = .yes ]; then if [ ".$opt_t" = .yes ]; then @@ -2166,7 +2194,7 @@ tarball ) for tool in `echo $tools | sed -e 's/,/ /g'`; do # iterate over paths for path in $paths; do - if [ $minusx "$path/$tool" -a ! -d "$path/$tool" ]; then + if [ $minusx "$path/$tool" ] && [ ! -d "$path/$tool" ]; then eval "prg_${prg}=\"$path/$tool\"" break fi @@ -2311,11 +2339,11 @@ subst ) files="$*" # parameter consistency check - if [ $# -eq 0 -a ".$opt_b" != . ]; then + if [ $# -eq 0 ] && [ ".$opt_b" != . ]; then echo "$msgprefix:Error: option -b cannot be applied to stdin" 1>&2 shtool_exit 1 fi - if [ $# -eq 0 -a ".$opt_s" = .yes ]; then + if [ $# -eq 0 ] && [ ".$opt_s" = .yes ]; then echo "$msgprefix:Error: option -s cannot be applied to stdin" 1>&2 shtool_exit 1 fi @@ -2438,255 +2466,547 @@ subst ) fi ;; -guessos ) +platform ) ## - ## 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 + ## platform -- Platform Identification Utility + ## Copyright (c) 2003 Ralf S. Engelschall + ## Originally written for use in OpenPKG ## - 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 + # 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="+" ;; - 3.2v5.0*) - echo "whatever-whatever-sco5"; shtool_exit 0 + build ) + # build time checking (OpenPKG RPM) + opt_F="%-%" + opt_L=yes + opt_S="" + opt_C="+" ;; - 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 + gnu ) + # GNU config.guess style -- + opt_F="%-unknown-%" + opt_L=yes + opt_S="" + opt_C="+" ;; - 4.2) - echo "whatever-whatever-unixware1"; shtool_exit 0 + web ) + # non-whitespace HTTP Server-header id + opt_F="%-%" + opt_S="/" + opt_C="+" ;; - 5) - case "$VERSION" in - 7*) echo "${MACHINE}-whatever-unixware7"; shtool_exit 0 ;; - esac + 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 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 + + # 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 ;; - HI-UX:*) - echo "${MACHINE}-hi-hiux"; shtool_exit 0 + + # 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 ;; - HP-UX:*) - HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'` - MACHINE=`echo ${MACHINE}|sed -e 's:/:_:'` - echo "${MACHINE}-hp-hpux${HPUXVER}"; shtool_exit 0 + + # 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" ;; - 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 + + # 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" ;; - IRIX64:*) - echo "${MACHINE}/64-sgi-irix${RELEASE}"; shtool_exit 0 - ;; - Linux:*) - V='whatever' - case "$MACHINE" in - i?86) V='pc' ;; + + # Sun Solaris + *:SunOS:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + i86pc ) AT="iX86" ;; esac - R='' - case "$RELEASE" in - [1-9].*) R=`echo $RELEASE | cut -c1` ;; + 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 - 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 + + # 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}" ;; - BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*) - echo "i486-whatever-bsdi"; shtool_exit 0 + + # 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" ;; - BSD/386:*|BSD/OS:*) - echo "${MACHINE}-whatever-bsdi"; shtool_exit 0 + + # 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" ;; - 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" ;; + + # 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 - case ${MACH} in - i[0-9]86 ) ARCH="pc" ;; + 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 - 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 + + # 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" ;; - QNX:*) - if [ "$VERSION" -gt 422 ]; then - echo "${MACHINE}-qssl-qnx32" - else - echo "${MACHINE}-qssl-qnx" + + # 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 - 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 + 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 ;; - SINIX-?:* | ReliantUNIX-?:*) - echo "${MACHINE}-siemens-sysv4"; shtool_exit 0 + + # 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" ;; - POSIX*BS2000) - echo "${MACHINE}-siemens-sysv4"; shtool_exit 0 + + # 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}" ;; - 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}" + # 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 ;; arx ) @@ -2789,7 +3109,7 @@ slo ) optprev='' fi # remember options for arg if used stand-alone - if [ ".$opt" = ".-L" -o ".$opt" = ".-l" ]; then + if [ ".$opt" = ".-L" ] || [ ".$opt" = ".-l" ]; then optprev="$opt" continue; fi @@ -2868,9 +3188,10 @@ slo ) if [ ".$found" = .yes ]; then if [ ".$found_indefdir" != .yes ]; then eval "dirlist=\"\${DIRS_${found_type}}:\"" - if [ ".`echo \"$dirlist\" | fgrep :$found_dir:`" = . ]; then - eval "DIRS_${found_type}=\"\$DIRS_${found_type}:${found_dir}\"" - fi + case "$dirlist" in + *:$found_dir:* ) ;; + * ) eval "DIRS_${found_type}=\"\$DIRS_${found_type}:${found_dir}\"" ;; + esac eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\"" else eval "LIBS_${found_type}=\"\$LIBS_${found_type}:$lib\"" @@ -2888,9 +3209,10 @@ slo ) OIFS="$IFS"; IFS=':' for dir in $DIRS; do dirlist="${DIRS_OBJ}:${DIRS_PIC}:${DIRS_DSO}:" - if [ ".`echo \"$dirlist\" | fgrep :$dir:`" = . ]; then - DIRS_OBJ="$DIRS_OBJ:$dir" - fi + case "$dirlist" in + *:$dir:* ) ;; + * ) DIRS_OBJ="$DIRS_OBJ:$dir" ;; + esac done IFS="$OIFS" @@ -3473,7 +3795,7 @@ path ) # MAGIC SITUATION # Perl Interpreter (perl) - if [ ".$opt_m" = .yes -a ".$namelist" = .perl ]; then + if [ ".$opt_m" = .yes ] && [ ".$namelist" = .perl ]; then rm -f $tmpfile >/dev/null 2>&1 touch $tmpfile found=0 @@ -3482,7 +3804,7 @@ path ) dir=`echo $dir | sed -e 's;/*$;;'` nc=99 for name in perl perl5 miniperl; do - if [ $minusx "$dir/$name" -a ! -d "$dir/$name" ]; then + if [ $minusx "$dir/$name" ] && [ ! -d "$dir/$name" ]; then perl="$dir/$name" pv=`$perl -e 'printf("%.3f", $]);'` echo "$pv:$pc:$nc:$perl" >>$tmpfile @@ -3504,7 +3826,7 @@ path ) # MAGIC SITUATION # C pre-processor (cpp) - if [ ".$opt_m" = .yes -a ".$namelist" = .cpp ]; then + if [ ".$opt_m" = .yes ] && [ ".$namelist" = .cpp ]; then echo >$tmpfile.c "#include " echo >>$tmpfile.c "Syntax Error" # 1. try the standard cc -E approach @@ -3520,7 +3842,7 @@ path ) # 3. try a standalone cpp command in path and lib dirs for path in $paths /lib /usr/lib /usr/local/lib; do path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/cpp" -a ! -d "$path/cpp" ]; then + if [ $minusx "$path/cpp" ] && [ ! -d "$path/cpp" ]; then cpp="$path/cpp" break fi @@ -3550,7 +3872,7 @@ path ) # iterate over paths for path in $paths; do path=`echo $path | sed -e 's;/*$;;'` - if [ $minusx "$path/$name" -a ! -d "$path/$name" ]; then + if [ $minusx "$path/$name" ] && [ ! -d "$path/$name" ]; then if [ ".$opt_s" != .yes ]; then echo "$path/$name" fi