portmanager and perl threaded

Michael C. Shultz ringworm01 at gmail.com
Thu Jun 30 07:45:44 GMT 2005


On Wednesday 29 June 2005 23:24, Abu Khaled wrote:
> On 6/29/05, Michael C. Shultz <ringworm01 at gmail.com> wrote:
> > On Wednesday 29 June 2005 00:00, Abu Khaled wrote:
> > > On 6/29/05, Michael C. Shultz <ringworm01 at gmail.com> wrote:
> > > > On Tuesday 28 June 2005 19:20, Abu Khaled wrote:
> > > > > On 6/29/05, Michael C. Shultz <ringworm01 at gmail.com> wrote:
> > > > > > On Tuesday 28 June 2005 18:00, Abu Khaled wrote:
> > > > > > > I have a situation here where portmanager treats
> > > > > > > perl-threaded-5.8.7 as an old port and tries to update it.
> > > > > > >
> > > > > > > -snip
> > > > > > > have:perl-threaded-5.8.7   status: OLD available:perl-5.8.7
> > > > > > > /lang/perl5.8 -snip
> > > > > > >
> > > > > > > Portmanager almost recompiled my entire ports tree and I was
> > > > > > > lucky to stop it before it uninstalled perl-threaded-5.8.7
> > > > > > > Portupgrade correctly reports that the port is up-to-date but I
> > > > > > > wanted to test portmanager and see how it differs from
> > > > > > > portupgrade. Can someone give me a workaround for this problem?
> > > > > > > What options do I need to add for portmanager configuration
> > > > > > > aside from IGNORE?
> > > > > >
> > > > > > Its covered in the man page. see the -ip option, or the conf file
> > > > > > option.
> > > > > >
> > > > > > -Mike
> > > > >
> > > > > Thanks Mike, but I want to know if there is a way to make
> > > > > portmanager recognize the port as current. perl-threaded-5.8.7 is
> > > > > the same port as perl-5.8.7 built with option "WITH_THREADS=yes".
> > > >
> > > > I'm not an expert on the perl port so may misunsterstand your
> > > > question, if so sorry.  If your asking what I think your are though,
> > > > all you have to do is make an entry like this:
> > > >
> > > > lang/perl5|WITH_THREADS=yes|
> > > >
> > > > in /usr/local/etc/portmanager/pm-020.conf then portmanager will
> > > > always build perl with that setting.
> > > >
> > > > > It's just seems strange why portupgrade considers the port current
> > > > > while portmanager refers to it as old. As I sait it is the same
> > > > > port but with a suffix and a build option.
> > > >
> > > > Is it possible you have the WITH_THREADS=yes set in portupgrade's
> > > > config file but not portmanager's?  Another option so you don't have
> > > > to set this in two files is to put it in /etc/make.conf then it will
> > > > apply no matter how the port is upgraded, the line would look like
> > > > this:
> > > >
> > > > .if ${.CURDIR:M*/lang/perl5}
> > > > WITH_THREADS=yes
> > > > .endif
> > > >
> > > > -Mike
> > >
> > > I added the compile option to pm-020.conf but still portmanager treats
> > > the port as OLD and wants to update. So the problem is still there
> > > portmanager does not consider perl-threaded-5.8.7 and perl 5.8.7 to be
> > > the same port. Portupgrade on the other hand sees it as the same port
> > > and does not update it.
> > >
> > > Well I guess that all I have left is to IGNORE the port in pm-020.conf.
> >
> > I messed up in the above examples, they are not for perl5.8, they should
> > be as follows:
> >
> >  .if ${.CURDIR:M*/lang/perl5.8}
> >  WITH_THREADS=yes
> >  .endif
> >
> > lang/perl5.8|WITH_THREADS=yes|
> >
> >
> > -Mike
>
> Michael and Roman I really appreciate the time you guys spent trying to
> help me.
>
> I changed the lines in pm-02.conf but got same results portmanager
> still thinks that perl-threaded-5.8.7 is OLD. It was not related to
> build options. I decided to check other ports that use 'PKGNAMESUFFIX'
> for different build options and looked at cvsup-without-gui.
>
> cvsup and cvsup-without-gui is the same port but with another build
> option 'WITHOUT_X11= yes' but you can see in the ports tree that there
> is 2 directories one for each port. The Makefile under
> /usr/ports/net/cvsup-without-gui had only the build option defined and
> an include directive for the makefile in /usr/ports/net/cvsup.
>
> --- /usr/ports/net/cvsup-without-gui/Makefile
> MASTERDIR=      ${.CURDIR}/../cvsup
> WITHOUT_X11=    yes
> .include "${MASTERDIR}/Makefile"
> ---
>
> AFAIK portmanager checks /var/db/pkg/<pkgname>/+CONTENTS to decide if
> a port is old here is a snap
>
> --- /var/db/pkg/cvsup-without-gui/+CONTENTS has
> @name cvsup-without-gui-16.1h_2
> @comment ORIGIN:net/cvsup-without-gui
> ---
>
> ---/var/db/pkg/perl-threaded-5.8.7/+CONTENTS has this
> @name perl-threaded-5.8.7
> @comment ORIGIN:lang/perl5.8
> ---
>
> My guess it is the word ORIGIN there is no specific port named
> perl-threaded as the port named cvsup-without-gui. so portmanager
> checks lang/perl5.8 and decides (not sure how) the port is old.
>
> On a test server I made a directory /usr/ports/lang/perl-threaded with
> a Makefile inside:
>
> --- /usr/ports/perl-threaded
> MASTERDIR=      ${.CURDIR}/../perl5.8
> WITH_THREADS=    yes
> .include "${MASTERDIR}/Makefile"
> ---
>
> After building and installing this custom port, portmanager displayed
> the port as current !!!
> The only new problem that came up is the need to fix dependencies
> (pkgdb -F did the trick) but portmanager started to complain about
> missing dependencies for some ports like "Squid" that needed
> /lang/perl<threaded>5.8 (did not before!).
>
> Oh well I guess this issue is beyond my knowledge so I'll just leave
> the port IGNOREd on the production server.
> Thanks you guys (and please execuse my English)

Abu, I tried adding lang/perl5.8|WITH_THREADS=yes| to my pm-020.conf
and now I have /var/db/pkg/perl-threaded-5.8.7, this causes every port that 
depends on perl to be rebuilt, that is normal and desirable.  I've let 
portmanager run after adding WITH_THREADS=yes and everything is
working good, I recommend you do the same.  If you set perl to be ignored
no port that depends on perl will ever be upgraded, you won't be happy with 
that most likely.

My opinon is that you "fixing the dependencies" by running pkgdb -F may cause 
you problems, what your doing is forcing ports that were compiled with non 
threaded perl to work with threaded perl, you really should let portmanager
run its course and properly update the ports affected by the threaded perl 
option.

-Mike






More information about the freebsd-ports mailing list