https://bugzilla.redhat.com/show_bug.cgi?id=2120661



--- Comment #7 from Petr Pisar <ppi...@redhat.com> ---
(In reply to Petr Pisar from comment #6)
> (In reply to Miroslav Suchý from comment #5)
> > perl5-libdnf5.x86_64: W: undefined-non-weak-symbol
> > /usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so ....
> 
> We need to see which exact symbol is missing.
> 

# ldd -d -r /usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1
[...]
        libcrypt.so.2 => /lib64/libcrypt.so.2 (0x00007f8729d3e000)
undefined symbol: PL_thr_key   
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_2bool_flags  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_more_sv 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newRV   
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_call_method     
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_markstack_grow  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_2nv_flags    
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_croak_nocontext 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_setsv_flags  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_bless
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_free_tmps       
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_gv_init_pvn     
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_2pv_flags    
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_get_sv  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_newmortal    
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_setref_pv    
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_mg_get  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_2uv_flags    
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newSVsv_flags   
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_pop_scope       
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newSVuv 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newSViv 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_isobject     
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_hv_common_key_len       
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_free2
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newSV   
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_magic
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newSVpvn
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_setiv
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_setpvn       
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newRV_noinc     
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_gv_add_by_type  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_savetmps
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_stack_grow      
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_setpvf_nocontext     
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newXS   
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_setpv
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_av_make 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_hv_common       
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_av_len  
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_2mortal      
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_more_bodies     
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_newSVnv 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_2iv_flags    
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_av_fetch
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_gv_stashpv      
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_mg_find 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_push_scope      
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_derived_from 
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)
undefined symbol: Perl_sv_backoff      
(/usr/lib64/perl5/vendor_perl/auto/libdnf5/repo/repo.so.1)

It's missing -lperl:

$ scanelf -n  redhat-linux-build/bindings/perl5/auto/libdnf5/repo/repo.so
 TYPE   NEEDED FILE 
ET_DYN libdnf5.so.1,libstdc++.so.6,libfmt.so.9,libgcc_s.so.1,libc.so.6
redhat-linux-build/bindings/perl5/auto/libdnf5/repo/repo.so 

From a build log:

/usr/bin/g++ -fPIC -O2 -flto=auto -ffat-lto-objects -fexceptions -g
-grecord-gcc-switches -pipe -Wall -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic
-fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
-Wl,--enable-new-dtags -Wl,-z,relro -Wl,--as-needed -Wl,-z,now
-specs=/usr/lib/rpm/redhat/redhat-hardened-ld
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -Wl,-z,relro
-Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -Wl,--build-id=sha1
-specs=/usr/lib/rpm/redhat/redhat-package-notes -shared -Wl,-soname,repo.so.1
-o ../auto/libdnf5/repo/repo.so.1
CMakeFiles/perl5_repo.dir/CMakeFiles/perl5_repo.dir/repoPERL_wrap.cxx.o 
-Wl,-rpath,/home/test/rpmbuild/BUILD/dnf5-5.0.0/redhat-linux-build/libdnf:
../../../libdnf/libdnf5.so.1 -ldl -lstdc++fs -lstdc++ -lfmt -ljson-c -lmodulemd
-lgobject-2.0 -lglib-2.0 -lsolv -lsolvext -lrpm -lrpmio -lpopt -lxml2 -lgpgme
-lrepo -lglib-2.0 -lsolv -lsolvext -lrpm -lrpmio -lpopt -lxml2 -lgpgme -lrepo
-lsqlite3 

(Now something actually sets a dummy soname to "repo.so.1" and it breaks the
Perl loader: perl -e 'require libdnf5::repo': Can't locate loadable object for
module libdnf5::common. It searches for libdnf5/common.so.)

Upstream Perl does not link extensions to libperl. Fedora as well as some other
distributions patch Perl build systems to do it. Swig probably was missed. (The
problem is that upstream Perl does not have a configuration option to save
-lperl linker flag to.) I'd guess it's not a big deal.


-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
https://bugzilla.redhat.com/show_bug.cgi?id=2120661
_______________________________________________
package-review mailing list -- package-review@lists.fedoraproject.org
To unsubscribe send an email to package-review-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/package-review@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to