What the hell is perl-5.8 is doing in the ports when...

Why are there ports that still depend and still install perl5.8 when, according to /usr/ports/UPDATING:
20100715:
AFFECTS: users of lang/perl*
AUTHOR: skv@FreeBSD.org

lang/perl5.12 is out. If you want to switch to it from, for example
lang/perl5.10, that is:
and more importantly
20100205:
AFFECTS: users of lang/perl*
AUTHOR: skv@FreeBSD.org

Default version of Perl was bumped to 5.10.

If you already have lang/perl5.8 installed, and want to switch to
lang/perl5.10 please follow instructions in the entry 20090328 in this
file.

So that means that even one year after the official default perl version was bumped to 5.10, there are ports which would happily install perl 5.8 and also change PERL_VERSION=5.8* in /etc/make.conf, and of course break many things like p5-XML-LibXML.

So, in descending degree of probability for total disaster :
a) If a user chooses only source based ports installation then he might or he might not succeed to end up with a working system. (after week(s) of human monitoring)
b) If a user sticks to ports, but chooses the -P option in portupgrade (i.e. still consider binary precompiled packages) he most probably would end up with a broken system.
c) if a use sticks to pkg_add -r (precompiled packages only) he will end up with a totally broken system, and of course with half of his intended packages missing (because they usually are missing in the -RELEASE distribution, like openoffice)
 
Too late I upgraded everything 5.8 related, thing is, I pkg_deinstalled all packages yesterday, did a # portinstall -P --batch /usr/ports/x11/xorg (which went fine), then did a # portinstall -P --batch /usr/ports/x11/gnome2 which ended up with perl5.8 set as default and various ports failing. This is the tail from the script:
Code:
--->  Skipping 'deskutils/deskbar-applet' because a requisite port 'x11-toolkits/py-gnome2' failed (specify -k to force)
--->  Skipping 'x11/gnome2' because a requisite port 'x11/gnome-applets' failed (specify -k to force)
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! net/avahi-app (configure error)
        ! textproc/p5-XML-LibXML        (pkg_add failed)
        * lang/vala-vapigen
        ! textproc/p5-XML-SAX-Expat     (pkg_add failed)
        * net-im/telepathy-glib
        * net-im/libtelepathy
        * textproc/p5-XML-Simple
        * net-im/telepathy-idle
        ! devel/p5-Module-Build (unknown build error)
        * x11-themes/icon-naming-utils
        * net-im/telepathy-gabble
        * net/avahi-gtk
        * devel/gnome-vfs
        * www/p5-HTML-Tree
        * net-im/telepathy-logger
        * net-im/telepathy-mission-control
        ! multimedia/totem-pl-parser    (configure error)
        * textproc/p5-XML-Twig
        * devel/p5-Net-DBus
        * www/mod_dnssd
        * misc/gnome-icon-theme
        * x11/libgnome
        * www/gtkhtml3
        ! graphics/libgnomecanvas       (configure error)
        * x11/gnome-terminal
        * x11-toolkits/libbonoboui
        * x11-toolkits/libgnomeprintui
        * net/libgweather
        * x11-toolkits/gtksourceview
        * databases/evolution-data-server
        ! devel/libgsf  (configure error)
        * devel/bug-buddy
        * audio/pulseaudio
        * sysutils/system-tools-backends
        * devel/liboobs
        * security/seahorse
        * net-im/folks
        * audio/gnome-media
        * graphics/librsvg2
        * devel/gvfs
        * x11-toolkits/libgnomeui
        * www/evolution-webcal
        * textproc/gnome-spell
        * sysutils/gconf-editor
        * accessibility/gok
        * x11-toolkits/py-gtk2
        * accessibility/dasher
        ! x11/gnome-desktop     (configure error)
        * x11/gnome-screensaver
        * multimedia/cheese
        * mail/evolution
        * graphics/eog
        * x11-toolkits/py-gnome2
        * sysutils/gnome-settings-daemon
        * x11/gnome-panel
        * mail/evolution-exchange
        * sysutils/gnome-power-manager
        * net/vinagre
        * accessibility/mousetweaks
        * net/gnome-netstatus
        * sysutils/gnome-system-monitor
        * x11/gnome-session
        * x11/gdm
        * deskutils/gnome-utils
        * net/vino
        * x11/gnome-applets
        * net/ekiga3
        * mail/evolution-mapi
        * net-im/telepathy-farsight
        * sysutils/gnome-control-center
        * x11-themes/gnome-themes
        * www/epiphany
        * x11-fm/nautilus
        * sysutils/gnome-system-tools
        * www/gnome-user-share
        * sysutils/brasero
        * multimedia/totem
        * audio/sound-juicer
        * archivers/file-roller
        * graphics/evince
        * security/seahorse-plugins
        * x11-toolkits/py-gnome-desktop
        * games/gnome-games
        * deskutils/hamster-applet
        * accessibility/orca
        * deskutils/alacarte
        * deskutils/nautilus-sendto
        * net-im/empathy
        * deskutils/deskbar-applet
        * x11/gnome2

Anyways by looking into the script it is easy to find the suspect :
Code:
[color="Red"]--->  Installing lang/perl5.8 as dependency required by p5-libxml-0.08[/color]
--->  Checking for the latest package of 'lang/perl5.8'
--->  Found a package of 'lang/perl5.8': /usr/ports/packages/All/perl-5.8.9_4.tbz (perl-5.8.9_4)
--->  Installing 'perl-5.8.9_4' from a package
--->  Installing the new version via the package
pkg_add: package 'perl-5.8.9_4' conflicts with perl-5.10.1_3
pkg_add: -f specified; proceeding anyway
Removing stale symlinks from /usr/bin...
    Removing /usr/bin/perl
    Removing /usr/bin/perl5
Done.
Creating various symlinks in /usr/bin...
    Symlinking /usr/local/bin/perl5.8.9 to /usr/bin/perl
    Symlinking /usr/local/bin/perl5.8.9 to /usr/bin/perl5

and afterward, the (failing) party begun.
 
textproc/p5-libxml builds fine on my machine and uses perl version 5.12.3 as it should since I have PERL_VERSION set to 5.12.3 in /etc/make.conf. Are you somehow mixing built ports that use newer perl5.10 and binary packages that have dependencies to older perl5.8 ?
 
^^^
Yes this is true, and was implied by the "-P" switch. -P should eventually install some precompiled package sooner or later.
 
-P tells portupgrade to search for pre-built packages first. Depending on what your PACKAGESITE env var is set to, you may be trying to install ancient packages on your system, which includes ancient dependencies.

If you do the same command again, without the -P, I'm willing to bet you won't have a trace of Perl 5.8 on your system.
 
phoenix said:
-P tells portupgrade to search for pre-built packages first. Depending on what your PACKAGESITE env var is set to, you may be trying to install ancient packages on your system, which includes ancient dependencies.

If you do the same command again, without the -P, I'm willing to bet you won't have a trace of Perl 5.8 on your system.

Do you have anything better/newer than # setenv PACKAGESITE [url]ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/All/[/url] to recommend for a 8.2-RELEASE system?
 
That's fine for any 8.x system. As far as I know the "stable" part means that the packages are built on 8-STABLE but they should always work on any 8.x release of FreeBSD.
 
achix said:
Do you have anything better/newer than # setenv PACKAGESITE [url]ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/All/[/url] to recommend for a 8.2-RELEASE system?

If you look at that site, you will see packages for perl-5.8, perl-5.10, and perl-5.12. That means that there are packages listed there that depend on each of those versions.

You need to make a choice:
  1. Do you want the latest version of perl installed and nothing else? Then use the ports tree, not binary packages (no -P).
  2. Do you want to use binary packages? And can you live with all the issues that come along with that, including having multiple, old versions of things installed?

Which is more important: latest versions or binary packages?
 
phoenix said:
If you look at that site, you will see packages for perl-5.8, perl-5.10, and perl-5.12. That means that there are packages listed there that depend on each of those versions.
FreeBSD AFAIK does not support package polymorphism like Debian does (for every piece of source, creating a different package for every possible combination of prerequisites/options (p*o packages for p alternative prerequisites and o combinations of options ).
Which means that for every FreeBSD port there is no more than one package in the package repository (PACKAGESITE), which means that some *port* from there *required* perl-5.8, which means that even with ports the same problem would occur, and also means that some port maintainer did not do his/her homework, resulting in a broken system.
 
Back
Top