[oi-dev] perl 5.34 next steps
Tim Mooney
Tim.Mooney at ndsu.edu
Thu Jan 27 02:00:11 UTC 2022
All-
perl 5.34 was added to hipster a while ago, and I recently finished doing
package rebuilds for all perl modules in oi-userland[1], so that we now have
a version of each module for perl 5.22, perl 5.24, and perl 5.34.
There are a number of things that need to happen before we can make perl
5.34 the default version and retire 5.22 and 5.24. I'm aware of some of
the things that need to happen, but there's probably plenty of things
that I'm not aware of, that need to be added to the "to do" list.
In addition, even for the steps I know about, there's some question as
to what order is best (safest?) to perform the steps.
I'm therefore looking for input on how we proceed. If there's anyone
reading this that's been through the process previously, any info you
can share or missing steps you can fill in would be especially welcome.
I have a saved email from Alexander from March 19 of 2014 (it didn't
make it into the oi-discuss archives, sadly) where he outlines several of
the steps related to perl 5.10 and 5.16, but portions of the process have
changed, so I don't know how relevant it is.
The steps I know about:
- add 5.34 to PERL_VERSIONS and PERL_64_ONLY_VERSIONS in
make-rules/shared-macros.mk. At the same time (or later), those
same overrides can be removed from each perl module component. I think
this should be safe to do now, or at any time.
- it might be necessary (not sure) to manually change the mediator
for perl on build systems, depending upon what order we pursue these
steps.
- change illumos-gate so that it uses perl 5.34 to build
runtime/perl-534/module/sun-solaris. This involves setting
echo export PERL_VERSION=\"5.34\"; \
echo export PERL_PKGVERS=\"-534\"; \
echo export PERL_VARIANT=\"-thread-multi-64\"; \
echo export BUILDPERL32=\"#\"; \
echo export BUILDPERL64=\"\"; \
in oi-userland/components/openindiana/illumos-gate/Makefile and then
rebuilding illumos-gate. I'm currently getting a build error for
the sun-solaris module doing that and I don't know if it's because I
need to change my build system's perl mediator or if there are other
problems I haven't discovered yet.
Alexander also commented in [1] that there may be a chicken-or-the-egg
problem, so there may be some manual steps required on the build box
once the changes are committed to oi-userland.
- change PERL_VERSION from 5.22 to 5.34 in make-rules/shared-macros.mk.
This (I think) changes the "default" version of perl on the system.
I don't know if it causes pkg to automatically change the mediator(s)
on next pkg update.
- identify what packages (outside of the library/perl-5/*-522 FMRI
namespace) depend upon runtime/perl-522. I think (but am not certain)
that we want to change PERL_VERSION to 5.34 first, and then start
rebuilding any packages that depend upon 5.22, so they now depend
upon 5.34. Alternately, we could potentially do what I did for each
of the library/perl-5/* module rebuilds, and override PERL_VERSION
directly in the component, so that component defaults to 5.34 even
before the system-wide default changes.
- same process for runtime/perl-524. Since it has never been the default
version of perl on OI, there should in theory be a smaller set of
packages that depend upon it. These will need to be rebuilt with
PERL_VERSION=5.34 too
- do we (?) want to modify the runtime/perl-522 and/or runtime/perl-524
packages so that they become "dummy" packages that just point to
the 534 runtime? Alexander mentioned this as a possibility in
the process he outlined in 2014.
- retire (obsolete) 5.24. I don't know what's involved in this, but
I do know it's going to be near the end of the process, so there's
plenty to get done first.
- retire (obsolete) 5.22. Same as perl 5.24.
- after 5.22 is completely gone, we can rip out all the 32 vs. 64
code in make-rules/makemaker.mk, leaving just the settings for 64
bit builds. That should simplify makemaker.mk considerably.
So what steps am I missing, and what's the safest order to apply these
steps? It's OK with me if this process takes several weeks, if it can
be done in a safe, careful manner.
Longer term, after we've made progress on making 5.34 the default and
obsoleting the older perls, the road is much easier:
- update our existing perl modules, as appropriate.
- specific to the SSL module(s), switch to OpenSSL 1.1 as part of updates.
- add a handful of the most useful, most widely used perl modules that
we don't currently ship. I've identified a few, including
JSON & JSON XS
YAML
Text::CSV & Text::CSV_XS
Socket6
IO::Socket::SSL & possibly Crypt::SSL
LWP::Protocol::https
a few of the Test:: modules (Test::Pod, Test::Warning, maybe more)
possibly Module::Build, though that has miserable dependencies
[1] alp explained that although we have a sun_solaris component in
oi-userland, the runtime/perl-522/module/sun-solaris comes from
illumos-gate, not oi-userland. See: https://github.com/OpenIndiana/oi-userland/pull/7640
Thanks,
Tim
--
Tim Mooney Tim.Mooney at ndsu.edu
Enterprise Computing & Infrastructure /
Division of Information Technology / 701-231-1076 (Voice)
North Dakota State University, Fargo, ND 58105-5164
More information about the oi-dev
mailing list