From 8114bff4cfb0670052672c9d415b211b389cd5d5 Mon Sep 17 00:00:00 2001 From: Andreas Herrmann <42969706+aherrmann-da@users.noreply.github.com> Date: Thu, 7 Apr 2022 17:50:53 +0200 Subject: [PATCH] Darwin M1 Support (#13401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update rules_nixpkgs and rules_sh rules_sh was an implicit dependency before. We are now depending on it explicitly to be able to control the version. * Patch rules_nixpkgs to detect ARM M1 This should be upstreamed. * Patch rules_haskell for ARM M1 compatibility * Detect MacOS M1 OS and architecture. * Consistently use the CC toolchains' linker. This is important when we switch to GHC with LLVM. * Detect Darwin M1 in os_info.bzl * Use the new rules_nixpkgs host platform The old flags hard-coded the CPU architecture. The new platform automatically inherits from Bazel's builtin host platform. * Import the Go toolchain from rules_nixpkgs * Update nodejs to version 16 * Disable Haddock on lsp-types We're also disabling it on the other haskell_cabal_library instances, and it is causing build errors on M1. ``` Running Haddock on library for lsp-types-1.4.0.0.. creating /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types creating /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html creating /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc creating /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html creating /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types/haddock-response42424-1.txt contents: <<< --prologue=/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types/haddock-prologue42424-0.txt --dump-interface=/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types/lsp-types.haddock --package-name=lsp-types --package-version=1.4.0.0 --since-qual=external --hide=Language.LSP.Types.CallHierarchy --hide=Language.LSP.Types.Cancellation --hide=Language.LSP.Types.ClientCapabilities --hide=Language.LSP.Types.CodeAction --hide=Language.LSP.Types.CodeLens --hide=Language.LSP.Types.Command --hide=Language.LSP.Types.Common --hide=Language.LSP.Types.Completion --hide=Language.LSP.Types.Configuration --hide=Language.LSP.Types.Declaration --hide=Language.LSP.Types.Definition --hide=Language.LSP.Types.Diagnostic --hide=Language.LSP.Types.DocumentColor --hide=Language.LSP.Types.DocumentFilter --hide=Language.LSP.Types.DocumentHighlight --hide=Language.LSP.Types.DocumentLink --hide=Language.LSP.Types.DocumentSymbol --hide=Language.LSP.Types.FoldingRange --hide=Language.LSP.Types.Formatting --hide=Language.LSP.Types.Hover --hide=Language.LSP.Types.Implementation --hide=Language.LSP.Types.Initialize --hide=Language.LSP.Types.Location --hide=Language.LSP.Types.LspId --hide=Language.LSP.Types.MarkupContent --hide=Language.LSP.Types.Method --hide=Language.LSP.Types.Message --hide=Language.LSP.Types.Parsing --hide=Language.LSP.Types.Progress --hide=Language.LSP.Types.Registration --hide=Language.LSP.Types.References --hide=Language.LSP.Types.Rename --hide=Language.LSP.Types.SelectionRange --hide=Language.LSP.Types.ServerCapabilities --hide=Language.LSP.Types.SemanticTokens --hide=Language.LSP.Types.SignatureHelp --hide=Language.LSP.Types.StaticRegistrationOptions --hide=Language.LSP.Types.TextDocument --hide=Language.LSP.Types.TypeDefinition --hide=Language.LSP.Types.Uri --hide=Language.LSP.Types.Utils --hide=Language.LSP.Types.Window --hide=Language.LSP.Types.WatchedFiles --hide=Language.LSP.Types.WorkspaceEdit --hide=Language.LSP.Types.WorkspaceFolders --hide=Language.LSP.Types.WorkspaceSymbol --html --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/array-0.5.4.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/array-0.5.4.0/array.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/base-4.15.1.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/base-4.15.1.0/base.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/binary-0.8.8.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/binary-0.8.8.0/binary.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/bytestring-0.10.12.1,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/bytestring-0.10.12.1/bytestring.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/containers-0.6.4.1,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/containers-0.6.4.1/containers.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/deepseq-1.4.5.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/deepseq-1.4.5.0/deepseq.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/directory-1.3.6.2,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/directory-1.3.6.2/directory.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/exceptions-0.10.4,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/exceptions-0.10.4/exceptions.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/filepath-1.4.2.1,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/filepath-1.4.2.1/filepath.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/ghc-bignum-1.1,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/ghc-bignum-1.1/ghc-bignum.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/ghc-boot-th-9.0.2,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/ghc-boot-th-9.0.2/ghc-boot-th.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/ghc-prim-0.7.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/ghc-prim-0.7.0/ghc-prim.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/integer-gmp-1.1,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/integer-gmp-1.1/integer-gmp.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/mtl-2.2.2,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/mtl-2.2.2/mtl.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/parsec-3.1.14.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/parsec-3.1.14.0/parsec.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/pretty-1.1.3.6,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/pretty-1.1.3.6/pretty.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/stm-2.5.0.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/stm-2.5.0.0/stm.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/template-haskell-2.17.0.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/template-haskell-2.17.0.0/template-haskell.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/text-1.2.5.0,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/text-1.2.5.0/text.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/time-1.9.3,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/time-1.9.3/time.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/transformers-0.5.6.2,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/transformers-0.5.6.2/transformers.haddock --read-interface=file:///nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/unix-2.7.2.2,/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/unix-2.7.2.2/unix.haddock --odir=/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types/ --title=lsp-types-1.4.0.0:\ Haskell\ library\ for\ the\ Microsoft\ Language\ Server\ Protocol,\ data\ types --optghc=-fbuilding-cabal-package --optghc=-O --optghc=-outputdir --optghc=../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build --optghc=-odir --optghc=../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/tmp-42424 --optghc=-hidir --optghc=../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/tmp-42424 --optghc=-stubdir --optghc=../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/tmp-42424 --optghc=-i --optghc=-i../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build --optghc=-isrc --optghc=-i../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/autogen --optghc=-i../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/global-autogen --optghc=-I../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/autogen --optghc=-I../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/global-autogen --optghc=-I../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build --optghc=-optP-D__HADDOCK_VERSION__=2251 --optghc=-optP-include --optghc=-optP../../bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/build/autogen/cabal_macros.h --optghc=-this-unit-id --optghc=lsp-types-1.4.0.0 --optghc=-hide-all-packages --optghc=-Wmissing-home-modules --optghc=-no-user-package-db --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/Diff-0.4.1/_install/Diff-0.4.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/base-orphans-0.8.6/_install/base-orphans-0.8.6.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/OneTuple-0.3.1/_install/OneTuple-0.3.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/splitmix-0.1.0.4/_install/splitmix-0.1.0.4.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/random-1.2.1/_install/random-1.2.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/QuickCheck-2.14.2/_install/QuickCheck-2.14.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/hashable-1.3.5.0/_install/hashable-1.3.5.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/integer-logarithms-1.0.3.1/_install/integer-logarithms-1.0.3.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/primitive-0.7.3.0/_install/primitive-0.7.3.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/scientific-0.3.7.0/_install/scientific-0.3.7.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/attoparsec-0.14.4/_install/attoparsec-0.14.4-attoparsec-internal.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/attoparsec-0.14.4/_install/attoparsec-0.14.4.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/base-compat-0.11.2/_install/base-compat-0.11.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/base-compat-batteries-0.11.2/_install/base-compat-batteries-0.11.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/data-fix-0.3.2/_install/data-fix-0.3.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/dlist-1.0/_install/dlist-1.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/indexed-traversable-0.1.2/_install/indexed-traversable-0.1.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/tagged-0.8.6.1/_install/tagged-0.8.6.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/unordered-containers-0.2.16.0/_install/unordered-containers-0.2.16.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/vector-0.12.3.1/_install/vector-0.12.3.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/indexed-traversable-instances-0.1.1/_install/indexed-traversable-instances-0.1.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/distributive-0.6.2.1/_install/distributive-0.6.2.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/transformers-compat-0.6.6/_install/transformers-compat-0.6.6.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/comonad-5.0.8/_install/comonad-5.0.8.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/th-abstraction-0.4.3.0/_install/th-abstraction-0.4.3.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/bifunctors-5.5.11/_install/bifunctors-5.5.11.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/StateVar-1.2.2/_install/StateVar-1.2.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/contravariant-1.5.5/_install/contravariant-1.5.5.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/semigroupoids-5.3.7/_install/semigroupoids-5.3.7.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/assoc-1.0.2/_install/assoc-1.0.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/these-1.1.1.1/_install/these-1.1.1.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/semialign-1.2.0.1/_install/semialign-1.2.0.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/strict-0.4.0.1/_install/strict-0.4.0.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/text-short-0.1.5/_install/text-short-0.1.5.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/time-compat-1.9.6.1/_install/time-compat-1.9.6.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/uuid-types-1.0.5/_install/uuid-types-1.0.5.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/witherable-0.4.2/_install/witherable-0.4.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/aeson-2.0.3.0/_install/aeson-2.0.3.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/data-default-class-0.1.2.0/_install/data-default-class-0.1.2.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/data-default-instances-containers-0.0.1/_install/data-default-instances-containers-0.0.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/data-default-instances-dlist-0.0.1/_install/data-default-instances-dlist-0.0.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/old-locale-1.0.0.7/_install/old-locale-1.0.0.7.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/data-default-instances-old-locale-0.0.1/_install/data-default-instances-old-locale-0.0.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/data-default-0.7.1.1/_install/data-default-0.7.1.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/network-3.1.2.7/_install/network-3.1.2.7.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/network-bsd-2.8.1.0/_install/network-bsd-2.8.1.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/hslogger-1.3.1.0/_install/hslogger-1.3.1.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/call-stack-0.4.0/_install/call-stack-0.4.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/profunctors-5.6.2/_install/profunctors-5.6.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/transformers-base-0.4.6/_install/transformers-base-0.4.6.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/free-5.1.7/_install/free-5.1.7.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/semigroups-0.19.2/_install/semigroups-0.19.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/void-0.7.3/_install/void-0.7.3.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/adjunctions-4.4/_install/adjunctions-4.4.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/invariant-0.5.5/_install/invariant-0.5.5.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/kan-extensions-5.2.3/_install/kan-extensions-5.2.3.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/parallel-3.2.2.0/_install/parallel-3.2.2.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/reflection-2.1.6/_install/reflection-2.1.6.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/lens-5.0.1/_install/lens-5.0.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/semirings-0.6/_install/semirings-0.6.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/mod-0.1.2.2/_install/mod-0.1.2.2.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/th-compat-0.1.3/_install/th-compat-0.1.3.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/network-uri-2.6.4.1/_install/network-uri-2.6.4.1.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/rope-utf16-splay-0.3.2.0/_install/rope-utf16-splay-0.3.2.0.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/some-1.0.3/_install/some-1.0.3.conf.d --optghc=-package-db --optghc=../../bazel-out/darwin_arm64-opt/bin/external/stackage/temporary-1.3/_install/temporary-1.3.conf.d --optghc=-package-db --optghc=/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/_install/lsp-types-1.4.0.0.conf.d --optghc=-package-db --optghc=/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/package.conf.inplace --optghc=-package-id --optghc=Diff-0.4.1 --optghc=-package-id --optghc=aeson-2.0.3.0 --optghc=-package-id --optghc=base-4.15.1.0 --optghc=-package-id --optghc=binary-0.8.8.0 --optghc=-package-id --optghc=bytestring-0.10.12.1 --optghc=-package-id --optghc=containers-0.6.4.1 --optghc=-package-id --optghc=data-default-0.7.1.1 --optghc=-package-id --optghc=deepseq-1.4.5.0 --optghc=-package-id --optghc=directory-1.3.6.2 --optghc=-package-id --optghc=dlist-1.0 --optghc=-package-id --optghc=filepath-1.4.2.1 --optghc=-package-id --optghc=hashable-1.3.5.0 --optghc=-package-id --optghc=hslogger-1.3.1.0 --optghc=-package-id --optghc=lens-5.0.1 --optghc=-package-id --optghc=mod-0.1.2.2 --optghc=-package-id --optghc=mtl-2.2.2 --optghc=-package-id --optghc=network-uri-2.6.4.1 --optghc=-package-id --optghc=rope-utf16-splay-0.3.2.0 --optghc=-package-id --optghc=scientific-0.3.7.0 --optghc=-package-id --optghc=some-1.0.3 --optghc=-package-id --optghc=template-haskell-2.17.0.0 --optghc=-package-id --optghc=temporary-1.3 --optghc=-package-id --optghc=text-1.2.5.0 --optghc=-package-id --optghc=unordered-containers-0.2.16.0 --optghc=-XHaskell2010 --optghc=-XStrictData --optghc=-Wall -B/nix/store/z8577sg7xny6fxhndrrrkpvzhn53w9vc-ghc-native-bignum-9.0.2/lib/ghc-9.0.2 src/Language/LSP/Types.hs src/Language/LSP/Types/Capabilities.hs src/Language/LSP/Types/Lens.hs src/Language/LSP/Types/SMethodMap.hs src/Language/LSP/VFS.hs src/Data/IxMap.hs src/Language/LSP/Types/CallHierarchy.hs src/Language/LSP/Types/Cancellation.hs src/Language/LSP/Types/ClientCapabilities.hs src/Language/LSP/Types/CodeAction.hs src/Language/LSP/Types/CodeLens.hs src/Language/LSP/Types/Command.hs src/Language/LSP/Types/Common.hs src/Language/LSP/Types/Completion.hs src/Language/LSP/Types/Configuration.hs src/Language/LSP/Types/Declaration.hs src/Language/LSP/Types/Definition.hs src/Language/LSP/Types/Diagnostic.hs src/Language/LSP/Types/DocumentColor.hs src/Language/LSP/Types/DocumentFilter.hs src/Language/LSP/Types/DocumentHighlight.hs src/Language/LSP/Types/DocumentLink.hs src/Language/LSP/Types/DocumentSymbol.hs src/Language/LSP/Types/FoldingRange.hs src/Language/LSP/Types/Formatting.hs src/Language/LSP/Types/Hover.hs src/Language/LSP/Types/Implementation.hs src/Language/LSP/Types/Initialize.hs src/Language/LSP/Types/Location.hs src/Language/LSP/Types/LspId.hs src/Language/LSP/Types/MarkupContent.hs src/Language/LSP/Types/Method.hs src/Language/LSP/Types/Message.hs src/Language/LSP/Types/Parsing.hs src/Language/LSP/Types/Progress.hs src/Language/LSP/Types/Registration.hs src/Language/LSP/Types/References.hs src/Language/LSP/Types/Rename.hs src/Language/LSP/Types/SelectionRange.hs src/Language/LSP/Types/ServerCapabilities.hs src/Language/LSP/Types/SemanticTokens.hs src/Language/LSP/Types/SignatureHelp.hs src/Language/LSP/Types/StaticRegistrationOptions.hs src/Language/LSP/Types/TextDocument.hs src/Language/LSP/Types/TypeDefinition.hs src/Language/LSP/Types/Uri.hs src/Language/LSP/Types/Utils.hs src/Language/LSP/Types/Window.hs src/Language/LSP/Types/WatchedFiles.hs src/Language/LSP/Types/WorkspaceEdit.hs src/Language/LSP/Types/WorkspaceFolders.hs src/Language/LSP/Types/WorkspaceSymbol.hs >>> /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types/haddock-response42424-1.txt Environment: [("CABAL_VERBOSE","True"),("CC_WRAPPER_CC_PATH","external/local_config_cc/cc_wrapper.sh"),("CC_WRAPPER_CPU","darwin_arm64"),("CC_WRAPPER_PLATFORM","darwin"),("CODESIGN_ALLOCATE","/nix/store/3ibr5yy13sxl2vb5rig8fivj85sqcvf2-cctools-port-949.0.1/bin/codesign_allocate"),("HOME","/var/empty"),("LANG","C.UTF-8"),("LC_CTYPE","UTF-8"),("LD_LIBRARY_PATH",""),("LIBRARY_PATH",""),("PATH","/nix/store/xqbgx1y5xh2k13c6nizlprkp0j8mcw6w-clang-wrapper-12.0.1/bin:/nix/store/p90xw78bb3xsxg5v7k31qj5hpwm2pngp-llvm-12.0.1/bin:/nix/store/5havjxkv59cprx4czgi1lwnvv7y22dzi-posix-toolchain/bin"),("PWD","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/external/lsp-types"),("PYTHONPATH","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/bazel_tools:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/com_github_digital_asset_daml:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/local_config_cc:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/rules_haskell:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/rules_haskell_ghc_nixpkgs:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles/rules_python:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles/:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles/bazel_tools:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles/com_github_digital_asset_daml:/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/cabal_wrapper.runfiles/rules_haskell"),("RULES_HASKELL_DOCDIR_PATH","/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/base-4.15.1.0"),("RULES_HASKELL_EXEC_ROOT","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml"),("RULES_HASKELL_GHC_PATH","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/external/rules_haskell_ghc_nixpkgs/bin/ghc"),("RULES_HASKELL_GHC_PKG_PATH","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/external/rules_haskell_ghc_nixpkgs/bin/ghc-pkg"),("RULES_HASKELL_LIBDIR_PATH","/nix/store/z8577sg7xny6fxhndrrrkpvzhn53w9vc-ghc-native-bignum-9.0.2/lib/ghc-9.0.2"),("RUNFILES_DIR","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/runghc.runfiles"),("SDKROOT","macosx"),("SHLVL","0"),("TEMP","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/tmp"),("TMP","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/tmp"),("TMPDIR","/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/tmp"),("__CF_USER_TEXT_ENCODING","0x1F5:0x0:0x0")] /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/external/rules_haskell_ghc_nixpkgs/bin/haddock '@/private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types-1.4.0.0/doc/html/lsp-types/haddock-response42424-1.txt' 0% ( 0 / 7) in 'Data.IxMap' Missing documentation for: Module header IxOrd (src/Data/IxMap.hs:17) IxMap (src/Data/IxMap.hs:21) emptyIxMap (src/Data/IxMap.hs:23) insertIxMap (src/Data/IxMap.hs:26) lookupIxMap (src/Data/IxMap.hs:31) pickFromIxMap (src/Data/IxMap.hs:37) `cc' failed in phase `Linker'. (Exit code: 134) /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml/external/rules_haskell_ghc_nixpkgs/bin/haddock returned ExitFailure 1 Target //compiler/damlc:damlc failed to build ERROR: /Users/builder/daml-andreas/compiler/damlc/BUILD.bazel:38:9 Middleman _middlemen/compiler_Sdamlc_Sdamlc-runfiles failed: (Exit 1): cabal_wrapper failed: error executing command (cd /private/var/tmp/_bazel_builder/7ce5f28514593fc1883e9fee6040cfef/sandbox/processwrapper-sandbox/1/execroot/com_github_digital_asset_daml && \ exec env - \ CABAL_VERBOSE=True \ CC_WRAPPER_CC_PATH=external/local_config_cc/cc_wrapper.sh \ CC_WRAPPER_CPU=darwin_arm64 \ CC_WRAPPER_PLATFORM=darwin \ LANG=C.UTF-8 \ PATH=/nix/store/5havjxkv59cprx4czgi1lwnvv7y22dzi-posix-toolchain/bin \ RULES_HASKELL_DOCDIR_PATH=/nix/store/kd7bjbp0wgz0qjhx6m2fcasp66n0wga2-ghc-native-bignum-9.0.2-doc/share/doc/ghc-native-bignum/html/libraries/base-4.15.1.0 \ RULES_HASKELL_GHC_PATH=external/rules_haskell_ghc_nixpkgs/bin/ghc \ RULES_HASKELL_GHC_PKG_PATH=external/rules_haskell_ghc_nixpkgs/bin/ghc-pkg \ RULES_HASKELL_LIBDIR_PATH=/nix/store/z8577sg7xny6fxhndrrrkpvzhn53w9vc-ghc-native-bignum-9.0.2/lib/ghc-9.0.2 \ SDKROOT=macosx \ bazel-out/darwin_arm64-opt/bin/external/rules_haskell/haskell/cabal_wrapper bazel-out/darwin_arm64-opt/bin/external/lsp-types/lsp-types_cabal_wrapper_args.json) Execution platform: @io_tweag_rules_nixpkgs//nixpkgs/platforms:host Use --sandbox_debug to see verbose messages from the sandbox INFO: Elapsed time: 344.702s, Critical Path: 329.09s INFO: 49 processes: 14 internal, 35 processwrapper-sandbox. FAILED: Build did NOT complete successfully FAILED: Build did NOT complete successfully ``` * Disable create-daml-app tests on MacOS M1 These fail to build because puppeteer fails to install Chromium on M1. See https://github.com/digital-asset/daml/pull/13250. * Resign binaries after patching in package-app Otherwise they fail to execute on MacOS Monterey on M1. They symptom is that executing or otherwise loading the binary (e.g. into lldb) fails with exit code -9 without further indications. * Use GHC with LLVM on MacOS M1 The native backend only supports M1 starting from GHC 9.2. However, we are still on GHC 9.0. We wrap GHC to ensure that the LLVM toolchain and the codesign tool are present in the environment and point to the correct versions provided by nixpkgs. * Update the CC toolchain for MacOS M1 compatibility Use nixpkgs `nix-support/cc-cflags` file to provide default flags instead of using `makeWrapper`. On M1 there was an issue where passing `-l` flags or `-isystem` to `cc -v` would cause the following errors: ``` lang version 11.1.0 Target: aarch64-apple-darwin Thread model: posix InstalledDir: /nix/store/v6iidz79b425hli98g45xq9iblapn1zy-clang-11.1.0/bin "/nix/store/b82mvqzvdx5mh1n9n77v8h5vk9fgqrxj-clang-wrapper-11.1.0/bin/ld" -demangle -lto_library /nix/store/v6iidz79b425hli98g45xq9iblapn1zy-clang-11.1.0/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 11.0.0 0.0.0 -o a.out -L/nix/store/hc8a94w57ppwmn2gscm56pvlwi3zhyh1-libSystem-11.0.0/lib -L/nix/store/6f5ygwif1r523jj2qfwfiwix0fga4rgp-clang-11.1.0-lib/lib -L/nix/store/7pkxnbhpi0c10w18rirj8zxz3wv571nj-libcxx-11.1.0/lib -no_uuid -arch arm64 -lSystem /nix/store/b82mvqzvdx5mh1n9n77v8h5vk9fgqrxj-clang-wrapper-11.1.0/resource-root/lib/darwin/libclang_rt.osx.a Undefined symbols for architecture arm64: "_main", referenced from: implicit entry/start for main executable ld: symbol(s) not found for architecture arm64 ``` This also includes additional standard library search paths: `-isystem ${llvmPackages_12.libcxx.dev}/include/c++/v1` alone is not enough because some headers in it are [wrapper headers](https://gcc.gnu.org/onlinedocs/cpp/Wrapper-Headers.html) that use `include_next` directives. For these to resolve we need to add the compiler's builtin headers to the search path as well. This also sets `-Wno-elaborated-enum-base` to avoid build failures of absl on MacOS Monterey M1. ``` In file included from external/com_google_absl/absl/time/internal/cctz/src/time_zone_lookup.cc:26: In file included from /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFTimeZone.h:13: /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFBase.h:474:9: error: non-defining declaration of enumeration with a fixed underlying type is only permitted as a standalone declaration; missing list of enumerators? [-Welaborated-enum-base] typedef CF_ENUM(CFIndex, CFComparisonResult) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFAvailability.h:169:55: note: expanded from macro 'CF_ENUM' \#define CF_ENUM(...) __CF_ENUM_GET_MACRO(__VA_ARGS__, __CF_NAMED_ENUM, __CF_ANON_ENUM, )(__VA_ARGS__) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFAvailability.h:134:48: note: expanded from macro '__CF_ENUM_GET_MACRO' \#define __CF_ENUM_GET_MACRO(_1, _2, NAME, ...) NAME ^ /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFAvailability.h:142:75: note: expanded from macro '__CF_NAMED_ENUM' \#define __CF_NAMED_ENUM(_type, _name) enum __CF_ENUM_ATTRIBUTES _name : _type _name; enum _name : _type ^~~~~~~ In file included from external/com_google_absl/absl/time/internal/cctz/src/time_zone_lookup.cc:26: In file included from /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFTimeZone.h:18: In file included from /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFString.h:17: /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFCharacterSet.h:62:9: error: non-defining declaration of enumeration with a fixed underlying type is only permitted as a standalone decla ration; missing list of enumerators? [-Welaborated-enum-base] typedef CF_ENUM(CFIndex, CFCharacterSetPredefinedSet) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFAvailability.h:169:55: note: expanded from macro 'CF_ENUM' \#define CF_ENUM(...) __CF_ENUM_GET_MACRO(__VA_ARGS__, __CF_NAMED_ENUM, __CF_ANON_ENUM, )(__VA_ARGS__) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFAvailability.h:134:48: note: expanded from macro '__CF_ENUM_GET_MACRO' \#define __CF_ENUM_GET_MACRO(_1, _2, NAME, ...) NAME ^ /nix/store/jjkm7x4zfifqgsxlbhkamzg0vc9wzip4-apple-framework-CoreFoundation-11.0.0/Library/Frameworks/CoreFoundation.framework/Headers/CFAvailability.h:142:75: note: expanded from macro '__CF_NAMED_ENUM' \#define __CF_NAMED_ENUM(_type, _name) enum __CF_ENUM_ATTRIBUTES _name : _type _name; enum _name : _type ^~~~~~~ ... ``` * Link libc++ in fat_cc_library on MacOS * Build on native ARM M1 instead of Rosetta changelog_begin changelog_end * Drop unused ghcLLVMWrapper * Select ghcWithLLVM within Nix If we generally expose ghcWithLLVM from Nix and then select on the Bazel, then we'd need to filter that derivation out from the Nix and dev-tool build step on CI. * fmt * Update Node version in compatibility * Expose node in PATH in create-daml-app test It seems that the node update made the `--scripts-prepend-node-path` flag less effective than it was before. Without explicitly adding `node` to `PATH` the install step fails with the following error: ``` Failure: Command "CreateProcess {cmdspec = RawCommand "/home/aj/.cache/bazel/_bazel_aj/c437a451a7a277d35b539da616255ac8/sandbox/linux-sandbox/1435/execroot/compatibility/bazel-out/k8-opt/bin/create-daml-app-0.0.0-platform-2.0.0.runfiles/compatibility/external/node_nix/node_nix/lib/node_modules/npm/bin/npm-cli.js" ["install","--scripts-prepend-node-path"], cwd = Nothing, env = Nothing, std_in = Inherit, std_out = Inherit, std_err = Inherit, close_fds = False, create_group = False, delegate_ctlc = False, detach_console = False, create_new_console = False, new_session = False, child_group = Nothing, child_user = Nothing, use_process_jobs = False}" exited with ExitFailure 127 npm ERR! code 127 npm ERR! path /tmp/extra-dir-7515936101075/create-daml-app/ui/node_modules/puppeteer npm ERR! command failed npm ERR! command sh -c node install.js npm ERR! sh: line 1: node: command not found npm ERR! A complete log of this run can be found in: npm ERR! /tmp/extra-dir-7515936101074/_logs/2022-03-24T10_18_15_227Z-debug.log ``` * Skip create-daml-app compat tests pre 2.0.0 changelog_begin changelog_end In these tests the install step fails with the following error due to mismatch babel-jest dependency versions: ``` ==================== Test output for //:create-daml-app-1.8.1-platform-0.0.0: Create Daml App tests Getting Started Guide: WARNING: Specifying the template via daml new create-daml-app create-daml-app is deprecated. The recommended way of specifying the template is daml new create-daml-app --template create-daml-app Created a new project in "create-daml-app" based on the template "create-daml-app". > create-daml-app@0.1.0 test > react-scripts test --testURL='http://localhost:7575' There might be a problem with the project dependency tree. It is likely not a bug in Create React App, but something you need to fix locally. The react-scripts package provided by Create React App requires a dependency: "babel-jest": "^24.9.0" Don't try to install it manually: your package manager does it automatically. However, a different version of babel-jest was detected higher up in the tree: /tmp/extra-dir-3298351016846/create-daml-app/ui/node_modules/babel-jest (version: 25.5.1) Manually installing incompatible versions is known to cause hard-to-debug issues. If you would prefer to ignore this check, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project. That will permanently disable this message but you might encounter other issues. To fix the dependency tree, try following the steps below in the exact order: 1. Delete package-lock.json (not package.json!) and/or yarn.lock in your project folder. 2. Delete node_modules in your project folder. 3. Remove "babel-jest" from dependencies and/or devDependencies in the package.json file in your project folder. 4. Run npm install or yarn, depending on the package manager you use. In most cases, this should be enough to fix the problem. If this has not helped, there are a few other things you can try: 5. If you used npm, install yarn (http://yarnpkg.com/) and repeat the above steps with it instead. This may help because npm has known issues with package hoisting which may get resolved in future versions. 6. Check if /tmp/extra-dir-3298351016846/create-daml-app/ui/node_modules/babel-jest is outside your project directory. For example, you might have accidentally installed something in your home folder. 7. Try running npm ls babel-jest in your project folder. This will tell you which other package (apart from the expected react-scripts) installed babel-jest. If nothing else helps, add SKIP_PREFLIGHT_CHECK=true to an .env file in your project. That would permanently disable this preflight check in case you want to proceed anyway. P.S. We know this message is long but please read the steps above :-) We hope you find them helpful! FAIL (125.62s) Create app from template (0.05s) Patch the application code with messaging feature Extract codegen output (0.06s) Set up libraries and workspaces (0.01s) Install Jest, Puppeteer and other dependencies (123.95s) Run Puppeteer end-to-end tests (1.54s) callProcess: /home/aj/.cache/bazel/_bazel_aj/c437a451a7a277d35b539da616255ac8/sandbox/linux-sandbox/2351/execroot/compatibility/bazel-out/k8-opt/bin/create-daml-app-1.8.1-platform-0.0.0.runfiles/compatibility/external/node_nix/node_nix/lib/node_modules/npm/bin/npm-cli.js "run" "test" "--ci" "--all" "--scripts-prepend-node-path" (exit 1): failed 1 out of 1 tests failed (125.62s) ================================================================================ ``` Applying the suggested `SKIP_PREFLIGHT_CHECK=true` fix leads to the following failure instead: ``` ==================== Test output for //:create-daml-app-1.9.0-platform-0.0.0: Create Daml App tests Getting Started Guide: WARNING: Specifying the template via daml new create-daml-app create-daml-app is deprecated. The recommended way of specifying the template is daml new create-daml-app --template create-daml-app Created a new project in "create-daml-app" based on the template "create-daml-app". > create-daml-app@0.1.0 test > react-scripts test --testURL='http://localhost:7575' PASS src/components/App.test.tsx ● Console console.debug daml-types/index.js:98 Registered template bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef:User:Message. console.debug daml-types/index.js:98 Registered template bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef:User:User. 12:42:55.745 [program-resource-pool-4] INFO c.d.l.sandbox.AkkaSubmissionsBridge - Instantiated Akka submissions bridge., context: {participantId: "sandbox"} 12:42:57.897 [program-resource-pool-3] INFO c.d.ledger.sandbox.SandboxOnXRunner - Initialized sandbox-on-x with conflict checking ledger bridge, version 0.0.0, run-mode = combined participant, index DB backend = h2database, participant-id = sandbox, ledger-id = create-daml-app-sandbox, port = 0, time mode = wall-clock time, allowed language versions = [min = LanguageVersion(V1,LanguageMinorVersion(6)), max = LanguageVersion(V1,LanguageMinorVersion(14))], authentication = all unauthenticated allowed, contract ids seeding = strong 24-03-2022 12:43:02.413 [main] INFO com.daml.http.Main - Config(ledgerHost=localhost, ledgerPort=34937, address=127.0.0.1, httpPort=7575, portFile=Some(json-api.port), packageReloadInterval=5 seconds, packageMaxInboundMessageSize=None, maxInboundMessageSize=4194304, tlsConfig=TlsConfiguration(false,None,None,None,None,REQUIRE,false,None), jdbcConfig=None, staticContentConfig=None, allowNonHttps=true, wsConfig=None, nonRepudiationCertificateFile=None, nonRepudiationPrivateKeyFile=None, nonRepudiationPrivateKeyAlgorithm=None, surrogateTpIdCacheMaxEntries=None), context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:02.745 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started 24-03-2022 12:43:03.041 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.HttpService - HTTP Server pre-startup, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:03.251 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.LedgerClient - Attempting to connect to the ledger localhost:34937 (600 attempts), context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:03.594 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.LedgerClient - Attempt 1/600 succeeded!, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:03.596 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.LedgerClient - Attempting to connect to the ledger localhost:34937 (600 attempts), context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:03.600 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.LedgerClient - Attempt 1/600 succeeded!, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:03.601 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.HttpService - contractDao: None, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:04.132 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.Main - Started server: (ServerBinding(/127.0.0.1:7575),None), context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 24-03-2022 12:43:05.280 [http-json-ledger-api-akka.actor.default-dispatcher-13] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "2ab72d48-cdef-4e00-ac17-0afda5084008"} 24-03-2022 12:43:05.791 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "2ab72d48-cdef-4e00-ac17-0afda5084008"} > create-daml-app@0.1.0 start > react-scripts start [HPM] Proxy created: function (pathname, req) { // Proxy requests to the http json api when in development const proxied = pathname.match("^/v1") && process.env.NODE_ENV === "development"; if (proxied) { console.log( `Request with path ${pathname} proxied from host ${req.headers.host} to host ${httpJsonDevUrl}` ); } return proxied; } -> http://localhost:undefined ℹ 「wds」: Project is running at http://192.168.1.114/ ℹ 「wds」: webpack output is served from ℹ 「wds」: Content not from webpack is served from /tmp/extra-dir-99443589994656/create-daml-app/ui/public ℹ 「wds」: 404s will fallback to / Starting the development server... 24-03-2022 12:43:07.495 [http-json-ledger-api-akka.actor.default-dispatcher-9] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "ce0131fd-6a4c-4eb1-8c1b-6d68418fde82"} 24-03-2022 12:43:07.606 [http-json-ledger-api-akka.actor.default-dispatcher-17] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "ce0131fd-6a4c-4eb1-8c1b-6d68418fde82"} 24-03-2022 12:43:07.623 [http-json-ledger-api-akka.actor.default-dispatcher-9] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "a4d1c7b0-406c-4297-a690-66ba2b692f19"} 24-03-2022 12:43:07.725 [http-json-ledger-api-akka.actor.default-dispatcher-16] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "a4d1c7b0-406c-4297-a690-66ba2b692f19"} 24-03-2022 12:43:07.741 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "bf65790a-38bc-4686-aa15-607c3c24661a"} 24-03-2022 12:43:07.846 [http-json-ledger-api-akka.actor.default-dispatcher-9] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "bf65790a-38bc-4686-aa15-607c3c24661a"} 24-03-2022 12:43:07.865 [http-json-ledger-api-akka.actor.default-dispatcher-13] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "3ab06283-270c-4994-852c-92c8c3b34ecc"} 24-03-2022 12:43:07.964 [http-json-ledger-api-akka.actor.default-dispatcher-14] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "3ab06283-270c-4994-852c-92c8c3b34ecc"} 24-03-2022 12:43:07.980 [http-json-ledger-api-akka.actor.default-dispatcher-8] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "b332b66a-6231-4492-817d-a2c58c85d04c"} 24-03-2022 12:43:08.084 [http-json-ledger-api-akka.actor.default-dispatcher-18] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "b332b66a-6231-4492-817d-a2c58c85d04c"} 24-03-2022 12:43:08.098 [http-json-ledger-api-akka.actor.default-dispatcher-17] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8c77ce53-52b5-4e0c-993a-3f810b54bfec"} 24-03-2022 12:43:08.204 [http-json-ledger-api-akka.actor.default-dispatcher-9] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8c77ce53-52b5-4e0c-993a-3f810b54bfec"} 24-03-2022 12:43:08.220 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8813ad99-79c7-42c4-9719-5bdcfeb5077e"} 24-03-2022 12:43:08.326 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8813ad99-79c7-42c4-9719-5bdcfeb5077e"} 24-03-2022 12:43:08.340 [http-json-ledger-api-akka.actor.default-dispatcher-18] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "deeca40b-0f05-47c9-927d-f71b0fe08ccb"} 24-03-2022 12:43:08.444 [http-json-ledger-api-akka.actor.default-dispatcher-18] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "deeca40b-0f05-47c9-927d-f71b0fe08ccb"} 24-03-2022 12:43:08.462 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "9be53420-eb4d-4ee3-9915-4a4381c51bea"} 24-03-2022 12:43:08.563 [http-json-ledger-api-akka.actor.default-dispatcher-18] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "9be53420-eb4d-4ee3-9915-4a4381c51bea"} 24-03-2022 12:43:08.576 [http-json-ledger-api-akka.actor.default-dispatcher-18] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8d64b076-ff2b-4f5b-8653-95e5e949cb34"} 24-03-2022 12:43:08.685 [http-json-ledger-api-akka.actor.default-dispatcher-14] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8d64b076-ff2b-4f5b-8653-95e5e949cb34"} 24-03-2022 12:43:08.697 [http-json-ledger-api-akka.actor.default-dispatcher-14] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "87246c50-00b7-453e-9771-83f176a3cbfc"} 24-03-2022 12:43:08.802 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "87246c50-00b7-453e-9771-83f176a3cbfc"} 24-03-2022 12:43:08.818 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "65bb8c95-a253-4ac5-a297-1abeff6ce44c"} 24-03-2022 12:43:08.920 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "65bb8c95-a253-4ac5-a297-1abeff6ce44c"} 24-03-2022 12:43:08.930 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/query from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "d45c0c95-1576-480c-b048-f59919a1d139"} 24-03-2022 12:43:10.016 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.PackageService - new package IDs loaded: bfcd37bd6b84768e86e432f5f6c33e25d9e7724a9d42e33875ff74f6348e733f, 518032f41fd0175461b35ae0c9691e08b4aea55e62915f8360af2cc7a1f2ba6c, cc348d369011362a5190fe96dd1f0dfbc697fdfd10e382b9e9666f0da05961b7, f78511c39cc293d5ed72acf5a4a81411af75a435df4106c5e37823af6589040b, 6839a6d3d430c569b2425e9391717b44ca324b88ba621d597778811b2d05031d, 99a2705ed38c1c26cbb8fe7acf36bbf626668e167a33335de932599219e0a235, 76bf0fd12bd945762a01f8fc5bbcdfa4d0ff20f8762af490f8f41d6237c6524f, e22bce619ae24ca3b8e6519281cb5a33b64b3190cc763248b4c3f9ad5087a92c, d58cf9939847921b2aab78eaa7b427dc4c649d25e6bee3c749ace4c3f52f5c97, 6c2c0667393c5f92f1885163068cd31800d2264eb088eb6fc740e11241b2bf06, c1f1f00558799eec139fb4f4c76f95fb52fa1837a5dd29600baa1c8ed1bdccfd, 733e38d36a2759688a4b2c4cec69d48e7b55ecc8dedc8067b815926c917a182a, 057eed1fd48c238491b8ea06b9b5bf85a5d4c9275dd3f6183e0e6b01730cc2ba, 52af8c65ac2c4b3d61637558935d2b0a92369ec4da39978a29f90a5f738f3e14, d14e08374fc7197d6a0de468c968ae8ba3aadbf9315476fd39071831f5923662, e491352788e56ca4603acc411ffe1a49fefd76ed8b163af86cf5ee5f4c38645b, 40f452260bef3f29dede136108fc08a88d5a5250310281067087da6f0baddff7, 8a7806365bbd98d88b4c13832ebfa305f6abaeaf32cfa2b7dd25c4fa489b79fb, bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef, context: {ledger_id: "create-daml-app-sandbox", cmd: "GetActiveContractsRequest(OneAnd(TemplateId(Some(bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef),User,User),Set()),Map(),None)", request_id: "d45c0c95-1576-480c-b048-f59919a1d139", instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", application_id: "create-daml-app", read_as: "List()", act_as: "List(party-c276900f)"} 24-03-2022 12:43:10.192 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "d45c0c95-1576-480c-b048-f59919a1d139"} 24-03-2022 12:43:10.420 [http-json-ledger-api-akka.actor.default-dispatcher-12] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/create from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "90767a4d-bf5f-4a9c-a633-9c9bf4374ab1"} 24-03-2022 12:43:10.490 [http-json-ledger-api-akka.actor.default-dispatcher-11] INFO com.daml.http.CommandService - Submitting create command, context: {command_id: "9371a5a2-1ab5-4deb-8cec-ad21c0e620dc", ledger_id: "create-daml-app-sandbox", request_id: "90767a4d-bf5f-4a9c-a633-9c9bf4374ab1", instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", application_id: "create-daml-app", template_id: "TemplateId(bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef,User,User)", read_as: "List()", act_as: "List(party-c276900f)"} 24-03-2022 12:43:12.870 [http-json-ledger-api-akka.actor.default-dispatcher-17] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "90767a4d-bf5f-4a9c-a633-9c9bf4374ab1"} 24-03-2022 12:43:12.885 [http-json-ledger-api-akka.actor.default-dispatcher-17] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/fetch from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "fd827c73-d3b8-4e42-877a-ce9af707da2a"} 24-03-2022 12:43:12.992 [http-json-ledger-api-akka.actor.default-dispatcher-11] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "fd827c73-d3b8-4e42-877a-ce9af707da2a"} 24-03-2022 12:43:13.004 [http-json-ledger-api-akka.actor.default-dispatcher-11] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/query from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "94adec23-cb1a-464b-9fad-8bf7da06b99f"} 24-03-2022 12:43:13.017 [http-json-ledger-api-akka.actor.default-dispatcher-13] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "94adec23-cb1a-464b-9fad-8bf7da06b99f"} 24-03-2022 12:43:13.074 [http-json-ledger-api-akka.actor.default-dispatcher-7] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "42f7aaf6-f3f7-4138-a4c6-1be224c100bc"} 24-03-2022 12:43:13.121 [http-json-ledger-api-akka.actor.default-dispatcher-17] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "42f7aaf6-f3f7-4138-a4c6-1be224c100bc"} Compiled successfully! You can now view create-daml-app in the browser. Local: http://localhost:3000 On Your Network: http://192.168.1.114:3000 Note that the development build is not optimized. To create a production build, use npm run build. Request with path /v1/fetch proxied from host localhost:3000 to host http://localhost:undefined 24-03-2022 12:43:53.540 [http-json-ledger-api-akka.actor.default-dispatcher-11] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "f1da2b78-e020-40fc-b4cc-e635fc78f8fb"} 24-03-2022 12:43:53.681 [http-json-ledger-api-akka.actor.default-dispatcher-7] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "f1da2b78-e020-40fc-b4cc-e635fc78f8fb"} 24-03-2022 12:43:53.690 [http-json-ledger-api-akka.actor.default-dispatcher-7] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "42e89b95-f5b7-4c39-bcd8-4264e86a924d"} 24-03-2022 12:43:53.802 [http-json-ledger-api-akka.actor.default-dispatcher-13] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "42e89b95-f5b7-4c39-bcd8-4264e86a924d"} 24-03-2022 12:43:53.814 [http-json-ledger-api-akka.actor.default-dispatcher-13] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "fd54814b-fc1f-479b-b65a-1b3bc59392b8"} 24-03-2022 12:43:53.923 [http-json-ledger-api-akka.actor.default-dispatcher-6] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "fd54814b-fc1f-479b-b65a-1b3bc59392b8"} Request with path /v1/fetch proxied from host localhost:3000 to host http://localhost:undefined 24-03-2022 12:44:24.809 [http-json-ledger-api-akka.actor.default-dispatcher-17] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "cde08b6a-68c1-4f7d-9d20-f5bde5c478aa"} 24-03-2022 12:44:24.880 [http-json-ledger-api-akka.actor.default-dispatcher-9] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "cde08b6a-68c1-4f7d-9d20-f5bde5c478aa"} Request with path /v1/fetch proxied from host localhost:3000 to host http://localhost:undefined 24-03-2022 12:44:55.691 [http-json-ledger-api-akka.actor.default-dispatcher-8] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8dfa15a7-044d-41f7-9597-37662c2ff5ff"} 24-03-2022 12:44:55.818 [http-json-ledger-api-akka.actor.default-dispatcher-6] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "8dfa15a7-044d-41f7-9597-37662c2ff5ff"} 24-03-2022 12:44:55.828 [http-json-ledger-api-akka.actor.default-dispatcher-6] INFO com.daml.http.Endpoints - Incoming POST request on http://localhost:7575/v1/parties/allocate from unknown, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "fe3af4d3-7e89-41a5-bfb3-ec639967a0f8"} 24-03-2022 12:44:55.938 [http-json-ledger-api-akka.actor.default-dispatcher-8] INFO com.daml.http.Endpoints - Responding to client with HTTP 200 OK, context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0", request_id: "fe3af4d3-7e89-41a5-bfb3-ec639967a0f8"} Request with path /v1/fetch proxied from host localhost:3000 to host http://localhost:undefined FAIL src/index.test.ts (154.562s) ● Console console.debug daml-types/index.js:98 Registered template bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef:User:Message. console.debug daml-types/index.js:98 Registered template bbfcd72618817ef8c99eb663e1f80375835bd51efebdc69b55884ad7afb3a0ef:User:User. ● log in as a new user, log out and log back in TimeoutError: waiting for selector ".test-select-main-menu" failed: timeout 30000ms exceeded 277 | await usernameInput.type(partyName); 278 | await page.click(".test-select-login-button"); > 279 | await page.waitForSelector(".test-select-main-menu"); | ^ 280 | }; 281 | // LOGIN_FUNCTION_END 282 | at new WaitTask (node_modules/puppeteer/lib/DOMWorld.js:407:34) at DOMWorld._waitForSelectorOrXPath (node_modules/puppeteer/lib/DOMWorld.js:332:26) at DOMWorld.waitForSelector (node_modules/puppeteer/lib/DOMWorld.js:315:21) at Frame.waitForSelector (node_modules/puppeteer/lib/FrameManager.js:384:51) at Frame. (node_modules/puppeteer/lib/helper.js:117:27) at Page.waitForSelector (node_modules/puppeteer/lib/Page.js:867:33) at login (src/index.test.ts:279:14) at Object. (src/index.test.ts:313:3) ● log in as three different users and start following each other TimeoutError: waiting for selector ".test-select-main-menu" failed: timeout 30000ms exceeded 277 | await usernameInput.type(partyName); 278 | await page.click(".test-select-login-button"); > 279 | await page.waitForSelector(".test-select-main-menu"); | ^ 280 | }; 281 | // LOGIN_FUNCTION_END 282 | at new WaitTask (node_modules/puppeteer/lib/DOMWorld.js:407:34) at DOMWorld._waitForSelectorOrXPath (node_modules/puppeteer/lib/DOMWorld.js:332:26) at DOMWorld.waitForSelector (node_modules/puppeteer/lib/DOMWorld.js:315:21) at Frame.waitForSelector (node_modules/puppeteer/lib/FrameManager.js:384:51) at Frame. (node_modules/puppeteer/lib/helper.js:117:27) at Page.waitForSelector (node_modules/puppeteer/lib/Page.js:867:33) at login (src/index.test.ts:279:14) at Object. (src/index.test.ts:349:3) ● error when following self TimeoutError: waiting for selector ".test-select-main-menu" failed: timeout 30000ms exceeded 277 | await usernameInput.type(partyName); 278 | await page.click(".test-select-login-button"); > 279 | await page.waitForSelector(".test-select-main-menu"); | ^ 280 | }; 281 | // LOGIN_FUNCTION_END 282 | at new WaitTask (node_modules/puppeteer/lib/DOMWorld.js:407:34) at DOMWorld._waitForSelectorOrXPath (node_modules/puppeteer/lib/DOMWorld.js:332:26) at DOMWorld.waitForSelector (node_modules/puppeteer/lib/DOMWorld.js:315:21) at Frame.waitForSelector (node_modules/puppeteer/lib/FrameManager.js:384:51) at Frame. (node_modules/puppeteer/lib/helper.js:117:27) at Page.waitForSelector (node_modules/puppeteer/lib/Page.js:867:33) at login (src/index.test.ts:279:14) at Object. (src/index.test.ts:455:3) ● error when adding a user that you are already following TimeoutError: waiting for selector ".test-select-main-menu" failed: timeout 30000ms exceeded 277 | await usernameInput.type(partyName); 278 | await page.click(".test-select-login-button"); > 279 | await page.waitForSelector(".test-select-main-menu"); | ^ 280 | }; 281 | // LOGIN_FUNCTION_END 282 | at new WaitTask (node_modules/puppeteer/lib/DOMWorld.js:407:34) at DOMWorld._waitForSelectorOrXPath (node_modules/puppeteer/lib/DOMWorld.js:332:26) at DOMWorld.waitForSelector (node_modules/puppeteer/lib/DOMWorld.js:315:21) at Frame.waitForSelector (node_modules/puppeteer/lib/FrameManager.js:384:51) at Frame. (node_modules/puppeteer/lib/helper.js:117:27) at Page.waitForSelector (node_modules/puppeteer/lib/Page.js:867:33) at login (src/index.test.ts:279:14) at Object. (src/index.test.ts:471:3) Test Suites: 1 failed, 1 passed, 2 total Tests: 4 failed, 3 passed, 7 total Snapshots: 0 total Time: 155.201s Ran all test suites. 12:45:26.673 [program-resource-pool-6] INFO c.d.g.a.server.akka.ServerAdapter - SERVER_IS_SHUTTING_DOWN(1,0): Server is shutting down, context: {err-context: "{location=ServerAdapter.scala:59}"} 12:45:26.675 [program-resource-pool-6] INFO c.d.g.a.server.akka.ServerAdapter - SERVER_IS_SHUTTING_DOWN(1,0): Server is shutting down, context: {err-context: "{location=ServerAdapter.scala:59}"} 12:45:26.676 [program-resource-pool-6] INFO c.d.g.a.server.akka.ServerAdapter - SERVER_IS_SHUTTING_DOWN(1,0): Server is shutting down, context: {err-context: "{location=ServerAdapter.scala:59}"} 12:45:26.677 [program-resource-pool-6] INFO c.d.g.a.server.akka.ServerAdapter - SERVER_IS_SHUTTING_DOWN(1,0): Server is shutting down, context: {err-context: "{location=ServerAdapter.scala:59}"} [WARN] [03/24/2022 12:45:26.723] [program-resource-pool-6] [CoordinatedShutdown(akka://sandbox-on-x)] Could not addJvmShutdownHook, due to: Shutdown in progress [INFO] [03/24/2022 12:45:26.724] [program-resource-pool-6] [CoordinatedShutdown(akka://sandbox-on-x)] Running CoordinatedShutdown with reason [ActorSystemTerminateReason] 24-03-2022 12:45:26.630 [shutdownHook1] INFO com.daml.http.HttpService - Stopping server..., context: {instance_uuid: "1ff5d996-9493-4dea-a9a8-5dc5725c33c0"} 12:45:26.648 [program-resource-pool-6] INFO c.d.g.a.server.akka.ServerAdapter - SERVER_IS_SHUTTING_DOWN(1,0): Server is shutting down, context: {err-context: "{location=ServerAdapter.scala:59}"} FAIL (278.22s) Create app from template (0.04s) Patch the application code with messaging feature Extract codegen output (0.04s) Set up libraries and workspaces Install Jest, Puppeteer and other dependencies (120.36s) Run Puppeteer end-to-end tests (157.77s) callProcess: /home/aj/.cache/bazel/_bazel_aj/c437a451a7a277d35b539da616255ac8/sandbox/linux-sandbox/2357/execroot/compatibility/bazel-out/k8-opt/bin/create-daml-app-1.9.0-platform-0.0.0.runfiles/compatibility/external/node_nix/node_nix/lib/node_modules/npm/bin/npm-cli.js "run" "test" "--ci" "--all" "--scripts-prepend-node-path" (exit 1): failed 1 out of 1 tests failed (278.22s) ================================================================================ ``` * Revert "Skip create-daml-app compat tests pre 2.0.0" This reverts commit 762e61941f164e5deb10fc752f391b69003377cf. * Revert "Expose node in PATH in create-daml-app test" This reverts commit 8541b39d0f1b36c63366b90f97a69f7d950c92c5. * Revert "Update Node version in compatibility" This reverts commit 389639402d19c3ffa714e22bc61e042f82070b74. * Keep using NodeJS 14 for the compatibility tests NodeJS 16 is needed for M1 compatibility, but it breaks the compatibility tests. So, for now, we stick to the older version for the compatibility tests. Co-authored-by: Andreas Herrmann --- .bazelrc | 4 +- WORKSPACE | 40 +--- bazel-haskell-deps.bzl | 1 + bazel_tools/fat_cc_library.bzl | 2 +- bazel_tools/haskell-arm-m1.patch | 197 ++++++++++++++++ bazel_tools/nixpkgs-disable-http2.patch | 4 +- bazel_tools/os_info.bzl | 11 +- bazel_tools/packaging/package-app.sh | 8 + bazel_tools/rules-nixpkgs-arm.patch | 223 +++++++++++++++++++ compatibility/.bazelrc | 4 +- compatibility/WORKSPACE | 2 +- daml-assistant/integration-tests/BUILD.bazel | 15 +- deps.bzl | 19 +- nix/bazel-go-toolchain.nix | 1 + nix/bazel.nix | 52 ++++- nix/nixpkgs.nix | 15 +- nix/system.nix | 2 +- nix/tools/bazel-cc-toolchain/default.nix | 97 ++++---- 18 files changed, 589 insertions(+), 108 deletions(-) create mode 100644 bazel_tools/haskell-arm-m1.patch create mode 100644 bazel_tools/rules-nixpkgs-arm.patch create mode 100644 nix/bazel-go-toolchain.nix diff --git a/.bazelrc b/.bazelrc index 52a39b859fdd..ad7b5b1e40ee 100644 --- a/.bazelrc +++ b/.bazelrc @@ -97,8 +97,8 @@ build:linux --action_env=LOCALE_ARCHIVE build:windows --action_env=JAVA_HOME # Tell bazel to use the nixpkgs Haskell toolchain on Linux and Darwin -build:linux --host_platform=@rules_haskell//haskell/platforms:linux_x86_64_nixpkgs -build:darwin --host_platform=@rules_haskell//haskell/platforms:darwin_x86_64_nixpkgs +build:linux --host_platform=@io_tweag_rules_nixpkgs//nixpkgs/platforms:host +build:darwin --host_platform=@io_tweag_rules_nixpkgs//nixpkgs/platforms:host # and GHC's gcc on Windows build:windows --crosstool_top=@rules_haskell_ghc_windows_amd64//:cc_toolchain diff --git a/WORKSPACE b/WORKSPACE index b4acddf3a206..82e8a47aee81 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -589,38 +589,17 @@ nixpkgs_java_configure( ) if not is_windows else None # rules_go used here to compile a wrapper around the protoc-gen-scala plugin -load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") +load("@io_tweag_rules_nixpkgs//nixpkgs:toolchains/go.bzl", "nixpkgs_go_configure") -nixpkgs_package( - name = "go_nix", - attribute_path = "go", - build_file_content = """ - filegroup( - name = "sdk", - srcs = glob(["share/go/**"]), - visibility = ["//visibility:public"], - ) - """, - nix_file = "//nix:bazel.nix", +nixpkgs_go_configure( + nix_file = "//nix:bazel-go-toolchain.nix", nix_file_deps = common_nix_file_deps, repositories = dev_env_nix_repos, -) - -# A repository that generates the Go SDK imports, see -# ./bazel_tools/go_sdk/README.md -local_repository( - name = "go_sdk_repo", - path = "bazel_tools/go_sdk", -) +) if not is_windows else None -load("@io_bazel_rules_go//go:deps.bzl", "go_wrap_sdk") +load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains") -# On Nix platforms we use the Nix provided Go SDK, on Windows we let Bazel pull -# an upstream one. -go_wrap_sdk( - name = "go_sdk", - root_file = "@go_nix//:share/go/ROOT", -) if not is_windows else None +go_register_toolchains(version = "1.16.9") if is_windows else None # gazelle:repo bazel_gazelle load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") @@ -629,9 +608,9 @@ load("//:go_deps.bzl", "go_deps") # gazelle:repository_macro go_deps.bzl%go_deps go_deps() -go_rules_dependencies() +load("@io_bazel_rules_go//go:deps.bzl", "go_rules_dependencies") -go_register_toolchains() if not is_windows else go_register_toolchains(version = "1.16.9") +go_rules_dependencies() gazelle_dependencies() @@ -721,12 +700,13 @@ dev_env_tool( load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install") node_repositories( - package_json = ["//:package.json"], # Using `dev_env_tool` introduces an additional layer of symlink # indirection. Bazel doesn't track dependencies through symbolic links. # Occasionally, this can cause build failures on CI if a build is not # invalidated despite a change of an original source. To avoid such issues # we use the `nixpkgs_package` directly. + node_version = "16.13.0", + package_json = ["//:package.json"], vendored_node = "@nodejs_dev_env" if is_windows else "@node_nix", ) diff --git a/bazel-haskell-deps.bzl b/bazel-haskell-deps.bzl index e448b68a2eb8..45c371dc7916 100644 --- a/bazel-haskell-deps.bzl +++ b/bazel-haskell-deps.bzl @@ -57,6 +57,7 @@ haskell_cabal_library( version = packages["lsp-types"].version, srcs = glob(["**"]), deps = packages["lsp-types"].deps, + haddock = False, visibility = ["//visibility:public"], )""", patch_args = ["-p1"], diff --git a/bazel_tools/fat_cc_library.bzl b/bazel_tools/fat_cc_library.bzl index beff031cba55..1ef7fa02c8f1 100644 --- a/bazel_tools/fat_cc_library.bzl +++ b/bazel_tools/fat_cc_library.bzl @@ -53,7 +53,7 @@ def _fat_cc_library_impl(ctx): [f.path for f in static_libs] + ctx.attr.no_whole_archive_flag + # Some libs seems to depend on libstdc++ implicitely - ["-lstdc++"] + + (["-lc++", "-lc++abi"] if is_darwin else ["-lstdc++"]) + (["-framework", "CoreFoundation"] if is_darwin else []) + # On Windows we have some extra deps. (["-lws2_32"] if is_windows else []), diff --git a/bazel_tools/haskell-arm-m1.patch b/bazel_tools/haskell-arm-m1.patch new file mode 100644 index 000000000000..6771fb33e6d8 --- /dev/null +++ b/bazel_tools/haskell-arm-m1.patch @@ -0,0 +1,197 @@ +diff --git a/haskell/cabal.bzl b/haskell/cabal.bzl +index 6be79b0d..1e324ec5 100644 +--- a/haskell/cabal.bzl ++++ b/haskell/cabal.bzl +@@ -171,10 +171,11 @@ def _cabal_toolchain_info(hs, cc, workspace_name, runghc): + runghc = runghc.path, + ar = ar, + cc = cc.tools.cc, ++ ld = cc.tools.ld, + strip = cc.tools.strip, + is_windows = hs.toolchain.is_windows, + workspace = workspace_name, +- ghc_cc_args = ghc_cc_program_args(hs, "$CC"), ++ ghc_cc_args = ghc_cc_program_args(hs, "$CC", "$LD"), + ) + + def _prepare_cabal_inputs( +diff --git a/haskell/cc.bzl b/haskell/cc.bzl +index 3726133c..d59f84f7 100644 +--- a/haskell/cc.bzl ++++ b/haskell/cc.bzl +@@ -186,11 +186,12 @@ def cc_interop_info(ctx, override_cc_toolchain = None): + ]).linking_context.linker_inputs.to_list() for lib in li.libraries], + ) + +-def ghc_cc_program_args(hs, cc): ++def ghc_cc_program_args(hs, cc, ld): + """Returns the -pgm* flags required to override cc. + + Args: + cc: string, path to the C compiler (cc_wrapper). ++ ld: string, path to the linker (ld). + + Returns: + list of string, GHC arguments. +@@ -220,4 +221,11 @@ def ghc_cc_program_args(hs, cc): + ] + if hs.toolchain.numeric_version >= [8, 10, 3]: + args.append("-pgmc-supports-no-pie") ++ if hs.toolchain.numeric_version >= [9, 0, 1]: ++ args.extend([ ++ "-pgmlm", ++ ld, ++ "-optlm", ++ "-r", ++ ]) + return args +diff --git a/haskell/doctest.bzl b/haskell/doctest.bzl +index 1cd3f675..f7a2200a 100644 +--- a/haskell/doctest.bzl ++++ b/haskell/doctest.bzl +@@ -98,7 +98,7 @@ def _haskell_doctest_single(target, ctx): + ctx, + override_cc_toolchain = hs.tools_config.maybe_exec_cc_toolchain, + ) +- args.add_all(ghc_cc_program_args(hs, cc.tools.cc)) ++ args.add_all(ghc_cc_program_args(hs, cc.tools.cc, cc.tools.ld)) + + doctest_log = ctx.actions.declare_file( + "doctest-log-" + ctx.label.name + "-" + target.label.name, +diff --git a/haskell/nixpkgs.bzl b/haskell/nixpkgs.bzl +index 7ccead78..6692fe6b 100644 +--- a/haskell/nixpkgs.bzl ++++ b/haskell/nixpkgs.bzl +@@ -1,5 +1,6 @@ + """Workspace rules (Nixpkgs)""" + ++load("@bazel_tools//tools/cpp:lib_cc_configure.bzl", "get_cpu_value") + load( + "@io_tweag_rules_nixpkgs//nixpkgs:nixpkgs.bzl", + "nixpkgs_package", +@@ -145,15 +146,21 @@ def _ghc_nixpkgs_toolchain_impl(repository_ctx): + # platform. But they are important to state because Bazel + # toolchain resolution prefers other toolchains with more specific + # constraints otherwise. +- if repository_ctx.attr.target_constraints == [] and repository_ctx.attr.exec_constraints == []: +- target_constraints = ["@platforms//cpu:x86_64"] +- if repository_ctx.os.name == "linux": +- target_constraints.append("@platforms//os:linux") +- elif repository_ctx.os.name == "mac os x": +- target_constraints.append("@platforms//os:osx") +- exec_constraints = list(target_constraints) ++ cpu_value = get_cpu_value(repository_ctx) ++ cpu = { ++ "darwin": "@platforms//cpu:x86_64", ++ "darwin_arm64": "@platforms//cpu:arm64", ++ }.get(cpu_value, "@platforms//cpu:x86_64") ++ os = { ++ "darwin": "@platforms//os:osx", ++ "darwin_arm64": "@platforms//os:osx", ++ }.get(cpu_value, "@platforms//os:linux") ++ ++ if not repository_ctx.attr.target_constraints and not repository_ctx.attr.exec_constraints: ++ target_constraints = [cpu, os] ++ exec_constraints = target_constraints + else: +- target_constraints = repository_ctx.attr.target_constraints ++ target_constraints = list(repository_ctx.attr.target_constraints) + exec_constraints = list(repository_ctx.attr.exec_constraints) + + exec_constraints.append("@io_tweag_rules_nixpkgs//nixpkgs/constraints:support_nix") +diff --git a/haskell/private/cabal_wrapper.py b/haskell/private/cabal_wrapper.py +index 1ba677b3..b14135f9 100755 +--- a/haskell/private/cabal_wrapper.py ++++ b/haskell/private/cabal_wrapper.py +@@ -129,6 +129,7 @@ path_args = json_args["path_args"] + + ar = find_exe(toolchain_info["ar"]) + cc = find_exe(toolchain_info["cc"]) ++ld = find_exe(toolchain_info["ld"]) + strip = find_exe(toolchain_info["strip"]) + + def recache_db(): +@@ -261,10 +262,14 @@ with mkdtemp(distdir_prefix()) as distdir: + "--with-hsc2hs=" + hsc2hs, + "--with-ar=" + ar, + "--with-gcc=" + cc, ++ "--with-ld=" + ld, + "--with-strip=" + strip, + "--enable-deterministic", \ + ] + +- [ "--ghc-option=" + flag.replace("$CC", cc) for flag in toolchain_info["ghc_cc_args"] ] + ++ [ "--ghc-option=" + flag.replace("$CC", cc).replace("$LD", ld) for flag in toolchain_info["ghc_cc_args"] ] + ++ [ "--hsc2hs-option=-c" + cc, ++ "--hsc2hs-option=-l" + cc, ++ ] + + enable_relocatable_flags + \ + [ \ + # Make `--builddir` a relative path. Using an absolute path would +diff --git a/haskell/private/cc_wrapper.py.tpl b/haskell/private/cc_wrapper.py.tpl +index 311c0f96..9249f30b 100644 +--- a/haskell/private/cc_wrapper.py.tpl ++++ b/haskell/private/cc_wrapper.py.tpl +@@ -84,6 +84,7 @@ CC = os.environ.get("CC_WRAPPER_CC_PATH", "{:cc:}") + PLATFORM = os.environ.get("CC_WRAPPER_PLATFORM", "{:platform:}") + CPU = os.environ.get("CC_WRAPPER_CPU", "{:cpu:}") + INSTALL_NAME_TOOL = "/usr/bin/install_name_tool" ++CODESIGN = "/usr/bin/codesign" + OTOOL = "/usr/bin/otool" + + +@@ -938,6 +939,14 @@ def darwin_rewrite_load_commands(rewrites, output): + args.extend(["-change", old, os.path.join("@rpath", new)]) + if args: + subprocess.check_call([INSTALL_NAME_TOOL] + args + [output]) ++ # Resign the binary after patching it. ++ # This is necessary on MacOS Monterey on M1. ++ # The moving back and forth is necessary because the OS caches the signature. ++ # See this note from nixpkgs for reference: ++ # https://github.com/NixOS/nixpkgs/blob/5855ff74f511423e3e2646248598b3ffff229223/pkgs/os-specific/darwin/signing-utils/utils.sh#L1-L6 ++ os.rename(output, f"{output}.resign") ++ subprocess.check_call([CODESIGN] + ["-f", "-s", "-"] + [f"{output}.resign"]) ++ os.rename(f"{output}.resign", output) + + + # -------------------------------------------------------------------- +diff --git a/haskell/repl.bzl b/haskell/repl.bzl +index 6cc44499..0833ec92 100644 +--- a/haskell/repl.bzl ++++ b/haskell/repl.bzl +@@ -396,7 +396,12 @@ def _create_repl(hs, cc, posix, ctx, repl_info, output): + "$RULES_HASKELL_EXEC_ROOT", + hs.toolchain.cc_wrapper.executable.path, + ) +- args.extend(['"{}"'.format(arg) for arg in ghc_cc_program_args(hs, cc_path)]) ++ ld_path = paths.join( ++ "$RULES_HASKELL_EXEC_ROOT", ++ cc.ld_executable, ++ ) ++ args.extend(['"{}"'.format(arg) for arg in ghc_cc_program_args(hs, cc_path, ld_path)]) ++ + + # Load source files + # Force loading by source with `:add *...`. +@@ -518,7 +523,8 @@ def _create_hie_bios(hs, cc, posix, ctx, repl_info, path_prefix): + path_prefix = paths.join("", *path_prefix) + args, inputs = _compiler_flags_and_inputs(hs, cc, repl_info, path_prefix = path_prefix, static = True) + cc_path = paths.join(path_prefix, hs.toolchain.cc_wrapper.executable.path) +- args.extend(ghc_cc_program_args(hs, cc_path)) ++ ld_path = paths.join(path_prefix, cc.ld_executable) ++ args.extend(ghc_cc_program_args(hs, cc_path, ld_path)) + args.extend(hs.toolchain.ghcopts) + args.extend(repl_info.load_info.compiler_flags) + +diff --git a/haskell/toolchain.bzl b/haskell/toolchain.bzl +index 2cecc0b8..74f72163 100644 +--- a/haskell/toolchain.bzl ++++ b/haskell/toolchain.bzl +@@ -46,7 +46,7 @@ def _run_ghc(hs, cc, inputs, outputs, mnemonic, arguments, env, params_file = No + + # XXX: We should also tether Bazel's CC toolchain to GHC's, so that we can properly mix Bazel-compiled + # C libraries with Haskell targets. +- args.add_all(ghc_cc_program_args(hs, cc.tools.cc)) ++ args.add_all(ghc_cc_program_args(hs, cc.tools.cc, cc.tools.ld)) + + compile_flags_file = hs.actions.declare_file("compile_flags_%s_%s_%s" % (hs.name, extra_name, mnemonic)) + extra_args_file = hs.actions.declare_file("extra_args_%s_%s_%s" % (hs.name, extra_name, mnemonic)) diff --git a/bazel_tools/nixpkgs-disable-http2.patch b/bazel_tools/nixpkgs-disable-http2.patch index d5faeab8f2ad..d37a3a66581f 100644 --- a/bazel_tools/nixpkgs-disable-http2.patch +++ b/bazel_tools/nixpkgs-disable-http2.patch @@ -1,8 +1,8 @@ diff --git a/nixpkgs/nixpkgs.bzl b/nixpkgs/nixpkgs.bzl -index 666948e..8d99441 100644 +index 16fe59c..d590d44 100644 --- a/nixpkgs/nixpkgs.bzl +++ b/nixpkgs/nixpkgs.bzl -@@ -116,7 +116,7 @@ def _nixpkgs_package_impl(repository_ctx): +@@ -136,7 +136,7 @@ def _nixpkgs_package_impl(repository_ctx): "The NIX_PATH environment variable is not inherited." ) diff --git a/bazel_tools/os_info.bzl b/bazel_tools/os_info.bzl index f00abab37048..575fed3029f3 100644 --- a/bazel_tools/os_info.bzl +++ b/bazel_tools/os_info.bzl @@ -5,7 +5,8 @@ load("@bazel_tools//tools/cpp:lib_cc_configure.bzl", "get_cpu_value") _os_info_bzl_template = """ cpu_value = "{CPU_VALUE}" -is_darwin = cpu_value == "darwin" +is_darwin = cpu_value == "darwin" or cpu_value == "darwin_arm64" +is_darwin_arm64 = cpu_value == "darwin_arm64" is_linux = cpu_value == "k8" is_windows = cpu_value == "x64_windows" os_name = "macos" if is_darwin else "linux" if is_linux else "windows" @@ -13,6 +14,14 @@ os_name = "macos" if is_darwin else "linux" if is_linux else "windows" def _os_info_impl(repository_ctx): cpu = get_cpu_value(repository_ctx) + known_cpu_values = [ + "darwin", + "darwin_arm64", + "k8", + "x64_windows", + ] + if cpu not in known_cpu_values: + fail("Unknown OS type {}, expected one of {}".format(cpu, ", ".join(known_cpu_values))) os_info_substitutions = { "CPU_VALUE": cpu, } diff --git a/bazel_tools/packaging/package-app.sh b/bazel_tools/packaging/package-app.sh index 04129f8a8780..bcb219790efa 100755 --- a/bazel_tools/packaging/package-app.sh +++ b/bazel_tools/packaging/package-app.sh @@ -211,6 +211,14 @@ elif [[ "$(uname -s)" == "Darwin" ]]; then fi fi done + + # Resign the binary on MacOS. Requires moving the file back and forth + # because the OS caches the signatore. Refer to the following note in + # nixpkgs for details: + # https://github.com/NixOS/nixpkgs/blob/5855ff74f511423e3e2646248598b3ffff229223/pkgs/os-specific/darwin/signing-utils/utils.sh#L1-L6 + mv "$from_copied" "$from_copied.resign" + /usr/bin/codesign -f -s - "$from_copied.resign" + mv "$from_copied.resign" "$from_copied" } # Set the dynamic library load path to the relative lib/ directory. /usr/bin/install_name_tool -add_rpath "@loader_path/lib" $WORKDIR/$NAME/$NAME diff --git a/bazel_tools/rules-nixpkgs-arm.patch b/bazel_tools/rules-nixpkgs-arm.patch new file mode 100644 index 000000000000..622776152535 --- /dev/null +++ b/bazel_tools/rules-nixpkgs-arm.patch @@ -0,0 +1,223 @@ +diff --git a/README.md b/README.md +index e7d15ca..a1f7440 100644 +--- a/README.md ++++ b/README.md +@@ -1332,7 +1332,7 @@ Constraints for the target platform. + ### nixpkgs_sh_posix_configure + +
+-nixpkgs_sh_posix_configure(name, packages, kwargs)
++nixpkgs_sh_posix_configure(name, packages, exec_constraints, kwargs)
+ 
+ + Create a POSIX toolchain from nixpkgs. +@@ -1378,6 +1378,20 @@ default is ["stdenv.initialPath"] + + List of Nix attribute paths to draw Unix tools from. + ++

++ ++ ++ ++exec_constraints ++ ++ ++optional. ++default is None ++ ++

++ ++Constraints for the execution platform. ++ +

+ + +diff --git a/nixpkgs/nixpkgs.bzl b/nixpkgs/nixpkgs.bzl +index d590d44..01b4ba0 100644 +--- a/nixpkgs/nixpkgs.bzl ++++ b/nixpkgs/nixpkgs.bzl +@@ -11,7 +11,12 @@ load( + ) + load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") + load(":private/location_expansion.bzl", "expand_location") +-load(":private/constraints.bzl", "ensure_constraints") ++load( ++ ":private/constraints.bzl", ++ "default_constraints", ++ "ensure_constraints", ++ "ensure_constraints_pure", ++) + + def _nixpkgs_git_repository_impl(repository_ctx): + repository_ctx.file( +@@ -443,7 +448,7 @@ def _parse_cc_toolchain_info(content, filename): + + def _nixpkgs_cc_toolchain_config_impl(repository_ctx): + cpu_value = get_cpu_value(repository_ctx) +- darwin = cpu_value == "darwin" ++ darwin = cpu_value == "darwin" or cpu_value == "darwin_arm64" + + cc_toolchain_info_file = repository_ctx.path(repository_ctx.attr.cc_toolchain_info) + if not cc_toolchain_info_file.exists and not repository_ctx.attr.fail_not_supported: +@@ -1344,36 +1349,37 @@ create_posix_toolchain() + # should run. + + def _nixpkgs_sh_posix_toolchain_impl(repository_ctx): +- cpu = get_cpu_value(repository_ctx) ++ exec_constraints, _ = ensure_constraints_pure( ++ default_constraints = default_constraints(repository_ctx), ++ exec_constraints = repository_ctx.attr.exec_constraints, ++ ) + repository_ctx.file("BUILD", executable = False, content = """ + toolchain( + name = "nixpkgs_sh_posix_toolchain", + toolchain = "@{workspace}//:nixpkgs_sh_posix", + toolchain_type = "@rules_sh//sh/posix:toolchain_type", +- exec_compatible_with = [ +- "@platforms//cpu:x86_64", +- "@platforms//os:{os}", +- "@io_tweag_rules_nixpkgs//nixpkgs/constraints:support_nix", +- ], ++ exec_compatible_with = {exec_constraints}, + # Leaving the target constraints empty matter for cross-compilation. + # See Note [Target constraints for POSIX tools] + target_compatible_with = [], + ) + """.format( + workspace = repository_ctx.attr.workspace, +- os = {"darwin": "osx"}.get(cpu, "linux"), ++ exec_constraints = exec_constraints, + )) + + _nixpkgs_sh_posix_toolchain = repository_rule( + _nixpkgs_sh_posix_toolchain_impl, + attrs = { + "workspace": attr.string(), ++ "exec_constraints": attr.string_list(), + }, + ) + + def nixpkgs_sh_posix_configure( + name = "nixpkgs_sh_posix_config", + packages = ["stdenv.initialPath"], ++ exec_constraints = None, + **kwargs): + """Create a POSIX toolchain from nixpkgs. + +@@ -1387,6 +1393,7 @@ def nixpkgs_sh_posix_configure( + Args: + name: Name prefix for the generated repositories. + packages: List of Nix attribute paths to draw Unix tools from. ++ exec_constraints: Constraints for the execution platform. + nix_file_deps: See nixpkgs_package. + repositories: See nixpkgs_package. + repository: See nixpkgs_package. +@@ -1396,6 +1403,7 @@ def nixpkgs_sh_posix_configure( + nixpkgs_sh_posix_config( + name = name, + packages = packages, ++ exec_constraints = exec_constraints, + **kwargs + ) + +diff --git a/nixpkgs/private/constraints.bzl b/nixpkgs/private/constraints.bzl +index b35ec0b..fe353b7 100644 +--- a/nixpkgs/private/constraints.bzl ++++ b/nixpkgs/private/constraints.bzl +@@ -1,26 +1,66 @@ + load("@bazel_tools//tools/cpp:lib_cc_configure.bzl", "get_cpu_value") + +-def ensure_constraints(repository_ctx): ++def default_constraints(repository_ctx): ++ """Calculate the default CPU and OS constraints based on the host platform. ++ ++ Args: ++ repository_ctx: The repository context of the current repository rule. ++ ++ Returns: ++ A list containing the cpu and os constraints. ++ """ ++ cpu_value = get_cpu_value(repository_ctx) ++ cpu = { ++ "darwin": "@platforms//cpu:x86_64", ++ "darwin_arm64": "@platforms//cpu:arm64", ++ }.get(cpu_value, "@platforms//cpu:x86_64") ++ os = { ++ "darwin": "@platforms//os:osx", ++ "darwin_arm64": "@platforms//os:osx", ++ }.get(cpu_value, "@platforms//os:linux") ++ return [cpu, os] ++ ++def ensure_constraints_pure(default_constraints, target_constraints = [], exec_constraints = []): + """Build exec and target constraints for repository rules. + +- If these are user-provided, then they are passed through. Otherwise we build for x86_64 on the current OS. ++ If these are user-provided, then they are passed through. ++ Otherwise, use the provided default constraints. + In either case, exec_constraints always contain the support_nix constraint, so the toolchain can be rejected on non-Nix environments. + + Args: +- repository_ctx: The repository context of the current repository rule. ++ target_constraints: optional, User provided target_constraints. ++ exec_constraints: optional, User provided exec_constraints. ++ default_constraints: Fall-back constraints. + + Returns: + exec_constraints, The generated list of exec constraints + target_constraints, The generated list of target constraints + """ +- cpu = get_cpu_value(repository_ctx) +- os = {"darwin": "osx"}.get(cpu, "linux") +- if not repository_ctx.attr.target_constraints and not repository_ctx.attr.exec_constraints: +- target_constraints = ["@platforms//cpu:x86_64"] +- target_constraints.append("@platforms//os:{}".format(os)) ++ if not target_constraints and not exec_constraints: ++ target_constraints = default_constraints + exec_constraints = target_constraints + else: +- target_constraints = list(repository_ctx.attr.target_constraints) +- exec_constraints = list(repository_ctx.attr.exec_constraints) ++ target_constraints = list(target_constraints) ++ exec_constraints = list(exec_constraints) + exec_constraints.append("@io_tweag_rules_nixpkgs//nixpkgs/constraints:support_nix") + return exec_constraints, target_constraints ++ ++def ensure_constraints(repository_ctx): ++ """Build exec and target constraints for repository rules. ++ ++ If these are user-provided, then they are passed through. ++ Otherwise we build for the current CPU on the current OS, one of darwin-x86_64, darwin-arm64, or the default linux-x86_64. ++ In either case, exec_constraints always contain the support_nix constraint, so the toolchain can be rejected on non-Nix environments. ++ ++ Args: ++ repository_ctx: The repository context of the current repository rule. ++ ++ Returns: ++ exec_constraints, The generated list of exec constraints ++ target_constraints, The generated list of target constraints ++ """ ++ return ensure_constraints_pure( ++ default_constraints = default_constraints(repository_ctx), ++ target_constraints = repository_ctx.attr.target_constraints, ++ exec_constraints = repository_ctx.attr.exec_constraints, ++ ) +diff --git a/nixpkgs/toolchains/go.bzl b/nixpkgs/toolchains/go.bzl +index 0384a64..5b9f168 100644 +--- a/nixpkgs/toolchains/go.bzl ++++ b/nixpkgs/toolchains/go.bzl +@@ -8,7 +8,6 @@ dependencies on rules_go for those who don't need go toolchain. + """ + + load("//nixpkgs:nixpkgs.bzl", "nixpkgs_package") +-load("@bazel_tools//tools/cpp:lib_cc_configure.bzl", "get_cpu_value") + load("@io_bazel_rules_go//go/private:platforms.bzl", "PLATFORMS") + + def _detect_host_platform(ctx): +@@ -150,7 +149,6 @@ declare_toolchains("{goos}", "{goarch}") + """ + + def _nixpkgs_go_toolchain_impl(repository_ctx): +- cpu = get_cpu_value(repository_ctx) + goos, goarch = _detect_host_platform(repository_ctx) + content = go_toolchain_func.format( + sdk_repo = repository_ctx.attr.sdk_repo, diff --git a/compatibility/.bazelrc b/compatibility/.bazelrc index 52a39b859fdd..ad7b5b1e40ee 100644 --- a/compatibility/.bazelrc +++ b/compatibility/.bazelrc @@ -97,8 +97,8 @@ build:linux --action_env=LOCALE_ARCHIVE build:windows --action_env=JAVA_HOME # Tell bazel to use the nixpkgs Haskell toolchain on Linux and Darwin -build:linux --host_platform=@rules_haskell//haskell/platforms:linux_x86_64_nixpkgs -build:darwin --host_platform=@rules_haskell//haskell/platforms:darwin_x86_64_nixpkgs +build:linux --host_platform=@io_tweag_rules_nixpkgs//nixpkgs/platforms:host +build:darwin --host_platform=@io_tweag_rules_nixpkgs//nixpkgs/platforms:host # and GHC's gcc on Windows build:windows --crosstool_top=@rules_haskell_ghc_windows_amd64//:cc_toolchain diff --git a/compatibility/WORKSPACE b/compatibility/WORKSPACE index 961736a4bac4..88d31b2afac3 100644 --- a/compatibility/WORKSPACE +++ b/compatibility/WORKSPACE @@ -214,7 +214,7 @@ nixpkgs_package( nixpkgs_package( name = "node_nix", - attribute_path = "nodejsNested", + attribute_path = "nodejs14Nested", build_file_content = 'exports_files(glob(["node_nix/**"]))', fail_not_supported = False, nix_file = "@daml//nix:bazel.nix", diff --git a/daml-assistant/integration-tests/BUILD.bazel b/daml-assistant/integration-tests/BUILD.bazel index 6d11b215b82e..59f77cdd7efa 100644 --- a/daml-assistant/integration-tests/BUILD.bazel +++ b/daml-assistant/integration-tests/BUILD.bazel @@ -1,7 +1,7 @@ # Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 load("//bazel_tools:haskell.bzl", "da_haskell_library", "da_haskell_test") -load("@os_info//:os_info.bzl", "is_windows") +load("@os_info//:os_info.bzl", "is_darwin_arm64", "is_windows") load("@build_environment//:configuration.bzl", "mvn_version") genrule( @@ -199,7 +199,9 @@ genrule( "@nodejs//:node_bin", "@nodejs//:npm_bin", ], -) if not is_windows else None + # Broken on M1 due to puppeteer failing to install Chromium. + # See https://github.com/digital-asset/daml/pull/13250. +) if not (is_darwin_arm64 or is_windows) else None da_haskell_library( name = "create-daml-app-tests-lib", @@ -234,7 +236,7 @@ da_haskell_library( "//libs-haskell/da-hs-base", "//libs-haskell/test-utils", ], -) if not is_windows else None +) if not (is_darwin_arm64 or is_windows) else None da_haskell_test( name = "create-daml-app-tests-proj-name", @@ -255,7 +257,8 @@ da_haskell_test( flaky = True, # npm/jest/puppeteer can be flaky hackage_deps = ["base"], main_function = "DA.Daml.Assistant.CreateDamlAppTestsMain.main", - # Exclusive until we stop hardcoding port numbers in index.test.ts - tags = ["exclusive"], + tags = + # Exclusive until we stop hardcoding port numbers in index.test.ts + ["exclusive"], deps = [":create-daml-app-tests-lib"], -) if not is_windows else None +) if not (is_darwin_arm64 or is_windows) else None diff --git a/deps.bzl b/deps.bzl index f57039610dea..0fd53714eef4 100644 --- a/deps.bzl +++ b/deps.bzl @@ -45,9 +45,11 @@ rules_haskell_patches = [ "@com_github_digital_asset_daml//bazel_tools:haskell-rts-docs.patch", # This should be upstreamed "@com_github_digital_asset_daml//bazel_tools:haskell-ghc-includes.patch", + # This should be upstreamed + "@com_github_digital_asset_daml//bazel_tools:haskell-arm-m1.patch", ] -rules_nixpkgs_version = "81f61c4b5afcf50665b7073f7fce4c1755b4b9a3" -rules_nixpkgs_sha256 = "33fd540d0283cf9956d0a5a640acb1430c81539a84069114beaf9640c96d221a" +rules_nixpkgs_version = "b39b20edc4637032bc65f6a93af888463027767c" +rules_nixpkgs_sha256 = "69bbc7aceaeab20693ae8bdc46b7d7a208ef3d3f1e5c295bef474d9b2e6aa39f" rules_nixpkgs_patches = [ # On CI and locally we observe occasional segmantation faults # of nix. A known issue since Nix 2.2.2 is that HTTP2 support @@ -56,6 +58,8 @@ rules_nixpkgs_patches = [ # reportedly solves the issue. See # https://github.com/NixOS/nix/issues/2733#issuecomment-518324335 "@com_github_digital_asset_daml//bazel_tools:nixpkgs-disable-http2.patch", + # This should be upstreamed + "@com_github_digital_asset_daml//bazel_tools:rules-nixpkgs-arm.patch", ] buildifier_version = "4.0.0" @@ -88,6 +92,9 @@ daml_cheat_sheet_sha256 = "eb022565a929a69d869f0ab0497f02d1a3eacb4dafdafa076a82e platforms_version = "0.0.3" platforms_sha256 = "15b66b5219c03f9e8db34c1ac89c458bb94bfe055186e5505d5c6f09cb38307f" +rules_sh_version = "47b4d823128f484ec1b06aa20349c4898216f486" +rules_sh_sha256 = "107d4312073d80a9977d3ccff236060d3906bda939fa2fbda4d724268c5b5383" + def daml_deps(): if "platforms" not in native.existing_rules(): http_archive( @@ -97,6 +104,14 @@ def daml_deps(): urls = ["https://github.com/bazelbuild/platforms/archive/{version}.tar.gz".format(version = platforms_version)], ) + if "rules_sh" not in native.existing_rules(): + http_archive( + name = "rules_sh", + strip_prefix = "rules_sh-%s" % rules_sh_version, + urls = ["https://github.com/tweag/rules_sh/archive/%s.tar.gz" % rules_sh_version], + sha256 = rules_sh_sha256, + ) + if "rules_haskell" not in native.existing_rules(): http_archive( name = "rules_haskell", diff --git a/nix/bazel-go-toolchain.nix b/nix/bazel-go-toolchain.nix new file mode 100644 index 000000000000..afa0054abb80 --- /dev/null +++ b/nix/bazel-go-toolchain.nix @@ -0,0 +1 @@ +(import ./bazel.nix {}).go diff --git a/nix/bazel.nix b/nix/bazel.nix index 76625889c03f..348fd86a9e39 100644 --- a/nix/bazel.nix +++ b/nix/bazel.nix @@ -59,14 +59,53 @@ let shared = rec { # We need to have a file in GOPATH that we can use as # root_file in go_wrap_sdk. - go = pkgs.go.overrideAttrs (oldAttrs: { - doCheck = false; - postFixup = ''touch $out/share/go/ROOT''; - }); + go = pkgs.buildEnv { + name = "bazel-go-toolchain"; + paths = [ + pkgs.go + ]; + postBuild = '' + touch $out/ROOT + ln -s $out/share/go/{api,doc,lib,misc,pkg,src} $out/ + ''; + }; ghcPkgs = pkgs.haskell.packages.native-bignum.ghc902; - ghc = ghcPkgs.ghc; + ghc = + if system == "aarch64-darwin" then + pkgs.runCommand "ghc-aarch64-symlinks" { buildInputs = [ pkgs.makeWrapper ]; } '' + mkdir -p $out/bin + for tool in \ + ghc-9.0.2 \ + ghc-pkg \ + ghc-pkg-9.0.2 \ + ghci \ + ghci-9.0.2 \ + haddock \ + hp2ps \ + hpc \ + runghc-9.0.2 \ + runhaskell + do + ln -s ${ghcPkgs.ghc}/bin/$tool $out/bin/$tool + done; + mkdir -p $out/lib + ln -s ${ghcPkgs.ghc}/lib/ghc-9.0.2 $out/lib/ghc-9.0.2 + makeWrapper ${ghcPkgs.ghc}/bin/ghc $out/bin/ghc \ + --set CODESIGN_ALLOCATE ${pkgs.darwin.cctools}/bin/codesign_allocate \ + --prefix PATH : ${pkgs.llvmPackages_12.clang}/bin:${pkgs.llvmPackages_12.llvm}/bin + makeWrapper ${ghcPkgs.ghc}/bin/runghc $out/bin/runghc \ + --set CODESIGN_ALLOCATE ${pkgs.darwin.cctools}/bin/codesign_allocate \ + --prefix PATH : ${pkgs.llvmPackages_12.clang}/bin:${pkgs.llvmPackages_12.llvm}/bin + makeWrapper ${ghcPkgs.ghc}/bin/hsc2hs $out/bin/hsc2hs \ + --set CODESIGN_ALLOCATE ${pkgs.darwin.cctools}/bin/codesign_allocate \ + --prefix PATH : ${pkgs.llvmPackages_12.clang}/bin:${pkgs.llvmPackages_12.llvm}/bin + '' + else + ghcPkgs.ghc; + + # Deliberately not taken from ghcPkgs. This is a fully # static executable so it doesn’t pull in another GHC # and upstream nixpkgs does not cache packages for @@ -81,6 +120,7 @@ let shared = rec { # rules_nodejs expects nodejs in a subdirectory of a repository rule. # We use a linkFarm to fulfill this requirement. nodejsNested = pkgs.linkFarm "nodejs" [ { name = "node_nix"; path = pkgs.nodejs; }]; + nodejs14Nested = pkgs.linkFarm "nodejs" [ { name = "node_nix"; path = pkgs.nodejs14; }]; sass = pkgs.sass; @@ -145,7 +185,7 @@ let shared = rec { ; }; - bazel-cc-toolchain = pkgs.callPackage ./tools/bazel-cc-toolchain {}; + bazel-cc-toolchain = pkgs.callPackage ./tools/bazel-cc-toolchain { sigtool = pkgs.darwin.sigtool; }; }; in shared // (if pkgs.stdenv.isLinux then { inherit (pkgs) diff --git a/nix/nixpkgs.nix b/nix/nixpkgs.nix index 4cad1d11401e..9e86c744b136 100644 --- a/nix/nixpkgs.nix +++ b/nix/nixpkgs.nix @@ -10,7 +10,8 @@ let # package overrides overrides = _: pkgs: rec { - nodejs = pkgs.nodejs-14_x; + nodejs = pkgs.nodejs-16_x; + nodejs14 = pkgs.nodejs-14_x; ephemeralpg = pkgs.ephemeralpg.overrideAttrs(oldAttrs: { installPhase = '' mkdir -p $out @@ -37,6 +38,18 @@ let ./bazel-retry-cache.patch ]; }); + haskell = pkgs.haskell // { + compiler = pkgs.haskell.compiler // { + ghc902 = + if system == "aarch64-darwin" then + pkgs.haskell.compiler.ghc902.override(oldAttrs: { + buildTargetLlvmPackages = pkgs.llvmPackages_12; + llvmPackages = pkgs.llvmPackages_12; + }) + else + pkgs.haskell.compiler.ghc902; + }; + }; }; nixpkgs = import src { diff --git a/nix/system.nix b/nix/system.nix index 9b56795986c9..d81e537829d6 100644 --- a/nix/system.nix +++ b/nix/system.nix @@ -1 +1 @@ -if builtins.currentSystem == "aarch64-darwin" then "x86_64-darwin" else builtins.currentSystem +builtins.currentSystem diff --git a/nix/tools/bazel-cc-toolchain/default.nix b/nix/tools/bazel-cc-toolchain/default.nix index 0fa1d6ffb1f1..44fb6a9302c7 100644 --- a/nix/tools/bazel-cc-toolchain/default.nix +++ b/nix/tools/bazel-cc-toolchain/default.nix @@ -1,70 +1,60 @@ { stdenv , binutils +, bintools , buildEnv , darwin -, llvmPackages_7 +, llvmPackages_12 , makeWrapper +, wrapCCWith , overrideCC , runCommand +, writeTextFile +, sigtool }: # XXX On Darwin, workaround # https://github.com/NixOS/nixpkgs/issues/42059. See also # https://github.com/NixOS/nixpkgs/pull/41589. -let cc-darwin = - with darwin.apple_sdk.frameworks; - # Note (MK): For now we pin to clang 7 since newer versions fail to build abseil. - let stdenv = llvmPackages_7.stdenv; - in - runCommand "cc-wrapper-bazel" - { - buildInputs = [ stdenv.cc makeWrapper ]; - } - '' - mkdir -p $out/bin +let + postLinkSignHook = + writeTextFile { + name = "post-link-sign-hook"; + executable = true; - # Copy the content of pkgs.stdenv.cc - for i in ${stdenv.cc}/bin/* - do - ln -sf $i $out/bin - done + text = '' + CODESIGN_ALLOCATE=${darwin.cctools}/bin/codesign_allocate \ + ${sigtool}/bin/codesign -f -s - "$linkerOutput" + ''; + }; + darwinBinutils = darwin.binutils.override { inherit postLinkSignHook; }; + cc-darwin = + wrapCCWith rec { + cc = llvmPackages_12.clang; + bintools = darwinBinutils; + extraBuildCommands = with darwin.apple_sdk.frameworks; '' + echo "-Wno-unused-command-line-argument" >> $out/nix-support/cc-cflags + echo "-Wno-elaborated-enum-base" >> $out/nix-support/cc-cflags + echo "-mmacosx-version-min=${cc.darwinMinVersion}" >> $out/nix-support/cc-cflags + echo "-isystem ${llvmPackages_12.libcxx.dev}/include/c++/v1" >> $out/nix-support/cc-cflags + echo "-isystem ${llvmPackages_12.clang-unwrapped.lib}/lib/clang/${cc.version}/include" >> $out/nix-support/cc-cflags + echo "-F${CoreFoundation}/Library/Frameworks" >> $out/nix-support/cc-cflags + echo "-F${CoreServices}/Library/Frameworks" >> $out/nix-support/cc-cflags + echo "-F${Security}/Library/Frameworks" >> $out/nix-support/cc-cflags + echo "-F${Foundation}/Library/Frameworks" >> $out/nix-support/cc-cflags + echo "-L${llvmPackages_12.libcxx}/lib" >> $out/nix-support/cc-cflags + echo "-L${llvmPackages_12.libcxxabi}/lib" >> $out/nix-support/cc-cflags + echo "-L${darwin.libobjc}/lib" >> $out/nix-support/cc-cflags + ''; + }; - # Override cc - rm $out/bin/cc $out/bin/clang $out/bin/clang++ - - makeWrapper ${stdenv.cc}/bin/cc $out/bin/cc \ - --add-flags "-Wno-unused-command-line-argument \ - -mmacosx-version-min=10.14 \ - -isystem ${llvmPackages_7.libcxx}/include/c++/v1 \ - -F${CoreFoundation}/Library/Frameworks \ - -F${CoreServices}/Library/Frameworks \ - -F${Security}/Library/Frameworks \ - -F${Foundation}/Library/Frameworks \ - -L${llvmPackages_7.libcxx}/lib \ - -L${darwin.libobjc}/lib" - ''; - - cc-linux = runCommand "cc-wrapper-bazel" { - buildInputs = [ makeWrapper ]; - } - '' - mkdir -p $out/bin - - # Copy the content of pkgs.stdenv.cc - for i in ${stdenv.cc}/bin/* - do - ln -sf $i $out/bin - done - - # Override gcc - rm $out/bin/cc $out/bin/gcc $out/bin/g++ - - # We disable the fortify hardening as it causes issues with some - # packages built with bazel that set these flags themselves. - makeWrapper ${stdenv.cc}/bin/cc $out/bin/cc \ - --set hardeningDisable fortify - ''; + cc-linux = + wrapCCWith { + cc = stdenv.cc.overrideAttrs (oldAttrs: { + hardeningUnsupportedFlags = + ["fortify"] ++ oldAttrs.hardeningUnsupportedFlags or []; + }); + }; customStdenv = if stdenv.isDarwin @@ -73,5 +63,6 @@ let cc-darwin = in buildEnv { name = "bazel-cc-toolchain"; - paths = [ customStdenv.cc ] ++ (if stdenv.isDarwin then [ darwin.binutils ] else [ binutils ]); + paths = [ customStdenv.cc ] ++ (if stdenv.isDarwin then [ darwinBinutils ] else [ binutils ]); + ignoreCollisions = true; }