Skip to content

Commit

Permalink
llvmPackages: refactor patch matching
Browse files Browse the repository at this point in the history
  • Loading branch information
RossComputerGuy committed Aug 16, 2024
1 parent f9c6960 commit 77f6edf
Showing 1 changed file with 225 additions and 91 deletions.
316 changes: 225 additions & 91 deletions pkgs/development/compilers/llvm/common/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -75,97 +75,231 @@ let
builtins.path {
name = builtins.baseNameOf p;
path =
if
(lib.versionOlder release_version "14" || lib.versionAtLeast release_version "19")
&& p == "clang/gnu-install-dirs.patch"
then
(if lib.versionAtLeast release_version "19" then ../19/${p} else ../12/${p})
else if
lib.versionAtLeast release_version "18"
&& (
p == "clang/purity.patch"
|| p == "lld/gnu-install-dirs.patch"
|| p == "llvm/gnu-install-dirs.patch"
|| p == "llvm/gnu-install-dirs-polly.patch"
|| p == "llvm/lit-shell-script-runner-set-dyld-library-path.patch"
|| p == "libcxx/0001-darwin-10.12-mbstate_t-fix.patch"
)
then
../18/${p}
else if
lib.versionAtLeast release_version "15"
&& lib.versionOlder release_version "17"
&& (
p == "clang/purity.patch"
|| p == "libunwind/gnu-install-dirs.patch"
|| p == "llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch"
)
then
../15/${p}
else if p == "compiler-rt/X86-support-extension.patch" || p == "lldb/procfs.patch" then
(if lib.versionAtLeast release_version "15" then ../15/${p} else ../12/${p})
else if
lib.versionAtLeast release_version "13"
&& lib.versionOlder release_version "15"
&& p == "compiler-rt/armv7l.patch"
then
../13/${p}
else if p == "compiler-rt/gnu-install-dirs.patch" && lib.versionAtLeast release_version "15" then
(if lib.versionAtLeast release_version "15" then ../15/${p} else ../12/${p})
else if
(
p == "compiler-rt/darwin-targetconditionals.patch"
|| p == "compiler-rt/codesign.patch"
|| p == "lldb/cpu_subtype_arm64e_replacement.patch"
)
&& lib.versionAtLeast release_version "13"
then
../13/${p}
else if
lib.versionAtLeast release_version "16"
&& (
p == "lld/add-table-base.patch"
|| p == "compiler-rt/normalize-var.patch"
|| p == "openmp/run-lit-directly.patch"
)
then
../16/${p}
else if
lib.versionOlder release_version "16"
&& (
p == "compiler-rt/normalize-var.patch"
|| p == "lldb/resource-dir.patch"
|| p == "clang/purity.patch"
)
then
../12/${p}
else if lib.versionOlder release_version "14" && p == "lld/gnu-install-dirs.patch" then
../12/${p}
else if
lib.versionAtLeast release_version "14"
&& (
(lib.versionOlder release_version "18" && p == "llvm/gnu-install-dirs-polly.patch")
|| (lib.versionOlder release_version "16" && p == "openmp/run-lit-directly.patch")
)
then
../14/${p}
else if
lib.versionAtLeast release_version "16"
&& lib.versionOlder release_version "18"
&& p == "llvm/lit-shell-script-runner-set-dyld-library-path.patch"
then
../16/${p}
else if
lib.versionAtLeast release_version "17"
&& (p == "llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch" || p == "openmp/fix-find-tool.patch")
then
../17/${p}
else if
lib.versionAtLeast release_version "15" && p == "llvm/polly-lit-cfg-add-libs-to-dylib-path.patch"
then
../15/${p}
else
"${metadata.versionDir}/${p}";
let
patches = {
"clang/gnu-install-dirs.patch" = [
{
before = "14";
path = ../12;
}
{
after = "19";
path = ../19;
}
];
"clang/purity.patch" = [
{
after = "18";
path = ../18;
}
{
before = "17";
after = "15";
path = ../15;
}
{
before = "16";
path = ../12;
}
];
"lld/add-table-base.patch" = [
{
after = "16";
path = ../16;
}
];
"lld/gnu-install-dirs.patch" = [
{
after = "18";
path = ../18;
}
{
before = "14";
path = ../12;
}
];
"llvm/gnu-install-dirs.patch" = [
{
after = "18";
path = ../18;
}
];
"llvm/gnu-install-dirs-polly.patch" = [
{
after = "18";
path = ../18;
}
{
before = "18";
after = "14";
path = ../14;
}
];
"llvm/llvm-lit-cfg-add-libs-to-dylib-path.patch" = [
{
before = "17";
after = "15";
path = ../15;
}
{
after = "17";
path = ../17;
}
];
"llvm/lit-shell-script-runner-set-dyld-library-path.patch" = [
{
after = "18";
path = ../18;
}
{
after = "16";
before = "18";
path = ../16;
}
];
"llvm/polly-lit-cfg-add-libs-to-dylib-path.patch" = [
{
after = "15";
path = ../15;
}
];
"libcxx/0001-darwin-10.12-mbstate_t-fix.patch" = [
{
after = "18";
path = ../18;
}
];
"libunwind/gnu-install-dirs.patch" = [
{
before = "17";
after = "15";
path = ../15;
}
];
"compiler-rt/X86-support-extension.patch" = [
{
after = "15";
path = ../15;
}
{
before = "15";
path = ../12;
}
];
"compiler-rt/armv7l.patch" = [
{
before = "15";
after = "13";
path = ../13;
}
];
"compiler-rt/gnu-install-dirs.patch" = [
{
before = "14";
path = ../12;
}
{
after = "13";
before = "15";
path = ../14;
}
{
after = "15";
before = "17";
path = ../15;
}
{
after = "16";
path = ../17;
}
];
"compiler-rt/darwin-targetconditionals.patch" = [
{
after = "13";
path = ../13;
}
];
"compiler-rt/codesign.patch" = [
{
after = "13";
path = ../13;
}
];
"compiler-rt/normalize-var.patch" = [
{
after = "16";
path = ../16;
}
{
before = "16";
path = ../12;
}
];
"lldb/procfs.patch" = [
{
after = "15";
path = ../15;
}
{
before = "15";
path = ../12;
}
];
"lldb/cpu_subtype_arm64e_replacement.patch" = [
{
after = "13";
path = ../13;
}
];
"lldb/resource-dir.patch" = [
{
before = "16";
path = ../12;
}
];
"openmp/fix-find-tool.patch" = [
{
after = "17";
path = ../17;
}
];
"openmp/run-lit-directly.patch" = [
{
after = "16";
path = ../16;
}
{
after = "14";
before = "16";
path = ../14;
}
];
};

constraints = patches."${p}" or null;
matchConstraint =
{
before ? null,
after ? null,
path,
}:
let
check = fn: value: if value == null then true else fn release_version value;
matchBefore = check lib.versionOlder before;
matchAfter = check lib.versionAtLeast after;
in
matchBefore && matchAfter;

patchDir =
toString
(
if constraints == null then
{ path = metadata.versionDir; }
else
(lib.findFirst matchConstraint { path = metadata.versionDir; } constraints)
).path;
in
"${patchDir}/${p}";
};
};

Expand Down

0 comments on commit 77f6edf

Please sign in to comment.