Having an asterisk13 installed, build of net/asterisk15 tries to link "asterisk" binary with /usr/local/lib/libasteriskssl.so instead of just builded .../work/asterisk-15.7.1/main/libasteriskssl.so, and fails (because api is slightly changed). Tail of output from `make build`: cc -o libasteriskssl.so.1 -pthread -Wl,-rpath,/usr/local/lib -fstack-protector -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-soname=libasteriskssl.so.1 -shared -Wl,--version-script,libasteriskssl.exports,--warn-common -Wl,-rpath,/usr/local/lib -fstack-protector libasteriskssl.o -L/usr/local/lib -L/usr/local/lib -lssl -lcrypto /bin/ln -sf libasteriskssl.so.1 libasteriskssl.so ;\ c++ -o asterisk -Wl,--export-dynamic -Wl,--version-script,asterisk.exports -Wl,--dynamic-list,asterisk.dynamics -Wl,-rpath,/usr/local/lib -fstack-protector -L/usr/local/lib -Wl,-rpath,/usr/local/lib -Wl,-rpath,/usr/local/lib -fstack-protector abstract_jb.o acl.o adsi.o alaw.o alertpipe.o aoc.o app.o ast_expr2.o ast_expr2f.o asterisk.o astfd.o astmm.o astobj2.o astobj2_container.o astobj2_hash.o astobj2_rbtree.o audiohook.o autochan.o autoservice.o backtrace.o bridge.o bridge_after.o bridge_basic.o bridge_channel.o bridge_roles.o bucket.o callerid.o ccss.o cdr.o cel.o channel.o channel_internal_api.o chanvars.o cli.o codec.o codec_builtin.o config.o config_options.o conversions.o core_local.o core_unreal.o crypt.o data_buffer.o datastore.o db.o devicestate.o dial.o dns.o dns_core.o dns_naptr.o dns_query_set.o dns_recurring.o dns_srv.o dns_system_resolver.o dns_test.o dns_tlsa.o dnsmgr.o dsp.o endpoints.o enum.o event.o features.o features_config.o file.o fixedjitterbuf.o format.o format_cache.o format_cap.o format_compatibility.o frame.o framehook.o fskmodem.o global_datastores.o hashtab.o heap.o http.o image.o indications.o io.o iostream.o jitterbuf.o json.o libasteriskpj.o loader.o lock.o logger.o manager.o manager_bridges.o manager_channels.o manager_endpoints.o manager_mwi.o manager_system.o max_forwards.o md5.o media_cache.o media_index.o message.o mixmonitor.o named_acl.o named_locks.o netsock.o netsock2.o optional_api.o options.o parking.o pbx.o pbx_app.o pbx_builtins.o pbx_functions.o pbx_hangup_handler.o pbx_ignorepat.o pbx_include.o pbx_sw.o pbx_switch.o pbx_timing.o pbx_variables.o pickup.o plc.o poll.o presencestate.o privacy.o rtp_engine.o say.o sched.o sdp_srtp.o security_events.o sem.o sha1.o sip_api.o slinfactory.o smoother.o sorcery.o sounds.o srv.o stasis.o stasis_bridges.o stasis_cache.o stasis_cache_pattern.o stasis_channels.o stasis_endpoints.o stasis_message.o stasis_message_router.o stasis_system.o stdtime/localtime.o strcompat.o stream.o stringfields.o strings.o stun.o syslog.o taskprocessor.o tcptls.o tdd.o term.o test.o threadpool.o threadstorage.o timing.o translate.o udptl.o ulaw.o uri.o utils.o uuid.o version.o xml.o xmldoc.o -L. -lasteriskssl buildinfo.o -L/usr/local/lib -lxml2 -lz -llzma -L/usr/lib -lm -lsqlite3 -L/usr/local/lib -lssl -lcrypto -L/usr/local/lib -ljansson -luuid -lBlocksRuntime -lrt -lm -pthread -lcrypto -L/usr/local/lib -ledit -lncurses ast_expr2.o: In function `ast_yyparse': ast_expr2.c:(.text+0x3afb): warning: powl has lower than advertised precision /usr/local/lib/libasteriskssl.so: undefined reference to `ast_register_file_version' /usr/local/lib/libasteriskssl.so: undefined reference to `ast_unregister_file_version' c++: error: linker command failed with exit code 1 (use -v to see invocation) gmake[3]: *** [Makefile:320: asterisk] Error 1 gmake[3]: Leaving directory '/usr/ports.local/usr/ports/net/asterisk15/work/asterisk-15.7.1/main' gmake[2]: *** [Makefile:386: main] Error 2 gmake[2]: Leaving directory '/usr/ports.local/usr/ports/net/asterisk15/work/asterisk-15.7.1' ===> Compilation failed unexpectedly. Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to the maintainer. *** Error code 1 Stop. make[1]: stopped in /usr/ports/net/asterisk15 *** Error code 1 Stop. make: stopped in /usr/ports/net/asterisk15 The workaround is to delete installed version, then build and install new, but it's not obvious. Looks like `-L/usr/local/lib` appears too early in the link command, so /usr/local/... takes higher priority. And it's no matter which version of asterisk is installed, it will link with installed .so if found, so this will affect an upgrade within the same major version. And even "successful" upgrade can break things. Likely asterisk13 have the same problem too, but build does not fail just because libasteriskssl api is the same.
This needs investigation. I'll try to find a fix. Anyway as a general suggestion, if you care for correctness in the software you run you should really build it in isolation using a tool like poudriere.
Created attachment 201435 [details] tantive fix I created a small patch. It contains also some cosmetic fixes, but the relevant line is the LDFLAGS one. Could you please test this and confirm it fixes the issue on your system? Thanks.
Yes, builds fine (asterisk15-15.7.1). Resulting link command: c++ -o asterisk -Wl,--export-dynamic -Wl,--version-script,asterisk.exports -Wl,--dynamic-list,asterisk.dynamics -L. -Wl,-rpath,/usr/local/lib -fstack-protector -L/usr/local/lib -Wl,-rpath,/usr/local/lib -L. -Wl,-rpath,/usr/local/lib -fstack-protector abstract_jb.o acl.o adsi.o alaw.o alertpipe.o aoc.o app.o ast_expr2.o ast_expr2f.o asterisk.o astfd.o astmm.o astobj2.o astobj2_container.o astobj2_hash.o astobj2_rbtree.o audiohook.o autochan.o autoservice.o backtrace.o bridge.o bridge_after.o bridge_basic.o bridge_channel.o bridge_roles.o bucket.o callerid.o ccss.o cdr.o cel.o channel.o channel_internal_api.o chanvars.o cli.o codec.o codec_builtin.o config.o config_options.o conversions.o core_local.o core_unreal.o crypt.o data_buffer.o datastore.o db.o devicestate.o dial.o dns.o dns_core.o dns_naptr.o dns_query_set.o dns_recurring.o dns_srv.o dns_system_resolver.o dns_test.o dns_tlsa.o dnsmgr.o dsp.o endpoints.o enum.o event.o features.o features_config.o file.o fixedjitterbuf.o format.o format_cache.o format_cap.o format_compatibility.o frame.o framehook.o fskmodem.o global_datastores.o hashtab.o heap.o http.o image.o indications.o io.o iostream.o jitterbuf.o json.o libasteriskpj.o loader.o lock.o logger.o manager.o manager_bridges.o manager_channels.o manager_endpoints.o manager_mwi.o manager_system.o max_forwards.o md5.o media_cache.o media_index.o message.o mixmonitor.o named_acl.o named_locks.o netsock.o netsock2.o optional_api.o options.o parking.o pbx.o pbx_app.o pbx_builtins.o pbx_functions.o pbx_hangup_handler.o pbx_ignorepat.o pbx_include.o pbx_sw.o pbx_switch.o pbx_timing.o pbx_variables.o pickup.o plc.o poll.o presencestate.o privacy.o rtp_engine.o say.o sched.o sdp_srtp.o security_events.o sem.o sha1.o sip_api.o slinfactory.o smoother.o sorcery.o sounds.o srv.o stasis.o stasis_bridges.o stasis_cache.o stasis_cache_pattern.o stasis_channels.o stasis_endpoints.o stasis_message.o stasis_message_router.o stasis_system.o stdtime/localtime.o strcompat.o stream.o stringfields.o strings.o stun.o syslog.o taskprocessor.o tcptls.o tdd.o term.o test.o threadpool.o threadstorage.o timing.o translate.o udptl.o ulaw.o uri.o utils.o uuid.o version.o xml.o xmldoc.o -L. -lasteriskssl buildinfo.o -L/usr/local/lib -lxml2 -lz -llzma -L/usr/lib -lm -lsqlite3 -L/usr/local/lib -lssl -lcrypto -L/usr/local/lib -ljansson -luuid -lBlocksRuntime -lrt -lm -pthread -lcrypto -L/usr/local/lib -ledit -lncurses -L. appears twice (like some -W too), but no matter. With similar patch, asterisk13 builds successfully too.
A commit references this bug: Author: madpilot Date: Mon Jan 28 19:00:16 UTC 2019 New revision: 491510 URL: https://svnweb.freebsd.org/changeset/ports/491510 Log: - Force asterisk ports to prefer newly compiled libasteriskssl.so to already installed one when compiling the port on live system where asterisk is already present. - While here Make some minor cosmetic changes. PR: 235233 Submitted by: pfduch@yandex.ru Changes: head/net/asterisk13/Makefile head/net/asterisk15/Makefile head/net/asterisk16/Makefile
Fix committed. Thanks for reporting.