{"action":"created","issue":{"url":"https://api.github.com/repos/puma/puma/issues/1074","repository_url":"https://api.github.com/repos/puma/puma","labels_url":"https://api.github.com/repos/puma/puma/issues/1074/labels{/name}","comments_url":"https://api.github.com/repos/puma/puma/issues/1074/comments","events_url":"https://api.github.com/repos/puma/puma/issues/1074/events","html_url":"https://github.com/puma/puma/issues/1074","id":174814648,"number":1074,"title":"Errors in the case without libcrypto.so","user":{"login":"junaruga","id":121989,"avatar_url":"https://avatars.githubusercontent.com/u/121989?v=3","gravatar_id":"","url":"https://api.github.com/users/junaruga","html_url":"https://github.com/junaruga","followers_url":"https://api.github.com/users/junaruga/followers","following_url":"https://api.github.com/users/junaruga/following{/other_user}","gists_url":"https://api.github.com/users/junaruga/gists{/gist_id}","starred_url":"https://api.github.com/users/junaruga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/junaruga/subscriptions","organizations_url":"https://api.github.com/users/junaruga/orgs","repos_url":"https://api.github.com/users/junaruga/repos","events_url":"https://api.github.com/users/junaruga/events{/privacy}","received_events_url":"https://api.github.com/users/junaruga/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-09-02T17:54:15Z","updated_at":"2016-09-05T17:48:28Z","closed_at":null,"body":"I am creating a RPM package for puma now.\r\n\r\nIn the case that there are no crypto and libeay32. I got an error.\r\nThough my environment is not common as it is chroot environment to create RPM file, let you know.\r\n\r\nI think we can update `README.md` about needed libraries. or we might add test for the environment without crypto in Travis or something.\r\n\r\n## ext/puma_http11/extconf.rb\r\n```\r\nunless ENV[\"DISABLE_SSL\"]\r\n  if %w'crypto libeay32'.find {|crypto| have_library(crypto, 'BIO_read')} and\r\n      %w'ssl ssleay32'.find {|ssl| have_library(ssl, 'SSL_CTX_new')}\r\n\r\n    have_header \"openssl/bio.h\"\r\n  end\r\nend\r\n```\r\n\r\n## Compile log\r\n```\r\nchecking for BIO_read() in -lcrypto... no\r\nchecking for BIO_read() in -llibeay32... no\r\ncreating Makefile\r\n```\r\n\r\n```\r\n$ cat mkmf.log \r\nhave_library: checking for BIO_read() in -lcrypto... -------------------- no\r\n\r\n\"gcc -o conftest -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic conftest.c  -L. -L/usr/lib64 -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic  -m64   -lruby  -lpthread -ldl -lcrypt -lm   -lc\"\r\nchecked program was:\r\n/* begin */\r\n1: #include \"ruby.h\"\r\n2: \r\n3: int main(int argc, char **argv)\r\n4: {\r\n5:   return 0;\r\n6: }\r\n/* end */\r\n\r\n\"gcc -o conftest -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic conftest.c  -L. -L/usr/lib64 -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic  -m64   -lruby -lcrypto  -lpthread -ldl -lcrypt -lm   -lc\"\r\nconftest.c: In function 't':\r\nconftest.c:13:57: error: 'BIO_read' undeclared (first use in this function)\r\n int t(void) { void ((*volatile p)()); p = (void ((*)()))BIO_read; return !p; }\r\n                                                         ^~~~~~~~\r\nconftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in\r\nchecked program was:\r\n/* begin */\r\n 1: #include \"ruby.h\"\r\n 2: \r\n 3: /*top*/\r\n 4: extern int t(void);\r\n 5: int main(int argc, char **argv)\r\n 6: {\r\n 7:   if (argc > 1000000) {\r\n 8:     printf(\"%p\", &t);\r\n 9:   }\r\n10: \r\n11:   return 0;\r\n12: }\r\n13: int t(void) { void ((*volatile p)()); p = (void ((*)()))BIO_read; return !p; }\r\n/* end */\r\n\r\n\"gcc -o conftest -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic conftest.c  -L. -L/usr/lib64 -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic  -m64   -lruby -lcrypto  -lpthread -ldl -lcrypt -lm   -lc\"\r\n/usr/bin/ld: cannot find -lcrypto\r\ncollect2: error: ld returned 1 exit status\r\nchecked program was:\r\n/* begin */\r\n 1: #include \"ruby.h\"\r\n 2: \r\n 3: /*top*/\r\n 4: extern int t(void);\r\n 5: int main(int argc, char **argv)\r\n 6: {\r\n 7:   if (argc > 1000000) {\r\n 8:     printf(\"%p\", &t);\r\n 9:   }\r\n10: \r\n11:   return 0;\r\n12: }\r\n13: extern void BIO_read();\r\n14: int t(void) { BIO_read(); return 0; }\r\n/* end */\r\n\r\n--------------------\r\n\r\nhave_library: checking for BIO_read() in -llibeay32... -------------------- no\r\n\r\n\"gcc -o conftest -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic conftest.c  -L. -L/usr/lib64 -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic  -m64   -lruby -llibeay32  -lpthread -ldl -lcrypt -lm   -lc\"\r\nconftest.c: In function 't':\r\nconftest.c:13:57: error: 'BIO_read' undeclared (first use in this function)\r\n int t(void) { void ((*volatile p)()); p = (void ((*)()))BIO_read; return !p; }\r\n                                                         ^~~~~~~~\r\nconftest.c:13:57: note: each undeclared identifier is reported only once for each function it appears in\r\nchecked program was:\r\n/* begin */\r\n 1: #include \"ruby.h\"\r\n 2: \r\n 3: /*top*/\r\n 4: extern int t(void);\r\n 5: int main(int argc, char **argv)\r\n 6: {\r\n 7:   if (argc > 1000000) {\r\n 8:     printf(\"%p\", &t);\r\n 9:   }\r\n10: \r\n11:   return 0;\r\n12: }\r\n13: int t(void) { void ((*volatile p)()); p = (void ((*)()))BIO_read; return !p; }\r\n/* end */\r\n\r\n\"gcc -o conftest -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic conftest.c  -L. -L/usr/lib64 -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic  -m64   -lruby -llibeay32  -lpthread -ldl -lcrypt -lm   -lc\"\r\n/usr/bin/ld: cannot find -llibeay32\r\ncollect2: error: ld returned 1 exit status\r\nchecked program was:\r\n/* begin */\r\n 1: #include \"ruby.h\"\r\n 2: \r\n 3: /*top*/\r\n 4: extern int t(void);\r\n 5: int main(int argc, char **argv)\r\n 6: {\r\n 7:   if (argc > 1000000) {\r\n 8:     printf(\"%p\", &t);\r\n 9:   }\r\n10: \r\n11:   return 0;\r\n12: }\r\n13: extern void BIO_read();\r\n14: int t(void) { BIO_read(); return 0; }\r\n/* end */\r\n\r\n--------------------\r\n```\r\n"},"comment":{"url":"https://api.github.com/repos/puma/puma/issues/comments/244792180","html_url":"https://github.com/puma/puma/issues/1074#issuecomment-244792180","issue_url":"https://api.github.com/repos/puma/puma/issues/1074","id":244792180,"user":{"login":"junaruga","id":121989,"avatar_url":"https://avatars.githubusercontent.com/u/121989?v=3","gravatar_id":"","url":"https://api.github.com/users/junaruga","html_url":"https://github.com/junaruga","followers_url":"https://api.github.com/users/junaruga/followers","following_url":"https://api.github.com/users/junaruga/following{/other_user}","gists_url":"https://api.github.com/users/junaruga/gists{/gist_id}","starred_url":"https://api.github.com/users/junaruga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/junaruga/subscriptions","organizations_url":"https://api.github.com/users/junaruga/orgs","repos_url":"https://api.github.com/users/junaruga/repos","events_url":"https://api.github.com/users/junaruga/events{/privacy}","received_events_url":"https://api.github.com/users/junaruga/received_events","type":"User","site_admin":false},"created_at":"2016-09-05T17:48:28Z","updated_at":"2016-09-05T17:48:28Z","body":"Next week, let me explain more. Now I am in vacation  :)"}}
{"actor":{"display_login":"junaruga"}}