[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