Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Jul 2013 15:42:40 +0200
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        perl@FreeBSD.org
Subject:   [HEADSUP] Rework of perl infrastructure
Message-ID:  <20130729134240.GS98542@ithaqua.etoilebsd.net>

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

--nccO0ldXW0cuDU6a
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

Andrej and I have been working together on reworking the perl infrastructure in
the ports tree.

What were we trying to solve?
1. each time perl is depend on at build time, perl is also appended to extract
and patch dependency phase. Most of the time uselessly. Fixing make the
dependency correct and gives us a 5% boost one package building order
calculation on the clusters.

2. so far all perl requires writing to make.conf which is very bad when perl has
to be setup on a box where / is readonly (the /usr/bin/perl symlink is yet
another problem for later)

3. nothing was providing a framwork to properly handle manpages in the perl
path.

4. bsd.perl.mk was included anyway, slowing down the infrastructure when not
needed and making every single change to bsd.perl.mk inpacting the whole ports
tree.

After some discussion wether we should create a new bsd.perlng.mk of a USES we
decided to go to the Uses infrastructure, but a special way.

the USES infrastructure allows us to only load on demand the perl mk, which is
good and fixes point 4

Problem ise perl5.mk can handle complex arguments which would have been ugly via
USES:

USES= perl5:5.14+:patch:configure

erk

So we decided to reuse USE_PERL5 and only USE_PERL5 the result it the following

Now each time a port depend on perl it will load the perl framework:

USES=	perl5

If nothing more it added perl will become a build and run dependency.

If we want it to only be a run dependency:
USE_PERL5=	run

if we want to specify a version:
USE_PERL5=	5.14+ run

if we want to only have perl as a patch dependency:
USE_PERL5=	patch

If you have manpages that goes to /usr/local/lib/perl5/5.14/man/man3/

Just define:
P5MAN3=	myman.3

A wiki page has been created to help the migration:
https://wiki.freebsd.org/Ports/Uses=perl5

Diff is here
http://people.freebsd.org/~bapt/newperl.diff

if USES=perl5 is defined than the old bsd.perl.mk is no read anymore.

Perl version can now be detected from /usr/local/etc/perl5_version (which will
be added later to the perl packages themself) or by calling perl directly, it is
not required anymore to modify /etc/make.conf

regards,
Bapt

--nccO0ldXW0cuDU6a
Content-Type: application/pgp-signature

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

iEYEARECAAYFAlH2cVAACgkQ8kTtMUmk6ExCZQCffeQr5O93FWvZ0S464W+XwKti
3EsAoIxp7rL42eF6K0M8ikb/9X7RDK7+
=7UEH
-----END PGP SIGNATURE-----

--nccO0ldXW0cuDU6a--



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