Adding the hook allows the deployment target to be changed without having to mess with the stdenv. The can also be propagated, which is useful for libraries that have a minimum deployment target higher than the default in nixpkgs. In that case, they can propagate the hook to ensure library users are not targeting an unsupported version.
27 lines
1.1 KiB
Bash
27 lines
1.1 KiB
Bash
local role_post
|
|
getHostRole
|
|
|
|
# Compare the requested deployment target to the existing one. The deployment target has to be a version number,
|
|
# and this hook tries to do the right thing with deployment targets set outside of it, so it has to parse
|
|
# the version numbers for the comparison manually.
|
|
|
|
local darwinMinVersion=@deploymentTarget@
|
|
local darwinMinVersionVar=@darwinMinVersionVariable@${role_post}
|
|
|
|
local currentDeploymentTargetArr
|
|
IFS=. read -a currentDeploymentTargetArr <<< "${!darwinMinVersionVar-0.0.0}"
|
|
|
|
local darwinMinVersionArr
|
|
IFS=. read -a darwinMinVersionArr <<< "$darwinMinVersion"
|
|
|
|
local currentDeploymentTarget
|
|
currentDeploymentTarget=$(printf "%02d%02d%02d" "${currentDeploymentTargetArr[0]-0}" "${currentDeploymentTargetArr[1]-0}" "${currentDeploymentTargetArr[2]-0}")
|
|
|
|
darwinMinVersion=$(printf "%02d%02d%02d" "${darwinMinVersionArr[0]-0}" "${darwinMinVersionArr[1]-0}" "${darwinMinVersionArr[2]-0}")
|
|
|
|
if [ "$darwinMinVersion" -gt "$currentDeploymentTarget" ]; then
|
|
export "$darwinMinVersionVar"=@deploymentTarget@
|
|
fi
|
|
|
|
unset -v role_post currentDeploymentTarget currentDeploymentTargetArr darwinMinVersion darwinMinVersionArr darwinMinVersionVar
|