portmanager and perl threaded

Abu Khaled khaled.abu at gmail.com
Fri Jul 1 04:03:23 GMT 2005


On 6/30/05, Michael C. Shultz <ringworm01 at gmail.com> wrote:
> 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

After allowing 'portmanager' to rebuild everything depending on 'perl'
the problem was solved.
I have been using 'portupgrade' for some time and wanted to solve
things by taking a shortcut. This time it led me into a maze.
Thanks again for showing me the way out.

-- 
Kind regards
Abu Khaled


More information about the freebsd-ports mailing list