riscv-software-src / homebrew-riscv

homebrew (macOS) packages for RISC-V toolchain
https://riscv.org
304 stars 50 forks source link

Intel Mac: Install riscv-tools failed for Submodule newlib #126

Open Wei-Alwayers opened 4 months ago

Wei-Alwayers commented 4 months ago

Device: Intel Mac OS: Ventura 13.6.4

brew install riscv-tools

brew install riscv-tools Running brew update --auto-update... ==> Fetching dependencies for riscv-software-src/riscv/riscv-tools: riscv-software-src/riscv/riscv-gnu-toolchain, riscv-software-src/riscv/riscv-isa-sim and riscv-software-src/riscv/riscv-pk ==> Fetching riscv-software-src/riscv/riscv-gnu-toolchain ==> Cloning https://github.com/riscv/riscv-gnu-toolchain.git ...... ==> Installing riscv-tools from riscv-software-src/riscv ==> Installing dependencies for riscv-software-src/riscv/riscv-tools: riscv-software-src/riscv/riscv-gnu-toolchain, riscv-software-src/riscv/riscv-isa-sim and riscv-software-src/riscv/riscv-pk ==> Installing riscv-software-src/riscv/riscv-tools dependency: riscv-softw ==> git submodule update --depth 1 --init --recursive newlib

git submodule update --depth 1 --init --recursive newlib

Submodule 'newlib' (https://sourceware.org/git/newlib-cygwin.git) registered for path 'newlib' Cloning into '/private/tmp/riscv-gnu-toolchain-20240420-38095-wdj58y/newlib'... error: Server does not allow request for unadvertised object 26f7004bf73c421c3fd5e5a6ccf470d05337b435 Fetched in submodule path 'newlib', but it did not contain 26f7004bf73c421c3fd5e5a6ccf470d05337b435. Direct fetching of that commit failed.

If reporting this issue please do so at (not Homebrew/brew or Homebrew/homebrew-core): https://github.com/riscv-software-src/homebrew-riscv/issues

escflee commented 4 months ago

Same. Are there any workarounds for this problem?

chuckb commented 3 months ago

Same here. I can do git clone --recursive https://github.com/riscv-collab/riscv-gnu-toolchain and it clones (newlib included).

Ok, here is a work-around. In the directory /usr/local/Homebrew/Library/Taps/riscv-software-src/homebrew-riscv, edit the file riscv-gnu-toolchain.rb. Find the line where the below comment appears, delete the three git lines as they appear, and replace with the following:

    # need to pull in needed submodules (now that they are disabled above)
    system "git", "submodule", "update", "--init", "newlib/"
    system "git", "submodule", "update", "--depth", "1", "--init", "newlib"
    system "git", "submodule", "update", "--init", "binutils/"
    system "git", "submodule", "update", "--depth", "1", "--init", "binutils"
    system "git", "submodule", "update", "--init", "gcc/"
    system "git", "submodule", "update", "--depth", "1", "--init", "gcc"

Now I have a built binary that runs, although the brew test riscv-tools fails. Still trying to figure out why.

Here is the test result:

$ brew test riscv-tools
==> Testing riscv-software-src/riscv/riscv-tools
==> /usr/local/opt/riscv-gnu-toolchain/bin/riscv64-unknown-elf-gcc /private/tmp/riscv-tools-test-20240524-10521-qsq861/hello.c
==> spike pk /private/tmp/riscv-tools-test-20240524-10521-qsq861/a.out
Error: riscv-software-src/riscv/riscv-tools: failed
An exception occurred within a child process:
  Minitest::Assertion: --- expected
+++ actual
@@ -1,2 +1 @@
-"bbl loader\r
-hello"
+"hello"

/usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.3.0/gems/minitest-5.23.1/lib/minitest/assertions.rb:183:in `assert'
/usr/local/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.3.0/gems/minitest-5.23.1/lib/minitest/assertions.rb:223:in `assert_equal'
/usr/local/Homebrew/Library/Taps/riscv-software-src/homebrew-riscv/riscv-tools.rb:27:in `block in <class:RiscvTools>'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2786:in `block (3 levels) in run_test'
/usr/local/Homebrew/Library/Homebrew/extend/kernel.rb:529:in `with_env'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2785:in `block (2 levels) in run_test'
/usr/local/Homebrew/Library/Homebrew/formula.rb:1189:in `with_logging'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2784:in `block in run_test'
/usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `block in run'
/usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `chdir'
/usr/local/Homebrew/Library/Homebrew/mktemp.rb:75:in `run'
/usr/local/Homebrew/Library/Homebrew/formula.rb:3095:in `mktemp'
/usr/local/Homebrew/Library/Homebrew/formula.rb:2778:in `run_test'
/usr/local/Homebrew/Library/Homebrew/test.rb:46:in `block in <main>'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.3.1/lib/ruby/3.3.0/timeout.rb:186:in `block in timeout'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.3.1/lib/ruby/3.3.0/timeout.rb:41:in `handle_timeout'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/3.3.1/lib/ruby/3.3.0/timeout.rb:195:in `timeout'
/usr/local/Homebrew/Library/Homebrew/test.rb:50:in `<main>'
sbeamer commented 5 days ago

I'm not able to reproduce the cloning issue, but it can be tricky to deal with these sorts of issues. Building from head appears stuck in general due to #127, so until that is fixed, it will be hard to confirm other build issues.