Skip to content

brew test fails with Invalid cross-device link #20114

@abitrolly

Description

@abitrolly

brew doctor output

--

Verification

  • My "brew doctor output" above says Your system is ready to brew. and am still able to reproduce my issue.
  • I ran brew update twice and am still able to reproduce my issue.
  • This issue's title and/or description do not reference a single formula e.g. brew install wget. If they do, open an issue at https://github.com/Homebrew/homebrew-core/issues/new/choose instead.

brew config output

--

What were you trying to do (and why)?

Test my fixes for PR.

➜  ~ brew tests --changed

What happened (include all command output)?

Introduced by e9f55a8.

~ brew tests --changed
Randomized with seed 17175
1 process for 1 spec, ~ 1 spec per process
FFFFF

Failures:

  1) Homebrew::FormulaCreator gets name from generic tarball URL
     Failure/Error: File.link s, d

     Errno::EXDEV:
       Invalid cross-device link @ rb_file_s_link - (/home/anatoli/.cache/Homebrew/api/cask.jws.json, /var/tmp/homebrew-tests-20250615-121104-8zhyso/cache/api/cask.jws.json)
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/3.4.4/lib/ruby/3.4.0/fileutils.rb:522:in 'File.link'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/3.4.4/lib/ruby/3.4.0/fileutils.rb:522:in 'block in FileUtils.ln'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/3.4.4/lib/ruby/3.4.0/fileutils.rb:2487:in 'FileUtils.fu_each_src_dest0'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/3.4.4/lib/ruby/3.4.0/fileutils.rb:520:in 'FileUtils.ln'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/test/spec_helper.rb:255:in 'block (3 levels) in <top (required)>'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/test/spec_helper.rb:254:in 'Array#each'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/test/spec_helper.rb:254:in 'block (2 levels) in <top (required)>'
     # /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/bundle/ruby/3.4.0/gems/rspec-core-3.13.3/lib/rspec/core/example.rb:457:in 'BasicObject#instance_exec'
...

https://ruby-doc.org/core-2.5.5/File.html#method-c-link creates hardlink, and on Linux, the /tmp dir uses memory based tmpfs, so hardlinking fails.

What did you expect to happen?

Use symbolic link instead?

Step-by-step reproduction instructions (by running brew commands)

--

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions