mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-18 19:03:28 +00:00
commit
268d510024
@ -24,7 +24,8 @@ bintoolsWrapper_addLDVars () {
|
||||
# Python and Haskell packages often only have directories like $out/lib/ghc-8.4.3/ or
|
||||
# $out/lib/python3.6/, so having them in LDFLAGS just makes the linker search unnecessary
|
||||
# directories and bloats the size of the environment variable space.
|
||||
if [[ -n "$(echo $1/lib/lib*)" ]]; then
|
||||
local -a glob=( $1/lib/lib* )
|
||||
if [ "${#glob[*]}" -gt 0 ]; then
|
||||
export NIX_${role_pre}LDFLAGS+=" -L$1/lib"
|
||||
fi
|
||||
fi
|
||||
@ -61,9 +62,8 @@ do
|
||||
if
|
||||
PATH=$_PATH type -p "@targetPrefix@${cmd}" > /dev/null
|
||||
then
|
||||
upper_case="$(echo "$cmd" | tr "[:lower:]" "[:upper:]")"
|
||||
export "${role_pre}${upper_case}=@targetPrefix@${cmd}";
|
||||
export "${upper_case}${role_post}=@targetPrefix@${cmd}";
|
||||
export "${role_pre}${cmd^^}=@targetPrefix@${cmd}";
|
||||
export "${cmd^^}${role_post}=@targetPrefix@${cmd}";
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -17,7 +17,8 @@ fi
|
||||
# code). The hooks for <hookName> are the shell function or variable
|
||||
# <hookName>, and the values of the shell array ‘<hookName>Hooks’.
|
||||
runHook() {
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set -u # May be called from elsewhere, so do `set -u`.
|
||||
|
||||
local hookName="$1"
|
||||
@ -32,7 +33,7 @@ runHook() {
|
||||
set -u # To balance `_eval`
|
||||
done
|
||||
|
||||
eval "${oldOpts}"
|
||||
set "$oldOpts"
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -40,7 +41,8 @@ runHook() {
|
||||
# Run all hooks with the specified name, until one succeeds (returns a
|
||||
# zero exit code). If none succeed, return a non-zero exit code.
|
||||
runOneHook() {
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set -u # May be called from elsewhere, so do `set -u`.
|
||||
|
||||
local hookName="$1"
|
||||
@ -57,7 +59,7 @@ runOneHook() {
|
||||
set -u # To balance `_eval`
|
||||
done
|
||||
|
||||
eval "${oldOpts}"
|
||||
set "$oldOpts"
|
||||
return "$ret"
|
||||
}
|
||||
|
||||
@ -71,21 +73,18 @@ _callImplicitHook() {
|
||||
set -u
|
||||
local def="$1"
|
||||
local hookName="$2"
|
||||
case "$(type -t "$hookName")" in
|
||||
(function|alias|builtin)
|
||||
set +u
|
||||
"$hookName";;
|
||||
(file)
|
||||
set +u
|
||||
source "$hookName";;
|
||||
(keyword) :;;
|
||||
(*) if [ -z "${!hookName:-}" ]; then
|
||||
return "$def";
|
||||
else
|
||||
set +u
|
||||
eval "${!hookName}"
|
||||
fi;;
|
||||
esac
|
||||
if declare -F "$hookName" > /dev/null; then
|
||||
set +u
|
||||
"$hookName"
|
||||
elif type -p "$hookName" > /dev/null; then
|
||||
set +u
|
||||
source "$hookName"
|
||||
elif [ -n "${!hookName:-}" ]; then
|
||||
set +u
|
||||
eval "${!hookName}"
|
||||
else
|
||||
return "$def"
|
||||
fi
|
||||
# `_eval` expects hook to need nounset disable and leave it
|
||||
# disabled anyways, so Ok to to delegate. The alternative of a
|
||||
# return trap is no good because it would affect nested returns.
|
||||
@ -96,7 +95,7 @@ _callImplicitHook() {
|
||||
# hooks exits the hook, not the caller. Also will only pass args if
|
||||
# command can take them
|
||||
_eval() {
|
||||
if [ "$(type -t "$1")" = function ]; then
|
||||
if declare -F "$1" > /dev/null 2>&1; then
|
||||
set +u
|
||||
"$@" # including args
|
||||
else
|
||||
@ -401,6 +400,7 @@ findInputs() {
|
||||
# The current package's host and target offset together
|
||||
# provide a <=-preserving homomorphism from the relative
|
||||
# offsets to current offset
|
||||
local -i mapOffsetResult
|
||||
function mapOffset() {
|
||||
local -ri inputOffset="$1"
|
||||
if (( "$inputOffset" <= 0 )); then
|
||||
@ -408,7 +408,7 @@ findInputs() {
|
||||
else
|
||||
local -ri outputOffset="$inputOffset - 1 + $targetOffset"
|
||||
fi
|
||||
echo "$outputOffset"
|
||||
mapOffsetResult="$outputOffset"
|
||||
}
|
||||
|
||||
# Host offset relative to that of the package whose immediate
|
||||
@ -420,8 +420,8 @@ findInputs() {
|
||||
|
||||
# Host offset relative to the package currently being
|
||||
# built---as absolute an offset as will be used.
|
||||
local -i hostOffsetNext
|
||||
hostOffsetNext="$(mapOffset relHostOffset)"
|
||||
mapOffset relHostOffset
|
||||
local -i hostOffsetNext="$mapOffsetResult"
|
||||
|
||||
# Ensure we're in bounds relative to the package currently
|
||||
# being built.
|
||||
@ -439,8 +439,8 @@ findInputs() {
|
||||
|
||||
# Target offset relative to the package currently being
|
||||
# built.
|
||||
local -i targetOffsetNext
|
||||
targetOffsetNext="$(mapOffset relTargetOffset)"
|
||||
mapOffset relTargetOffset
|
||||
local -i targetOffsetNext="$mapOffsetResult"
|
||||
|
||||
# Once again, ensure we're in bounds relative to the
|
||||
# package currently being built.
|
||||
@ -449,7 +449,8 @@ findInputs() {
|
||||
[[ -f "$pkg/nix-support/$file" ]] || continue
|
||||
|
||||
local pkgNext
|
||||
for pkgNext in $(< "$pkg/nix-support/$file"); do
|
||||
read -r -d '' pkgNext < "$pkg/nix-support/$file" || true
|
||||
for pkgNext in $pkgNext; do
|
||||
findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext"
|
||||
done
|
||||
done
|
||||
@ -500,10 +501,11 @@ activatePackage() {
|
||||
(( "$hostOffset" <= "$targetOffset" )) || exit -1
|
||||
|
||||
if [ -f "$pkg" ]; then
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set +u
|
||||
source "$pkg"
|
||||
eval "$oldOpts"
|
||||
set "$oldOpts"
|
||||
fi
|
||||
|
||||
# Only dependencies whose host platform is guaranteed to match the
|
||||
@ -522,10 +524,11 @@ activatePackage() {
|
||||
fi
|
||||
|
||||
if [[ -f "$pkg/nix-support/setup-hook" ]]; then
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set +u
|
||||
source "$pkg/nix-support/setup-hook"
|
||||
eval "$oldOpts"
|
||||
set "$oldOpts"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -1273,17 +1276,19 @@ showPhaseHeader() {
|
||||
|
||||
genericBuild() {
|
||||
if [ -f "${buildCommandPath:-}" ]; then
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set +u
|
||||
source "$buildCommandPath"
|
||||
eval "$oldOpts"
|
||||
set "$oldOpts"
|
||||
return
|
||||
fi
|
||||
if [ -n "${buildCommand:-}" ]; then
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set +u
|
||||
eval "$buildCommand"
|
||||
eval "$oldOpts"
|
||||
set "$oldOpts"
|
||||
return
|
||||
fi
|
||||
|
||||
@ -1313,10 +1318,11 @@ genericBuild() {
|
||||
|
||||
# Evaluate the variable named $curPhase if it exists, otherwise the
|
||||
# function named $curPhase.
|
||||
local oldOpts="$(shopt -po nounset)"
|
||||
local oldOpts="-u"
|
||||
shopt -qo nounset || oldOpts="+u"
|
||||
set +u
|
||||
eval "${!curPhase:-$curPhase}"
|
||||
eval "$oldOpts"
|
||||
set "$oldOpts"
|
||||
|
||||
if [ "$curPhase" = unpackPhase ]; then
|
||||
cd "${sourceRoot:-.}"
|
||||
|
Loading…
Reference in New Issue
Block a user