Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raco distribute errors due to suspiciously long destination filename #4938

Open
gussmith23 opened this issue Feb 23, 2024 · 4 comments
Open

Comments

@gussmith23
Copy link

Thanks for all the work you all do!

What version of Racket are you using?
8.11 [cs]

What program did you run?

# Commands run:
  mkdir -p lakeroad/deps/lakeroad/
  raco exe -o lakeroad-single-solver bin/main.rkt
  raco distribute lakeroad/deps/lakeroad/ lakeroad-single-solver
  
copy-file: cannot open destination file
  source path: /home/runner/work/lakeroad/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroa
  destination path: /home/runner/work/lakeroad/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/lakeroad/lakeroad/deps/lakeroad/lib/plt/lakeroad-single-solver/exts/ert/r0/la
  system error: File name too long; errno=36
  context...:
   /usr/share/racket/collects/racket/file.rkt:114:2: loop
   [repeats [5](https://github.com/uwsampl/lakeroad/actions/runs/8014112275/job/21892203099#step:8:5)32 more times]
   /usr/share/racket/collects/compiler/distribute.rkt:42[6](https://github.com/uwsampl/lakeroad/actions/runs/8014112275/job/21892203099#step:8:6):2[8](https://github.com/uwsampl/lakeroad/actions/runs/8014112275/job/21892203099#step:8:8): loop
   [repeats 10 more times]
   /usr/share/racket/collects/compiler/distribute.rkt:3[9](https://github.com/uwsampl/lakeroad/actions/runs/8014112275/job/21892203099#step:8:9)6:2: copy-and-patch-binaries
   /usr/share/racket/collects/compiler/distribute.rkt:[20](https://github.com/uwsampl/lakeroad/actions/runs/8014112275/job/21892203099#step:8:21):2: assemble-distribution
   body of "/usr/share/racket/pkgs/compiler-lib/compiler/commands/exe-dir.rkt"
   /usr/share/racket/collects/raco/raco.rkt:41:0
   body of "/usr/share/racket/collects/raco/raco.rkt"
   body of "/usr/share/racket/collects/raco/main.rkt"

What should have happened?

raco distribute should have exited without error

If you got an error message, please include it here.

See above.

Please include any other relevant details

Replicates on Mac and Ubuntu

@gussmith23
Copy link
Author

Strangely, even after erroring, the binary that's produced (at least on my Mac) works at least somewhat as expected.

@sorawee
Copy link
Collaborator

sorawee commented Feb 23, 2024

Here's a minimal test:

  1. Create a file racket/utils.rkt with the following content
#lang racket
(require racket/runtime-path)
(define-runtime-path PROJ_DIR "..")
  1. In the current directory, run
$ raco exe -o exec racket/utils.rkt
$ raco distribute something exec

This produces the above error:

copy-file: cannot open destination file
  source path: /Users/sorawee/projects/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/Racket.framework/Versions/8.12.0.9_CS/boot/petite.boot
  destination path: /Users/sorawee/projects/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/plt/exec/exts/ert/r0/tmp/something/lib/Racket.framework/Versions/8.12.0.9_CS/boot/petite.boot
  system error: File name too long; errno=63

which kinda makes sense that there's gonna be an issue. I guess a smarter distributor may be able to avoid the problem? But at the very least I expect that if the above usage is not supported, it should provide a clearer error.

@gussmith23
Copy link
Author

Thanks @sorawee!

FWIW, your offline suggestion of making the output location of distribute somewhere in ../ works, though now i get a new errror from rosette:

copy-directory/files: encountered path that is neither file nor directory
  path: /Users/gus/rosette/bin/boolector
  context...:
   /Applications/Racket v8.9/collects/racket/file.rkt:114:2: loop
   /Applications/Racket v8.9/collects/compiler/distribute.rkt:426:28: loop
   [repeats 63 more times]
   /Applications/Racket v8.9/collects/compiler/distribute.rkt:396:2: copy-and-patch-binaries
   /Applications/Racket v8.9/collects/compiler/distribute.rkt:20:2: assemble-distribution
   body of "/Applications/Racket v8.9/share/pkgs/compiler-lib/compiler/commands/exe-dir.rkt"
   /Applications/Racket v8.9/collects/raco/raco.rkt:41:0
   body of "/Applications/Racket v8.9/collects/raco/raco.rkt"
   body of "/Applications/Racket v8.9/collects/raco/main.rkt"

this is probably unrelated to the issue at hand though

@sorawee
Copy link
Collaborator

sorawee commented Feb 23, 2024

You need to install the executables of all solvers (that you require) to /Users/gus/rosette/bin. Arguably, Rosette should not mandate you to do that (since it's actually possible to set up a solver at a different path), but this is how Rosette currently works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants