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 [email protected]