Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Dec 2014 17:30:39 +0100
From:      Mathieu Arnold <mat@FreeBSD.org>
To:        ports@FreeBSD.org, perl@FreeBSD.org
Subject:   Next Perl update, and plans =?utf-8?Q?beyo?= =?utf-8?B?bmTigKY=?=
Message-ID:  <20141209163038.GA49302@prod2.absolight.net>

next in thread | raw e-mail | index | archive | help

--gKMricLos+KVdGMg
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hello there,

In a few days, I'll be changing the way Perl works wrt compiled modules
it produces.  The current patch[1] is on our code review tool.

Right now, we have:

$ readelf -d /usr/local/lib/perl5/5.18/mach/CORE/libperl.so|grep SONAME
 0x000000000000000e (SONAME)             Library soname: [libperl.so.5.18]
$

That is, libperl.so has a name, and it is versionned, and the version
will change if you have 5.16 or 5.20.  If your libperl.so does not have
a SONAME, you don't have an up-to-date Perl.

Which is good, because if some app is linked with libperl.so, it has:
# readelf -d /usr/local/bin/vim|grep perl
 0x0000000000000001 (NEEDED)             Shared library: [libperl.so.5.18]
 0x000000000000000f (RPATH)              Library rpath: [/usr/local/lib:/us=
r/local/lib/perl5/5.18/mach/CORE]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/lib:/=
usr/local/lib/perl5/5.18/mach/CORE]

So if you change your Perl version, pkg will know it has to upgrade vim
too because a NEEDED shlib changed.

Now, for Perl modules, it's not like that, it reads like this:

$ readelf -d /usr/local/lib/perl5/site_perl/mach/5.18/auto/DateTime/DateTim=
e.so|grep perl
$

So what the patch[1] does, is force linking with libperl.so.x.yy.  After
the patch, a compiled Perl module will look like this:

$ readelf -d /usr/local/lib/perl5/site_perl/mach/5.18/auto/DateTime/DateTim=
e.so | grep perl
 0x0000000000000001 (NEEDED)             Shared library: [libperl.so.5.18]
 0x000000000000000f (RPATH)              Library rpath: [/usr/local/lib/per=
l5/5.18/mach/CORE]
 0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/lib/p=
erl5/5.18/mach/CORE]
$

So pkg will detect it needs to be reinstalled when the Perl version
change.


As for the plans beyond that I was talking about in the subject, there
will be a Perl 5.22 released next May, (and 5.24 the May after that,)
when that happens, I'll change the default Perl to be 5.20, and
deprecate 5.18 which won't, then, be supported.  Sometime at the end of
the summer, like sometime September, I'll change the default Perl to
5.22 and try to keep it that way, that is, a new Perl goes in in May,
and gets to be the default in September.


1: <https://reviews.freebsd.org/D1241>;

--=20
Mathieu Arnold

--gKMricLos+KVdGMg
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iQJ8BAABCgBmBQJUhyOtXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQzQUI2OTc4OUQyRUQxMjEwNjQ0MEJBNUIz
QTQ1MTZGMzUxODNDRTQ4AAoJEDpFFvNRg85IW0IP/R38AigpeYn+f7VJuqMmik6d
xi5UJHiR4pV/8RXJ9R1bAntZhVp6MmUOGx+ufHe6ql/1WUtX8T89tiNXvQ8GZGFg
yRhvldYYMfosSHRaATbDcCXZ4h2j6MT/UiZ2ocXHu+qJaL1pOQL0EU1DP7STMjTb
8HZ8GcWpb8SSDMNWU0C8FErtkc8cr6WUTKJNbvSrlb6vd7T711ExUPjQv2gKZ80r
1sab8x1dzmAWWVxTp0KWtHP3Clzjv4Q1b/nbuKBIt4BpGBSBV4IWJCzu5XzMgnP6
OOmmwsXx+LpOJcL17Lp19AY8DadqavvEh9AcM+LJfBRy7wbc8w9sj4G2LliikStc
+o3yNNyfF9NyI6ogqa4PcwTQSHXAMI7I641YDLGfY/seE42Vfxp1LZGWQ8OsaCyQ
NCx3ntDpnQjGulsyKRtuzskAbQG7NHnG6kgzvot/RU1cf/s7HM1Wm2GQ/Sizf27P
HgJ0rKGSKU7Ly0KGQ0Caz3MqcdDAWZznD3VPK5+SuEum4DO70+7lgq+xZl5EJhNj
h3Jcn4pUt/bW+id5StH9quqZK8JPY3FIVUjbxn/wmKCqGfUJTxHgEoy1s0gx6+kZ
ZQ6FBlrT6+WgKOXjsB5rH4tp45oGzh+5cf/Zyvuf0r6e3Dw3r8k9gY/5O0QWjQTy
tHuOa9tgd7By2gsKgQ89
=rHyJ
-----END PGP SIGNATURE-----

--gKMricLos+KVdGMg--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20141209163038.GA49302>