Module Name: src Committed By: apb Date: Sun Sep 27 17:25:02 UTC 2009
Modified Files: src: build.sh Log Message: Make resolvepath and resolvepaths slightly elss magic. They now take a variable name as an arg unstead of always working on $OPTARG, and resolveepaths is now a wrapper around resolvepath instead of duplicating code. To generate a diff of this commit: cvs rdiff -u -r1.207 -r1.208 src/build.sh Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/build.sh diff -u src/build.sh:1.207 src/build.sh:1.208 --- src/build.sh:1.207 Mon Sep 7 04:14:17 2009 +++ src/build.sh Sun Sep 27 17:25:01 2009 @@ -1,5 +1,5 @@ #! /usr/bin/env sh -# $NetBSD: build.sh,v 1.207 2009/09/07 04:14:17 jnemeth Exp $ +# $NetBSD: build.sh,v 1.208 2009/09/27 17:25:01 apb Exp $ # # Copyright (c) 2001-2009 The NetBSD Foundation, Inc. # All rights reserved. @@ -499,41 +499,41 @@ makeenv="${makeenv} $1" } -# Convert possibly-relative paths to absolute paths by prepending -# ${TOP} if necessary. Also delete trailing "/", if any. +# Given a variable name in $1, modify the variable in place as follows: +# For each space-separated word in the variable, call resolvepath. resolvepaths() { - _OPTARG= - for oa in ${OPTARG}; do - case "${oa}" in - /) - ;; - /*) - oa="${oa%/}" - ;; - *) - oa="${TOP}/${oa%/}" - ;; - esac - _OPTARG="${_OPTARG} ${oa}" + local var="$1" + local val + eval val=\"\${${var}}\" + local newval='' + local word + for word in ${val}; do + resolvepath word + newval="${newval}${newval:+ }${word}" done - OPTARG="${_OPTARG}" + eval ${var}=\"\${newval}\" } +# Given a variable name in $1, modify the variable in place as follows: # Convert possibly-relative path to absolute path by prepending # ${TOP} if necessary. Also delete trailing "/", if any. resolvepath() { - case "${OPTARG}" in + local var="$1" + local val + eval val=\"\${${var}}\" + case "${val}" in /) ;; /*) - OPTARG="${OPTARG%/}" + val="${val%/}" ;; *) - OPTARG="${TOP}/${OPTARG%/}" + val="${TOP}/${val%/}" ;; esac + eval ${var}=\"\${val}\" } usage() @@ -663,12 +663,12 @@ ;; -C) - eval ${optargcmd}; resolvepaths + eval ${optargcmd}; resolvepaths OPTARG iso_dir=${OPTARG} ;; -D) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG setmakeenv DESTDIR "${OPTARG}" ;; @@ -682,7 +682,7 @@ ;; -M) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG TOP_objdir="${OPTARG}${TOP}" unsetmakeenv MAKEOBJDIR setmakeenv MAKEOBJDIRPREFIX "${OPTARG}" @@ -712,7 +712,7 @@ ;; -O) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG TOP_objdir="${OPTARG}" unsetmakeenv MAKEOBJDIRPREFIX setmakeenv MAKEOBJDIR "\${.CURDIR:C,^$TOP,$OPTARG,}" @@ -723,7 +723,7 @@ ;; -R) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG setmakeenv RELEASEDIR "${OPTARG}" ;; @@ -738,7 +738,7 @@ ;; -T) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG TOOLDIR="${OPTARG}" export TOOLDIR ;; @@ -765,12 +765,12 @@ ;; -w) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG makewrapper="${OPTARG}" ;; -X) - eval ${optargcmd}; resolvepath + eval ${optargcmd}; resolvepath OPTARG setmakeenv X11SRCDIR "${OPTARG}" ;; @@ -1223,7 +1223,7 @@ eval cat <<EOF ${makewrapout} #! ${HOST_SH} # Set proper variables to allow easy "make" building of a NetBSD subtree. -# Generated from: \$NetBSD: build.sh,v 1.207 2009/09/07 04:14:17 jnemeth Exp $ +# Generated from: \$NetBSD: build.sh,v 1.208 2009/09/27 17:25:01 apb Exp $ # with these arguments: ${_args} #