Merge pull request #77632 from LnL7/darwin-macos-version-min
stdenv: make darwin builds reproducable
This commit is contained in:
commit
6f38c93e3c
@ -50,13 +50,12 @@ cmakeConfigurePhase() {
|
|||||||
# because we usually do not package the framework
|
# because we usually do not package the framework
|
||||||
cmakeFlags="-DCMAKE_FIND_FRAMEWORK=last $cmakeFlags"
|
cmakeFlags="-DCMAKE_FIND_FRAMEWORK=last $cmakeFlags"
|
||||||
|
|
||||||
|
# on macOS i686 was only relevant for 10.5 or earlier.
|
||||||
|
cmakeFlags="-DCMAKE_OSX_ARCHITECTURES=x86_64 $cmakeFlags"
|
||||||
|
|
||||||
# we never want to use the global macOS SDK
|
# we never want to use the global macOS SDK
|
||||||
cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags"
|
cmakeFlags="-DCMAKE_OSX_SYSROOT= $cmakeFlags"
|
||||||
|
|
||||||
# disable OSX deployment target
|
|
||||||
# we don't want our binaries to have a "minimum" OSX version
|
|
||||||
cmakeFlags="-DCMAKE_OSX_DEPLOYMENT_TARGET= $cmakeFlags"
|
|
||||||
|
|
||||||
# correctly detect our clang compiler
|
# correctly detect our clang compiler
|
||||||
cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags"
|
cmakeFlags="-DCMAKE_POLICY_DEFAULT_CMP0025=NEW $cmakeFlags"
|
||||||
|
|
||||||
|
@ -15,10 +15,7 @@ stdenv.mkDerivation rec {
|
|||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
buildInputs = with llvmPackages; [ clang-unwrapped llvm rapidjson ];
|
buildInputs = with llvmPackages; [ clang-unwrapped llvm rapidjson ];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [ "-DCCLS_VERSION=${version}" ];
|
||||||
"-DCCLS_VERSION=${version}"
|
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=10.12"
|
|
||||||
];
|
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
cmakeFlagsArray+=(-DCMAKE_CXX_FLAGS="-fvisibility=hidden -fno-rtti")
|
cmakeFlagsArray+=(-DCMAKE_CXX_FLAGS="-fvisibility=hidden -fno-rtti")
|
||||||
|
@ -26,7 +26,6 @@ stdenv.mkDerivation {
|
|||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DSYSTEM_CLANG=ON"
|
"-DSYSTEM_CLANG=ON"
|
||||||
"-DCLANG_CXX=ON"
|
"-DCLANG_CXX=ON"
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=10.12"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
shell = runtimeShell;
|
shell = runtimeShell;
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
{ stdenv, fetchurl, xar, cpio, pkgs, python3, pbzx, lib }:
|
{ stdenv, fetchurl, xar, cpio, pkgs, python3, pbzx, lib }:
|
||||||
|
|
||||||
|
let version = "10.12"; in
|
||||||
|
|
||||||
|
# Ensure appleSdkVersion is up to date.
|
||||||
|
assert stdenv.isDarwin -> stdenv.appleSdkVersion == version;
|
||||||
|
|
||||||
let
|
let
|
||||||
# sadly needs to be exported because security_tool needs it
|
# sadly needs to be exported because security_tool needs it
|
||||||
sdk = stdenv.mkDerivation rec {
|
sdk = stdenv.mkDerivation rec {
|
||||||
version = "10.12";
|
|
||||||
pname = "MacOS_SDK";
|
pname = "MacOS_SDK";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
# This URL comes from https://swscan.apple.com/content/catalogs/others/index-10.12.merged-1.sucatalog, which we found by:
|
# This URL comes from https://swscan.apple.com/content/catalogs/others/index-10.12.merged-1.sucatalog, which we found by:
|
||||||
# 1. Google: site:swscan.apple.com and look for a name that seems appropriate for your version
|
# 1. Google: site:swscan.apple.com and look for a name that seems appropriate for your version
|
||||||
|
@ -31,7 +31,6 @@ self = stdenv.mkDerivation rec {
|
|||||||
outputs = [ "out" "static" ];
|
outputs = [ "out" "static" ];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DCMAKE_OSX_DEPLOYMENT_TARGET=10.12" # For std::shared_timed_mutex.
|
|
||||||
"-DCMAKE_SKIP_BUILD_RPATH=OFF" # To run libmysql/libmysql_api_test during build.
|
"-DCMAKE_SKIP_BUILD_RPATH=OFF" # To run libmysql/libmysql_api_test during build.
|
||||||
"-DFORCE_UNSUPPORTED_COMPILER=1" # To configure on Darwin.
|
"-DFORCE_UNSUPPORTED_COMPILER=1" # To configure on Darwin.
|
||||||
"-DWITH_ROUTER=OFF" # It may be packaged separately.
|
"-DWITH_ROUTER=OFF" # It may be packaged separately.
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, localSystem, crossSystem, config, overlays, crossOverlays ? []
|
, localSystem, crossSystem, config, overlays, crossOverlays ? []
|
||||||
|
# The version of darwin.apple_sdk used for sources provided by apple.
|
||||||
|
, appleSdkVersion ? "10.12"
|
||||||
|
# Minimum required macOS version, used both for compatibility as well as reproducability.
|
||||||
|
, macosVersionMin ? "10.12"
|
||||||
# Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools
|
# Allow passing in bootstrap files directly so we can test the stdenv bootstrap process when changing the bootstrap tools
|
||||||
, bootstrapFiles ? let
|
, bootstrapFiles ? let
|
||||||
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> {
|
fetch = { file, sha256, executable ? true }: import <nix/fetchurl.nix> {
|
||||||
@ -28,15 +31,19 @@ let
|
|||||||
];
|
];
|
||||||
in rec {
|
in rec {
|
||||||
commonPreHook = ''
|
commonPreHook = ''
|
||||||
export NIX_ENFORCE_PURITY="''${NIX_ENFORCE_PURITY-1}"
|
export NIX_ENFORCE_NO_NATIVE=''${NIX_ENFORCE_NO_NATIVE-1}
|
||||||
export NIX_ENFORCE_NO_NATIVE="''${NIX_ENFORCE_NO_NATIVE-1}"
|
export NIX_ENFORCE_PURITY=''${NIX_ENFORCE_PURITY-1}
|
||||||
export NIX_IGNORE_LD_THROUGH_GCC=1
|
export NIX_IGNORE_LD_THROUGH_GCC=1
|
||||||
stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
|
|
||||||
export MACOSX_DEPLOYMENT_TARGET=10.12
|
|
||||||
export SDKROOT=
|
export SDKROOT=
|
||||||
export CMAKE_OSX_ARCHITECTURES=x86_64
|
|
||||||
|
# Ensure consistent LC_VERSION_MIN_MACOSX and remove LC_UUID.
|
||||||
|
export MACOSX_DEPLOYMENT_TARGET=${macosVersionMin}
|
||||||
|
export NIX_LDFLAGS+=" -macosx_version_min ${macosVersionMin} -sdk_version ${appleSdkVersion} -no_uuid"
|
||||||
|
|
||||||
# Workaround for https://openradar.appspot.com/22671534 on 10.11.
|
# Workaround for https://openradar.appspot.com/22671534 on 10.11.
|
||||||
export gl_cv_func_getcwd_abort_bug=no
|
export gl_cv_func_getcwd_abort_bug=no
|
||||||
|
|
||||||
|
stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
bootstrapTools = derivation {
|
bootstrapTools = derivation {
|
||||||
@ -130,8 +137,7 @@ in rec {
|
|||||||
__extraImpureHostDeps = commonImpureHostDeps;
|
__extraImpureHostDeps = commonImpureHostDeps;
|
||||||
|
|
||||||
extraAttrs = {
|
extraAttrs = {
|
||||||
inherit platform;
|
inherit macosVersionMin appleSdkVersion platform;
|
||||||
parent = last;
|
|
||||||
};
|
};
|
||||||
overrides = self: super: (overrides self super) // { fetchurl = thisStdenv.fetchurlBoot; };
|
overrides = self: super: (overrides self super) // { fetchurl = thisStdenv.fetchurlBoot; };
|
||||||
};
|
};
|
||||||
@ -400,9 +406,9 @@ in rec {
|
|||||||
extraBuildInputs = [ pkgs.darwin.CF ];
|
extraBuildInputs = [ pkgs.darwin.CF ];
|
||||||
|
|
||||||
extraAttrs = {
|
extraAttrs = {
|
||||||
inherit platform bootstrapTools;
|
libc = pkgs.darwin.Libsystem;
|
||||||
libc = pkgs.darwin.Libsystem;
|
|
||||||
shellPackage = pkgs.bash;
|
shellPackage = pkgs.bash;
|
||||||
|
inherit macosVersionMin appleSdkVersion platform bootstrapTools;
|
||||||
};
|
};
|
||||||
|
|
||||||
allowedRequisites = (with pkgs; [
|
allowedRequisites = (with pkgs; [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user