ocra icon indicating copy to clipboard operation
ocra copied to clipboard

Possible error: No such file or directory @ rb_sysopen - C:/home/x/programming/ruby/src/roebe/bin/fiber.so (Errno::ENOENT)

Open rubyFeedback opened this issue 2 years ago • 1 comments

I am trying to turn one of my commandline executable, in ruby, via ocra on windows into a standalone application.

The project's name is roebe and it is also on rubygems.org.

I start in the directory:

C:\home\x\programming\ruby\src\roebe\bin>

Ok. Next thing I do is this:

ocra roebe

That file exists under bin/ and I am in that directory. You can check that it is also part of the roebe gem as-is by the way, so the file 100% exists.

Some output follow next after doing "ocra roebe":

=== Loading script to check dependencies
=== Detected gem error_highlight-0.3.0 (loaded, files)
===     0 files, 0 bytes
=== Detected gem did_you_mean-1.6.1 (loaded, files)
===     0 files, 0 bytes
=== Detected gem ocra-1.3.11 (loaded, files)
===     5 files, 271800 bytes
=== Detected gem yaml-0.2.0 (loaded, files)
===     0 files, 0 bytes
=== Detected gem stringio-3.0.1 (loaded, files)
===     0 files, 0 bytes
=== Detected gem psych-4.0.3 (loaded, files)
===     0 files, 0 bytes
=== Detected gem strscan-3.0.1 (loaded, files)
===     0 files, 0 bytes
=== Detected gem forwardable-1.3.2 (loaded, files)
===     0 files, 0 bytes
=== Detected gem fileutils-1.6.0 (loaded, files)
===     0 files, 0 bytes
=== Detected gem date-3.2.2 (loaded, files)
===     0 files, 0 bytes
=== Detected gem time-0.2.0 (loaded, files)
===     0 files, 0 bytes
=== Including 61 encoding support files (3763712 bytes, use --no-enc to exclude)
=== Building roebe.exe
=== Adding user-supplied source files

Ok so far so fine.

Now comes the error:

C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1188:in `initialize': No such file or directory @ rb_sysopen - C:/home/x/programming/ruby/src/roebe/bin/fiber.so (Errno::ENOENT)
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1188:in `open'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1188:in `createfile'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:898:in `block (2 levels) in build_exe'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:882:in `each'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:882:in `block in build_exe'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1087:in `block in initialize'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1071:in `open'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1071:in `initialize'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:879:in `new'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:879:in `build_exe'
    from C:/ruby/lib/ruby/gems/3.1.0/gems/ocra-1.3.11/bin/ocra:1231:in `block in <top (required)>'

This is super confusing. Why would ocra look at a file called fiber.so in the CURRENT working directory? That is super-weird. Also, it should check whether such a file exists, and then gracefully exit or notify the user. Right now it seems to not even do a "File.exist?" check or something. But I don't know the internals well enough to comment. I just think it is odd that it tries to query fiber.so from the current working directory. I am in the bin/ directory of my own gem, why should any .so file be there? That makes no sense to me. Can it be that ocra is doing some wrong file query or path query and gets confused in the process?

rubyFeedback avatar Aug 15 '22 20:08 rubyFeedback

look at this

Vucius avatar Aug 29 '22 09:08 Vucius