I need to clarify (Re: I'm having an awful time updating gdm2 and other ports)

Paul Seniura pdseniura at techie.com
Tue Jan 6 14:14:30 PST 2004

Here is the scenario:

You don't have any p5-* pieces installed.
You've freshly switched to 'use.perl port' from 'system'.
Then comes a CVS update for x11/gdm2.
You need to upgrade x11/gdm2; it's already installed.
This time you need its configure/make/install scripts to run under perl-5.8.x.
You hope gdm2's Makefile properly specifies what it requires, like other ports do.
So you run portupgrade.
And it breaks during gdm2's 'install' phase.

What do you do?

Okay now allow me to expand on that scenario with some details, please.

I did the switch from perl-5.6.x to perl-5.8.x last week
without having any of the p5-* items installed beforehand.

Never needed any p5-* before -- the only items needing perl at this stage
are ports during their configure / make / install / run-time phases
(I myself haven't needed perl).

There's nothing _specifically_ telling you _what else_ to do
when you do this 'use.perl port' switch.  Specifically.

I was 'assuming' that any port needing a perl module -- for whatever reason
e.g. configure / make / install / run-time -- would have appropriate entries
in that port's Makefile (some '.if's around BUILD_DEPENDS, LIB_DEPENDS, etc.,
as appropriate, based on PERL_VERSION or SITE_PERL (unsure?)).

Then came along some CTM deltas for x11/gdm2.
The next time I ran portupgrade is what got broke.
x11/gdm2's Makefile does *not* have checks for perl-anything
but it *did* require certain perl modules for it to be
installed successfully, as shown in my previous msgs
e.g. gdm2 clearly needs the XML::Parser module
     during its install phase
     so an appropriate item should've been added to
     gdm2's Makefile -- probably in this case
     to the RUN_DEPENDS string
     (is there such a thing as INSTALL_DEPENDS ?).

Suitable mechanisms _are_ available in the Makefile
and many other ports use them,
but gdm2 didn't say what it needed
so I never got the requisite p5-* pieces it needed
e.g. gdm2's Makefile should've caused the textproc/p5-XML-Parser port
     to be installed before gdm2 itself was installed.

So I needed a workaround.
To get those p5-* pieces needed by gdm2, I was 'hoping'
the p5-GnomePrint port would pull in those missing pieces
if _it_ had a correct Makefile.

There I go 'assuming' again...
(you know what 'assume' means... ;)

> Any time you run "use.perl", do "env FORCE_PKG_REGISTER=1 portupgrade -f
> p5-\*".

It ran very quickly.
It only re-installed the p5-XML-Parser and p5-XML-Writer ports
because those were the only p5-* pieces I've managed to
figure out being required by gdm2 and/or other ports -- after my
assumption p5-GnomePrint properly pull in those missing pieces
as noted.

I'm running this portupgrade 'force' again on a list of ports that
failed when I tried to install p5-GnomePrint, hoping it'll eventually
fix other glitches, too.

I ought to open a PR for gdm2 to be fixed --
because other ports do check for "which perl" and
adjust themselves accordingly.
Probably a lot of other ports need to similarly
check on other things besides "which perl", too.  ;)

  --  Paul Seniura
      System Specialist
      State of Okla. D.O.T.

More information about the freebsd-ports mailing list