[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp texi2any.pl
From: |
Patrice Dumas |
Subject: |
texinfo/tp texi2any.pl |
Date: |
Mon, 19 Nov 2012 20:13:38 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 12/11/19 20:13:38
Modified files:
tp : texi2any.pl
Log message:
Move everything related with setting @INC to BEGIN.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/texi2any.pl?cvsroot=texinfo&r1=1.145&r2=1.146
Patches:
Index: texi2any.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/texi2any.pl,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -b -r1.145 -r1.146
--- texi2any.pl 18 Nov 2012 00:46:39 -0000 1.145
+++ texi2any.pl 19 Nov 2012 20:13:38 -0000 1.146
@@ -36,13 +36,22 @@
Getopt::Long::Configure("gnu_getopt");
+# This big BEGIN block deals with finding modules and
+# some dependencies that we ship
+# * in source or
+# * installed or
+# * installed relative to the script
BEGIN
{
+ my ($real_command_name, $command_directory, $command_suffix)
+ = fileparse($0, '.pl');
+
my $datadir = '@datadir@';
my $package = '@PACKAGE@';
my $updir = File::Spec->updir();
- my ($real_command_name, $command_directory, $command_suffix)
- = fileparse($0, '.pl');
+
+ my $srcdir = defined $ENV{'srcdir'} ? $ENV{'srcdir'} : $command_directory;
+ my $libsrcdir = File::Spec->catdir($srcdir, 'maintain');
my $texinfolibdir;
if ($datadir ne '@' .'datadir@' and $package ne '@' . 'PACKAGE@'
@@ -50,6 +59,12 @@
$texinfolibdir = File::Spec->catdir($datadir, $package);
unshift @INC, ($texinfolibdir);
}
+ # in-source run
+ if (($command_suffix eq '.pl' and !(defined($ENV{'TEXINFO_DEV_SOURCE'})
+ and $ENV{'TEXINFO_DEV_SOURCE'} eq 0)) or $ENV{'TEXINFO_DEV_SOURCE'}) {
+ $texinfolibdir = $srcdir;
+ unshift @INC, $texinfolibdir;
+ }
# try to make package relocatable, will only work if standard relative paths
# are used
if ((!defined($texinfolibdir)
@@ -57,8 +72,69 @@
and -f File::Spec->catfile($command_directory, $updir, 'share',
'texinfo', 'Texinfo', 'Parser.pm')) {
unshift @INC, (File::Spec->catdir($command_directory, $updir, 'share',
'texinfo'));
}
+
+# find module location either in source, in pkgdatadir or in the perl paths.
+sub add_module_path_to_INC($$$$$$$@)
+{
+ my $module_name = shift;
+ my $configure_string = shift;
+ my $command_suffix = shift;
+ my $dev_source_environment = shift;
+ my $libsrcdir = shift;
+ my $texinfolibdir = shift;
+ my $command_directory = shift;
+ my @directories = @_;
+
+ if (($command_suffix eq '.pl' and !(defined($dev_source_environment)
+ and $dev_source_environment eq 0)) or $dev_source_environment) {
+ unshift @INC, File::Spec->catdir($libsrcdir, @directories);
+ } elsif ($configure_string ne 'yes' and defined($texinfolibdir)
+ and -d File::Spec->catdir($texinfolibdir, @directories)) {
+ unshift @INC, File::Spec->catdir($texinfolibdir, @directories);
+ } elsif (defined($texinfolibdir)) {
+ eval "require $module_name; ";
+ if ($@ and -d File::Spec->catdir($texinfolibdir, @directories)) {
+ unshift @INC, File::Spec->catdir($texinfolibdir, @directories);
+ }
+ }
+ # try to make the script relocatable
+ if (!defined($texinfolibdir) and $configure_string ne 'yes') {
+ eval "require $module_name; ";
+ if ($@ and -d File::Spec->catdir($command_directory, $updir,
+ 'share', 'texinfo', @directories)) {
+ unshift @INC, (File::Spec->catdir($command_directory, $updir, 'share',
+ 'texinfo', @directories));
+ }
+ }
}
+ # '@USE_EXTERNAL_LIBINTL @ and similar are substituted in the
+ # makefile using values from configure
+ add_module_path_to_INC("Locale::Messages", '@USE_EXTERNAL_LIBINTL@',
$command_suffix,
+ $ENV{'TEXINFO_DEV_SOURCE'}, $libsrcdir, $texinfolibdir, $command_directory,
+ 'lib', 'libintl-perl', 'lib');
+
+ add_module_path_to_INC("Unicode::EastAsianWidth",
'@USE_EXTERNAL_EASTASIANWIDTH@',
+ $command_suffix, $ENV{'TEXINFO_DEV_SOURCE'}, $libsrcdir, $texinfolibdir,
+ $command_directory, 'lib', 'Unicode-EastAsianWidth', 'lib');
+
+ add_module_path_to_INC("Text::Unidecode", '@USE_EXTERNAL_UNIDECODE@',
+ $command_suffix, $ENV{'TEXINFO_DEV_SOURCE'}, $libsrcdir, $texinfolibdir,
+ $command_directory, 'lib', 'Text-Unidecode', 'lib');
+}
+
+use Texinfo::Convert::Texinfo;
+use Texinfo::Parser;
+use Texinfo::Structuring;
+use Texinfo::Convert::Info;
+use Texinfo::Convert::HTML;
+use Texinfo::Convert::XML;
+use Texinfo::Convert::DocBook;
+use Texinfo::Convert::TextContent;
+use Texinfo::Convert::PlainTexinfo;
+use DebugTexinfo::DebugCount;
+use DebugTexinfo::DebugTree;
+
my ($real_command_name, $command_directory, $command_suffix)
= fileparse($0, '.pl');
@@ -132,52 +208,9 @@
my $srcdir = defined $ENV{'srcdir'} ? $ENV{'srcdir'} : $command_directory;
-if (($command_suffix eq '.pl' and !(defined($ENV{'TEXINFO_DEV_SOURCE'})
- and $ENV{'TEXINFO_DEV_SOURCE'} eq 0)) or $ENV{'TEXINFO_DEV_SOURCE'}) {
- unshift @INC, $srcdir;
-}
-
-require Texinfo::Convert::Texinfo;
-
-# find module location either in source, in pkgdatadir or in the perl paths.
-sub add_module_path_to_INC($$$$$$@)
-{
- my $module_name = shift;
- my $command_suffix = shift;
- my $dev_source_environment = shift;
- my $libsrcdir = shift;
- my $pkgdatadir = shift;
- my $command_directory = shift;
- my @directories = @_;
-
- if (($command_suffix eq '.pl' and !(defined($dev_source_environment)
- and $dev_source_environment eq 0)) or $dev_source_environment) {
- unshift @INC, File::Spec->catdir($libsrcdir, @directories);
- } elsif ('@USE_EXTERNAL_LIBINTL@' ne 'yes'
- and -d File::Spec->catdir($pkgdatadir, @directories)) {
- unshift @INC, File::Spec->catdir($pkgdatadir, @directories);
- } else {
- eval "require $module_name; ";
- if ($@ and -d File::Spec->catdir($pkgdatadir, @directories)) {
- unshift @INC, File::Spec->catdir($pkgdatadir, @directories);
- }
- }
- # try to make the script relocatable
- eval "require $module_name; ";
- if ($@ and -d File::Spec->catdir($command_directory, $updir,
- 'share', 'texinfo', @directories)) {
- unshift @INC, (File::Spec->catdir($command_directory, $updir, 'share',
- 'texinfo', @directories));
- }
-}
-
my $libsrcdir = File::Spec->catdir($srcdir, 'maintain');
-add_module_path_to_INC("Locale::Messages", $command_suffix,
- $ENV{'TEXINFO_DEV_SOURCE'}, $libsrcdir, $pkgdatadir, $command_directory,
- 'lib', 'libintl-perl', 'lib');
-require Locale::Messages;
# we want a reliable way to switch locale, so we don't use the system
# gettext.
Locale::Messages->select_package ('gettext_pp');
@@ -211,29 +244,6 @@
Locale::Messages::bindtextdomain ($messages_textdomain,
File::Spec->catdir($datadir, 'locale'));
-add_module_path_to_INC("Unicode::EastAsianWidth", $command_suffix,
- $ENV{'TEXINFO_DEV_SOURCE'}, $libsrcdir, $pkgdatadir, $command_directory,
- 'lib', 'Unicode-EastAsianWidth', 'lib');
-
-require Unicode::EastAsianWidth;
-
-add_module_path_to_INC("Text::Unidecode", $command_suffix,
- $ENV{'TEXINFO_DEV_SOURCE'}, $libsrcdir, $pkgdatadir, $command_directory,
- 'lib', 'Text-Unidecode', 'lib');
-
-require Text::Unidecode;
-
-# This is done at runtime because the modules above are also found at runtime.
-require Texinfo::Parser;
-require Texinfo::Structuring;
-require Texinfo::Convert::Info;
-require Texinfo::Convert::HTML;
-require Texinfo::Convert::XML;
-require Texinfo::Convert::DocBook;
-require Texinfo::Convert::TextContent;
-require Texinfo::Convert::PlainTexinfo;
-require DebugTexinfo::DebugCount;
-require DebugTexinfo::DebugTree;
# Version setting is complicated, because we cope with
# * script with configure values substituted or not