Closed drasko closed 3 years ago
Do you use the newest version (master) of bcrypt?
It fails with master
as well. As I explained in https://github.com/ferd/erlpass/issues/19#issuecomment-743999673 problem is with OTP23 removing deprecated parts of erl_interface
.
cc /home/drasko/erlang/abstract/deps/bcrypt/c_src/async_queue.o /home/drasko/erlang/abstract/deps/bcrypt/c_src/bcrypt_port.o /home/drasko/erlang/abstract/deps/bcrypt/c_src/blowfish.o /home/drasko/erlang/abstract/deps/bcrypt/c_src/bcrypt.o /home/drasko/erlang/abstract/deps/bcrypt/c_src/bcrypt_nif.o -shared -L /usr/lib/erlang/lib/erl_interface-4.0.1/lib -lei -lpthread -o /home/drasko/erlang/abstract/deps/bcrypt/c_src/../priv/bcrypt_nif.so
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include bcrypt_port.o bcrypt.o blowfish.o -L /usr/lib/erlang/lib/erl_interface-4.0.1/lib -lei -lpthread -o ../priv/bcrypt
make[2]: Leaving directory '/home/drasko/erlang/abstract/deps/bcrypt/c_src'
cc -o priv/bcrypt_drv.so c_src/async_queue.o c_src/bcrypt.o c_src/bcrypt_nif.o c_src/bcrypt_port.o c_src/blowfish.o -L "/usr/lib/erlang/lib/erl_interface-4.0.1/lib" -lerl_interface -lei -shared
/usr/bin/ld: cannot find -lerl_interface
collect2: error: ld returned 1 exit status
make[2]: *** [c_src/Makefile.erlang.mk:21: priv/bcrypt_drv.so] Error 1
make[1]: *** [Makefile:27: pre-app] Error 2
make[1]: Leaving directory '/home/drasko/erlang/abstract/deps/bcrypt'
make: *** [erlang.mk:4441: deps] Error 2
drasko@Mando:~/erlang/abstract$
That is unexpected, as I am using bcrypt with OTP23.1 and we did remove the dependency.
Will check separately.
Which OS are you using?
I just compiled master (at 550281173c2f4e414b6da6711e4eb23e4e7884d1) on macOS with OTP 23.1.
Works fine, also passes the tests.
bcrypt marc$ make
./rebar3 compile
===> Verifying dependencies...
cc -O3 -std=c99 -arch x86_64 -Wall -Wmissing-prototypes -fPIC -I /Users/marc/erlang/23.1/erts-11.1/include/ -I /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/include -c -o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt_port.o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt_port.c
cc -O3 -std=c99 -arch x86_64 -Wall -Wmissing-prototypes -fPIC -I /Users/marc/erlang/23.1/erts-11.1/include/ -I /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/include -c -o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt_nif.o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt_nif.c
cc -O3 -std=c99 -arch x86_64 -Wall -Wmissing-prototypes -fPIC -I /Users/marc/erlang/23.1/erts-11.1/include/ -I /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/include -c -o /Users/marc/Sites/misc/bcrypt/c_src/async_queue.o /Users/marc/Sites/misc/bcrypt/c_src/async_queue.c
cc -O3 -std=c99 -arch x86_64 -Wall -Wmissing-prototypes -fPIC -I /Users/marc/erlang/23.1/erts-11.1/include/ -I /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/include -c -o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt.o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt.c
cc -O3 -std=c99 -arch x86_64 -Wall -Wmissing-prototypes -fPIC -I /Users/marc/erlang/23.1/erts-11.1/include/ -I /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/include -c -o /Users/marc/Sites/misc/bcrypt/c_src/blowfish.o /Users/marc/Sites/misc/bcrypt/c_src/blowfish.c
cc /Users/marc/Sites/misc/bcrypt/c_src/bcrypt_port.o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt_nif.o /Users/marc/Sites/misc/bcrypt/c_src/async_queue.o /Users/marc/Sites/misc/bcrypt/c_src/bcrypt.o /Users/marc/Sites/misc/bcrypt/c_src/blowfish.o -arch x86_64 -flat_namespace -undefined suppress -shared -L /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/lib -lei -lpthread -o /Users/marc/Sites/misc/bcrypt/c_src/../priv/bcrypt_nif.so
cc -O3 -std=c99 -arch x86_64 -Wall -Wmissing-prototypes -fPIC -I /Users/marc/erlang/23.1/erts-11.1/include/ -I /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/include bcrypt_port.o bcrypt.o blowfish.o -flat_namespace -undefined suppress -L /Users/marc/erlang/23.1/lib/erl_interface-4.0.1/lib -lei -lpthread -o ../priv/bcrypt
===> Analyzing applications...
===> Compiling bcrypt
PoToi:bcrypt marc$ erl
Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe]
Eshell V11.1 (abort with ^G)
1>
Project itself compiles for me also:
drasko@Mando:~/erlang/bcrypt$ make -j 16
erl -noshell -s inets start -s ssl start \
-eval '{ok, saved_to_file} = httpc:request(get, {"https://s3.amazonaws.com/rebar3/rebar3", []}, [], [{stream, "./rebar3"}])' \
-s inets stop -s init stop
=INFO REPORT==== 22-Dec-2020::17:14:10.121708 ===
application: inets
exited: stopped
type: temporary
chmod +x ./rebar3
./rebar3 compile
===> Verifying dependencies...
===> Fetching poolboy v1.5.2
===> Analyzing applications...
===> Compiling poolboy
make[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
make[1]: Entering directory '/home/drasko/erlang/bcrypt/c_src'
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include -c -o /home/drasko/erlang/bcrypt/c_src/async_queue.o /home/drasko/erlang/bcrypt/c_src/async_queue.c
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:25,
from /home/drasko/erlang/bcrypt/c_src/async_queue.h:36,
from /home/drasko/erlang/bcrypt/c_src/async_queue.c:32:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include -c -o /home/drasko/erlang/bcrypt/c_src/bcrypt_port.o /home/drasko/erlang/bcrypt/c_src/bcrypt_port.c
In file included from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
from /usr/include/stdio.h:27,
from /home/drasko/erlang/bcrypt/c_src/bcrypt_port.c:17:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include -c -o /home/drasko/erlang/bcrypt/c_src/blowfish.o /home/drasko/erlang/bcrypt/c_src/blowfish.c
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:25,
from /home/drasko/erlang/bcrypt/c_src/blowfish.c:47:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include -c -o /home/drasko/erlang/bcrypt/c_src/bcrypt.o /home/drasko/erlang/bcrypt/c_src/bcrypt.c
In file included from /usr/include/x86_64-linux-gnu/bits/libc-header-start.h:33,
from /usr/include/stdio.h:27,
from /home/drasko/erlang/bcrypt/c_src/bcrypt.c:48:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
/home/drasko/erlang/bcrypt/c_src/bcrypt.c: In function ‘encode_salt’:
/home/drasko/erlang/bcrypt/c_src/bcrypt.c:137:31: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
137 | snprintf(salt + 4, 4, "%2.2u$", logr);
| ^
/home/drasko/erlang/bcrypt/c_src/bcrypt.c:137:2: note: ‘snprintf’ output between 4 and 5 bytes into a destination of size 4
137 | snprintf(salt + 4, 4, "%2.2u$", logr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/drasko/erlang/bcrypt/c_src/bcrypt.c: In function ‘ts_bcrypt’:
/home/drasko/erlang/bcrypt/c_src/bcrypt.c:241:36: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
241 | snprintf(encrypted + i, 4, "%2.2u$", logr);
| ^
/home/drasko/erlang/bcrypt/c_src/bcrypt.c:241:2: note: ‘snprintf’ output between 4 and 5 bytes into a destination of size 4
241 | snprintf(encrypted + i, 4, "%2.2u$", logr);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include -c -o /home/drasko/erlang/bcrypt/c_src/bcrypt_nif.o /home/drasko/erlang/bcrypt/c_src/bcrypt_nif.c
In file included from /usr/include/assert.h:35,
from /home/drasko/erlang/bcrypt/c_src/bcrypt_nif.c:17:
/usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
| ^~~~~~~
cc /home/drasko/erlang/bcrypt/c_src/async_queue.o /home/drasko/erlang/bcrypt/c_src/bcrypt_port.o /home/drasko/erlang/bcrypt/c_src/blowfish.o /home/drasko/erlang/bcrypt/c_src/bcrypt.o /home/drasko/erlang/bcrypt/c_src/bcrypt_nif.o -shared -L /usr/lib/erlang/lib/erl_interface-4.0.1/lib -lei -lpthread -o /home/drasko/erlang/bcrypt/c_src/../priv/bcrypt_nif.so
cc -O3 -std=c99 -finline-functions -Wall -Wmissing-prototypes -D_BSD_SOURCE -fPIC -I /usr/lib/erlang/erts-11.1.3/include/ -I /usr/lib/erlang/lib/erl_interface-4.0.1/include bcrypt_port.o bcrypt.o blowfish.o -L /usr/lib/erlang/lib/erl_interface-4.0.1/lib -lei -lpthread -o ../priv/bcrypt
make[1]: Leaving directory '/home/drasko/erlang/bcrypt/c_src'
===> Analyzing applications...
===> Compiling bcrypt
drasko@Mando:~/erlang/bcrypt$
Let me inspect again why it fails as a dependency...
OK, found an error - it was coming from the old version of erlang.mk
that I am using for my project.
Thanks for the help, I am closing this one.
Thanks for testing and finding the issue!
Erlang version: