ports/50558: xscreensaver-getimage-file has a problem with -STABLE Perl
Andy Sparrow
spadger at best.com
Thu Apr 3 09:50:13 UTC 2003
>Number: 50558
>Category: ports
>Synopsis: xscreensaver-getimage-file has a problem with -STABLE Perl
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Apr 03 01:50:11 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Andy Sparrow
>Release: FreeBSD 4.8-RC i386
>Organization:
Not Much.
>Environment:
System: FreeBSD tureg.geek4food.org 4.8-RC FreeBSD 4.8-RC #120: Mon Mar 31 07:04:42 PST 2003 root at tureg.geek4food.org:/usr/src/sys/compile/tureg i386
I'm running XFree86 4.3, and all ports were updated (recursively)
via portupgrade after the buildworld. Everything else on the system
seem to work.
>Description:
Any xscreensaver-4.08 module that attempts to load images uses
'xscreensaver-getimage-file', a Perl script.
This now errors on a recent -STABLE, with the system Perl:
xscreensaver-getimage-file
"mode" is not defined in %Fcntl::EXPORT_TAGS at /usr/libdata/perl/5.00503/Exporter.pm line 67
Exporter::export('Fcntl', 'main', ':mode') called at /usr/libdata/perl/5.00503/Exporter.pm line 182
Exporter::import('Fcntl', ':mode') called at /usr/X11R6/bin/xscreensaver-getimage-file line 47
main::BEGIN() called at /usr/X11R6/bin/xscreensaver-getimage-file line 49
eval {...} called at /usr/X11R6/bin/xscreensaver-getimage-file line 49
Uncaught exception from user code:
Can't continue after import errors at /usr/X11R6/bin/xscreensaver-getimage-file line 47
BEGIN failed--compilation aborted at /usr/X11R6/bin/xscreensaver-getimage-file line 49.
Here's the appropriate code section (with comments):
require 5;
use diagnostics;
use strict;
use POSIX;
use Fcntl;
# Apparently the "old way" to get S_ISLNK and friends is to do this:
#
use POSIX ':fcntl_h';
# But apparently the "new way" is to do this:
#
# use Fcntl ':mode';
#
# but of course that will generate an error on "old" (pre-5.6?) Perl versions.
# So we do it like this instead:
#
BEGIN {
if (! defined(&S_ISLNK)) { # perhaps defined by "POSIX"?
require Fcntl;
import Fcntl ':mode'; # if not, look for it in "Fcntl".
}
}
>How-To-Repeat:
Run any xscreensaver module that loads/manipulates images on a
recent -STABLE, or run the xscreensaver-getimage-file Perl script
directly.
>Fix:
Not obvious to me, sorry.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list