Skip to content

Cross-compiling Nix to aarch64-darwin fails with infinite recursion #126829

@domenkozar

Description

@domenkozar

Using Nix from master for better traceback:

$ NIX_PATH=~/dev ~/dev/nix/result/bin/nix-build '<nixpkgs>' -A pkgsCross.aarch64-darwin.nix --show-trace
error: infinite recursion encountered

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:17505:3:

        17504|
        17505|   openssl = openssl_1_1;
             |   ^
        17506|

       … while evaluating the attribute 'openssl'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:17505:3:

        17504|
        17505|   openssl = openssl_1_1;
             |   ^
        17506|

       … while evaluating 'optionalAttrs'

       at /home/ielectric/dev/nixpkgs/lib/attrsets.nix:353:25:

          352|   */
          353|   optionalAttrs = cond: as: if cond then as else {};
             |                         ^
          354|

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:65:24:

           64|           inherit (builtins.tryEval value0) success value;
           65|         in getOutputs (lib.optionalAttrs success value);
             |                        ^
           66|         getOutputs = value: lib.genAttrs

       … while evaluating 'genAttrs'

       at /home/ielectric/dev/nixpkgs/lib/attrsets.nix:313:21:

          312|   */
          313|   genAttrs = names: f:
             |                     ^
          314|     listToAttrs (map (n: nameValuePair n (f n)) names);

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:66:29:

           65|         in getOutputs (lib.optionalAttrs success value);
           66|         getOutputs = value: lib.genAttrs
             |                             ^
           67|           (value.outputs or (lib.optional (value ? out) "out"))

       … while evaluating 'getOutputs'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:66:22:

           65|         in getOutputs (lib.optionalAttrs success value);
           66|         getOutputs = value: lib.genAttrs
             |                      ^
           67|           (value.outputs or (lib.optional (value ? out) "out"))

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:65:12:

           64|           inherit (builtins.tryEval value0) success value;
           65|         in getOutputs (lib.optionalAttrs success value);
             |            ^
           66|         getOutputs = value: lib.genAttrs

       … while evaluating 'tryGetOutputs'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:63:25:

           62|         # on {}
           63|         tryGetOutputs = value0: let
             |                         ^
           64|           inherit (builtins.tryEval value0) success value;

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:78:30:

           77|           pkgsHostTarget = getOutputs valueHostTarget;
           78|           pkgsTargetTarget = tryGetOutputs valueTargetTarget;
             |                              ^
           79|         # Just recur on plain attrsets

       … while evaluating 'spliceReal'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:28:16:

           27|
           28|   spliceReal = { pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget
             |                ^
           29|                , pkgsHostHost, pkgsHostTarget

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:72:65:

           71|         # on to splice them together.
           72|         if lib.isDerivation defaultValue then augmentedValue // spliceReal {
             |                                                                 ^
           73|           pkgsBuildBuild = tryGetOutputs valueBuildBuild;

       … while evaluating anonymous lambda

       at /home/ielectric/dev/nixpkgs/pkgs/development/interpreters/python/cpython/default.nix:105:25:

          104|
          105|   buildInputs = filter (p: p != null) ([
             |                         ^
          106|     zlib bzip2 expat xz libffi gdbm sqlite readline ncurses openssl ]

       … from call site

       … while evaluating the attribute 'CPPFLAGS' of the derivation 'python3-3.8.9'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

       … while evaluating the attribute 'buildInputs' of the derivation 'libxml2-2.9.12'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

       … while evaluating the attribute 'buildInputs' of the derivation 'xar-1.6.1'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

       … while evaluating the attribute 'buildInputs' of the derivation 'pbzx-1.0.2'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

       … while evaluating the attribute 'nativeBuildInputs' of the derivation 'MacOSX-SDK-11.0.0'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

       … while evaluating the attribute 'installPhase' of the derivation 'libSystem-11.0.0'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

       … while evaluating anonymous lambda

       at /home/ielectric/dev/nixpkgs/pkgs/build-support/cc-wrapper/default.nix:8:1:

            7|
            8| { name ? ""
             | ^
            9| , lib

       … from call site

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:69:16:

           68|     let
           69|       result = f origArgs;
             |                ^
           70|

       … while evaluating 'makeOverridable'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:67:24:

           66|   */
           67|   makeOverridable = f: origArgs:
             |                        ^
           68|     let

       … from call site

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:121:8:

          120|       auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
          121|     in makeOverridable f (auto // args);
             |        ^
          122|

       … while evaluating 'callPackageWith'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:117:35:

          116|   */
          117|   callPackageWith = autoArgs: fn: args:
             |                                   ^
          118|     let

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:12091:7:

        12090|     } @ extraArgs:
        12091|       callPackage ../build-support/cc-wrapper (let self = {
             |       ^
        12092|     nativeTools = stdenv.targetPlatform == stdenv.hostPlatform && stdenv.cc.nativeTools or false;

       … while evaluating 'wrapCCWith'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:12077:5:

        12076|   wrapCCWith =
        12077|     { cc
             |     ^
        12078|     , # This should be the only bintools runtime dep with this sort of logic. The

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/development/compilers/llvm/11/default.nix:109:22:

          108|
          109|     libstdcxxClang = wrapCCWith rec {
             |                      ^
          110|       cc = tools.clang-unwrapped;

       … while evaluating the attribute 'libstdcxxClang'

       at /home/ielectric/dev/nixpkgs/pkgs/development/compilers/llvm/11/default.nix:109:5:

          108|
          109|     libstdcxxClang = wrapCCWith rec {
             |     ^
          110|       cc = tools.clang-unwrapped;

       … while evaluating the attribute 'llvmPackages.clang'

       at /home/ielectric/dev/nixpkgs/pkgs/development/compilers/llvm/11/default.nix:107:5:

          106|
          107|     clang = if stdenv.cc.isGNU then tools.libstdcxxClang else tools.libcxxClang;
             |     ^
          108|

       … while evaluating the attribute 'cc.isGNU'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/default.nix:166:14:

          165|
          166|       inherit cc hasCC;
             |              ^
          167|     }

       … while evaluating 'optional'

       at /home/ielectric/dev/nixpkgs/lib/lists.nix:254:20:

          253|   */
          254|   optional = cond: elem: if cond then [elem] else [];
             |                    ^
          255|

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:105:29:

          104|       separateDebugInfo' = separateDebugInfo && stdenv.hostPlatform.isLinux && !(stdenv.hostPlatform.useLLVM or false);
          105|       outputs' = outputs ++ lib.optional separateDebugInfo' "debug";
             |                             ^
          106|

       … while evaluating anonymous lambda

       at //builtin/derivation.nix:5:1:
       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:407:10:

          406|          passthru)
          407|         (derivation derivationArg);
             |          ^
          408|

       … while evaluating 'extendDerivation'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:144:43:

          143|      the derivation itself and check a given condition when evaluating. */
          144|   extendDerivation = condition: passthru: drv:
             |                                           ^
          145|     let

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:371:7:

          370|
          371|       lib.extendDerivation
             |       ^
          372|         validity.handled

       … while evaluating 'mkDerivation'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:22:5:

           21|   mkDerivation =
           22|     {
             |     ^
           23|

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/development/libraries/openssl/default.nix:26:4:

           25|   common = { version, sha256, patches ? [], withDocs ? false, extraMeta ? {} }:
           26|    stdenv.mkDerivation rec {
             |    ^
           27|     pname = "openssl";

       … while evaluating 'common'

       at /home/ielectric/dev/nixpkgs/pkgs/development/libraries/openssl/default.nix:25:12:

           24| let
           25|   common = { version, sha256, patches ? [], withDocs ? false, extraMeta ? {} }:
             |            ^
           26|    stdenv.mkDerivation rec {

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/development/libraries/openssl/default.nix:187:17:

          186|
          187|   openssl_1_1 = common {
             |                 ^
          188|     version = "1.1.1k";

       … while evaluating the attribute 'openssl_1_1'

       at /home/ielectric/dev/nixpkgs/pkgs/development/libraries/openssl/default.nix:187:3:

          186|
          187|   openssl_1_1 = common {
             |   ^
          188|     version = "1.1.1k";

       … while evaluating anonymous lambda

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:133:53:

          132|       pkgs = f origArgs;
          133|       mkAttrOverridable = name: _: makeOverridable (newArgs: (f newArgs).${name}) origArgs;
             |                                                     ^
          134|     in

       … from call site

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:69:16:

           68|     let
           69|       result = f origArgs;
             |                ^
           70|

       … while evaluating 'makeOverridable'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:67:24:

           66|   */
           67|   makeOverridable = f: origArgs:
             |                        ^
           68|     let

       … from call site

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:133:36:

          132|       pkgs = f origArgs;
          133|       mkAttrOverridable = name: _: makeOverridable (newArgs: (f newArgs).${name}) origArgs;
             |                                    ^
          134|     in

       … while evaluating 'mkAttrOverridable'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:133:33:

          132|       pkgs = f origArgs;
          133|       mkAttrOverridable = name: _: makeOverridable (newArgs: (f newArgs).${name}) origArgs;
             |                                 ^
          134|     in

       … from call site

       … while evaluating the attribute 'openssl_1_1'

       … while evaluating the attribute 'openssl'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:17505:3:

        17504|
        17505|   openssl = openssl_1_1;
             |   ^
        17506|

       … while evaluating 'isDerivation'

       at /home/ielectric/dev/nixpkgs/lib/attrsets.nix:327:18:

          326|   */
          327|   isDerivation = x: isAttrs x && x ? type && x.type == "derivation";
             |                  ^
          328|

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:72:12:

           71|         # on to splice them together.
           72|         if lib.isDerivation defaultValue then augmentedValue // spliceReal {
             |            ^
           73|           pkgsBuildBuild = tryGetOutputs valueBuildBuild;

       … while evaluating anonymous lambda

       at /home/ielectric/dev/nixpkgs/pkgs/tools/networking/curl/default.nix:1:1:

            1| { stdenv, lib, fetchurl, pkg-config, perl
             | ^
            2| , http2Support ? true, nghttp2

       … from call site

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:69:16:

           68|     let
           69|       result = f origArgs;
             |                ^
           70|

       … while evaluating 'makeOverridable'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:67:24:

           66|   */
           67|   makeOverridable = f: origArgs:
             |                        ^
           68|     let

       … from call site

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:121:8:

          120|       auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
          121|     in makeOverridable f (auto // args);
             |        ^
          122|

       … while evaluating 'callPackageWith'

       at /home/ielectric/dev/nixpkgs/lib/customisation.nix:117:35:

          116|   */
          117|   callPackageWith = autoArgs: fn: args:
             |                                   ^
          118|     let

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:3933:17:

         3932|
         3933|   curlMinimal = callPackage ../tools/networking/curl { };
             |                 ^
         3934|

       … while evaluating the attribute 'curl'

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/all-packages.nix:3927:3:

         3926|
         3927|   curl = curlMinimal.override {
             |   ^
         3928|     idnSupport = true;

       … while evaluating 'isDerivation'

       at /home/ielectric/dev/nixpkgs/lib/attrsets.nix:327:18:

          326|   */
          327|   isDerivation = x: isAttrs x && x ? type && x.type == "derivation";
             |                  ^
          328|

       … from call site

       at /home/ielectric/dev/nixpkgs/pkgs/top-level/splice.nix:72:12:

           71|         # on to splice them together.
           72|         if lib.isDerivation defaultValue then augmentedValue // spliceReal {
             |            ^
           73|           pkgsBuildBuild = tryGetOutputs valueBuildBuild;

       … while evaluating anonymous lambda

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:152:17:

          151|           (map (drv: drv.__spliced.hostHost or drv) depsHostHost)
          152|           (map (drv: drv.crossDrv or drv) buildInputs)
             |                 ^
          153|         ]

       … from call site

       … while evaluating 'getOutput'

       at /home/ielectric/dev/nixpkgs/lib/attrsets.nix:486:23:

          485|   */
          486|   getOutput = output: pkg:
             |                       ^
          487|     if pkg.outputUnspecified or false

       … from call site

       … while evaluating the attribute 'buildInputs' of the derivation 'nix-aarch64-apple-darwin-2.3.12'

       at /home/ielectric/dev/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:201:11:

          200|         // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          201|           name =
             |           ^
          202|             let

Metadata

Metadata

Assignees

No one assigned

    Labels

    0.kind: bugSomething is broken6.topic: cross-compilationBuilding packages on a different platform than they will be used on6.topic: darwinRunning or building packages on Darwin

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions