Original Message:
Sent: Mon November 18, 2024 01:21 PM
From: Greg O'Keefe
Subject: Migrating custom installed perl modules
Getting away from the 'make install' and back to the 'make' . . .when I looked at what 'make' was doing, it just copied DBUG.pm to another directory. Do I need to tell it to make DBUG.so? I looked at the documentation and saw OBJECT described as the thing that 'make' is going to build, but when I ran it, a file-not-found error was returned. I don't understand why that would happen, unless I misunderstood the nature of OBJECT in Makefile.PL. What is the right way to compile a .pm file into an .so?
____
with OBJECT line in Makefile.PL:
use ExtUtils::MakeMaker;
WriteMakefile(
'NAME' => 'DBUG',
'OBJECT' => 'DBUG.so'
);
# perl Makefile.PL
Generating a Unix-style Makefile
Writing Makefile for DBUG
Writing MYMETA.yml and MYMETA.json
# make
Running Mkbootstrap for DBUG ()
chmod 644 DBUG.bs
rm -f blib/arch/auto/DBUG/DBUG.so
ld -bhalt:4 -G -bI:/usr/opt/perl5/lib/5.20.1/aix-thread-multi/CORE/perl.exp -bE:DBUG.exp -bnoentry -lpthreads -lc -lm DBUG.so -o blib/arch/auto/DBUG/DBUG.so
ld: 0706-005 Cannot find or open file: DBUG.so
ld:open(): A file or directory in the path name does not exist.
make: 1254-004 The error code from the last command is 255.
Stop.
____
without OBJECT line:
use ExtUtils::MakeMaker;
WriteMakefile(
'NAME' => 'DBUG', # Name of your module
);
# perl Makefile.PL
Generating a Unix-style Makefile
Writing Makefile for DBUG
Writing MYMETA.yml and MYMETA.json
# make
[no output]
# find . -name 'DBUG*'
./blib/arch/auto/DBUG
./blib/lib/auto/DBUG
# find . -name 'DBUG.*'
[no output]
------------------------------
Greg O'Keefe
Original Message:
Sent: Fri November 15, 2024 03:34 AM
From: RESHMA KUMAR
Subject: Migrating custom installed perl modules
To do a 'make install' in /usr/opt/perl5/lib/site_perl/5.34.1, one needs root access. With root access, you can run 'make install' again.
------------------------------
RESHMA KUMAR
Original Message:
Sent: Thu November 14, 2024 04:10 PM
From: Greg O'Keefe
Subject: Migrating custom installed perl modules
Thanks for the reply!
I did a quick build of the custom modules (perl Makefile.PL, make, make install). The 'make install' failed due to permissions. If I get temporary root access, do I just complete the failed file copy? Or is there more to it?
Thanks, Greg
--------------------------------
ERROR: Can't create '/usr/opt/perl5/lib/site_perl/5.34.1'
Do not have write permissions on '/usr/opt/perl5/lib/site_perl/5.34.1'
------------------------------
Greg O'Keefe
Original Message:
Sent: Fri November 08, 2024 02:47 PM
From: Stephen Ulmer
Subject: Migrating custom installed perl modules
Did you reinstall your local modules with the new version of Perl? That would be the first thing I would try, especially with that large of a version difference.
--
Stephen Ulmer
Sent from a mobile device; please excuse auto-correct silliness.
Original Message:
Sent: 11/8/2024 1:34:00 PM
From: Greg O'Keefe
Subject: Migrating custom installed perl modules
Yesterday we upgraded one of our AIX servers from 7.2 to 7.3, and at the same time allowed the Perl installation to change from 5.20.1 to 5.34.1. This change in Perl version would have happened on a prior AIX upgrade, if I recall correctly, but we rolled it back. This time we wanted to upgrade Perl and test our handful of Perl programs, so no rollback (yet).
Testing was a mixed bag. Anything that uses standard Perl ran fine. Those programs that rely on in-house Perl modules, however, all fail. The failures are due to our custom Perl modules failing to load. My understanding is that Perl must be compiled during install. These custom .pm files were not included in the compile; this is a straight install from the AIX toolbox, which knows nothing of our code.
What must be done to fix this? If my suspicion is correct, how do I compile the custom source modules and make them available for/integrated with the 5.34.1 version of Perl ?
If my suspicion is not correct, do you have an idea of what the problem might be, or what troubleshooting steps to take next?
Thanks,
Greg
a sample error:
Can't load '[$PERL5LIB]/aix-thread-multi/auto/List/Util/Util.so' for module List::Util: rtld: 0712-001 Symbol Perl_xs_apiversion_bootcheck was referenced
from module [$PERL5LIB]/aix-thread-multi/auto/List/Util/Util.so(), but a runtime definition
of the symbol was not found.
rtld: 0712-001 Symbol Perl_xs_version_bootcheck was referenced
from module [$PERL5LIB]/aix-thread-multi/auto/List/Util/Util.so(), but a runtime definition
of the symbol was not found. at /usr/opt/perl5/lib/5.34.1/XSLoader.pm line 93.
at $[PERL5LIB]/aix-thread-multi/List/Util.pm line 23.
Compilation failed in require at [$PERL5LIB]/aix-thread-multi/Scalar/Util.pm line 23.
Compilation failed in require at [$PERL5LIB]/aix-thread-multi/DBI.pm line 174.
BEGIN failed--compilation aborted at [$PERL5LIB]/aix-thread-multi/DBI.pm line 174.
Compilation failed in require at [$PERL5LIB]/Harrahs/Utils/PropHash.pm line 6.
BEGIN failed--compilation aborted at [$PERL5LIB]/Harrahs/Utils/PropHash.pm line 6.
Compilation failed in require at -e line 2.
BEGIN failed--compilation aborted at -e line 2.
$PERL5LIB is where our custom modules are. It is not under /usr/opt.
------------------------------
Greg O'Keefe
------------------------------
#AIXOpenSource