Port dependencies on p5-Test-*
Anton Berezin
tobez at tobez.org
Tue Feb 26 14:42:04 UTC 2008
On Tue, Feb 26, 2008 at 03:15:59PM +0100, Dag-Erling Smrgrav wrote:
> Anton Berezin <tobez at tobez.org> writes:
> > Having discussed this at a whiteboard with lth@ (ah, the advantages of
> > face-to-face communication!), we came up with the following idea for
> > bsd.perl.mk's implementation.
> >
> > PERL_DEPENDS. This will be the one which will be used most of the time,
> > since (p5-Test-* ports notwithstanding) it is actually difficult to come up
> > with cases when we want BUILD_DEPENDS without accompanying RUN_DEPENDS.
>
> Mostly correct. Imagine the situtation if MakeMaker wasn't in core; now
> imagine a Perl package that depends on something other than MakeMaker to
> generate the Makefile.
>
> > PERL_DEPENDS= \
> > p5-CGI.pm>3:www/p5-CGI.pm \
> > devel/p5-Time-HiRes>=1.86 \
> > textproc/p5-Regexp-Common
>
> This is exactly what I was thinking of, which clearly shows that it
> *was* obvious :)
>
> > The second one, which will be good for the vast majority of cases, looses
> > the package name, which is derived from the port name (by the way, the
> > p5-CGI.pm case can also be written like this; we cannot, from the top of our
> > collective head, come up with a p5 port for which the package name base
> > differs from the port directory name).
>
> I can: p5-libwww installs several Perl modules, none if which is called
> libwww.
This is a bad example because the dichotomy in question is not between
modules and ports, but between ports and packages.
> > Additionally, bsd.perl.mk maintains a little database for dual-life modules,
> > recording which version is present in which core.
>
> Why? If perl isn't installed, build that first.
> If perl is installed, use 'perl -M$MODULE -e "1;"' to check whether the
> module exists, or if a certain version is required, 'perl -e "use $MODULE
> $VERSION;"'
I think it is a bad idea, because
- you need the "build that first" part (currently we create the complete
list of direct dependencies before actually building anything; too many
things to change with regard to our current procedure if we get rid of
this constraint);
- we introduce modules into the equation when before we had only ports and
packages to worry about;
- "use $MODULE" might have unanticipated side effects since a bunch of
preamble code is executed [this is not a security risk as such (a
malicious port can do worse things already), but as a general principle I
don't like that];
- it can take quite a bit of time to load if the module has lots of
dependencies.
> > What do people think of this? If we see positive reaction, we'll just
> > temporarily switch from coding in Perl to coding in make. :-)
>
> I'm perfectly willing to implement this myself, if you're allergic to
> make - or we can do it together at the Oslo QA Hackathon :)
Nono, I actually like make, in a perverse sort of way. But the hackathon
would be a good place and time to do it.
Cheers,
\Anton.
--
We're going for 'working' here. 'clean' is for people with skills...
-- Flemming Jacobsen
More information about the freebsd-perl
mailing list