texlive[61711] Master/tlpkg/TeXLive/TLUtils.pm: work around "only

commits+karl at tug.org commits+karl at tug.org
Sun Jan 23 17:29:03 CET 2022


Revision: 61711
          http://tug.org/svn/texlive?view=revision&revision=61711
Author:   karl
Date:     2022-01-23 17:29:03 +0100 (Sun, 23 Jan 2022)
Log Message:
-----------
work around "only used once" warnings with ugly
assignments in the BEGIN block, since the "package
PKGNAME BLOCK" was invented for perl 5.14.0
(2011), and that is too new for OpenCSW on Solaris 10.

Modified Paths:
--------------
    trunk/Master/tlpkg/TeXLive/TLUtils.pm

Modified: trunk/Master/tlpkg/TeXLive/TLUtils.pm
===================================================================
--- trunk/Master/tlpkg/TeXLive/TLUtils.pm	2022-01-23 15:53:00 UTC (rev 61710)
+++ trunk/Master/tlpkg/TeXLive/TLUtils.pm	2022-01-23 16:29:03 UTC (rev 61711)
@@ -1,6 +1,6 @@
 # $Id$
 # TeXLive::TLUtils.pm - the inevitable utilities for TeX Live.
-# Copyright 2007-2021 Norbert Preining, Reinhard Kotucha
+# Copyright 2007-2022 Norbert Preining, Reinhard Kotucha
 # This file is licensed under the GNU General Public License version 2
 # or any later version.
 
@@ -132,21 +132,50 @@
 our $PERL_SINGLE_QUOTE; # we steal code from Text::ParseWords
 
 # We use myriad global and package-global variables, unfortunately.
-# To avoid "used only once" warnings, we must use the variable names
-# again; one way to do that would be to assign them all to themselves in
-# the BEGIN block, but this seems (slightly) less ugly.
-# Example in first reply to: https://perlmonks.org/?node_id=11139324
+# To avoid "used only once" warnings, we must use the variable names again.
 # 
-# Because we are providing a block to the package command, the scope is
-# limited to that block, so the current real package ends up unaffected.
-package main {
-  our ($LOGFILE, $LOGFILENAME, @LOGLINES,
-    @debug_hook, @ddebug_hook, @dddebug_hook, @info_hook,
-    @install_packages_hook, @warn_hook,
-    $checksum_method, $gui_mode, $machinereadable,
-    $no_execute_actions, $regenerate_all_formats); }
-package JSON { our ($false, $true); }
-package TeXLive::TLDownload { our $net_lib_avail; }
+# This ugly repetition in the BEGIN block works with all Perl versions.
+BEGIN {
+  $::LOGFILE = $::LOGFILE;
+  $::LOGFILENAME = $::LOGFILENAME;
+  @::LOGLINES = @::LOGLINES;
+  @::debug_hook = @::debug_hook;
+  @::ddebug_hook = @::ddebug_hook;
+  @::dddebug_hook = @::dddebug_hook;
+  @::info_hook = @::info_hook;
+  @::warn_hook = @::warn_hook;
+  $::checksum_method = $::checksum_method;
+  $::gui_mode = $::gui_mode;
+  @::install_packages_hook = @::install_packages_hook;
+  $::machinereadable = $::machinereadable;
+  $::no_execute_actions = $::no_execute_actions;
+  $::regenerate_all_formats = $::regenerate_all_formats;
+  #
+  $JSON::false = $JSON::false;
+  $JSON::true = $JSON::true;
+  #
+  $TeXLive::TLDownload::net_lib_avail = $TeXLive::TLDownload::net_lib_avail;
+}
+      
+## A cleaner way is to use the "package PKGNAME BLOCK" syntax:
+## when providing a block to the package command, the scope is
+## limited to that block, so the current real package ends up unaffected.
+## Example in first reply to: https://perlmonks.org/?node_id=11139324
+## (Other solutions are also given there, but they don't work well in
+## our context here, although we use them elsewhere.)
+## 
+## Unfortunately the package BLOCK syntax was invented for perl 5.14.0,
+## ca.2011, and OpenCSW on Solaris 10 only provides an older Perl. If we
+## ever drop Solaris 10 support, we can replace the above with this.
+## 
+#package main {
+#  our ($LOGFILE, $LOGFILENAME, @LOGLINES,
+#    @debug_hook, @ddebug_hook, @dddebug_hook, @info_hook,
+#    @install_packages_hook, @warn_hook,
+#    $checksum_method, $gui_mode, $machinereadable,
+#    $no_execute_actions, $regenerate_all_formats); }
+#package JSON { our ($false, $true); }
+#package TeXLive::TLDownload { our $net_lib_avail; }
 
 BEGIN {
   use Exporter ();
@@ -415,7 +444,7 @@
     # We don't use uname numbers here.)
     #
     # this changes each year, per above:
-    my $mactex_darwin = 14;  # lowest minor rev supported by x86_64-darwin.
+    my $mactex_darwin = 14;  # lowest minor rev supported by universal-darwin.
     #
     # Most robust approach is apparently to check sw_vers (os version,
     # returns "10.x" values), and sysctl (processor hardware).



More information about the tex-live-commits mailing list.