OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 08-Sep-2003 21:59:39 Branch: HEAD Handle: 2003090820593801 Modified files: openpkg-src/openpkg HISTORY openpkg.spec platform rpmmacros Log: Upgrade "platform" script to new-born "OSSP platform" implementation and provide a corresponding RPM macro %{l_platform} for querying. The old "%{l_target}" is now just an alias for "%{l_platform -t}". With the new platform identification stuff, there are now three platform id strings available in OpenPKG. Examples follow for class (-c), product (-p) and technology (-t) outputs: FreeBSD Linux Solaris %{l_platform -c} ix86-4.4bsd ix86-lsb1.2 sparc-svr4 %{l_platform -p} ix86-freebsd4.8 ix86-redhat9 sparc64-solaris9 %{l_platform -t} i686-freebsd4.8 i585-gnu+linux2.2+2.4 sun4u-sunos5.9 Summary: Revision Changes Path 1.41 +1 -0 openpkg-src/openpkg/HISTORY 1.212 +4 -2 openpkg-src/openpkg/openpkg.spec 1.3 +527 -115 openpkg-src/openpkg/platform 1.42 +5 -5 openpkg-src/openpkg/rpmmacros ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/openpkg/HISTORY ============================================================================ $ cvs diff -u -r1.40 -r1.41 HISTORY --- openpkg-src/openpkg/HISTORY 7 Sep 2003 08:25:56 -0000 1.40 +++ openpkg-src/openpkg/HISTORY 8 Sep 2003 19:59:38 -0000 1.41 @@ -2,6 +2,7 @@ 2003 ==== +20030908 upgrade "platform" script to new "OSSP platform" implementation and provide %{l_platform} 20030907 add rpm-config(8) utility and add librpmbeecrypt.a to installation tree 20030904 apply new BeeCrypt and Bash patch files 20030904 remove obsoleted patch files from CVS @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg/openpkg.spec ============================================================================ $ cvs diff -u -r1.211 -r1.212 openpkg.spec --- openpkg-src/openpkg/openpkg.spec 8 Sep 2003 06:08:25 -0000 1.211 +++ openpkg-src/openpkg/openpkg.spec 8 Sep 2003 19:59:38 -0000 1.212 @@ -844,8 +844,10 @@ 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` >$RPM_BUILD_ROOT%{l_prefix}/etc/openpkg/platform + cp `SOURCE platform` \ + $RPM_BUILD_ROOT%{l_prefix}/lib/openpkg/platform + sh `SOURCE platform` -n -L -S "" -C "+" -F "%<ap>-any-%<sp>" \ + >$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 @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg/platform ============================================================================ $ cvs diff -u -r1.2 -r1.3 platform --- openpkg-src/openpkg/platform 26 Aug 2003 13:55:17 -0000 1.2 +++ openpkg-src/openpkg/platform 8 Sep 2003 19:59:38 -0000 1.3 @@ -1,149 +1,561 @@ -#!/bin/sh ## -## platform -- Provide Platform Identification -## Copyright (c) 2003 The OpenPKG Project <http://www.openpkg.org/> +## OSSP platform - Platform Identification +## Copyright (c) 2003 The OSSP Project <http://www.ossp.org/> ## Copyright (c) 2003 Ralf S. Engelschall <[EMAIL PROTECTED]> -## Copyright (c) 2003 Cable & Wireless <http://www.cw.com/> ## -## Permission to use, copy, modify, and distribute this software for -## any purpose with or without fee is hereby granted, provided that -## the above copyright notice and this permission notice appear in all -## copies. -## -## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED -## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR -## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -## SUCH DAMAGE. +## 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 <[EMAIL PROTECTED]>. +## +## 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="06-Sep-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="%<ap>-%<sp>" + opt_L=yes + opt_S="" + opt_C="+" + ;; + build ) + # build time checking (OpenPKG RPM) + opt_F="%<at>-%<st>" + opt_L=yes + opt_S="" + opt_C="+" + ;; + gnu ) + # GNU config.guess style <arch>-<vendor>-<os><osversion> + opt_F="%<at>-unknown-%<st>" + opt_L=yes + opt_S="" + opt_C="+" + ;; + web ) + # non-whitespace HTTP Server-header id + opt_F="%<ap>-%<sp>" + 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: %<ac>\\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: %<ap>\\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: %<at>\\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: %<sc>\\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: %<sp>\\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: %<st>\\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 +## _________________________________________________________________________ ## -# try to retrieve uname(3) 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=`(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' -# initialize variables -A='unknown' -V='unknown' -S='unknown' -R='' - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}" in - - # FreeBSD/NetBSD/OpenBSD - *:FreeBSD:* | *:NetBSD:* | *:OpenBSD:* ) - A="${UNAME_MACHINE}" - case ${A} in - *[3456]86* ) A='ix86'; V='pc' ;; - alpha* ) V='compaq' ;; - sparc* ) V='sun' ;; +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 + *"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 - S='freebsd' - R=`echo "${UNAME_RELEASE}" | sed -e 's/[-(].*$//'` ;; # GNU/Linux *:Linux:* ) - A="${UNAME_MACHINE}" - case ${A} in - i[3456]86 ) A='ix86'; V='pc' ;; - esac - S='gnulinux' - R=`echo "${UNAME_RELEASE}" | sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'` - for tagfile in dummy `cd /etc && echo *[_-]release *[_-]version 2>/dev/null`; do - test ! -f /etc/$tagfile && continue - S=`echo $tagfile | sed -e 's/[_-]release$//' -e 's/[_-]version$//' | tr '[A-Z]' '[a-z]'` - R=`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/^#.*$//'` - done + # determine architecture + AT="${UNAME_MACHINE}" + 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>&1` + ST="GNU/Linux ${v_libc}/${v_kern}" + if [ -f /etc/lsb-release ]; then + eval `( . /etc/lsb-release + echo "SC=\"LSB${LSB_VERSION}\"" + echo "SP=\"${DISTRIB_ID} ${DISTRIB_RELEASE}\"" + ) 2>/dev/null` + fi + if [ ".$SP" = . ]; then + for tagfile in dummy `cd /etc && echo *[_-]release *[_-]version 2>/dev/null`; do + test ! -f /etc/${tagfile} && continue + n=`echo ${tagfile} | sed -e 's/[_-]release$//' -e 's/[_-]version$//'` + v=`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/^#.*$//'` + case "`util_lower ${n}`" in + debian ) n="Debian[ GNU/Linux]" ;; + redhat ) n="RedHat[ Linux]" ;; + suse ) n="SuSE[ Linux]" ;; + mandrake ) n="Mandrake[ Linux}" ;; + gentoo ) n="Gentoo[ Linux]" ;; + * ) n="${n}[ GNU/Linux]" ;; + esac + SP="$n $v" + done + fi + [ ".$SP" = . ] && SP="${ST}" + [ ".$SC" = . ] && SC="LSB" ;; # Sun Solaris *:SunOS:* ) - A="${UNAME_MACHINE}" - case ${A} in - i86pc ) A='ix86'; V='pc' ;; - sun4[cdm] ) A='sparc32'; V='sun' ;; - sun4u ) A='sparc64'; V='sun' ;; - sun* ) A='sparc64'; V='sun' ;; + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + i86pc ) AT="iX86" ;; esac - S='solaris' - R=`echo "${UNAME_RELEASE}" |\ + 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]\).*;2.\1;' \ -e 's;^5\.\([0-9][0-9]*\).*;\1;'` - ;; - - # HP Tru64 - *:OSF1:* ) - A="${UNAME_MACHINE}" - S='tru64' - R=`echo "${UNAME_RELEASE}" | sed -e 's;^V;;'` - R="$R.`uname -v`" - ;; - - # HP-UX - *:HP-UX:* ) - A="${UNAME_MACHINE}" - case "$A" in - 9000/31? | 9000/[34]?? ) - A=m68k - ;; - 9000/[678][0-9][0-9]) - A=hppa - if [ -f /usr/bin/getconf ]; then - 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 ) A=hppa1.0 ;; - 528 ) A=hppa1.1 ;; - 532 ) A=hppa2.0 - case "$sc_kernel_bits" in - 32) A=${A}n ;; - 64) A=${A}w ;; - esac - ;; - esac - fi - ;; + SP="[Sun ]Solaris $v" + case "${UNAME_RELEASE}" in + 4.* ) SC="4.2BSD" ;; + 5.* ) SC="SVR4" ;; esac - S='hpux' - R=`echo "${UNAME_RELEASE}" | sed -e 's/[^.]*.[0B]*//'` ;; - # ...SOMETHING ELSE... + + # TODO ...ADD YOUR NEW PLATFORM CHECK HERE... TODO + # *:XXX:* ) + # ... + # ;; + + # ...A STILL UNKNOWN PLATFORM... * ) - A=`echo "${UNAME_MACHINE}" |\ - sed -e 's/[ \\\/-]//g' |\ - tr '[A-Z]' '[a-z]'` - S=`echo "${UNAME_SYSTEM}" |\ - tr '[A-Z]' '[a-z]' |\ - sed -e 's/[^a-z0-9]//g'` - R=`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/^#.*$//'` + AT="${UNAME_MACHINE}" + AP="${AT}" + AC="${AP}" + ST="${UNAME_SYSTEM} ${UNAME_RELEASE}" + SP="${ST}" + SC="${SP}" ;; + esac -# provide result platform identifier -echo "${A}-${V}-${S}${R}" +## _________________________________________________________________________ +## +## 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;' \ + -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;' \ + -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;' \ + -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>;${AC_C};g" \ + -e "s;%\[ap\];${AP_V};g" \ + -e "s;%{ap};${AP_N};g" \ + -e "s;%ap;${AP_N};g" \ + -e "s;%<ap>;${AP_C};g" \ + -e "s;%\[at\];${AT_V};g" \ + -e "s;%{at};${AT_N};g" \ + -e "s;%at;${AT_N};g" \ + -e "s;%<at>;${AT_C};g" \ + -e "s;%\[sc\];${SC_V};g" \ + -e "s;%{sc};${SC_N};g" \ + -e "s;%sc;${SC_N};g" \ + -e "s;%<sc>;${SC_C};g" \ + -e "s;%\[sp\];${SP_V};g" \ + -e "s;%{sp};${SP_N};g" \ + -e "s;%sp;${SP_N};g" \ + -e "s;%<sp>;${SP_C};g" \ + -e "s;%\[st\];${ST_V};g" \ + -e "s;%{st};${ST_N};g" \ + -e "s;%st;${ST_N};g" \ + -e "s;%<st>;${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 @@ . patch -p0 <<'@@ .' Index: openpkg-src/openpkg/rpmmacros ============================================================================ $ cvs diff -u -r1.41 -r1.42 rpmmacros --- openpkg-src/openpkg/rpmmacros 26 Aug 2003 13:55:17 -0000 1.41 +++ openpkg-src/openpkg/rpmmacros 8 Sep 2003 19:59:39 -0000 1.42 @@ -71,11 +71,11 @@ %l_host_os %{_host_os} %l_host %{_host_cpu}-%{_host_os} -# standard OpenPKG platform identification -%l_target_arch %{_host_cpu} -%l_target_vendor %{_host_vendor} -%l_target_os %{_host_os} -%l_target %{_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="%%<a$T>-%%<s$T>"; fi; @l_prefix@/lib/openpkg/platform -n -L -S "" -C "+" -F "$fmt") + +# old OpenPKG platform identification +%l_target %{l_platform -t} # the *S*uper-user user/group name/id pair %l_susr @SUSR@ @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]