This has been suggested before, but I would like to bring it up
again... I think that it would be better to disable the installation
of all Perl-Fu scripts if any of the required modules (Gtk, PDL,
Data::Dumper, Parse::RecDescent) are not detected by the configure
script or, more exactly, by Makefile.PL.
The argument for installing the scripts anyway is that the user can
install the missing modules later. However, I think that it currently
does more harm than good.
Note that I am not criticizing the Gimp-Perl plug-in itself, only the
way the Perl-Fu scripts are installed. I have installed the Gimp on
many systems (Linux and Solaris) and the Perl-Fu scripts are working
fine on the systems that have perl and all the required modules. But
on the systems that do not have perl (it comes with all Linux distros
but it is optional) or those that do not have the required modules
(because the user did not download them from CPAN), the Perl-Fu
scripts crash when the Gimp is started or when they are accessed from
the menus. This makes a bad impression and the best solution is
usually to uninstall everything, then re-configure with
--disable-perl, re-compile and re-install. This extra hassle should
not be necessary.
Here are a few reasons why I think that the configure script should
skip the installation of the Perl-Fu scripts if any of the required
modules is missing:
- All other plug-ins take the "safe" approach of not installing
themselves if any dependency is not satisfied. As far as I know,
the Perl plug-in is the only one that tries to install everything
and hope that the user will install the missing things later.
- I think that most users are updating the Gimp (re-compiling,
re-installing) more frequently than they are updating Perl (even if
it is only some modules). So there is no reason to force the
installation of the Perl-Fu scripts if they could easily be
installed later, after having installed the missing modules. One
reason for updating the Gimp more frequently is that it is easier to
get a single tar file for the Gimp than to have to search for
separate modules on CPAN, especially on a computer that has no
direct connection to the Internet. Another example: on a multi-user
system, the user may not have the required priviledges for
installing the Perl modules in the system directories (although the
modules could be installed in a private directory if the users take
care of modifying their environment.)
- The Gimp takes 5 to 6 seconds longer to start if the required Perl
modules are missing, because some Perl-Fu scripts crash during
start-up and are queried again every time. See the first example
included below. Besides, these crashes are not very informative for
the user if he is not the one who installed the software and who
knows what these messages mean.
- The modules that do not crash during start-up will fail anyway when
they are used. Except for some things such as the Perl Server, I
haven't found a script that was usable without Gtk-Perl. When I
attempted to use these scripts, they all started by popping up a
dialog box that warns about the missing module, then start some
operations and crash before producing any result (which brings
another dialog box for reporting the error). Again, for a user who
is not the installer, it only makes the Gimp look bad because the
menus are cluttered with unusable entries that do nothing else than
popping up error boxes. See the second example below.
For these reasons, I think that it would be better to use the "safe"
method: do not install any (or most of the) Perl-Fu scripts if the
required modules are missing during the "configure" phase. And rely
on the fact that the person who installed the Gimp will re-install it
easily if the Perl modules are installed later.
-Raphael
---------- Example 1 ----------
Here are the messages that are displayed every time the Gimp starts,
taking 5-6 seconds on a Linux PC that has perl but does not have the
required modules from CPAN:
Can't locate Gtk.pm in @INC (@INC contains: /usr/lib/perl5/5.00503/i586-linux
/usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i586-linux
/usr/lib/perl5/site_perl/5.005 .) at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at /usr/lib/gimp/1.1/plug-ins/avi line 10.
** WARNING **: wire_read: unexpected EOF (plug-in crashed?)
Can't locate Gtk.pm in @INC (@INC contains: /usr/lib/perl5/5.00503/i586-linux
/usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i586-linux
/usr/lib/perl5/site_perl/5.005 .) at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at /usr/lib/gimp/1.1/plug-ins/colorhtml line 9.
** WARNING **: wire_read: unexpected EOF (plug-in crashed?)
Can't locate Gtk.pm in @INC (@INC contains: /usr/lib/perl5/5.00503/i586-linux
/usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i586-linux
/usr/lib/perl5/site_perl/5.005 .) at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at /usr/lib/gimp/1.1/plug-ins/dataurl line 10.
** WARNING **: wire_read: unexpected EOF (plug-in crashed?)
Can't locate Gtk.pm in @INC (@INC contains: /usr/lib/perl5/5.00503/i586-linux
/usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i586-linux
/usr/lib/perl5/site_perl/5.005 .) at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at
/usr/lib/perl5/site_perl/5.005/i586-linux/Gimp/UI.pm line 5.
BEGIN failed--compilation aborted at /usr/lib/gimp/1.1/plug-ins/miff line 10.
** WARNING **: wire_read: unexpected EOF (plug-in crashed?)
---------- End of example 1 ----------
The second example shows some errors that occur when I attempt to
start some Perl-Fu scripts. They all result in at least two dialog
boxes popping up: the first one warning me about the missing Gtk-Perl
module and saying that the script will run with default values, and
the second one reporting a fatal error. Most scripts crash with a PDB
error, but some others crash for other reasons. None of them
generates any results. Also, the "fire" script ran for about 4
minutes after displaying the first warning, until it eventually
crashed like the others. I tried several other scripts besides the
ones shown here, and none of them worked without the Gtk module. Note
that I have no problem with these scripts on another system that has
all Perl modules installed.
---------- Example 2 ----------
sethspin: the gtk perl module is required to open a dialog
window, running with default values (perl_fu_seth_spin)
sethspin: Unable to grok '' as colour specifier at /usr/lib/gimp/1.1/plug-ins/sethspin
line 149 (ERROR)
randomart1: the gtk perl module is required to open a dialog
window, running with default values (perl_fu_random_art_1)
randomart1: gimp_image_new: procedural database execution failed at
/usr/lib/gimp/1.1/plug-ins/randomart1 line 38 (ERROR)
bricks: the gtk perl module is required to open a dialog
window, running with default values (perl_fu_do_bricks)
bricks: gimp_patterns_set_pattern: procedural database execution failed at
/usr/lib/gimp/1.1/plug-ins/bricks line 27 (ERROR)
font_table: the gtk perl module is required to open a dialog
window, running with default values (perl_fu_font_table)
font_table: Font Table: Size parameter () is invalid at
/usr/lib/gimp/1.1/plug-ins/font_table line 37. (ERROR)
fire: the gtk perl module is required to open a dialog
window, running with default values (perl_fu_fire)
** WARNING **: a calling error occured while trying to run: "gimp_selection_float"
** WARNING **: a calling error occured while trying to run: "gimp_selection_float"
fire: function/macro "map_to_gradient" not found in Gimp::Drawable at
/usr/lib/gimp/1.1/plug-ins/fire line 31 (ERROR)
perlotine: the gtk perl module is required to open a dialog
window, running with default values (perl_fu_perlotine)
perlotine: No horizontal or vertical guides found. Aborted. at
/usr/lib/gimp/1.1/plug-ins/perlotine line 176. (ERROR)
---------- End of example 2 ----------