OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Thomas Lotterer
  Root:   /v/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   13-Aug-2005 00:51:44
  Branch: HEAD                             Handle: 2005081223513704

  Modified files:
    openpkg-src/openpkg     HISTORY aux.wrapsrc.sh openpkg.boot openpkg.spec
                            rpmmacros

  Log:
    add --fallback and related options to openpkg bootstrap, enabling use
    of "foreign" dev tools and getting rid of global OS symlinks on
    systems with no vendor development tools

  Summary:
    Revision    Changes     Path
    1.287       +1  -0      openpkg-src/openpkg/HISTORY
    1.19        +7  -4      openpkg-src/openpkg/aux.wrapsrc.sh
    1.55        +67 -50     openpkg-src/openpkg/openpkg.boot
    1.441       +22 -63     openpkg-src/openpkg/openpkg.spec
    1.72        +1  -1      openpkg-src/openpkg/rpmmacros
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/HISTORY
  ============================================================================
  $ cvs diff -u -r1.286 -r1.287 HISTORY
  --- openpkg-src/openpkg/HISTORY       12 Aug 2005 20:47:22 -0000      1.286
  +++ openpkg-src/openpkg/HISTORY       12 Aug 2005 22:51:37 -0000      1.287
  @@ -2,6 +2,7 @@
   2005
   ====
   
  +20050813 add --fallback and related options, enabling use of "foreign" dev 
tools
   20050812 use ls(1) as a better strip(1) replacement as both fail when a file 
is missing
   20050812 store l_ar, l_ld and l_strip in .buildenv, reorder rpmmacros and 
introduce l_strip
   20050808 make sure strip(1) logic does not break shell script execution
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/aux.wrapsrc.sh
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 aux.wrapsrc.sh
  --- openpkg-src/openpkg/aux.wrapsrc.sh        24 Mar 2005 11:19:44 -0000      
1.18
  +++ openpkg-src/openpkg/aux.wrapsrc.sh        12 Aug 2005 22:51:38 -0000      
1.19
  @@ -53,12 +53,15 @@
           --prefix=*      ) l_prefix=$arg ;;
       esac
   done
  -if [ ".$o_help" = .yes ]; then
  -    echo "Usage: sh $l_me" 2>&1
  -    echo "       [--prefix=<prefix>]" 2>&1
  -    echo "       [--user=<usr>] [--group=<grp>] [--tag=<str>]" 2>&1
  +if [ ".$help" = .1 ]; then
  +    echo "Usage: sh $me" 2>&1
  +    echo "       [--prefix=<instancedir>] [--tag=<str>]" 2>&1
  +    echo "       [--user=<usr>] [--group=<grp>]" 2>&1
       echo "       [--{s,m,r,n}usr=<usr>] [--{s,m,r,n}grp=<grp>]" 2>&1
       echo "       [--{s,m,r,n}uid=<uid>] [--{s,m,r,n}gid=<gid>]" 2>&1
  +    echo "       [--fallback=<devtoolsdir>]" 2>&1
  +    echo "       [--use_tar=<tar>] [--use_make=<make>] [--use_cc=<cc>]" 2>&1
  +    echo "       [--use_ar=<ar>] [--use_ld=<ld>] [--use_strip=<strip>]" 2>&1
       echo "       [-t|--tar] [-h|--help] [-v|--version]" 2>&1
       exit 1
   fi
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/openpkg.boot
  ============================================================================
  $ cvs diff -u -r1.54 -r1.55 openpkg.boot
  --- openpkg-src/openpkg/openpkg.boot  24 Mar 2005 11:19:44 -0000      1.54
  +++ openpkg-src/openpkg/openpkg.boot  12 Aug 2005 22:51:39 -0000      1.55
  @@ -56,6 +56,7 @@
   muid=''; mgid=''
   ruid=''; rgid=''
   nuid=''; ngid=''
  +fallback=''; use_tar=''; use_make=''; use_cc=''; use_ar=''; use_ld=''; 
use_strip=''
   bs=0
   
   #   parse command line options
  @@ -88,6 +89,13 @@
           --rgid=*             ) rgid=$arg   ;;
           --nuid=*             ) nuid=$arg   ;;
           --ngid=*             ) ngid=$arg   ;;
  +        --fallback=*         ) fallback=$arg  ;;
  +        --use_tar=*          ) use_tar=$arg   ;;
  +        --use_make=*         ) use_make=$arg  ;;
  +        --use_cc=*           ) use_cc=$arg    ;;
  +        --use_ar=*           ) use_ar=$arg    ;;
  +        --use_ld=*           ) use_ld=$arg    ;;
  +        --use_strip=*        ) use_strip=$arg ;;
           -bs | -s             ) bs=1        ;;
           *                    ) help=1      ;;
       esac
  @@ -97,10 +105,13 @@
   fi
   if [ ".$help" = .1 ]; then
       echo "Usage: sh $me" 2>&1
  -    echo "       [--prefix=<prefix>]" 2>&1
  -    echo "       [--user=<usr>] [--group=<grp>] [--tag=<str>]" 2>&1
  +    echo "       [--prefix=<instancedir>] [--tag=<str>]" 2>&1
  +    echo "       [--user=<usr>] [--group=<grp>]" 2>&1
       echo "       [--{s,m,r,n}usr=<usr>] [--{s,m,r,n}grp=<grp>]" 2>&1
       echo "       [--{s,m,r,n}uid=<uid>] [--{s,m,r,n}gid=<gid>]" 2>&1
  +    echo "       [--fallback=<devtoolsdir>]" 2>&1
  +    echo "       [--use_tar=<tar>] [--use_make=<make>] [--use_cc=<cc>]" 2>&1
  +    echo "       [--use_ar=<ar>] [--use_ld=<ld>] [--use_strip=<strip>]" 2>&1
       echo "       [-t|--tar] [-h|--help] [-v|--version]" 2>&1
       exit 1
   fi
  @@ -120,6 +131,9 @@
   #   canonicalize prefix
   prefix=`echo "$prefix" | sed -e 's;//*;/;g' -e 's;/$;;'`
   
  +#   canonicalize fallback
  +fallback=`echo "$fallback" | sed -e 's;//*;/;g' -e 's;/$;;'`
  +
   #   provide default package tag
   if [ ".$tag" = . ]; then
       tag="<loc>"
  @@ -241,7 +255,7 @@
   
   #   find reasonable safe program path
   test ".$PATH" = . && PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin"
  -for dir in /usr/ccs/bin /usr/xpg4/bin; do
  +for dir in /usr/ccs/bin /usr/xpg4/bin $fallback; do
       test -d $dir && PATH="$PATH:$dir"
   done
   export PATH
  @@ -250,55 +264,55 @@
   umask 022
   unset ls rm mv cp sed grep awk >/dev/null 2>&1 || true
   
  -#   find reasonable TAR
  -l_tar=''
  -for t in gtar tar; do
  -    for p in `IFS=":"; echo . $PATH`; do
  -        if [ -f "$p/$t" ]; then
  -            l_tar="$p/$t"
  -            break
  -        fi
  -    done
  -    [ ".$l_tar" != . ] && break
  -done
  -if [ ".$l_tar" = . ]; then
  -    echo "$0:FAILED: required TAR not found"
  -    exit 1
  -fi
  -
  -#   find required Make tool
  -l_make=''
  -for t in gmake make; do
  -    for p in `IFS=":"; echo . $PATH`; do
  -        if [ -f "$p/$t" ]; then
  -            l_make="$p/$t"
  -            break
  -        fi
  -    done
  -    [ ".$l_make" != . ] && break
  -done
  -if [ ".$l_make" = . ]; then
  -    echo "$0:FAILED: required Make tool not found"
  -    exit 1
  -fi
  -
  -#   find required [GNU] C Compiler
  -l_cc=''
  -for t in egcc ggcc gcc cc; do
  -    for p in `IFS=":"; echo . $PATH`; do
  -        if [ -f "$p/$t" ]; then
  -            # if [ ".`$p/$t --version 2>/dev/null | grep '[23]\.[789]'`" != 
. ]; then
  -                l_cc="$p/$t"
  -                break
  -            # fi
  +#   find reasonable tool
  +findtool () {
  +    n="$1"
  +    shift
  +    if [ ".$1" = . ]; then
  +        shift
  +        set -- "$@"
  +    else
  +        set -- "$1"
  +    fi
  +    tool=''
  +    for t in "$@"; do
  +        if [ ".$t" != . ]; then
  +            echo "$t" | grep "\.\./" >/dev/null
  +            if [ $? -eq 0 ]; then
  +                echo "$0:FAILED: required tool $n at \"$t\" must not use 
relative path"
  +                exit 1
  +            fi
  +            echo "$t" | grep "^/" >/dev/null
  +            if [ $? -eq 0 ]; then
  +                if [ -f "$t" ]; then
  +                    tool="$t"
  +                    return
  +                else
  +                    echo "$0:FAILED: required tool $n at \"$t\" not found"
  +                    exit 1
  +                fi
  +            fi
  +            for p in `IFS=":"; echo $PATH`; do
  +                if [ -f "$p/$t" ]; then
  +                    tool="$p/$t"
  +                    return
  +                fi
  +            done
           fi
       done
  -    [ ".$l_cc" != . ] && break
  -done
  -if [ ".$l_cc" = . ]; then
  -    echo "$0:FAILED: required [GNU] C/C++ compiler not found"
  -    exit 1
  -fi
  +    if [ ".$tool" = . ]; then
  +        echo "$0:FAILED: required tool $n not found"
  +        exit 1
  +    fi
  +}
  +findtool "tar(1)"   "$use_tar"   gtar tar         ; l_tar="$tool"
  +findtool "make(1L)" "$use_make"  gmake make       ; l_make="$tool"
  +findtool "cc(1)"    "$use_cc"    egcc ggcc gcc cc ; l_cc="$tool"
  +findtool "ar(1)"    "$use_ar"    ar               ; l_ar="$tool"
  +findtool "ld(1)"    "$use_ld"    ld               ; l_ld="$tool"
  +findtool "strip(1)" "$use_strip" strip ls         ; l_strip="$tool"
  +set --
  +echo "++ tar=$l_tar make=$l_make cc=$l_cc ar=$l_ar ld=$l_ld strip=$l_strip"
   
   ##
   ##  execute the spec file manually by emulating
  @@ -335,6 +349,9 @@
     echo "l_tar=$l_tar"
     echo "l_make=$l_make"
     echo "l_cc=$l_cc"
  +  echo "l_ar=$l_ar"
  +  echo "l_ld=$l_ld"
  +  echo "l_strip=$l_strip"
     grep '%define' $spec | \
     sed \
       -e 's:^%define *\([^ ]*\) *\(.*\):\1="\2":'
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/openpkg.spec
  ============================================================================
  $ cvs diff -u -r1.440 -r1.441 openpkg.spec
  --- openpkg-src/openpkg/openpkg.spec  12 Aug 2005 20:47:22 -0000      1.440
  +++ openpkg-src/openpkg/openpkg.spec  12 Aug 2005 22:51:40 -0000      1.441
  @@ -38,7 +38,7 @@
   #   o any cc(1)
   
   #   the package version/release
  -%define       V_openpkg  20050812
  +%define       V_openpkg  20050813
   
   #   the used software versions
   %define       V_rpm      4.2.1
  @@ -260,70 +260,18 @@
       shtool=`SOURCE shtool`
       echo "shtool=$shtool" >>./.buildenv
   
  -    #   manually make sure tar(1) is available
  -    l_tar=""; [ ".%{?l_tar:set}" = .set ] && l_tar="%{l_tar}"; export l_tar
  -    if [ ".$l_tar" = . ]; then
  -        l_tar=`sh $shtool path gtar tar`
  -        if [ ".$l_tar" = . ]; then
  -            echo "openpkg: prerequisite tool \`gtar' or \`tar' not found"
  -            exit 1
  -        fi
  -    fi
  +    #   development tools
  +    l_tar="%{l_tar}"; export l_tar
       echo "l_tar=\"$l_tar\"; export l_tar" >>.buildenv
  -
  -    #   manually make sure make(1L) is available
  -    l_make=""; [ ".%{?l_make:set}" = .set ] && l_make="%{l_make}"; export 
l_make
  -    if [ ".$l_make" = . ]; then
  -        l_make=`sh $shtool path gmake make`
  -        if [ ".$l_make" = . ]; then
  -            echo "openpkg: prerequisite tool \`gmake' or \`make' not found"
  -            exit 1
  -        fi
  -    fi
  +    l_make="%{l_make}"; export l_make
       echo "l_make=\"$l_make\"; export l_make" >>.buildenv
  -
  -    #   manually make sure cc(1) is available
  -    l_cc=""; [ ".%{?l_cc:set}" = .set ] && l_cc="%{l_cc}"; export l_cc
  -    if [ ".$l_cc" = . ]; then
  -        l_cc=`sh $shtool path gcc cc`
  -        if [ ".$l_cc" = . ]; then
  -            echo "openpkg: prerequisite tool \`gcc' or \`cc' not found"
  -            exit 1
  -        fi
  -    fi
  +    l_cc="%{l_cc}"; export l_cc
       echo "l_cc=\"$l_cc\"; export l_cc" >>.buildenv
  -
  -    #   manually make sure ar(1) is available
  -    l_ar=""; [ ".%{?l_ar:set}" = .set ] && l_ar="%{l_ar}"; export l_ar
  -    if [ ".$l_ar" = . ]; then
  -        l_ar=`sh $shtool path ar`
  -        if [ ".$l_ar" = . ]; then
  -            echo "openpkg: prerequisite tool \`ar' not found"
  -            exit 1
  -        fi
  -    fi
  +    l_ar="%{l_ar}"; export l_ar
       echo "l_ar=\"$l_ar\"; export l_ar" >>.buildenv
  -
  -    #   manually make sure ld(1) is available
  -    l_ld=""; [ ".%{?l_ld:set}" = .set ] && l_ld="%{l_ld}"; export l_ld
  -    if [ ".$l_ld" = . ]; then
  -        l_ld=`sh $shtool path ld`
  -        if [ ".$l_ld" = . ]; then
  -            echo "openpkg: prerequisite tool \`ld' not found"
  -            exit 1
  -        fi
  -    fi
  +    l_ld="%{l_ld}"; export l_ld
       echo "l_ld=\"$l_ld\"; export l_ld" >>.buildenv
  -
  -    #   manually make sure strip(1) is available or use a null replacement
  -    l_strip=""; [ ".%{?l_strip:set}" = .set ] && l_strip="%{l_strip}"; 
export l_strip
  -    if [ ".$l_strip" = . ]; then
  -        l_strip=`sh $shtool path strip ls`
  -        if [ ".$l_strip" = . ]; then
  -            echo "openpkg: prerequisite tool \`strip' not found"
  -            exit 1
  -        fi
  -    fi
  +    l_strip="%{l_strip}"; export l_strip
       echo "l_strip=\"$l_strip\"; export l_strip" >>.buildenv
   
       #   determine path to aux.usrgrp.sh script
  @@ -2076,11 +2024,11 @@
       #   incompatible to the de-facto standardized install-info(8)
       #   command from GNU Texinfo. ATTENTION: THIS SHOULD BE REPLACED
       #   ASAP WITH A MORE GENERIC BUILD COMMAND OVERRIDE SOLUTION!
  +    if [ ! -d %{l_prefix}/lib/openpkg/override ]; then
  +        mkdir %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
  +    fi
       case "`cat %{l_prefix}/etc/openpkg/platform`" in
           *-*-debian* | *-*-ubuntu* )
  -            if [ ! -d %{l_prefix}/lib/openpkg/override ]; then
  -                mkdir %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || 
true
  -            fi
               if [ ! -f %{l_prefix}/lib/openpkg/override/install-info ]; then
                   ( echo "#!/bin/sh"
                     echo "echo 'OpenPKG: NOTICE: install-info(8) command 
execution overridden'"
  @@ -2091,6 +2039,12 @@
               ;;
       esac
   
  +    #   FIXME: hack to workaround problems in environments with too few
  +    #   development tools. ATTENTION: see one paragraph above.
  +    if [ ! -d %{l_prefix}/lib/openpkg/fallback ]; then
  +        mkdir %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
  +    fi
  +
   %preun
       [ ".$1" != .0 ] && exit 0
   
  @@ -2099,6 +2053,11 @@
           rm -rf %{l_prefix}/lib/openpkg/override >/dev/null 2>&1 || true
       fi
   
  +    #   remove fallback files
  +    if [ -d %{l_prefix}/lib/openpkg/fallback ]; then
  +        rm -rf %{l_prefix}/lib/openpkg/fallback >/dev/null 2>&1 || true
  +    fi
  +
       #   remove files which are not RPM controlled
       rm -rf %{l_prefix}/RPM/TMP/* %{l_prefix}/RPM/TMP/.[a-z]* >/dev/null 2>&1 
|| true
       rm -rf %{l_prefix}/RPM/SRC/* %{l_prefix}/RPM/SRC/.[a-z]* >/dev/null 2>&1 
|| true
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/openpkg/rpmmacros
  ============================================================================
  $ cvs diff -u -r1.71 -r1.72 rpmmacros
  --- openpkg-src/openpkg/rpmmacros     12 Aug 2005 20:47:22 -0000      1.71
  +++ openpkg-src/openpkg/rpmmacros     12 Aug 2005 22:51:41 -0000      1.72
  @@ -363,7 +363,7 @@
   %l_fetch_backup_9        ftp://ftp.openpkg.org/sources/DST/%{name}/
   
   #   sane build environment setup
  -%l_build_path            %(if [ -d %{l_prefix}/lib/openpkg/override ]; then 
echo "%{l_prefix}/lib/openpkg/override:"; 
fi)%{l_prefix}/bin:%{l_prefix}/sbin:@l_build_path@
  +%l_build_path            %(if [ -d %{l_prefix}/lib/openpkg/override ]; then 
echo "%{l_prefix}/lib/openpkg/override:"; 
fi)%{l_prefix}/bin:%{l_prefix}/sbin:@[EMAIL PROTECTED](if [ -d 
%{l_prefix}/lib/openpkg/fallback ]; then echo 
":%{l_prefix}/lib/openpkg/fallback"; fi)
   %l_build_ldlp            %{l_prefix}/lib:@l_build_ldlp@
   %l_build_ulim            @l_build_ulim@
   %l_build_shell_cmd       %{l_prefix}/lib/openpkg/bash
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org

Reply via email to