Bug 1203064 - sar2pcp from pcp-import-sar2pcp broken
Summary: sar2pcp from pcp-import-sar2pcp broken
Status: NEW
Alias: None
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: Basesystem (show other bugs)
Version: Current
Hardware: Other Other
: P5 - None : Normal (vote)
Target Milestone: ---
Assignee: David Disseldorp
QA Contact: E-mail List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-09-02 12:37 UTC by Jiri Belka
Modified: 2022-09-06 09:33 UTC (History)
1 user (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jiri Belka 2022-09-02 12:37:42 UTC
$ rpm -qf `which sar2pcp `
pcp-import-sar2pcp-5.2.5-2.3.x86_64

$ sar2pcp --help
Can't locate XML/TokeParser.pm in @INC (you may need to install the XML::TokeParser module) (@INC contains: /usr/lib/perl5/site_perl/5.36.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.36.0 /usr/lib/perl5/vendor_perl/5.36.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.36.0 /usr/lib/perl5/5.36.0/x86_64-linux-thread-multi /usr/lib/perl5/5.36.0 /usr/lib/perl5/site_perl) at /usr/bin/sar2pcp line 20.
BEGIN failed--compilation aborted at /usr/bin/sar2pcp line 20.

$ zypper se -x --provides 'perl(XML::TokeParser)'
Loading repository data...
Reading installed packages...
No matching items found.
Comment 1 Marcus Meissner 2022-09-05 07:40:06 UTC
package is only in 
devel:languages:perl:CPAN-X     perl-XML-TokeParser

someone needs to bring it to factory
Comment 2 David Disseldorp 2022-09-05 22:16:10 UTC
Thanks for the report, Jiri...

(In reply to Marcus Meissner from comment #1)
> package is only in 
> devel:languages:perl:CPAN-X     perl-XML-TokeParser
> 
> someone needs to bring it to factory

I'd be happy to handle the Factory submission for this. I branched off https://build.opensuse.org/package/show/home:dmdiss:perl/perl-XML-TokeParser and was able to get it running (with the addition of perl-TimeDate/perl(Date::Parse)), but I'm now stumbling on:

# /usr/bin/sar2pcp ./int14.file int14.pcp
perl: symbol lookup error: /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/auto/PCP/LogImport/LogImport.so: undefined symbol: pmiStart

# rpm -qf /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/auto/PCP/LogImport/LogImport.so
perl-PCP-LogImport-5.2.2-1.4.x86_64

# rpm -qf /usr/lib64/libpcp_import.so.1
libpcp_import1-5.2.2-1.4.x86_64

pcp (522)> git blame src/libpcp_import/src/exports
35ce669f6a (Nathan Scott 2013-12-03 16:16:53 +1100  1) PCP_IMPORT_1.0 {
35ce669f6a (Nathan Scott 2013-12-03 16:16:53 +1100  2)   global:
35ce669f6a (Nathan Scott 2013-12-03 16:16:53 +1100  3)     pmiStart;
Comment 3 David Disseldorp 2022-09-06 09:33:20 UTC
(In reply to David Disseldorp from comment #2)
...
> # /usr/bin/sar2pcp ./int14.file int14.pcp
> perl: symbol lookup error:
> /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/auto/PCP/
> LogImport/LogImport.so: undefined symbol: pmiStart
> 
> # rpm -qf
> /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/auto/PCP/
> LogImport/LogImport.so
> perl-PCP-LogImport-5.2.2-1.4.x86_64
> 
> # rpm -qf /usr/lib64/libpcp_import.so.1
> libpcp_import1-5.2.2-1.4.x86_64
> 
> pcp (522)> git blame src/libpcp_import/src/exports
> 35ce669f6a (Nathan Scott 2013-12-03 16:16:53 +1100  1) PCP_IMPORT_1.0 {
> 35ce669f6a (Nathan Scott 2013-12-03 16:16:53 +1100  2)   global:
> 35ce669f6a (Nathan Scott 2013-12-03 16:16:53 +1100  3)     pmiStart;

The required pmiStart symbol is present:

# readelf -aW /usr/lib64/libpcp_import.so.1|grep pmiStart
    84: 0000000000003360  2487 FUNC    GLOBAL DEFAULT   14 pmiStart@@PCP_IMPORT_1.0

But the perl library doesn't have libpcp_import.so as a depedency:
# ldd /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi/auto/PCP/LogImport/LogImport.so
        linux-vdso.so.1 (0x00007ffd64a67000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f051d91e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f051df1c000)

I won't pretend to understand Makefile.PL logic, but pcp/src/perl/LogImport/Makefile.PL does appear to link against libpcp_import:

 18     $libs = ["-L$ENV{PCP_TOPDIR}/src/libpcp/src -L$ENV{PCP_TOPDIR}/src/libpcp_import/src -lpcp_import -lpcp"];
...
 32 WriteMakefile(
 33     NAME                => 'PCP::LogImport',
...
 46     LIBS                => $libs,