sdk version?
This commit is contained in:
@@ -84,7 +84,7 @@
|
||||
inherit system;
|
||||
config.allowUnfreePredicate = pkg: (pkg.pname or "") == "metal-toolchain";
|
||||
overlays = [
|
||||
(final: _: {apple-sdk_26_2 = final.callPackage ./nix/apple-sdk/package.nix { }; })
|
||||
(final: _: { apple-sdk_26 = final.callPackage ./nix/apple-sdk/package.nix { darwinSdkMajorVersion = "26"; }; })
|
||||
];
|
||||
};
|
||||
treefmt = {
|
||||
@@ -125,6 +125,11 @@
|
||||
inherit uvLockMlxVersion;
|
||||
};
|
||||
default = self'.packages.exo;
|
||||
sdk-version = pkgs.runCommand "sdk-version" { } ''
|
||||
mkdir -p $out
|
||||
echo ${pkgs.apple-sdk_26.version} > $out/version
|
||||
'';
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
stdenvNoCC,
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, stdenvNoCC
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
lib,
|
||||
fetchurl,
|
||||
cpio,
|
||||
pbzx,
|
||||
{ lib
|
||||
, fetchurl
|
||||
, cpio
|
||||
, pbzx
|
||||
,
|
||||
}:
|
||||
|
||||
{
|
||||
urls,
|
||||
version,
|
||||
hash,
|
||||
{ urls
|
||||
, version
|
||||
, hash
|
||||
,
|
||||
}:
|
||||
|
||||
fetchurl {
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
self: super: {
|
||||
passthru = super.passthru or { } // {
|
||||
privateFrameworksHook = makeSetupHook {
|
||||
name = "apple-sdk-private-frameworks-hook";
|
||||
} ../setup-hooks/add-private-frameworks.sh;
|
||||
privateFrameworksHook = makeSetupHook
|
||||
{
|
||||
name = "apple-sdk-private-frameworks-hook";
|
||||
} ../setup-hooks/add-private-frameworks.sh;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@ let
|
||||
lockfile = builtins.fromJSON (builtins.readFile ../metadata/apple-oss-lockfile.json);
|
||||
in
|
||||
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
stdenvNoCC,
|
||||
sdkVersion,
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, stdenvNoCC
|
||||
, sdkVersion
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -24,12 +24,13 @@ self: super: {
|
||||
let
|
||||
lockinfo = sdkinfo.${name};
|
||||
in
|
||||
fetchFromGitHub {
|
||||
owner = "apple-oss-distributions";
|
||||
repo = name;
|
||||
rev = lockinfo.rev or "${name}-${lockinfo.version}";
|
||||
inherit (lockinfo) hash;
|
||||
}
|
||||
fetchFromGitHub
|
||||
{
|
||||
owner = "apple-oss-distributions";
|
||||
repo = name;
|
||||
rev = lockinfo.rev or "${name}-${lockinfo.version}";
|
||||
inherit (lockinfo) hash;
|
||||
}
|
||||
// {
|
||||
inherit (lockinfo) version;
|
||||
};
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
xcodePlatform,
|
||||
sdkVersion,
|
||||
{ lib
|
||||
, stdenvNoCC
|
||||
, xcodePlatform
|
||||
, sdkVersion
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -7,10 +7,10 @@ let
|
||||
];
|
||||
in
|
||||
|
||||
{
|
||||
lib,
|
||||
jq,
|
||||
llvm,
|
||||
{ lib
|
||||
, jq
|
||||
, llvm
|
||||
,
|
||||
}:
|
||||
|
||||
self: super: {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
lib,
|
||||
cups,
|
||||
darwin,
|
||||
db,
|
||||
libiconv,
|
||||
ncurses,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
xcbuild,
|
||||
{ lib
|
||||
, cups
|
||||
, darwin
|
||||
, db
|
||||
, libiconv
|
||||
, ncurses
|
||||
, stdenv
|
||||
, stdenvNoCC
|
||||
, xcbuild
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
lib,
|
||||
pkgsBuildHost,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
sdkVersion,
|
||||
{ lib
|
||||
, pkgsBuildHost
|
||||
, stdenv
|
||||
, stdenvNoCC
|
||||
, sdkVersion
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -2,10 +2,10 @@ let
|
||||
disallowedPackages = builtins.fromJSON (builtins.readFile ../metadata/disallowed-packages.json);
|
||||
in
|
||||
|
||||
{
|
||||
lib,
|
||||
jq,
|
||||
stdenv,
|
||||
{ lib
|
||||
, jq
|
||||
, stdenv
|
||||
,
|
||||
}:
|
||||
|
||||
self: super: {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ }:
|
||||
{}:
|
||||
|
||||
self: super: {
|
||||
buildPhase = ''
|
||||
|
||||
@@ -21,6 +21,6 @@
|
||||
"https://web.archive.org/web/20250915230423/https://swcdn.apple.com/content/downloads/60/22/089-71960-A_W8BL1RUJJ6/5zkyplomhk1cm7z6xja2ktgapnhhti6wwd/CLTools_macOSNMOS_SDK.pkg"
|
||||
],
|
||||
"version": "26.2",
|
||||
"hash": "sha256-RmrkZn/eNy70QC/FgymL/V+6GMlqGfYo2lcIVVOMfGc"
|
||||
"hash": "sha256-hXRlMieVv0smna5uiWRwq87IWOaPWtAjAldbi+wQXcw="
|
||||
}
|
||||
}
|
||||
|
||||
+11
-14
@@ -2,21 +2,18 @@ let
|
||||
sdkVersions = builtins.fromJSON (builtins.readFile ./metadata/versions.json);
|
||||
in
|
||||
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
stdenvNoCC,
|
||||
substitute,
|
||||
|
||||
# Specifies the major version used for the SDK. Uses `hostPlatform.darwinSdkVersion` by default.
|
||||
darwinSdkMajorVersion ? lib.versions.major stdenv.hostPlatform.darwinSdkVersion,
|
||||
|
||||
# Enabling bootstrap disables propagation. Defaults to `false` (meaning to propagate certain packages and `xcrun`)
|
||||
{ lib
|
||||
, stdenv
|
||||
, stdenvNoCC
|
||||
, substitute
|
||||
, # Specifies the major version used for the SDK. Uses `hostPlatform.darwinSdkVersion` by default.
|
||||
darwinSdkMajorVersion ? lib.versions.major stdenv.hostPlatform.darwinSdkVersion
|
||||
, # Enabling bootstrap disables propagation. Defaults to `false` (meaning to propagate certain packages and `xcrun`)
|
||||
# except in stage0 of the Darwin stdenv bootstrap.
|
||||
enableBootstrap ? stdenv.name == "bootstrap-stage0-stdenv-darwin",
|
||||
|
||||
# Required by various phases
|
||||
callPackage,
|
||||
enableBootstrap ? stdenv.name == "bootstrap-stage0-stdenv-darwin"
|
||||
, # Required by various phases
|
||||
callPackage
|
||||
,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
@@ -6,18 +6,18 @@ set -eu -o pipefail
|
||||
catalog=${1-}
|
||||
|
||||
if [ -z "$catalog" ]; then
|
||||
echo "usage: get-sdks-from-catalog.sh <catalog>"
|
||||
echo " <catalog> Apple software update catalog (may be gzipped)" >&2
|
||||
exit 1
|
||||
echo "usage: get-sdks-from-catalog.sh <catalog>"
|
||||
echo " <catalog> Apple software update catalog (may be gzipped)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
scratch=$(mktemp)
|
||||
trap 'rm -f -- "$scratch"' EXIT
|
||||
|
||||
if [[ "$(file "$catalog")" =~ gzip ]]; then
|
||||
gzcat "$catalog" > "$scratch"
|
||||
gzcat "$catalog" >"$scratch"
|
||||
else
|
||||
cp --reflink=auto "$catalog" "$scratch"
|
||||
cp --reflink=auto "$catalog" "$scratch"
|
||||
fi
|
||||
|
||||
# Grab all SDK packages from the catalog
|
||||
@@ -25,13 +25,13 @@ filter='.Products[].Packages[] | select(.URL | test(".*CLTools_macOSNMOS_SDK.pkg
|
||||
|
||||
declare -A package_list
|
||||
for package in $(plutil -convert json -o - "$scratch" | jq -r "$filter"); do
|
||||
package_list[${package%%|*}]=${package#*|}
|
||||
package_list[${package%%|*}]=${package#*|}
|
||||
done
|
||||
|
||||
truncate --size 0 "$scratch"
|
||||
for pkg in "${!package_list[@]}"; do
|
||||
ver=$(curl --silent "${package_list[$pkg]}" | xq -r '."pkg-info"."@version"')
|
||||
echo "{\"url\": \"$pkg\", \"version\": \"$(cut -d. -f1-3 <<< "$ver")\", \"long_version\": \"$ver\"}" >> "$scratch"
|
||||
ver=$(curl --silent "${package_list[$pkg]}" | xq -r '."pkg-info"."@version"')
|
||||
echo "{\"url\": \"$pkg\", \"version\": \"$(cut -d. -f1-3 <<<"$ver")\", \"long_version\": \"$ver\"}" >>"$scratch"
|
||||
done
|
||||
|
||||
jq -r --slurp '
|
||||
|
||||
@@ -4,66 +4,67 @@
|
||||
set -eu -o pipefail
|
||||
|
||||
if [ ! -v 2 ]; then
|
||||
echo "usage: lock-sdk-deps.sh <SDK version> <Packages>" >&2
|
||||
echo " <SDK version> Decimal-separated version number." >&2
|
||||
echo " Must correspond to a tag in https://github.com/apple-oss-distributions/distribution-macOS" >&2
|
||||
echo " <Packages> List of packages from the distributions-macOS repository." >&2
|
||||
echo " Packages not in the repository at the tag for <SDK version> will be ignored."
|
||||
exit 1
|
||||
echo "usage: lock-sdk-deps.sh <SDK version> <Packages>" >&2
|
||||
echo " <SDK version> Decimal-separated version number." >&2
|
||||
echo " Must correspond to a tag in https://github.com/apple-oss-distributions/distribution-macOS" >&2
|
||||
echo " <Packages> List of packages from the distributions-macOS repository." >&2
|
||||
echo " Packages not in the repository at the tag for <SDK version> will be ignored."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pkgdir=$(dirname "$(dirname "$(realpath "$0")")")
|
||||
|
||||
lockfile=$pkgdir/metadata/apple-oss-lockfile.json
|
||||
if [ ! -e "$lockfile" ]; then
|
||||
touch "$lockfile"
|
||||
touch "$lockfile"
|
||||
fi
|
||||
|
||||
workdir=$(mktemp -d)
|
||||
trap 'rm -rf -- "$workdir"' EXIT
|
||||
|
||||
sdkVersion=$1; shift
|
||||
tag="macos-${sdkVersion//.}"
|
||||
sdkVersion=$1
|
||||
shift
|
||||
tag="macos-${sdkVersion//./}"
|
||||
|
||||
declare -a packages=("$@")
|
||||
|
||||
echo "Locking versions for macOS $sdkVersion using tag '$tag'..."
|
||||
|
||||
pushd "$workdir" > /dev/null
|
||||
pushd "$workdir" >/dev/null
|
||||
|
||||
git clone --branch "$tag" https://github.com/apple-oss-distributions/distribution-macOS.git &> /dev/null
|
||||
git clone --branch "$tag" https://github.com/apple-oss-distributions/distribution-macOS.git &>/dev/null
|
||||
cd distribution-macOS
|
||||
|
||||
for package in "${packages[@]}"; do
|
||||
# If the tag exists in `release.json`, use that as an optimization to avoid downloading unnecessarily from Github.
|
||||
packageTag=$(jq -r --arg package "$package" '.projects[] | select(.project == $package) | .tag' release.json)
|
||||
packageCommit=$(git ls-tree -d HEAD "$package" | awk '{print $3}')
|
||||
# If the tag exists in `release.json`, use that as an optimization to avoid downloading unnecessarily from Github.
|
||||
packageTag=$(jq -r --arg package "$package" '.projects[] | select(.project == $package) | .tag' release.json)
|
||||
packageCommit=$(git ls-tree -d HEAD "$package" | awk '{print $3}')
|
||||
|
||||
if [ ! -d "$package" ]; then
|
||||
packageCommit=HEAD
|
||||
fi
|
||||
if [ ! -d "$package" ]; then
|
||||
packageCommit=HEAD
|
||||
fi
|
||||
|
||||
# However, sometimes it doesn’t exist. In that case, fall back to cloning the repo and check manually
|
||||
# which tag corresponds to the commit from the submodule.
|
||||
if [ -z "$packageTag" ]; then
|
||||
git clone --no-checkout "https://github.com/apple-oss-distributions/$package.git" ../source &> /dev/null
|
||||
pushd ../source > /dev/null
|
||||
packageTag=$(git tag --points-at "$packageCommit")
|
||||
popd > /dev/null
|
||||
rm -rf ../source
|
||||
fi
|
||||
# However, sometimes it doesn’t exist. In that case, fall back to cloning the repo and check manually
|
||||
# which tag corresponds to the commit from the submodule.
|
||||
if [ -z "$packageTag" ]; then
|
||||
git clone --no-checkout "https://github.com/apple-oss-distributions/$package.git" ../source &>/dev/null
|
||||
pushd ../source >/dev/null
|
||||
packageTag=$(git tag --points-at "$packageCommit")
|
||||
popd >/dev/null
|
||||
rm -rf ../source
|
||||
fi
|
||||
|
||||
packageVersion=${packageTag##"$package"-}
|
||||
packageVersion=${packageTag##"$package"-}
|
||||
|
||||
curl -OL "https://github.com/apple-oss-distributions/$package/archive/$packageTag.tar.gz" &> /dev/null
|
||||
tar axf "$packageTag.tar.gz"
|
||||
curl -OL "https://github.com/apple-oss-distributions/$package/archive/$packageTag.tar.gz" &>/dev/null
|
||||
tar axf "$packageTag.tar.gz"
|
||||
|
||||
packageHash=$(nix --extra-experimental-features nix-command hash path "$package-$packageTag")
|
||||
packageHash=$(nix --extra-experimental-features nix-command hash path "$package-$packageTag")
|
||||
|
||||
pkgsjson="{\"$sdkVersion\": {\"$package\": {\"version\": \"$packageVersion\", \"hash\": \"$packageHash\"}}}"
|
||||
pkgsjson="{\"$sdkVersion\": {\"$package\": {\"version\": \"$packageVersion\", \"hash\": \"$packageHash\"}}}"
|
||||
|
||||
echo " - Locking $package to version $packageVersion with hash '$packageHash'"
|
||||
jq --argjson pkg "$pkgsjson" -S '. * $pkg' "$lockfile" | sponge "$lockfile"
|
||||
echo " - Locking $package to version $packageVersion with hash '$packageHash'"
|
||||
jq --argjson pkg "$pkgsjson" -S '. * $pkg' "$lockfile" | sponge "$lockfile"
|
||||
done
|
||||
|
||||
popd > /dev/null
|
||||
popd >/dev/null
|
||||
|
||||
@@ -5,58 +5,58 @@ set -eu -o pipefail
|
||||
|
||||
pkgdir=$(dirname "$(dirname "$(realpath "$0")")")
|
||||
|
||||
echo '{}' > "$pkgdir/metadata/apple-oss-lockfile.json"
|
||||
echo '{}' >"$pkgdir/metadata/apple-oss-lockfile.json"
|
||||
|
||||
declare -a versions
|
||||
readarray -t versions < <(jq -r '.[].version' "$pkgdir/metadata/versions.json")
|
||||
|
||||
declare -a packages=(
|
||||
CarbonHeaders
|
||||
CommonCrypto
|
||||
IOAudioFamily
|
||||
IOFireWireFamily
|
||||
IOFWDVComponents
|
||||
IOFireWireAVC
|
||||
IOFireWireSBP2
|
||||
IOFireWireSerialBusProtocolTransport
|
||||
IOGraphics
|
||||
IOHIDFamily
|
||||
IONetworkingFamily
|
||||
IOSerialFamily
|
||||
IOStorageFamily
|
||||
IOBDStorageFamily
|
||||
IOCDStorageFamily
|
||||
IODVDStorageFamily
|
||||
IOUSBFamily
|
||||
IOKitUser
|
||||
Libc
|
||||
Libinfo
|
||||
Libm
|
||||
Libnotify
|
||||
Librpcsvc
|
||||
Libsystem
|
||||
OpenDirectory
|
||||
Security
|
||||
architecture
|
||||
configd
|
||||
copyfile
|
||||
dtrace
|
||||
dyld
|
||||
eap8021x
|
||||
hfs
|
||||
launchd
|
||||
libclosure
|
||||
libdispatch
|
||||
libmalloc
|
||||
libplatform
|
||||
libpthread
|
||||
mDNSResponder
|
||||
objc4
|
||||
ppp
|
||||
removefile
|
||||
xnu
|
||||
CarbonHeaders
|
||||
CommonCrypto
|
||||
IOAudioFamily
|
||||
IOFireWireFamily
|
||||
IOFWDVComponents
|
||||
IOFireWireAVC
|
||||
IOFireWireSBP2
|
||||
IOFireWireSerialBusProtocolTransport
|
||||
IOGraphics
|
||||
IOHIDFamily
|
||||
IONetworkingFamily
|
||||
IOSerialFamily
|
||||
IOStorageFamily
|
||||
IOBDStorageFamily
|
||||
IOCDStorageFamily
|
||||
IODVDStorageFamily
|
||||
IOUSBFamily
|
||||
IOKitUser
|
||||
Libc
|
||||
Libinfo
|
||||
Libm
|
||||
Libnotify
|
||||
Librpcsvc
|
||||
Libsystem
|
||||
OpenDirectory
|
||||
Security
|
||||
architecture
|
||||
configd
|
||||
copyfile
|
||||
dtrace
|
||||
dyld
|
||||
eap8021x
|
||||
hfs
|
||||
launchd
|
||||
libclosure
|
||||
libdispatch
|
||||
libmalloc
|
||||
libplatform
|
||||
libpthread
|
||||
mDNSResponder
|
||||
objc4
|
||||
ppp
|
||||
removefile
|
||||
xnu
|
||||
)
|
||||
|
||||
for version in "${versions[@]}"; do
|
||||
"$pkgdir/scripts/lock-sdk-deps.sh" "$version" "${packages[@]}"
|
||||
"$pkgdir/scripts/lock-sdk-deps.sh" "$version" "${packages[@]}"
|
||||
done
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
function enablePrivateFrameworks() {
|
||||
export NIX_CFLAGS_COMPILE+=" -iframework $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/PrivateFrameworks"
|
||||
export NIX_LDFLAGS+=" -F$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/PrivateFrameworks"
|
||||
export NIX_CFLAGS_COMPILE+=" -iframework $DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/PrivateFrameworks"
|
||||
export NIX_LDFLAGS+=" -F$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/PrivateFrameworks"
|
||||
}
|
||||
|
||||
preConfigureHooks+=(enablePrivateFrameworks)
|
||||
|
||||
@@ -9,9 +9,9 @@ local sdkVersion
|
||||
sdkVersion=$(printf "%02d%02d%02d" "${sdkVersionArr[0]-0}" "${sdkVersionArr[1]-0}" "${sdkVersionArr[2]-0}")
|
||||
|
||||
if [ "$sdkVersion" -gt "${!sdkVersionVar-000000}" ]; then
|
||||
export "$developerDirVar"='@out@'
|
||||
export "$sdkVersionVar"="$sdkVersion"
|
||||
export "SDKROOT${role_post}"="${!developerDirVar}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
|
||||
export "$developerDirVar"='@out@'
|
||||
export "$sdkVersionVar"="$sdkVersion"
|
||||
export "SDKROOT${role_post}"="${!developerDirVar}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk"
|
||||
fi
|
||||
|
||||
unset -v role_post developerDirVar sdkVersion sdkVersionArr sdkVersionVar
|
||||
|
||||
Reference in New Issue
Block a user