lix/src/libstore
Matthew Bauer f69820417f Set kern.curproc_arch_affinity=0 to escape Rosetta
By default, once you enter x86_64 Rosetta 2, macOS will try to run
everything in x86_64. So an x86_64 Nix will still try to use x86_64
even when system = aarch64-darwin. To avoid this we can set
kern.curproc_arch_affinity sysctl. With kern.curproc_arch_affinity=0,
we ignore this preference.

This is based on how
https://opensource.apple.com/source/system_cmds/system_cmds-880.40.5/arch.tproj/arch.c.auto.html
works. Completely undocumented, but seems to work!

Note, you can verify this works with this impure Nix expression:

```
  {
    a = derivation {
      name = "a";
      system = "aarch64-darwin";
      builder = "/bin/sh";
      args = [ "-e" (builtins.toFile "builder" ''
        [ "$(/usr/bin/arch)" = arm64 ]
        [ "$(/usr/bin/arch -arch x86_64 /bin/sh -c /usr/bin/arch)" = i386 ]
        [ "$(/usr/bin/arch -arch arm64 /bin/sh -c /usr/bin/arch)" = arm64 ]
        /usr/bin/touch $out
      '') ];
    };

    b = derivation {
      name = "b";
      system = "x86_64-darwin";
      builder = "/bin/sh";
      args = [ "-e" (builtins.toFile "builder" ''
        [ "$(/usr/bin/arch)" = i386 ]
        [ "$(/usr/bin/arch -arch x86_64 /bin/sh -c /usr/bin/arch)" = i386 ]
        [ "$(/usr/bin/arch -arch arm64 /bin/sh -c /usr/bin/arch)" = arm64 ]
        /usr/bin/touch $out
      '') ];
    };
  }
```
2021-01-11 22:40:21 -06:00
..
build Set kern.curproc_arch_affinity=0 to escape Rosetta 2021-01-11 22:40:21 -06:00
builtins Fix build 2020-08-06 21:04:31 -05:00
binary-cache-store.cc Fix BinaryCacheStore::registerDrvOutput 2020-12-16 10:54:36 +01:00
binary-cache-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
builtins.hh buildenv: Eliminate global variables, other cleanup 2020-03-24 14:06:47 +01:00
ca-specific-schema.sql Rework the db schema for derivation outputs 2020-12-11 20:41:32 +01:00
content-address.cc Style fixes 2020-09-22 11:40:19 +02:00
content-address.hh Add ContentAddressMethod and parse/render it 2020-09-17 20:21:04 +02:00
crypto.cc Make sodium a required dependency 2021-01-06 17:56:53 +01:00
crypto.hh crypto.cc: API cleanup and add generate() / to_string() methods 2021-01-06 17:04:46 +01:00
daemon.cc Store metadata about drv outputs realisations 2020-12-11 20:41:32 +01:00
daemon.hh Add missing #pragma once 2020-10-06 10:40:07 +02:00
derivations.cc Fix the detection of already built drv outputs 2020-12-17 11:35:24 +01:00
derivations.hh Fix the detection of already built drv outputs 2020-12-17 11:35:24 +01:00
dummy-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
export-import.cc nix::worker_proto -> worker_proto 2020-09-30 00:41:18 +00:00
filetransfer.cc Sink: Use std::string_view 2020-12-02 14:17:27 +01:00
filetransfer.hh Add 'nix store prefetch-{file,tarball}' 2021-01-07 21:51:46 +01:00
fs-accessor.hh Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
gc.cc Handle amount of disk space saved by hard linking being negative 2020-10-12 16:06:38 +00:00
globals.cc string2Int(): Return std::optional 2021-01-08 12:22:21 +01:00
globals.hh Merge pull request #4310 from matthewbauer/rosetta2-extra-platforms 2021-01-06 11:31:13 +01:00
http-binary-cache-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
legacy-ssh-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
local-binary-cache-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
local-fs-store.cc Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
local-fs-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
local-store.cc string2Int(): Return std::optional 2021-01-08 12:22:21 +01:00
local-store.hh Fix deadlock in LocalStore::addSignatures() 2021-01-05 11:47:29 +01:00
local.mk Rework the db schema for derivation outputs 2020-12-11 20:41:32 +01:00
lock.cc Trim lock.cc 2020-10-11 16:44:19 +00:00
lock.hh Trim lock.hh 2020-10-11 16:44:07 +00:00
machines.cc Make system-features a store setting 2020-08-12 18:13:00 +00:00
machines.hh Make system-features a store setting 2020-08-12 18:13:00 +00:00
misc.cc Move Callback into its own header 2020-09-21 18:42:21 +02:00
names.cc string2Int(): Return std::optional 2021-01-08 12:22:21 +01:00
names.hh Don't include <regex> in header files 2020-09-21 18:22:45 +02:00
nar-accessor.cc Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
nar-accessor.hh NarAccessor: Run in constant memory 2020-07-13 17:30:42 +02:00
nar-info-disk-cache.cc Minimize the usage of Hash::dummy 2020-08-06 18:31:48 +00:00
nar-info-disk-cache.hh Misc changes from the flakes branch 2020-03-24 14:34:47 +01:00
nar-info.cc string2Int(): Return std::optional 2021-01-08 12:22:21 +01:00
nar-info.hh Minimize the usage of Hash::dummy 2020-08-06 18:31:48 +00:00
nix-store.pc.in pkg-config files: Use c++17 2019-03-14 14:11:12 +01:00
optimise-store.cc Factor out common showBytes() 2020-10-06 10:40:49 +02:00
parsed-derivations.cc Make system-features a store setting 2020-08-12 18:13:00 +00:00
parsed-derivations.hh Add missing #pragma once 2020-10-06 10:40:07 +02:00
path-info.hh LocalStore: Get rid of recursive_mutex 2020-11-03 14:45:24 +01:00
path.cc toStorePath(): Return a StorePath and the suffix 2020-07-13 16:25:48 +02:00
path.hh Merge remote-tracking branch 'origin/master' into substitute-other-storedir 2020-07-02 11:14:04 -04:00
pathlocks.cc convert some printError calls to logError 2020-05-03 08:01:25 -06:00
pathlocks.hh Use BSD instead of POSIX file locks 2019-08-02 18:39:16 +02:00
profiles.cc string2Int(): Return std::optional 2021-01-08 12:22:21 +01:00
profiles.hh createGeneration(): Take a StorePath 2020-09-03 11:06:56 +02:00
realisation.cc Use the hash modulo in the derivation outputs 2020-12-11 21:17:23 +01:00
realisation.hh Use the hash modulo in the derivation outputs 2020-12-11 21:17:23 +01:00
references.cc scanForReferences: Remove misleading comment 2020-12-28 17:21:19 +01:00
references.hh Sink: Use std::string_view 2020-12-02 14:17:27 +01:00
remote-fs-accessor.cc Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
remote-fs-accessor.hh Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
remote-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
remote-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
s3-binary-cache-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
s3-binary-cache-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
s3.hh DataTransfer -> FileTransfer 2020-04-08 22:26:57 +02:00
sandbox-defaults.sb sandbox: fix /bin/sh on catalina 2020-03-20 22:12:30 +01:00
sandbox-minimal.sb Always use the Darwin sandbox 2017-06-06 18:44:49 +02:00
sandbox-network.sb OS X sandbox: Improve builtin sandbox profile 2017-05-31 17:25:51 +02:00
schema.sql Mark content-addressed paths in the Nix database and in .narinfo 2016-08-10 18:05:35 +02:00
serve-protocol.hh Make adding paths via nix-store --serve run in constant memory 2018-08-03 21:21:16 +02:00
sqlite.cc Make the sql debug statements more useful 2020-11-17 10:05:45 +01:00
sqlite.hh Merge remote-tracking branch 'origin/master' into flakes 2020-06-17 10:26:52 +02:00
ssh-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
ssh.cc Revert the enum struct change 2020-06-18 22:11:26 +00:00
ssh.hh SSHMaster: Bypass SSH when connecting to localhost 2018-08-03 21:20:38 +02:00
store-api.cc string2Int(): Return std::optional 2021-01-08 12:22:21 +01:00
store-api.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
uds-remote-store.cc Overhaul store subclassing 2020-12-20 15:47:14 +00:00
uds-remote-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
worker-protocol.hh Store metadata about drv outputs realisations 2020-12-11 20:41:32 +01:00