unisonweb / unison

A friendly programming language from the future
https://unison-lang.org
Other
5.65k stars 266 forks source link

Building on Raspberry Pi (armv7l) #3276

Open vitalydolgov opened 1 year ago

vitalydolgov commented 1 year ago

I have a problem building Unison for Raspberry Pi 4 (armv7l). Not sure if it's misconfiguration or ARM is not supported now.

$ git show
commit e2631205da043582b8dee1ab1d543cd79e9f2c6b (HEAD -> series/M4, tag: release/M4, origin/series/M4)
Merge: c3df31d46 088d27e04
Author: Arya Irani <arya.irani@unison.cloud>
Date:   Thu Jul 14 15:42:05 2022 -0400

    Merge tag 'dev/M4' into series/M4

    dev release
$ stack build --fast --test
/home/pi/Development/unison/parser-typechecker/unison-parser-typechecker.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/unison-core/unison-core1.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/unison-cli/unison-cli.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/unison-hashing-v2/unison-hashing-v2.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/unison-share-api/unison-share-api.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/codebase/unison-codebase.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/codebase-sqlite/unison-codebase-sqlite.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/codebase-sqlite-hashing-v2/unison-codebase-sqlite-hashing-v2.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/codebase-sync/unison-codebase-sync.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/core/unison-core.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/util/unison-util.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/util-serialization/unison-util-serialization.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/codebase2/util-term/unison-util-term.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-prelude/unison-prelude.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-sqlite/unison-sqlite.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-util-base32hex/unison-util-base32hex.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-util-base32hex-orphans-aeson/unison-util-base32hex-orphans-aeson.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-util-base32hex-orphans-sqlite/unison-util-base32hex-orphans-sqlite.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-util-relation/unison-util-relation.cabal was generated with a newer version of hpack,
please upgrade and try again.
/home/pi/Development/unison/lib/unison-pretty-printer/unison-pretty-printer.cabal was generated with a newer version of hpack,
please upgrade and try again.
No packages found in snapshot which provide a "unison" executable, which is a build-tool dependency of unison-cli
No packages found in snapshot which provide a "unison" executable, which is a build-tool dependency of unison-cli
[2 of 2] Compiling StackSetupShim   ( /home/pi/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /home/pi/.stack/setup-exe-src/setup-shim-mPHDZzAJ.o )
/tmp/ghc12533_0/ghc_6.s: Assembler messages:

/tmp/ghc12533_0/ghc_6.s:968:0: error:
     Error: selected processor does not support `movw r0,#537' in ARM mode
    |
968 |         movw    r0, #537
    | ^

/tmp/ghc12533_0/ghc_6.s:973:0: error:
     Error: selected processor does not support `movw r2,#329' in ARM mode
    |
973 |         movw    r2, #329
    | ^

/tmp/ghc12533_0/ghc_6.s:975:0: error:
     Error: selected processor does not support `movw r3,#297' in ARM mode
    |
975 |         movw    r3, #297
    | ^

/tmp/ghc12533_0/ghc_6.s:1365:0: error:
     Error: selected processor does not support `movw r0,#521' in ARM mode
     |
1365 |         movw    r0, #521
     | ^

/tmp/ghc12533_0/ghc_6.s:1370:0: error:
     Error: selected processor does not support `movw r2,#321' in ARM mode
     |
1370 |         movw    r2, #321
     | ^

/tmp/ghc12533_0/ghc_6.s:1372:0: error:
     Error: selected processor does not support `movw r3,#289' in ARM mode
     |
1372 |         movw    r3, #289
     | ^
`gcc' failed in phase `Assembler'. (Exit code: 1)

--  While building simple Setup.hs using:
      /home/pi/.stack/programs/arm-linux/ghc-8.10.7/bin/ghc-8.10.7 -rtsopts -threaded -clear-package-db -global-package-db -hide-all-packages -package base -main-is StackSetupShim.mainOverride -package Cabal-3.2.1.0 /home/pi/.stack/setup-exe-src/setup-mPHDZzAJ.hs /home/pi/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -o /home/pi/.stack/setup-exe-cache/arm-linux/tmp-Cabal-simple_mPHDZzAJ_3.2.1.0_ghc-8.10.7
    Process exited with code: ExitFailure 1
$ stack --version
2.3.3 arm
Compiled with:
- Cabal-3.0.1.0
- Glob-0.10.0
- StateVar-1.2
- aeson-1.4.7.1
- annotated-wl-pprint-0.7.0
- ansi-terminal-0.10.3
- ansi-wl-pprint-0.6.9
- array-0.5.4.0
- asn1-encoding-0.9.6
- asn1-parse-0.9.5
- asn1-types-0.3.4
- async-2.2.2
- attoparsec-0.13.2.4
- attoparsec-iso8601-1.0.1.0
- auto-update-0.1.6
- base-4.13.0.0
- base-compat-0.11.1
- base-compat-batteries-0.11.1
- base-orphans-0.8.2
- base16-bytestring-0.1.1.6
- base64-bytestring-1.0.0.3
- basement-0.0.11
- bifunctors-5.5.7
- binary-0.8.7.0
- bitarray-0.0.1.1
- blaze-builder-0.4.1.0
- blaze-html-0.9.1.2
- blaze-markup-0.8.2.5
- bytestring-0.10.10.0
- casa-client-0.0.1
- casa-types-0.0.1
- case-insensitive-1.2.1.0
- cereal-0.5.8.1
- clock-0.8
- colour-2.3.5
- comonad-5.0.6
- conduit-1.3.2
- conduit-extra-1.3.5
- connection-0.3.1
- constraints-0.11.2
- containers-0.6.2.1
- contravariant-1.5.2
- cookie-0.4.5
- cryptohash-sha256-0.11.101.0
- cryptonite-0.26
- cryptonite-conduit-0.2.2
- data-default-class-0.1.2.0
- deepseq-1.4.4.0
- digest-0.0.1.2
- directory-1.3.6.0
- distributive-0.6.2
- dlist-0.8.0.8
- easy-file-0.2.2
- echo-0.1.3
- ed25519-0.0.5.0
- either-5.0.1.1
- enclosed-exceptions-1.0.3
- exceptions-0.10.4
- extra-1.6.21
- fast-logger-3.0.1
- file-embed-0.0.12.0
- filelock-0.1.1.5
- filepath-1.4.2.1
- fsnotify-0.3.0.1
- generic-deriving-1.13.1
- ghc-boot-th-8.8.3
- ghc-prim-0.5.3
- hackage-security-0.6.0.1
- hashable-1.3.0.0
- hi-file-parser-0.1.0.0
- hinotify-0.4
- hourglass-0.2.12
- hpack-0.33.1
- hpc-0.6.0.3
- http-api-data-0.4.1.1
- http-client-0.6.4.1
- http-client-tls-0.3.5.3
- http-conduit-2.3.7.3
- http-download-0.2.0.0
- http-types-0.12.3
- infer-license-0.2.0
- integer-gmp-1.0.2.0
- integer-logarithms-1.0.3
- libyaml-0.1.2
- lifted-async-0.10.0.6
- lifted-base-0.2.3.12
- megaparsec-8.0.0
- memory-0.15.0
- microlens-0.4.11.2
- microlens-th-0.4.3.5
- mime-types-0.1.0.9
- monad-control-1.0.2.3
- monad-logger-0.3.32
- monad-loops-0.4.3
- mono-traversable-1.0.15.1
- mtl-2.2.2
- mustache-2.3.1
- neat-interpolation-0.3.2.6
- network-3.1.1.1
- network-uri-2.6.3.0
- old-locale-1.0.0.7
- old-time-1.1.0.3
- open-browser-0.2.1.0
- optparse-applicative-0.15.1.0
- pantry-0.4.0.2
- parsec-3.1.14.0
- parser-combinators-1.2.1
- path-0.7.0
- path-io-1.6.0
- path-pieces-0.2.1
- pem-0.2.4
- persistent-2.10.5.2
- persistent-sqlite-2.10.6.2
- persistent-template-2.8.2.3
- pretty-1.1.3.6
- primitive-0.7.0.1
- process-1.6.8.0
- profunctors-5.5.2
- project-template-0.2.0.1
- random-1.1
- regex-applicative-0.3.3.1
- regex-applicative-text-0.1.0.1
- resource-pool-0.2.3.2
- resourcet-1.2.4
- retry-0.8.1.2
- rio-0.1.15.1
- rio-orphans-0.1.1.0
- rio-prettyprint-0.1.0.0
- rts-1.0
- safe-0.3.18
- safe-exceptions-0.1.7.0
- scientific-0.3.6.2
- semigroupoids-5.3.4
- semigroups-0.19.1
- shelly-1.9.0
- silently-1.2.5.1
- socks-0.6.1
- split-0.2.3.4
- stm-2.5.0.0
- stm-chans-3.0.0.4
- streaming-commons-0.2.1.2
- syb-0.7.1
- tagged-0.8.6
- tar-0.5.1.1
- tar-conduit-0.3.2
- template-haskell-2.15.0.0
- temporary-1.3
- text-1.2.4.0
- text-metrics-0.3.0
- th-abstraction-0.3.2.0
- th-expand-syns-0.4.6.0
- th-lift-0.8.1
- th-lift-instances-0.1.16
- th-reify-many-0.1.9
- time-1.9.3
- time-compat-1.9.3
- tls-1.5.4
- transformers-0.5.6.2
- transformers-base-0.4.5.2
- transformers-compat-0.6.5
- type-equality-1
- typed-process-0.2.6.0
- unicode-transforms-0.3.6
- unix-2.7.2.2
- unix-compat-0.5.2
- unix-time-0.4.7
- unliftio-0.2.12.1
- unliftio-core-0.1.2.0
- unordered-containers-0.2.10.0
- uuid-types-1.0.3
- vector-0.12.1.2
- vector-algorithms-0.8.0.3
- x509-1.7.5
- x509-store-1.6.7
- x509-system-1.6.6
- x509-validation-1.6.11
- yaml-0.11.4.0
- zip-archive-0.4.1
- zlib-0.6.2.1

Warning: this is an unsupported build that may use different versions of
dependencies and GHC than the officially released binaries, and therefore may
not behave identically.  If you encounter problems, please try the latest
official build by running 'stack upgrade --force-download'.
$ opt --version
LLVM (http://llvm.org/):
  LLVM version 11.0.1

  Optimized build.
  Default target: armv6k-unknown-linux-gnueabihf
  Host CPU: cortex-a72
ceedubs commented 1 year ago

Thanks for reporting @vitalydolgov! This is definitely something that we'd like to support. Stack seems to have gotten a bit better at ARM builds recently; I wonder if there has been any improvement for Raspberry Pi. I'm not sure when someone will have more time to look into this, but we're definitely open to tweaking the build to work on ARM/Pi!

aryairani commented 2 weeks ago

@vitalydolgov I would try just starting over with a cleanly checked-out copy of unisonweb/unison, and the newest version of stack.

It looks from the hpack warnings like there were some source modifications before you built? If that's true, let us know what you needed to change to get that far, but also let us know what an unmodified clone does for you. At the same time, the actual build failure doesn't seem to be something wrong with the build tools, not something wrong with actually building Unison.

stack build --fast --test is the right command though. 👍