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

Invalid option: -v when linking with libcrypto/libssl #12061

Closed
Blacksmoke16 opened this issue May 13, 2022 · 8 comments · Fixed by #12094
Closed

Invalid option: -v when linking with libcrypto/libssl #12061

Blacksmoke16 opened this issue May 13, 2022 · 8 comments · Fixed by #12094

Comments

@Blacksmoke16
Copy link
Member

Blacksmoke16 commented May 13, 2022

require "openssl"

pp OpenSSL::SSL::Context::Server.new

crystal i test.cr.

I looked into this a bit, and am pretty sure it's because of the Link annotation having -v within it: https://github.com/crystal-lang/crystal/blob/master/src/openssl/lib_crypto.cr#L37.

Stacktrace
Invalid option: -v (OptionParser::InvalidOption)
from /home/george/dev/git/crystal/src/option_parser.cr:128:45 in '->'
from /home/george/dev/git/crystal/src/option_parser.cr:494:27 in 'parse'
from /home/george/dev/git/crystal/src/option_parser.cr:116:5 in 'parse'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/context.cr:368:5 in 'loader'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/context.cr:380:5 in 'c_function'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1883:17 in 'compile_lib_call'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1764:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:578:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1219:5 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1979:7 in 'create_compiled_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1777:22 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1979:7 in 'create_compiled_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1777:22 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:447:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1399:5 in 'get_const_index_and_compiled_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2486:27 in 'initialize_const_if_needed'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1371:17 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2144:9 in 'compile_call_args'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1773:5 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:1399:5 in 'get_const_index_and_compiled_def'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:680:31 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2904:5 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2994:5 in 'discard_value'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2852:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def:closure_owner'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2952:5 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def:closure_owner'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:2952:5 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
from /home/george/dev/git/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/compiler.cr:165:5 in 'compile'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/interpreter.cr:207:5 in 'interpret'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/repl.cr:146:5 in 'interpret'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/repl.cr:150:5 in 'interpret_and_exit_on_error'
from /home/george/dev/git/crystal/src/compiler/crystal/interpreter/repl.cr:121:5 in 'run_file'
from /home/george/dev/git/crystal/src/compiler/crystal/command/repl.cr:17:7 in 'repl'
from /home/george/dev/git/crystal/src/compiler/crystal/command.cr:100:7 in 'run'
from /home/george/dev/git/crystal/src/compiler/crystal/command.cr:51:5 in 'run'
from /home/george/dev/git/crystal/src/compiler/crystal/command.cr:50:3 in 'run'
from /home/george/dev/git/crystal/src/compiler/crystal.cr:11:1 in '__crystal_main'
from /home/george/dev/git/crystal/src/crystal/main.cr:115:5 in 'main_user_code'
from /home/george/dev/git/crystal/src/crystal/main.cr:101:7 in 'main'
from /home/george/dev/git/crystal/src/crystal/main.cr:127:3 in 'main'
from /usr/lib/libc.so.6 in '??'
from /usr/lib/libc.so.6 in '__libc_start_main'
from /home/george/dev/git/crystal/.build/crystal in '_start'
from ???

EDIT: libssl also has a -v flag.

@Blacksmoke16 Blacksmoke16 changed the title Invalid option: -v when linking with libcrypto Invalid option: -v when linking with libcrypto/libssl May 13, 2022
@straight-shoota
Copy link
Member

It's probably because shell expansion is not yet implemented for ldflags on the interpreter's loader.

@mdwagner
Copy link
Contributor

mdwagner commented Jun 6, 2022

@Blacksmoke16 can you try your test code again but using the PR code above?

@Blacksmoke16
Copy link
Member Author

@mdwagner Probably easier if you did it given you already have everything built. The test code is just those two lines.

@mdwagner
Copy link
Contributor

mdwagner commented Jun 6, 2022

I would, but my machine is having some problems with openssl in general. Just thought I'd ask since you originally posted. I'll try to figure it out.

@Blacksmoke16
Copy link
Member Author

@mdwagner Applying your change resolves the issue. At least on my system; can't speak for other OS/arch if those would be any diff.

@mdwagner
Copy link
Contributor

mdwagner commented Jun 7, 2022

Thanks @Blacksmoke16. I was able to make a spec that essentially does exactly what your test code does and got that to pass.

@Vici37
Copy link

Vici37 commented Jun 14, 2022

I can verify from I3oris/ic#5 that merging this fix into ic resolved this issue for me too (Ubuntu/x86_64)

@zw963
Copy link
Contributor

zw963 commented Jun 18, 2022

Following is backtrace when i run crystal -i src/some_file.cr on one very small kemal web app.

Invalid option: -v (OptionParser::InvalidOption)
  from Crystal/crystal/src/option_parser.cr:128:45 in '->'
  from Crystal/crystal/src/option_parser.cr:494:27 in 'parse'
  from Crystal/crystal/src/option_parser.cr:116:5 in 'parse'
  from Crystal/crystal/src/compiler/crystal/interpreter/context.cr:365:1 in 'loader'
  from Crystal/crystal/src/compiler/crystal/interpreter/context.cr:378:5 in 'c_function'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1883:17 in 'compile_lib_call'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1764:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:578:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1219:5 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1979:7 in 'create_compiled_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1777:22 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1979:7 in 'create_compiled_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1777:22 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:447:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1399:5 in 'get_const_index_and_compiled_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2486:27 in 'initialize_const_if_needed'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1371:9 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2990:5 in 'request_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2144:9 in 'compile_call_args'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1773:5 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:1399:5 in 'get_const_index_and_compiled_def'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:680:31 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2904:5 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:3000:5 in 'accept_with_wants_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2994:5 in 'discard_value'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2852:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def:closure_owner'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2952:5 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:234:5 in 'compile_def:closure_owner'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:2952:5 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:566:7 in 'visit'
  from Crystal/crystal/src/compiler/crystal/syntax/visitor.cr:27:12 in 'accept'
  from Crystal/crystal/src/compiler/crystal/interpreter/compiler.cr:165:5 in 'compile'
  from Crystal/crystal/src/compiler/crystal/interpreter/interpreter.cr:207:5 in 'interpret'
  from Crystal/crystal/src/compiler/crystal/interpreter/repl.cr:146:5 in 'interpret'
  from Crystal/crystal/src/compiler/crystal/interpreter/repl.cr:150:5 in 'interpret_and_exit_on_error'
  from Crystal/crystal/src/compiler/crystal/interpreter/repl.cr:121:5 in 'run_file'
  from Crystal/crystal/src/compiler/crystal/command/repl.cr:17:7 in 'repl'
  from Crystal/crystal/src/compiler/crystal/command.cr:100:7 in 'run'
  from Crystal/crystal/src/compiler/crystal/command.cr:51:5 in 'run'
  from Crystal/crystal/src/compiler/crystal/command.cr:50:3 in 'run'
  from Crystal/crystal/src/compiler/crystal.cr:11:1 in '__crystal_main'
  from Crystal/crystal/src/crystal/main.cr:115:5 in 'main_user_code'
  from Crystal/crystal/src/crystal/main.cr:101:7 in 'main'
  from Crystal/crystal/src/crystal/main.cr:127:3 in 'main'
  from /usr/lib/libc.so.6 in '??'
  from /usr/lib/libc.so.6 in '__libc_start_main'
  from ../sysdeps/x86_64/start.S:117 in '_start'
  from ???

Crystal 1.5.0-dev [0123976] (2022-06-09)

LLVM: 13.0.1
Default target: x86_64-pc-linux-gnu on Arch

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

Successfully merging a pull request may close this issue.

5 participants