Unverified Commit 00997c5d authored by Ryan Lahfa's avatar Ryan Lahfa Committed by GitHub
Browse files

Merge pull request #228820 from alyssais/link.exe-purity

wrapBintoolsWith: support LINK.EXE-style args in purity checks
parents f17401b1 194ddeef
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -55,10 +55,12 @@ if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "${NIX_STORE:-}"
            # produces '-syslibroot //' linker flag. It's a no-op,
            # which does not introduce impurities.
            n+=1; skip "$p2"
        elif [ "${p:0:1}" = / ] && badPath "$p"; then
            # We cannot skip this; barf.
            echo "impure path \`$p' used in link" >&2
            exit 1
        elif [ "${p:0:10}" = /LIBPATH:/ ] && badPath "${p:9}"; then
            reject "${p:9}"
        # We need to not match LINK.EXE-style flags like
        # /NOLOGO or /LIBPATH:/nix/store/foo
        elif [[ $p =~ ^/[^:]*/ ]] && badPath "$p"; then
            reject "$p"
        elif [ "${p:0:9}" = --sysroot ]; then
            # Our ld is not built with sysroot support (Can we fix that?)
            :
+6 −1
Original line number Diff line number Diff line
@@ -90,6 +90,11 @@ skip () {
    fi
}

reject() {
    echo "impure path \`$1' used in link" >&2
    exit 1
}


# Checks whether a path is impure.  E.g., `/lib/foo.so' is impure, but
# `/nix/store/.../lib/foo.so' isn't.