diff options
-rw-r--r-- | Build/source/README | 10 | ||||
-rw-r--r-- | Build/source/texk/tests/TeXLive/TLConfig.pm | 22 | ||||
-rw-r--r-- | Build/source/texk/tests/TeXLive/TLUtils.pm | 28 | ||||
-rw-r--r-- | Master/tlpkg/TeXLive/TLUtils.pm | 2 | ||||
-rw-r--r-- | Master/tlpkg/doc/releng.txt | 40 |
5 files changed, 73 insertions, 29 deletions
diff --git a/Build/source/README b/Build/source/README index c79f740ddba..388fbcd2948 100644 --- a/Build/source/README +++ b/Build/source/README @@ -34,15 +34,17 @@ aarch64-linux: armhf-linux: Raspbian/Raspberry Pi OS (Debian Buster) - gcc (Raspbian 8.3.0-6+rpi1) 8.3.0 + gcc version 10.2.1 20210110 (Raspbian 10.2.1-6+rpi1) ./Build --enable-xindy CLISP=${BUILD_ROOT_DIR}/clisp/clisp-build/clisp} + armhf-linux binaries are created and tested on RPi; + they run on RPi, as well as ARMv7 CPUs, but are untested on non-RPi + ARMv6 machines. i386-cygwin, x86_64-cygwin: gcc-10.2.0, cygwin-3.1.7 TL_CONFIGURE_ARGS="--enable-xindy --enable-shared CLISP=/path/to/clisp.exe LDFLAGS='-Wl,--no-insert-timestamp -Wl,--stack,0x800000'" \ ./Build - i386-freebsd, amd64-freebsd: Built on contextgarden, see below. FreeBSD 11.4 @@ -50,7 +52,7 @@ i386-freebsd, amd64-freebsd: i386-linux: see travis below. i386-netbsd, amd64-netbsd: - NetBSD/amd64 9.1 + NetBSD/amd64 9.2 gcc version 7.5.0 (nb4 20200810) TL_MAKE=gmake CC=gcc CXX=g++ \ CFLAGS=-D_NETBSD_SOURCE \ @@ -80,7 +82,7 @@ x86_64-linux, x86_64-linuxmusl: CentOS 7 Docker image with musl libc 1.1.5, plus gcc10: yum -y install centos-release-scl-rh - yum -y install devtoolset-10-gcc-c++ + yum -y install devtoolset-9-gcc-c++ yum install -y fontconfig-devel libX11-devel libXmu-devel libXaw-devel Binaries are taken from the CI testing via github; see the source/.github/* files for details on how to build, diff --git a/Build/source/texk/tests/TeXLive/TLConfig.pm b/Build/source/texk/tests/TeXLive/TLConfig.pm index b4a9a4c6875..f285471bd2e 100644 --- a/Build/source/texk/tests/TeXLive/TLConfig.pm +++ b/Build/source/texk/tests/TeXLive/TLConfig.pm @@ -1,3 +1,4 @@ +# $Id: TLConfig.pm 62186 2022-02-26 17:51:21Z karl $ # TeXLive::TLConfig.pm - module exporting configuration values # Copyright 2007-2021 Norbert Preining # This file is licensed under the GNU General Public License version 2 @@ -6,7 +7,7 @@ use strict; use warnings; package TeXLive::TLConfig; -my $svnrev = '$Revision: 61229 $'; +my $svnrev = '$Revision: 62186 $'; my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown"; sub module_revision { return $_modulerevision; } @@ -40,6 +41,7 @@ BEGIN { $TeXLiveURL @CriticalPackagesList $CriticalPackagesRegexp + @InstallExtraRequiredPackages $WindowsMainMenuName $RelocPrefix $RelocTree @@ -60,7 +62,7 @@ BEGIN { # the year of our release, will be used in the location of the # network packages, and in menu names, and other places. -our $ReleaseYear = 2021; +our $ReleaseYear = 2022; # users can upgrade from this year to the current year; might be the # same as the release year, or any number of releases earlier. @@ -121,6 +123,16 @@ if ($^O =~ /^MSWin/i) { $CriticalPackagesRegexp = '^(texlive\.infra|tlperl\.win32$)'; } + +# Extra package that are required for installation and installed +# during the first run of the installer. +# texlive-scripts are necessary for mktexlsr, updmap, fmtutil, ... +# the installation cannot continue without those +our @InstallExtraRequiredPackages = qw/texlive-scripts kpathsea hyphen-base/; +if ($^O =~ /^MSWin/i) { + push @InstallExtraRequiredPackages, "luatex"; +} + # our @AcceptedFallbackDownloaders = qw/curl wget/; our %FallbackDownloaderProgram = ( 'wget' => 'wget', 'curl' => 'curl'); @@ -357,6 +369,12 @@ C<systems/texlive/tlnet/>. A list of all those packages which we do not update regularly since they are too central, currently texlive.infra and (for Windows) tlperl.win32. +=item C<@TeXLive::TLConfig::InstallExtraRequiredPackages> + +A list of packages that are required in addition to those from +C<@CriticalPackagesList> for the installer to be able to conclude +installation. + =item C<$TeXLive::TLConfig::RelocTree> The texmf-tree name that can be relocated, defaults to C<texmf-dist>. diff --git a/Build/source/texk/tests/TeXLive/TLUtils.pm b/Build/source/texk/tests/TeXLive/TLUtils.pm index 9bade5c9bb0..94ab56a3d0e 100644 --- a/Build/source/texk/tests/TeXLive/TLUtils.pm +++ b/Build/source/texk/tests/TeXLive/TLUtils.pm @@ -1,4 +1,4 @@ -# $Id: TLUtils.pm 61960 2022-02-09 21:43:08Z karl $ +# $Id: TLUtils.pm 62112 2022-02-20 22:57:45Z preining $ # TeXLive::TLUtils.pm - the inevitable utilities for TeX Live. # Copyright 2007-2022 Norbert Preining, Reinhard Kotucha # This file is licensed under the GNU General Public License version 2 @@ -8,7 +8,7 @@ use strict; use warnings; package TeXLive::TLUtils; -my $svnrev = '$Revision: 61960 $'; +my $svnrev = '$Revision: 62112 $'; my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown"; sub module_revision { return $_modulerevision; } @@ -73,7 +73,7 @@ C<TeXLive::TLUtils> - TeX Live infrastructure miscellany TeXLive::TLUtils::create_language_def($tlpdb,$dest,$localconf); TeXLive::TLUtils::create_language_lua($tlpdb,$dest,$localconf); TeXLive::TLUtils::time_estimate($totalsize, $donesize, $starttime) - TeXLive::TLUtils::install_packages($from_tlpdb,$media,$to_tlpdb,$what,$opt_src, $opt_doc)>); + TeXLive::TLUtils::install_packages($from_tlpdb,$media,$to_tlpdb,$what,$opt_src, $opt_doc, $retry, $continue); TeXLive::TLUtils::do_postaction($how, $tlpobj, $do_fileassocs, $do_menu, $do_desktop, $do_script); TeXLive::TLUtils::announce_execute_actions($how, @executes, $what); TeXLive::TLUtils::add_symlinks($root, $arch, $sys_bin, $sys_man, $sys_info); @@ -502,7 +502,7 @@ sub platform_desc { 'amd64-midnightbsd'=> 'MidnightBSD on x86_64', 'amd64-netbsd' => 'NetBSD on x86_64', 'armel-linux' => 'GNU/Linux on ARM', - 'armhf-linux' => 'GNU/Linux on ARMv6/RPi', + 'armhf-linux' => 'GNU/Linux on RPi(32-bit) and ARMv7', 'hppa-hpux' => 'HP-UX', 'i386-cygwin' => 'Cygwin on Intel x86', 'i386-darwin' => 'MacOSX legacy (10.5-10.6) on Intel x86', @@ -1579,7 +1579,7 @@ sub time_estimate { } -=item C<install_packages($from_tlpdb, $media, $to_tlpdb, $what, $opt_src, $opt_doc)> +=item C<install_packages($from_tlpdb, $media, $to_tlpdb, $what, $opt_src, $opt_doc, $retry, $continue)> Installs the list of packages found in C<@$what> (a ref to a list) into the TLPDB given by C<$to_tlpdb>. Information on files are taken from @@ -1588,12 +1588,17 @@ the TLPDB C<$from_tlpdb>. C<$opt_src> and C<$opt_doc> specify whether srcfiles and docfiles should be installed (currently implemented only for installation from uncompressed media). +If C<$retry> is trueish, retry failed packages a second time. + +If C<$continue> is trueish, installation failure of non-critical packages +will be ignored. + Returns 1 on success and 0 on error. =cut sub install_packages { - my ($fromtlpdb,$media,$totlpdb,$what,$opt_src,$opt_doc) = @_; + my ($fromtlpdb,$media,$totlpdb,$what,$opt_src,$opt_doc, $opt_retry, $opt_continue) = @_; my $container_src_split = $fromtlpdb->config_src_container; my $container_doc_split = $fromtlpdb->config_doc_container; my $root = $fromtlpdb->root; @@ -1651,7 +1656,7 @@ sub install_packages { # (and not installing from disk). if (!$fromtlpdb->install_package($package, $totlpdb)) { tlwarn("TLUtils::install_packages: Failed to install $package\n"); - if ($media eq "NET") { + if ($opt_retry) { tlwarn(" $package will be retried later.\n"); push @packs_again, $package; } else { @@ -1670,7 +1675,12 @@ sub install_packages { info("$infostr\n"); # return false if download failed again if (!$fromtlpdb->install_package($package, $totlpdb)) { - return 0; + if ($opt_continue) { + push @::installation_failed_packages, $package; + tlwarn("Failed to install $package, but continue anyway!\n"); + } else { + return 0; + } } $donesize += $tlpsizes{$package}; } @@ -4080,7 +4090,7 @@ END_NO_SSL # sub query_ctan_mirror_curl { my $max_trial = 3; - my $warg = (win32() ? "-w %{url_effective} " : "-w '%{url_effective}' "); + my $warg = (win32() ? '-w "%{url_effective}" ' : "-w '%{url_effective}' "); for (my $i = 1; $i <= $max_trial; $i++) { # -L -> follow redirects # -s -> silent diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm index 33b46665785..4fe2883b18e 100644 --- a/Master/tlpkg/TeXLive/TLUtils.pm +++ b/Master/tlpkg/TeXLive/TLUtils.pm @@ -502,7 +502,7 @@ sub platform_desc { 'amd64-midnightbsd'=> 'MidnightBSD on x86_64', 'amd64-netbsd' => 'NetBSD on x86_64', 'armel-linux' => 'GNU/Linux on ARM', - 'armhf-linux' => 'GNU/Linux on ARMv6/RPi', + 'armhf-linux' => 'GNU/Linux on RPi(32-bit) and ARMv7', 'hppa-hpux' => 'HP-UX', 'i386-cygwin' => 'Cygwin on Intel x86', 'i386-darwin' => 'MacOSX legacy (10.5-10.6) on Intel x86', diff --git a/Master/tlpkg/doc/releng.txt b/Master/tlpkg/doc/releng.txt index c5331cddf6b..b931087ec00 100644 --- a/Master/tlpkg/doc/releng.txt +++ b/Master/tlpkg/doc/releng.txt @@ -76,7 +76,8 @@ will continue to commit normal package updates and update tlnet, while the trunk is updating tlpretest for YYYY+1. The branch must be created right before the first pretest-specific -commit (which is the next item, in Part II). +commit (which is the next item, in Part II). Ensure *.pm are updated in +Build/source first. cd /home/texlive/branch rm -rf * .[^.]* # be sure .svn et al. are gone @@ -127,9 +128,6 @@ Master/tlpkg/TeXLive/TLUtils.pm -- $mactex_darwin and -darwin strings Master/tlpkg/bin/tl-update-images Master/tlpkg/bin/tl-update-messages Master/tlpkg/bin/tl-update-tlnet -Master/tlpkg/installer/*.png - (make -C Master/tlpkg/doc/graphics -W texlive-installer-graphics.tex texlive.png) - then mv into place. Master/texmf-dist/web2c/texmfcnf.lua Master/texmf-dist/web2c/texmf.cnf # from Build/.../kpathsea (also ensure that the Build and Master texmf.cnf files are in sync) @@ -144,7 +142,7 @@ Add new scripts to linked_scripts if not already handled. 6. Run tex \\end to check that dynamic mktexfmt works. Ensure that web2c/texmf.cnf is updated for the current year (per above). -6a. Then run fmtutil-user --all to check that all formats build. +6a. Then run fmtutil-user --all to check that all formats build ok. 6b. (For karl@tug.org: leave new ~karl/.texlive`date +%Y` for bnb, and update ~bnb/.cshrc after commit.) @@ -155,7 +153,7 @@ and update ~bnb/.cshrc after commit.) Build/source/inst/texmf-dist Master/texmf-dist 8. Now, finally, try a first update of tlpretest: - env force_rebuild=true ~karl/bin/cron.pretest + env force_rebuild=true ~karl/bin/cron.pretest # ~15min This will fail because the pretest dir is not yet set up, but that's ok; the idea is to check the output and ensure all is basically ok. The complaints about unknown "svn status output line"s are ok. @@ -172,22 +170,38 @@ and not recreate all packages, so that a file with a given name is never rewritten. See recreate comments in tl-update-tlpdb and tl-update-containers. 9b. Sanity check: Do an installation as a normal user from the new -tlpretest, and keep it updated daily. +tlpretest, and keep this installation updated daily as normal users do, +that is, with tlmgr update --self --all. -9c. In 2020, as a special case, after a first successful build, this was run: +9c. Update other automatically-built binary sets, and ask tlbuild to +build all (including asymptote). + +9d. In 2020, as a special case, after a first successful build, this was run: tl-fix-container-links In order to make all the archive/*.tar.xz files into versioned symlinks, so a given tarball will not be regenerated unless the content changes. This was a one-time event, but left here as an example for the unknown future. 10. As of 2021, we want to keep updating tlnet from the new branch, as -described in I.6. For sanity, it is best to edit cron.tl to use a temp -destination instead of tlnet for the branch, initialize that repo from -tlnet (as above with tlpretest), and then do a test build before the -real one. To do the build: +described in item I.6. For safety, let's do a trial build from the new +branch to a temporary destination, say /home/texlive/tmp, before +updating the real tlnet. Initialize the tmp dir as above with +tlpretest, item 9): + cd /home/texlive/tmp + rm -rf * + cp -ar ~ftp/texlive/tlnet/[a-u]* . # omit tlnet/README* + +10a. Edit ~karl/bin/cron.tl: +- use /home/texlive/tmp instead of $ftp/tlnet for tlnet_dir; +- add --testlocation=/home/texlive/trial to the tl-update-tlnet invocation. + +10b. To do the test branch build: env force_rebuild=true cron.branch +Assuming it goes ok, then undo the edits. +There will be no linked_scripts dir (no build done), but that's ok; +we won't be installing binaries from a build. -11. In cron.tl, set net_frozen=false, critical= , and +11. In cron.tl, set critical= , net_frozen=false, and return to regular catalogue_compare=true updates. In the crontab, enable the pretest entries. |