Index of /pub/texlive-utah-2023

[ICO]NameLast modifiedSize

[PARENTDIR]Parent Directory  -
[DIR]Images/2024-03-05 15:19 -
[TXT]README.html2023-08-24 07:05 124K
[   ]README.sok2023-03-15 05:41 7.0K
[   ]SYS.texlive-2023.csh2023-03-09 06:00 8.4K
[   ]SYS.texlive-2023.sh2023-03-09 06:06 7.3K
[DIR]bin/2023-05-23 12:58 -
[   ]build-asymptote.sh2022-01-22 08:19 7.4K
[   ]build-texlive-2023.sh2023-02-24 10:18 61K
[   ]make-texlive-binary-distributions.sh2021-01-19 06:37 1.6K
[   ]make-texlive-snapshot-2023.sh2023-02-18 11:18 2.1K
[   ]show-file-counts.sh2022-01-13 06:48 2.4K
[   ]show-lib-deps.sh2022-01-13 06:51 1.4K
[   ]show-texlive-libs.sh2022-01-13 06:52 2.1K
[   ]update-texlive-2023.sh2023-08-24 07:09 5.7K


                     

TEX Live 2023 early access

Original version: Fri Feb 24 11:33:34 2023
Last updates: Mon Mar 6 14:41:31 2023 ... Thu Aug 24 07:05:42 2023
Current time in Salt Lake City, Utah, USA: Wednesday, 22-May-2024 17:07:54 MDT

This is the latest in an series of annual documents describing work at Utah on building TeX Live software packages: for earlier reports, follow these links: 2016, 2017, 2018, 2019, 2020, 2021, and 2022.

Further updates for TeX Live 2022 were frozen on 12-Mar-2023, and future updates will happen only in the 2023 (and later) trees. Final binaries for 2023 should be available within a few days of the freeze, after which TeX Live 2023 DVD production work begins. Binaries for other than the standard supported platforms will appear at this site for some time after the source code freeze, and the site maintainer is willing to consider builds for more systems than those offered here.

Here are links to later major sections in this document:

This directory contains files created in support of building and using a pre-release of the TeX Live 2023 distribution. The official release is expected in April 2023, and should be available on DVD in mid-summer 2023; you can download it electronically here. Please note that if you install it from either of those sources, you should first choose a suitable mirror, and then run the update procedure described later in this document. The TeX Live package repository is actively maintained, and you should expect that several hundred packages are updated each month.

Your first task is to learn how to mount an ISO image on your platform. On many desktops, simply selecting its icon in a File Manager tool does the job. On others, you might have to mount the image (usually as an administrator), such as with this command on most Linux flavors:

    # mount -o ro /path/to/your/copy/of/texcol2023.iso /mnt

Details of how to mount an ISO image on many operating systems are described here.

The top-level directory of the DVD image contains README and index.xx.html files (in English, French, and German) that should help guide your selection and installation procedure. For example, Unix users can run the script texlive/install-tl, and Windows users, the script texlive/install-tl-windows.bat. In either case, brief answers to a few questions about your local preferences get the installation started. The rest is automatic, and should complete in less than an hour. See below for resource requirements and how to choose a TeX Live package repository mirror near you.

When installation completes, you should unmount the image through your File Manager, or with an administrator command like this:

    # umount /mnt

After a successful installation, the ISO image is then no longer needed, and can be deleted if disk space is limited. Copies of the image remain on numerous TeX Live mirror sites for years, so you can always download it again if needed.

There are more details about the installation process here.

A test lab at this site has hundreds of flavors of Unix on some of which TeX Live builds are attempted, and the scripts named *.*sh in this directory are those used by the local developer.

The intent of the build-texlive-2023.sh script is that it should setup the build environment on each platform, and then run the internal Build script to carry out the build. We have found it necessary on many platforms to carefully control the search path and environment variables at the start of a TeX Live build, and to avoid use of installation locations that are owned by the vendor package system. See elsewhere for an explanation of why we scrupulously avoid the GNU default prefix of /usr/local on new systems.

The scripts in this directory are likely to change during the spring build season for TeX Live 2023 as more platforms are successfully supported.

Note: In sharp contrast to previous years, certain non-TeXware libraries required by some of the TeX Live 2018, 2019, 2020, 2021, 2022, and 2023 binary executable programs now mandate compiler support for more recent versions of ISO Standard C++, and such compilers are unavailable for many older systems. As a result, the number of platforms for which the code can be built and run has been noticeably reduced. Unless your computer and operating system are fairly new, the last release that you may be able to run until you do an operating system, and possibly, hardware, upgrade is TeX Live 2017.

If you control your own hardware, or have benevolent computer management, and you really need the latest TeX Live, then a good solution may be to create a virtual machine (VM) running a recent O/S release. There are several free, or no-cost, or low-cost, virtualization technology solutions, including bhyve, Hyper-V, KVM, QEMU, virt-manager, OVirt, Parallels, VirtualBox, VMware Workstation Player, and Xen, and every modern operating system supports one or more of those, although generally, at most one can be installed at a given time.

One of the easiest for a new user is VirtualBox, and it requires no special privileges to create and run a virtual machine. At the Utah test lab, we generally allocate a new VM one CPU, 1GB to 4GB DRAM memory, and 80GB of virtual disk storage. For the single purpose of running TeX Live, a 25GB disk would be ample. The VM treats CPU, memory, and disk as expandable resources up to their declared size, so if an initial installation needs only 4GB of disk space, that is all that the underlying host needs to provide. If the assigned memory size is suboptimal, just shut down the VM, change the memory size in the VM management GUI, and reboot the VM. In our experience, setting up a new VM takes about 15 minutes, and modern O/Ses have management GUIs that make user account setup and software package installation easy for novices.

Most commercial cloud services supply a choice of preconfigured virtual machines, but you must pay a small monthly fee for CPUs and disk storage. The advantage is that the service provider does most of the work for you, including VM configuration and backup, and in return, you can access and control your personal cloud VM from anywhere in the world where you have an Internet connection.

As of 21 March 2023, the following builds have been (mostly) successful by the TeX Live team, or at Utah:

    % show-file-counts.sh
    475      aarch64-linux
    477      amd64-freebsd
    470      amd64-freebsd124
    470      amd64-freebsd132
    470      amd64-freebsd140
    470      amd64-ghostbsd2201
    470      amd64-ghostbsd2305
    470      amd64-hardenedbsd14
    463      amd64-hello081
    470      amd64-hello082
    474      amd64-netbsd
    470      amd64-netbsd100
    476      amd64-openbsd72
    470      amd64-openbsd73
    470      arm32-linux
    475      armhf-linux
    464      armv8a-linux
    476      i386-freebsd
    477      i386-linux
    468      i386-netbsd
    471      i386-netbsd100
    464      i386-solaris
    473      i686-centos7
    470      i686-void
    462      i86pc-openindiana
    457      i86pc-solaris114
    464      m68k-debian12
    462      ppc64be-freebsd131
    459      ppc64le-centos8
    471      ppc64le-fedora37
    464      riscv64-ubuntu2304
    464      s390x-fedora32
    464      s390x-fedora37
    464      s390x-ubuntu2204
    464      sparc64-debian12
    479      universal-darwin
    477      x86_64-alpine317
    470      x86_64-centos7
    470      x86_64-centos8
    470      x86_64-centos9
    474      x86_64-darwinlegacy
    470      x86_64-dragonflybsd640
    470      x86_64-fedora38
    478      x86_64-linux
    469      x86_64-linuxmusl
    465      x86_64-solaris
    470      x86_64-trisquel11
    477      x86_64-ubuntu2004
    477      x86_64-ubuntu2204
    470      x86_64-ubuntu2210
    470      x86_64-ubuntu2304
    470      x86_64-ubuntu2310
    470      x86_64-void
    470      x86_64-void64m

    Total: 54 systems

    Missing binaries [compared to x86_64-centos7]:

    aarch64-linux                   :
    amd64-freebsd                   :
    amd64-hello081                  : asy tex2xindy texindy xasy xindy xindy.mem xindy.run
    amd64-netbsd                    : asy
    amd64-openbsd72                 : luajittex mfluajit mfluajit-nowin
    amd64-openbsd73                 : luajittex mfluajit mfluajit-nowin
    armhf-linux                     :
    armv8a-linux                    : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    i386-freebsd                    :
    i386-linux                      :
    i386-netbsd                     : asy xasy
    i386-netbsd100                  :
    i386-solaris                    : luajithbtex luajittex mfluajit mfluajit-nowin tex2xindy texindy texluajit texluajitc xindy xindy.mem xindy.run
    i686-centos7                    :
    i86pc-openindiana               : asy luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc xasy
    i86pc-solaris114                : asy luajithbtex luajittex mfluajit mfluajit-nowin tex2xindy texindy texluajit texluajitc xasy xindy xindy.mem xindy.run
    m68k-debian12                   : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    ppc64be-freebsd131              : asy luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc xasy
    ppc64le-centos8                 : luajithbtex luajittex mfluajit mfluajit-nowin tex2xindy texindy texluajit texluajitc xindy xindy.mem xindy.run
    ppc64le-fedora37                : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    riscv64-ubuntu2304              : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    s390x-fedora32                  : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    s390x-fedora37                  : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    s390x-ubuntu2204                : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    sparc64-debian12                : luajithbtex luajittex mfluajit mfluajit-nowin texluajit texluajitc
    universal-darwin                : xindy.mem
    x86_64-alpine317                :
    x86_64-darwinlegacy             : pdfclose pdfopen xdvi xdvi-xaw
    x86_64-linux                    :
    x86_64-linuxmusl                : asy tex2xindy texindy xasy xindy xindy.mem xindy.run
    x86_64-solaris                  : luajithbtex luajittex mfluajit mfluajit-nowin tex2xindy texindy texluajit texluajitc xindy xindy.mem xindy.run
    x86_64-ubuntu2004               :
    x86_64-ubuntu2204               :

The first column in the first table is the number of installed executables, and the second column is the CPU architecture, base operating system, distribution, and optional version.

Of those directories, the following are part of the pre-test installation (described below):

    aarch64-linux       i386-freebsd        universal-darwin    x86_64-linux
    amd64-freebsd       i386-linux          windows             x86_64-linuxmusl
    amd64-netbsd        i386-netbsd         x86_64-cygwin       x86_64-solaris
    armhf-linux         i386-solaris        x86_64-darwinlegacy

Most of the others have been built at the University of Utah, almost entirely in facilities of the Department of Mathematics, and on my personal home VM cluster running with VirtManager and QEMU on top of Ubuntu 20.04. Several of those VMs emulate other CPU architectures.

Builds that lack the *xindy* files are on systems for which clisp is absent from the operating system package repositories, or has not been installed from the repositories, or has not yet been successfully built and installed locally from source code. That deficiency may be remedied if time permits.

Although some of the builds on FreeBSD and GNU/Linux systems appear to duplicate the contents of i386-freebsd, i386-linux, amd64-freebsd, and x86_64-linux, they serve two purposes: (1) demonstration of the possibility of independent builds of TeX Live at other sites and on different O/S distributions, and (2) builds on bleeding-edge O/S releases may benefit from new and improved compiler technology, and newer system libraries.

Arch Linux (arch), Artix Linux, BlackArch, ClearLinux, CentOS Stream, Fedora Rawhide (fedorarh), GUIX, Hyperbola, Kaisen, Kali, Kaos, PCLinuxOS (pclinuxos), Peppermint OS (from 20222), openSUSE Jump, openSUSE Tumbleweed, Parabola, Solus, Trident, TrueOS (trueos1806), Ubuntu RR (ubuntu-rr), and Void Linux do not have version numbers: they use a rolling-update model, and once updates have run, and if needed, the systems have been rebooted, they are at the latest available software levels.

It may also be of interest to record the library dependencies of all of the executables in one of the binary directories:

    % show-lib-deps.sh $prefix/texlive/2023/bin/x86_64-centos7
    Library dependencies of TeX Live executables in /usr/uumath/texlive/2023/bin/x86_64-centos7:

    ld-linux-x86-64              afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex csplain ctangle ctie ctwill ctwill-refsort ctwill-twinx cweave detex devnag disdvi dt2dv dv2dt dvi2tty dvibook dviconcat dvicopy dvidvi dvigif dvilj dvilj2p dvilj4 dvilj4l dvilj6 dvilualatex dvilualatex-dev dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf hilatex hishrink histretch hitex inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck latex latex-dev lollipop luacsplain luahbtex luajithbtex luajittex lualatex lualatex-dev luatex mag makeindex makejvf mendex mex mf mf-nowin mflua mflua-nowin mfluajit mfluajit-nowin mfplain mft mllatex mltex mmafm mmpfb mpost msxlint odvicopy odvitype ofm2opl omfonts opl2ofm optex otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdflatex-dev pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex platex-dev pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 twill upbibtex updvitomp updvitype uplatex uplatex-dev upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xelatex-dev xetex xindy.run xml2pmx xmltex
    libGL                        asy
    libGLX                       asy
    libGLdispatch                asy
    libICE                       asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw
    libSM                        inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw
    libX11                       asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin pdfclose pdfopen xdvi-xaw
    libXau                       asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin pdfclose pdfopen xdvi-xaw
    libXaw                       xdvi-xaw
    libXext                      asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw
    libXi                        asy
    libXmu                       xdvi-xaw
    libXpm                       xdvi-xaw
    libXt                        xdvi-xaw
    libXxf86vm                   asy
    libbz2                       xelatex xelatex-dev xetex
    libc                         afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex csplain ctangle ctie ctwill ctwill-refsort ctwill-twinx cweave detex devnag disdvi dt2dv dv2dt dvi2tty dvibook dviconcat dvicopy dvidvi dvigif dvilj dvilj2p dvilj4 dvilj4l dvilj6 dvilualatex dvilualatex-dev dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf hilatex hishrink histretch hitex inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck latex latex-dev lollipop luacsplain luahbtex luajithbtex luajittex lualatex lualatex-dev luatex mag makeindex makejvf mendex mex mf mf-nowin mflua mflua-nowin mfluajit mfluajit-nowin mfplain mft mllatex mltex mmafm mmpfb mpost msxlint odvicopy odvitype ofm2opl omfonts opl2ofm optex otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdflatex-dev pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex platex-dev pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 twill upbibtex updvitomp updvitype uplatex uplatex-dev upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xelatex-dev xetex xindy.run xml2pmx xmltex
    libcom_err                   asy
    libcrypt                     asy xindy.run
    libcrypto                    asy
    libcurl                      asy
    libdl                        asy dvilualatex dvilualatex-dev dviluatex dvisvgm inimf luacsplain luahbtex luajithbtex luajittex lualatex lualatex-dev luatex mf mflua mflua-nowin mfluajit mfluajit-nowin optex pdfclose pdfopen texlua texluac texluajit texluajitc xdvi-xaw xindy.run
    libexpat                     xelatex xelatex-dev xetex
    libfontconfig                xelatex xelatex-dev xetex
    libfreebl3                   asy xindy.run
    libfreetype                  xelatex xelatex-dev xetex
    libgcc_s                     asy luajittex mfluajit mfluajit-nowin texluajit texluajitc
    libglut                      asy
    libgssapi_krb5               asy
    libidn                       asy
    libk5crypto                  asy
    libkeyutils                  asy
    libkrb5                      asy
    libkrb5support               asy
    liblber-2.4                  asy
    libldap-2.4                  asy
    libm                         afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex csplain ctangle ctie ctwill ctwill-refsort ctwill-twinx cweave detex devnag disdvi dt2dv dv2dt dvi2tty dvibook dviconcat dvicopy dvidvi dvigif dvilj dvilj2p dvilj4 dvilj4l dvilj6 dvilualatex dvilualatex-dev dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf hilatex hishrink histretch hitex inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck latex latex-dev lollipop luacsplain luahbtex luajithbtex luajittex lualatex lualatex-dev luatex mag makeindex makejvf mendex mex mf mf-nowin mflua mflua-nowin mfluajit mfluajit-nowin mfplain mft mllatex mltex mmafm mmpfb mpost msxlint odvicopy odvitype ofm2opl omfonts opl2ofm optex otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdflatex-dev pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex platex-dev pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 twill upbibtex updvitomp updvitype uplatex uplatex-dev upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xelatex-dev xetex xindy.run xml2pmx xmltex
    libncurses                   asy xindy.run
    libnspr4                     asy
    libnss3                      asy
    libnssutil3                  asy
    libpcre                      asy
    libplc4                      asy
    libplds4                     asy
    libpng15                     xelatex xelatex-dev xetex
    libpthread                   asy bibtexu upmendex xelatex xelatex-dev xetex
    libreadline                  asy xindy.run
    libresolv                    asy
    librt                        asy
    libsasl2                     asy
    libselinux                   asy
    libsmime3                    asy
    libssh2                      asy
    libssl                       asy
    libssl3                      asy
    libstdc++                    asy
    libtinfo                     asy xindy.run
    libuuid                      inimf mf mflua mflua-nowin mfluajit mfluajit-nowin xdvi-xaw xelatex xelatex-dev xetex
    libxcb                       asy inimf mf mflua mflua-nowin mfluajit mfluajit-nowin pdfclose pdfopen xdvi-xaw
    libz                         asy xelatex xelatex-dev xetex
    linux-vdso                   afm2pl afm2tfm aleph amstex asy autosp axohelp bbox bg5conv bibtex bibtex8 bibtexu cef5conv cefconv cefsconv cfftot1 chkdvifont chktex cslatex csplain ctangle ctie ctwill ctwill-refsort ctwill-twinx cweave detex devnag disdvi dt2dv dv2dt dvi2tty dvibook dviconcat dvicopy dvidvi dvigif dvilj dvilj2p dvilj4 dvilj4l dvilj6 dvilualatex dvilualatex-dev dviluatex dvipdfm dvipdfmx dvipng dvipos dvips dviselect dvispc dvisvgm dvitodvi dvitomp dvitype ebb eplain epsffit eptex etex euptex extconv extractbb gftodvi gftopk gftype gregorio gsftopk hbf2gf hilatex hishrink histretch hitex inimf initex jadetex kpseaccess kpsereadlink kpsestat kpsewhich lacheck latex latex-dev lollipop luacsplain luahbtex luajithbtex luajittex lualatex lualatex-dev luatex mag makeindex makejvf mendex mex mf mf-nowin mflua mflua-nowin mfluajit mfluajit-nowin mfplain mft mllatex mltex mmafm mmpfb mpost msxlint odvicopy odvitype ofm2opl omfonts opl2ofm optex otangle otfinfo otftotfm otp2ocp outocp ovf2ovp ovp2ovf patgen pbibtex pdfclose pdfcslatex pdfcsplain pdfetex pdfjadetex pdflatex pdflatex-dev pdfmex pdfopen pdftex pdftosrc pdfxmltex pdvitomp pdvitype pfb2pfa pk2bm pktogf pktype platex platex-dev pltotf pmpost pmxab pooltype ppltotf prepmx ps2pk psbook psnup psresize psselect pstops ptex ptftopl r-mpost r-pmpost r-upmpost scor2prt sjisconv synctex t1ascii t1asm t1binary t1disasm t1dotlessj t1lint t1mac t1rawafm t1reencode t1testpage t1unmac t4ht tangle teckit_compile tex tex2aspc tex2xindy tex4ht texlua texluac texluajit texluajitc texsis tftopl tie ttf2afm ttf2pk ttf2tfm ttfdump ttftotype42 twill upbibtex updvitomp updvitype uplatex uplatex-dev upmendex upmpost uppltotf uptex uptftopl utf8mex vftovp vlna vptovf weave wofm2opl wopl2ofm wovf2ovp wovp2ovf xdvi-xaw xdvipdfmx xelatex xelatex-dev xetex xindy.run xml2pmx xmltex

xz-compressed tar files for each of the binary trees can be found here . They are about 60% of the size of corresponding gz-compressed files, both at maximal compression level -9. They would normally be unpacked in the directory path /path/to/texlive/2023/bin. After installing them, it is likely necessary to update the TeX preloaded memory-image files, *.fmt, by running the command ./fmtutil-sys --all in the just-unpacked directory. Those files are TeX-Live-release dependent, but platform-independent, so if you unpack multiple binary trees that are shared across different systems, you only need to regenerate them once.

The binary format files that contain precompiled macros for various engines based on TeX sometimes contain settings for the local paper size, notably, those engines that can produce PDF output. Therefore, before you run fmtutil-sys, run whichever of these is suitable for your site:

    % tlmgr paper a4            # for European A4 paper (210mm × 297mm)
    % tlmgr paper letter        # for US letter A paper (8.5in × 11in)

For more on the problems of configuring a default paper size for TeXware, see the document section Page layout and document printing.

TeX Live executables can often be shared with O/S releases of higher levels, and binaries for the oldest GNU/Linux release have a good chance of running on other GNU/Linux distributions for the same CPU family. That works as long as Linux kernel and system library versions are upward compatible. Thus, a CentOS 6 binary can likely run on CentOS 7, CentOS 8 and CentOS 9, but also on Alma, Debian, Devuan, EuroLinux, Navy, openSUSE, Red Hat, Rocky, Scientific Linux, Springdale, Ubuntu, VZLinux, and hundreds of other Linux distributions. Similarly, Solaris 10 binaries run just fine on Solaris 11. FreeBSD binaries are often usable on ArisbluBSD, ClonOS, FreeNAS, FuryBSD, GhostBSD, HardenedBSD, KFreeBSD, MidnightBSD, NomadBSD, OPNsense, PacBSD, PC-BSD, Trident, and TrueOS.

Once an installation is complete for a given platform, a user can switch to it by executing one of these scripts:

    ### assume prefix=/usr/local (but trivially changeable at each site)

    ### csh and tcsh login shells
    source $prefix/skel/SYS.texlive-2023.csh

    ### ash, bash, dash, ksh, pdksh, sh, and sh login shells
    ### (POSIX-compliant, or supersets thereof)
    . $prefix/skel/SYS.texlive-2023.sh

Those scripts redefine certain TeXware environment values to new ones suitable for use with TeX Live, and they reset the PATH to put the 2023 release first, ahead of any local, older TeX Live, or vendor-supplied installations of TeX.


Resource requirements

An installed TeX Live 2023 tree with all available packages, and binaries for one O/S architecture, requires about 10GB of disk space. It contains about 16_000 directories and 220_000 files. Smaller storage totals are possible with the installer programs in the official TeX Live 2023 DVD image, which allow you to choose subsets for your local installation.

Building TeX Live 2023 requires primarily source code, rather than macro packages and fonts: about 2.2GB of storage suffices on most platforms.

Fortunately, computer storage costs continue to drop. In early 2023 on the US market, spinning magnetic disks cost about US$17 per terabyte, solid-state disks (SSDs) cost about US$25 per terabyte, and NVMe M.2 Gen4 cards about US$70 per terabyte. Thus, storage of a full TeX Live 2023 tree costs between US$0.17 and US$0.70, similar to that for stamps on a traditional postal letter, and less than a typical cafe beverage.

The economic realities of the computer market today, and knowledge of resource growth from computer history, suggest that it is better to spend money on more, and faster, storage, internal memory (DRAM), and more CPU cores, than it is to pay premium prices for higher CPU clock speeds. Most personal computers, from mobile devices to laptops to desktops, are idle much of the time.


Choosing a TeX Live repository mirror

The master TeX Live repository is located in Berlin, Germany, but there may be a repository mirror with higher data transfer rates that is closer to you.

For example, to change your default repository to the North American master mirror in Utah, run this command:

    % tlmgr option repository http://ctan.math.utah.edu/tex-archive/systems/texlive/tlnet

To switch back to the Berlin master site, run this command:

    % tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet

That chooses a mirror site that is `near' you. It is likely to differ on successive updates, due to network traffic and machine load.

Once a repository has been chosen, your TeX Live installation remembers the setting, so the sample commands above are likely to be needed only once a year, unless you travel a lot with TeX Live on a mobile device, in which case the Berlin master is likely your best choice.

If you have reason to suspect that your chosen TeX Live mirror is out of date, check its status at the CTAN monitoring site.

You can find a long list of CTAN mirror sites here.


Installing the TeX Live 2023 pre-test

The official description of installing the TeX Live 2023 pre-test is found here. However, because that document doesn't show explicit examples, it may leave the human puzzled as to which repository to choose. I recorded these steps that produce a working installation using the Utah mirror:

    ### Move to a temporary directory
    $ cd /path/to/suitable/temporary/directory

    ### Fetch the small (6MB) installer bundle
    $ wget http://www.math.utah.edu/pub/texlive/tlpretest/install-tl-unx.tar.gz

    ### If wget is not available on your system, use
    $ curl http://www.math.utah.edu/pub/texlive/tlpretest/install-tl-unx.tar.gz > install-tl-unx.tar.gz

    ### If curl is not available on your system, download the URL with any Web browser

    ### Unpack the installer bundle
    $ tar xf install-tl-unx.tar.gz

    ### Move to the just-unpacked installer directory
    ### [WARNING: the year-month-day numeric suffix changes daily]
    $ cd install-tl-20230224

    ### Start the work, using the Utah mirror
    $ ./install-tl -repository http://www.math.utah.edu/pub/texlive/tlpretest/

The text-mode installer asks a few questions. I selected all binary platforms (because our servers supply them to numerous clients of varying operating systems and CPU types), picked the full installation scheme, provided the location of the installation tree, chose a suitable local paper type, and then typed I to begin the automatic installation of 7337 packages. That step took 42 minutes on a physical machine, or about 170 packages per minute. The installation creates about 15_500 subdirectories and 216_000 files.

The newly installed tree takes almost 11GB of filesystem space, with executables for 16 platforms in the bin subdirectory. That subdirectory takes 2.9GB of space, so a typical installation with just one platform directory would need about 8GB of space. However, the space requirements increase with each subsequent update with tlmgr, because it normally saves previous versions, to allow package rollback if a problem is detected.

To verify the above experience, the next day, I redid the installation on a virtual machine running FreeBSD 13 with ZFS. This time, I selected just the default platform package. There were 3978 packages installed in 36 minutes, or 110 packages per minute. Packages per minute rates on other installations for the 2020 installation are:


Updating your TeX Live 2023 pre-test installation

Every few days, I update my TeX Live 2023 pre-test installation tree like this on my CentOS 7 workstation:

    $ PATH=/path/to/texlive/2023/bin/x86_64-linux-centos-7:$PATH
    $ export PATH

    ### Update TeX Live Manager itself (this usually does nothing)
    $ tlmgr update --self

    ### Update TeX Live 2023 tree
    $ tlmgr update --all

Obviously, those commands are good candidates for hiding in a wrapper script. If you add an invocation of that script to your crontab(1) file, it then runs automatically at intervals that you specify in that file, and sends its output in e-mail to you.

Here is a sample crontab file entry that does just that, dispensing with a wrapper script, and running the update every Sunday morning at 3:15am local time (the #-initiated comments are part of my crontab file as a reminder of the field order and meaning):

    # 00-59 00-23 01-31 01-12 0-6(0=Sunday)
    # mm    hh    dd    mon   weekday       command
      15     3    *     *     0             ( PATH=/path/to/texlive/2023/bin/x86_64-linux:/bin:/usr/bin ; export PATH ; tlmgr update --self ; tlmgr update --all )

Change the weekday field from 0 to * to make the job run daily. Change it to 1,3,5 to run it Monday, Wednesday, and Friday. Such jobs are usually best run at off-peak hours at both your site, and the repository site. Our site in Utah is on US Mountain Time (UTC/GMT - 6 hours in summer, UTC/GMT - 7 hours in winter). The TUG master site in Berlin, Germany, is on Central European Time (UTC/GMT + 2 hours in summer, UTC/GMT + 1 hour in winter).

As of your last browser refresh of this Web page, the time in Salt Lake City is Wednesday, 22-May-2024 17:07:54 MDT .

The script that we use at Utah for TeX Live updates is available here. It contains a comment header that includes reminders of how to select the repository during both pre-test and post-release times.


Prerequisites for building TeX Live 2023

Prior to attempting a build of TeX Live 2023, you should first ensure that your system packages are up-to-date, using either a system GUI that offers easy-to-use package management, or whatever package manager your system offers. Common choices are dnf or yum in the CentOS / Fedora / Red Hat Linux family, apt-get in the Debian and Ubuntu Linux family, pkg in DragonFlyBSD and the FreeBSD family, pkg_add in NetBSD and OpenBSD, pkg and pkgutil in the Hipster / OpenIndiana / Solaris family, zypper in openSUSE Linux, sisyphus in Redcore Linux, slapt-get in Salix Linux, slackpkg in Slackware Linux, xbps-install in Void Linux, and likely dozens of other package management systems in the 1000+ Linux distributions that are available.

Next, you should ensure that you have installed a fairly recent version of the GNU C/C++ compilers: generally, version 8 or later (version 13 is the latest in 2023). Versions 7 and earlier of those compilers lack features of recent ISO Standards for C++ that are required by several of the packages within TeX Live.

You should also install recent versions of lua, perl, and python, as well as the developer versions (libraries plus C/C++ header files) of the readline, X11, Xaw, and Xaw3d libraries.

The fontconfig-devel package is required to build xetex.

GNU make is required for building the freetype package. Other Unix make implementations may suffice for the rest of the build.

To build the multilingual document indexing program, xindy, you need the clisp Common Lisp system. While many O/S distributions have packages for it, some lack it entirely: notably, the CentOS / Fedora / Red Hat Linux family, and the Hipster / OpenIndiana / Solaris family. To build clisp, you also need the libffcall, libsigsegv, and libunistring package. If the configure script for clisp does not find needed packages, it pauses with instructions for how to fetch source distributions and build temporary versions of them in the clisp build tree.

The Asymptote graphics language and drawing program is the most challenging to support, because it has many dependent packages, although most of them are optional, albeit recommended to maximize the features and power of Asymptote. From a run of the configure script for that system, I recorded this list:

    ================================================================
    Asymptote has more features when additional packages are already
    installed on the build host:

            boehm-gc            [STRONGLY recommended]
            fftw-devel          [version 3.0 or later]
            freeglut-devel      [for -lglut]
            git
            glm-devel           [for -lgl and WebGL support]
            ghostscript         [version 9.55 or later]
            gsl-devel           [for -lgsl]
            libcurl-devel       [for -lcurl]
            libtool
            libglvnd-devel      [for -lGL]
            libsigsegv-devel    [for -lsigsegv]
            libtirpc-devel      [or rpc, or grpc, or netrpc, or sunrpc]
            libX11-devel        [for -lX11]
            libXau-devel        [for -lXau]
            libXext-devel       [for -lXext]
            ncurses-devel       [for -lncurses]
            readline-devel      [for -lhistory and -lreadline]
            python38            [or any 3.x or later]
            zlib                [for -lz]

    See source/utils/asymptote/asymptote.spec for a detailed list.

    Package names are operating system dependent, so some
    searching may be needed to find equivalents on your system.
    ================================================================

The complexity of the Asymptote system, its need for many additional packages, and its use of recent C++ features, means that it is not compiled automatically in a TeX Live build. Instead, once the main TeX Live build has completed successfully and been installed, I first source one of our local SYS.texlive-2023.* scripts to set the search path and environment variables for TeX Live 2023, and then run the build-asymptote.sh script that manages the build and validation of Asymptote, and if successful, ends with a report of how to install Asymptote in the TeX Live tree.

Although Asymptote builds have been stumbling blocks for all previous years of TeX Live work at Utah, so far for 2023, Asymptote has been successfully built for most systems.

For more on prerequisites for TeX Live builds, see here and here.


Build problems and other remarks for TeX Live 2023

Donald Knuth's TeX and METAFONT, and their associated TeXware and MFware programs and data files, have proven extraordinarily robust over more than 45 years of use, and have been ported to most commercially important machine architectures (operating systems and CPUs), from mobile devices to supercomputers. Their original code is in Web, a literate-programming language that can be processed by tangle and weave to produce a Pascal program file and a TeX file that documents the software.

Pascal no longer enjoys the popularity that it did when Donald Knuth chose it as his second implementation language, and C is now the most widely available language that continues to be used for much of the world's software. Thus, for about 35 years, the Pascal source has been translated automatically to the C language by a special utility.

Most other software related to TeX and Metafont written since then has been in C, C++, Fortran, Java, and Common Lisp, in the Unix/POSIX shell, sh, and in scripting languages like awk, javascript, lua, perl, and python. It is rare to find a system where TeX and METAFONT themselves cannot be built.

A modern TeX Live distribution continues much more than just TeX and METAFONT. On top of those two programs, each about 20_000 lines of Pascal, stands a TeX Live source tree that, after a build has completed, has about 2620 directories, 31_950 files, 300 Makefiles, and 85 GNU-style configure scripts. The binary subdirectory for each platform contains up to 470 programs. The total amount of source code just in the main languages (Asymptote, C, C++, Java, Lisp, PostScript, and Web) and in five scripting languages (awk, lua, perl, python, and shell) is about 4_908_000 lines. In addition, in the final TeX Live installation tree, there are about 8_500_000 lines of code in the TeX macro language. In round figures, there are more than 13 million lines of code in TeX Live 2023!

Many of the source packages that are built and included with TeX Live distributions are handled independently by other developers outside the TeX world, and the job of the TeX Live team each year is to find out by actual build experience how many of the latest releases of those other packages have build issues, or platform dependence, or nasty CPU-architecture assumptions.

In view of those observations, it should be no surprise that the annual TeX Live production takes team members about two to three months of hard work, and that there are numerous platforms where builds are only partially successful, and thus, some programs are missing from the binary subdirectories, as illustrated by the large table near the beginning of this Web page.


Building TeX Live 2023 with clang compilers

Since TeX Live production began, outside the Microsoft Windows world, the default compiler family at most team builder sites has been gcc (GNU Compiler Collection). That family has been ported to almost all operating systems in common use, has front ends for multiple languages (Ada, Brig, C, C++, D, Fortran, Go, JIT, LTO, Modula/2, Objective C, Objective C++, and Rust), plus support for Java and Pascal on older gcc releases, and has backends for all major CPU architectures used in desktop and server computers.

gcc is released under the terms of the GNU General Public License, version 2 (June 1991). That license contains requirements that derivatives of the code must be similarly licensed, and made available in source form, to guarantee freedom of use for everyone.

Some find that license too restrictive, and several other open-source licenses have been proposed. Among them are the simpler BSD 2-clause and 3-clause licenses common in the BSD operating system family, and the Apache License version 2.0 (January 2004) that is used by many Web servers, and by the other major compiler family, LLVM + Clang.

Starting in 2012, FreeBSD developers began a move towards using the LLVM compilers as the default, and that operation was completed with the FreeBSD 10.0 release in January 2014. OpenBSD has made a similar change, but NetBSD still uses gcc. On all of those systems, multiple versions of both compiler families are available in the package system, sometimes right up to weekly snapshots of gcc that are only a few days old.

Because gcc has a much longer history than clang, in order to be competitive, the latter attempts to recognize common gcc language syntax additions (often added to satisfy the requirements of operating-system kernel authors), as well as some, but certainly not all, of the gcc command-line options.

As long as software authors are aware of both compilers, they can generally take steps to avoid tying their code to just a single compiler. Alas, at least one vendor, Apple in macOS, offers a program called gcc that is just a wrapper around clang, and that often fails to compile code that makes tests of gcc-specific preprocessor symbols. It must be emphasized that clang, while it has become an excellent compiler, is far from a superset of gcc's capabilities, and targets only a small number of CPU architectures compared to those that gcc supports.

One particular behavior difference between the two compiler families that is exposed by TeX Live builds is that gcc always automatically searches /usr/local/include for header files, and /usr/local/{lib,lib64} for library files, but clang does not! That difference can be harmless on Linux distributions, but in the DragonFlyBSD, FreeBSD, and OpenBSD worlds, /usr/local has been usurped for the vendor package systems, belying its name.

To address deficiencies of various operating systems, and deal with version-number dependencies of needed libraries, TeX Live itself contains library source code for things like data compression and Unicode support, and the build process may expect those private versions to be used. Depending on the settings of the -Wl,-rpath and -L compiler options that name directories where libraries are searched for, compilation may succeed with gcc, but fail with clang, when the latter finds the wrong libraries.

It is unclear whether a clean solution to this behavior mismatch exists, given that TeX Live 2023 contains about 2375 directories and about 270 Makefiles. I have been able to use both compiler families for building TeX Live 2023 on FreeBSD 13 x86_64, and to use clang (but not gcc) on OpenBSD 6.9 x86_64. However, because of compiler version-dependent C++ library requirements, it seems less useful to use clang on other platforms: end-user sites might then find some TeX Live executables unusable until they installed clang binary packages themselves. Our systems at Utah have numerous versions of both compiler families compiled from source code and installed, and a tree for just one recent version of clang takes about 2GB of disk space.

Many users of TeX Live installations are unlikely to know much about computer system management, and would not even know how to find and install binary packages for additional compilers, so the TeX Live team has to try to produce a software installation that works out of the box for the largest number of users. Thus, various versions of gcc remain the predominant choice for building TeX Live.


Build reports for various platforms

This major section contains reports of the TeX Live 2023 build experience on numerous platforms, in alphabetically ordered subsections: just scroll down to any that are of interest to you, or follow links from the contents listing.

With rare exceptions, just before a TeX Live build is attempted, operating system package updates are run, and the build host rebooted if necessary, so the build is done with the latest available software.

Here are links to the contents of this section:


Alpine 3.17 x86_64 success

Alpine Linux 3.17 was released on 22-Nov-2022, and an update to 3.17.2 on 10-Feb-2023.

Alpine Linux is unusual among Linux distributions in that it is based on the MUSL C standard library, rather than the GNU one. Our site has test machines for several versions of Alpine Linux, but only one non-Alpine system that uses MUSL: Void Linux MUSL on x86_64.

A build of TeX Live 2023, including Asymptote, on Alpine Linux 3.17 succeeded, except for xindy. That failed because clisp is not in the Alpine Linux binary package system.

I have since built and installed clisp from source code, and a fresh build of TeX Live 2023, include Asymptote and xindy, succeeded.


Arch ARM32 success

The TeX Live 2023 build with the native GNU compilers (gcc-9.2.0) on Arch Linux ARM32 (little-endian Cortex-A9 armv7l CPU) was problem free.


CentOS 7 i686 success [after workarounds]

The default gcc family on CentOS 7 i686 (== x86) is version 4.8.5 20150623 (Red Hat 4.8.5-44), which is much too old to compile TeX Live released of the last several years. Unlike the 64-bit CentOS 7, there is no collection of devtoolset-n (n = 7, 8, 9, 10, and 11) packages for later gcc compiler releases. Thus, a build of TeX Live 2023 is not possible without a bootstrap process to build newer compilers.

Fortunately, I was able to build version 8.5.0 compilers with the 4.8.5 compilers, and use the newer compilers for a successful build of TeX Live 2023. The i686-centos7 directory has a copy of the libstdc++.so* files that are needed to run Asymptote. Simply set the LD_LIBRARY_PATH variable to point to its installed location on your local system, or better, put that setting in a wrapper script for your local use of Asymptote.


CentOS 7 x86_64 success

The TeX Live 2023 build with the native GNU compilers (gcc-8.3.1) from the devtoolset-8 compiler package on CentOS 7.9.2009 x86_64 was problem free. I had to move the work to a dedicated virtual machine with little additional software installed, because on our main CentOS 7 physical server, with lots of added packages, the builds failed with assembler errors that I did not attempt to debug.


CentOS 8 ppc64le success

The TeX Live 2023 build with the native GNU compilers (gcc-8.4.1) on the rolling release CentOS Stream 8 on ppc64le (PowerPC Little Endian) was problem free.

The Alma, CentOS, EuroLinux, Navy, Rocky, Springdale, and Vzlinux distributions of GNU/Linux have a common ancestor, so binaries for this O/S should work on the others as well. That resolves the problem noted later for Rocky Linux on this CPU architecture.


CentOS 8 x86_64 success

The TeX Live 2023 build with the native GNU compilers (gcc-8.5.0) on the rolling release CentOS Stream 8 on x86_64 was problem free.

After CentOS 7, there is no longer a 32-bit x86 version: only x86_64 is supported. There are, however, two derivatives of CentOS 8 and Red Hat 8 with support for other CPUs: Alma Linux (ARM64 (== aarch64), ppc64le, s390x, and x86_64), and Rocky Linux (ARM64 (== aarch64), and x86_64). Rocky 9 adds support for ppc64le and s390x CPUs.


CentOS 9 x86_64 success

The TeX Live 2023 build with the native GNU compilers (gcc-11.3.1) on the rolling release CentOS Stream 9 on x86_64 was problem free.


Debian 11.5 ARM64 success

The TeX Live 2023 build with the native GNU compilers (gcc-10.2.1) on Debian 11.5 Linux ARM64 (little-endian Cortex-A57 aarch64 CPU) was problem free.

Comment: We have run QEMU version 4 (or earlier) emulations on Ubuntu 20.04 of 64-bit ARM systems with Debian 11 Linux, FreeBSD 13.1, and Rocky 9 Linux since 2021. To our surprise, qemu-7.0.0 on Ubuntu 22.10 does not run ARM64 successfully; the boot process dies immediately inside the BIOS, before a kernel can be started. The problem has persisted after system updates, but because the physical host is a server with about 70 running guest virtual machines, it is not practical to run Ubuntu 22.10 updates more than once or twice a year. We expect to retry ARM64 emulation on this server after the next round of updates, perhaps in summer 2023.


Debian 12 Alpha failure

The TeX Live 2023 build with the native GNU compilers (gcc-12.2.0) on Debian 12 Alpha failed. The problem is missing X11 header files, but the Debian package system reports unresolvable conflicts that prevent their installation. I have seen similar problems many times before on various O/S distributions, and often, the only recourse is to build a new VM from the latest ISO images in the hope of getting a consistent package system.

I have a second virtual machine for Debian 12 Alpha on another physical machine, created at a different time. However, it too shows the same package system block.

If time permits, I may attempt to build a new machine for this system.


Debian 12 M68K success

The TeX Live 2023 build with the native GNU compilers (gcc-10.4.0) on Debian 12 32-bit Motorola M68K was problem free.


Debian 12 SPARC64 success

The TeX Live 2023 build with the native GNU compilers (gcc-12.2.0) on Debian 12 SPARC64 was problem free.


DragonFlyBSD 6.4.0 x86_64 success

The TeX Live 2023 build with the native GNU compilers (gcc-8.3) on DragonFlyBSD 6.4.0 x86_64 was problem free.


Fedora 32 S390x success

The TeX Live 2023 build with the native GNU compilers (gcc-10.3.1) on Fedora 32 S390x (IBM zSeries CPU architecture) was problem free.

clisp is not in the binary package system, but I was able to build it from source code, so xindy built successfully.


Fedora 37 ppc64le success

The TeX Live 2023 build with the native GNU compilers (gcc-12.2.1) on Fedora 37 ppc64le (PowerPC Little-Endian) was problem free, except for Asymptote.

Three of the Asymptote tests (gctest, disclaim_test, and disclaim_weakmap_test) failed with a segmentation fault. Later compilations failed with undefined preprocessor symbols and undeclared functions, notably, fpsetprec().


Fedora 37 S390x success

The TeX Live 2023 build with the native GNU compilers (gcc-12.2.1) on Fedora 37 S390x (IBM zSeries CPU architecture) was problem free.


Fedora 38 x86_64 success

A prerelease of Fedora 38 Server Beta 1.3 appeared on 7-Mar-2023, and a week later, I built a new virtual machine for it.

The TeX Live 2023 build with the native GNU compilers (gcc-13.0.1 (20230310)) on Fedora 38 x86_64 was problem free.


FreeBSD 12.4 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-10.4.0) on FreeBSD 12.4 AMD64 (== x86_64) was problem free.


FreeBSD 13.1 ppc64be success

The TeX Live 2023 build with the native GNU compilers (gcc-11.3.0) on FreeBSD 13.1 ppc64be (PowerPC Big-Endian) was problem free.


FreeBSD 13.2 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-11.3.1) on FreeBSD 13.2 AMD64 (== x86_64) was problem free.


FreeBSD 14.0 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-11.3.1) on FreeBSD 14.0 AMD64 was problem free.

This virtual machine was built from the latest ISO image on 18 March 2023. The operating system is still in prerelease state, called 14.0-CURRENT, with the official release expected in mid July 2023.


GhostBSD 22.01 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-10.4.0) on GhostBSD 22.01 AMD64 was problem free.


GhostBSD 23.05 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-12.2.0) on GhostBSD 23.05 AMD64 (based on FreeBSD 13.2-STABLE) was problem free. Asymptote built, but with five missing features: Eigen, LSP, OpenGL, V3D, and WebGL. That is three more than on HelloSystem 0.8.2, even after I tried matching installed binary packages on those two systems.

The binary package system on GhostBSD 23.05 supplies TeX Live 2023, but it is missing Asymptote and 58 other executables that are available in the build at this site.


HardenedBSD 14.0 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-10.4.0) on HardenedBSD 14.0 AMD64 was problem free.


HelloSystem 0.8.1 AMD64 partial success

HelloSystem is a relatively recent O/S development that is based on FreeBSD, but with a desktop much more like that of Apple macOS. It uses the FreeBSD binary and source package systems, so it should retain compatibility, except possibly for GUI software, with that system.

I have previously tried HelloSystem versions 0.5.1 (April 2021), 0.6.0 (June 2021), and 0.8.0 (May 2022), but all of them became unusable, or lost their GUI desktop, after package updates.

The new 0.8.1 release (February 2022) seems to be more stable, and I was able to configure a new virtual machine for it, and install a large collection of FreeBSD 13.1 packages. Like FreeBSD, it is not possible to have more than one recent gcc version installed, even though they get different executable names: the package manager removes other versions before installing the requested one.

HelloSystem is unusual in that its developers view end users as nothing but button pushers: there are no C header files on the initial system, nor could I find anything in the FreeBSD 13.1 package system that would supply them. Some Web searching finally tracked down the problem: the header files, and other files for ``developers'', are moved into a separate disk image, developer.img, that must be downloaded along with the installed ISO image. I used the one found at https://github.com/helloSystem/ISO/releases/download/r0.8.1/hello-0.8.1_0H324-FreeBSD-13.1-amd64.developer.img. It is not clear what to do with that image file: the usual mount command does not recognize it. However, if one uses the desktop GUI file manager to navigate to its local filepath, then simply clicking on it produces a password prompt, and then automatic installation of about 350 files in /usr/include, and likely many others elsewhere in the filesystem.

HelloSystem has TeX Live 2021 in its package system, and as I generally do for any new virtual machine, I installed that, because it has the side effect of installing numerous other packages and libraries that are needed for TeX Live source builds.

I had TeX Live 2023 build issues with gcc-11.3.0 before I discovered that there were remnants from an earlier attempt to use gcc-12.2.1 compilers. I therefore removed all gcc packages, then installed the gcc-12 package.

My first build attempts with TeX Live uncovered more missing header files, libraries, and executables, but once they were located and installed, the main build completed.

The Asymptote build failed at link time with a library conflict that I do not yet understand:

      /usr/local/bin/g++12 -DHAVE_CONFIG_H -D_FILE_OFFSET_BIS=64 -DUSEGC        \
            -D_THREAD_SAFE -pthread -DFFTWPP_SINGLE_THREAD -Wall                \
            -I/usr/local/include -I. -Igc-8.2.0/include -std=c++11              \
            -I/usr/local/include -std=c11 -I/usr/local/include                  \
            -fno-var-tracking -ILspCpp/include -o asy camperror.o path.o        \
            drawpath.o drawlabel.o picture.o psfile.o texfile.o util.o          \
            settings.o guide.o flatguide.o knot.o drawfill.o path3.o            \
            drawpath3.o drawsurface.o beziercurve.o bezierpatch.o pen.o         \
            pipestream.o types.o builtin.o gsl.o runtime.o runbacktrace.o       \
            runpicture.o runlabel.o runhistory.o runarray.o runfile.o           \
            runsystem.o runpair.o runtriple.o runpath.o runpath3d.o             \
            runstring.o runmath.o env.o genv.o stm.o dec.o errormsg.o           \
            callable.o name.o symbol.o entry.o exp.o newexp.o stack.o           \
            camp.tab.o lex.yy.o access.o virtualfieldaccess.o absyn.o record.o  \
            interact.o fileio.o fftw++asy.o parallel.o simpson.o coder.o        \
            coenv.o impdatum.o locate.o parser.o program.o application.o        \
            varinit.o fundec.o refaccess.o envcompleter.o process.o             \
            constructor.o array.o Delaunay.o predicates.o PRCbitStream.o        \
            oPRCFile.o PRCdouble.o writePRC.o glrender.o tr.o shaders.o         \
            jsfile.o v3dfile.o tinyexr.o EXRFiles.o GLTextures.o lspserv.o      \
            symbolmaps.o main.o revision.o -Wl,-rpath,/usr/local/lib/pth        \
            -L/usr/local/lib/pth -LLspCpp -LLspCpp/third_party/uri/src glew.o   \
            -lGLX -lglut -lcurl -lrt -lsigsegv -lz -lreadline -ltinfo           \
            -lncurses -lfftw3 -lGL gc-8.2.0/.libs/libgc.a ;                     \
    fi
    /usr/local/bin/ld: gc-8.2.0/.libs/libgc.a(pthread_support.o): undefined     \
        reference to symbol 'pthread_setname_np@@FBSD_1.6'
    /usr/local/bin/ld: /lib/libthr.so.3: error adding symbols: DSO missing from \
        command line
    collect2: error: ld returned 1 exit status
    gmake: *** [Makefile:130: asy] Error 1

Thus, Asymptote is missing from the binary executable package, and so is xindy. When I tried to install the needed clisp for the latter, the package system informed me that it would first remove gcc-12, so I canceled that package request.


HelloSystem 0.8.2 AMD64 failure

There is a newer development release, 0.8.2, for HelloSystem that I installed in another virtual machine. This time, I installed clisp and texlive-full first, to resolve the choice of a preferred C compiler: that installed gcc-12.2.0 as a dependent package. I followed that with a long list of other needed packages. Next, I downloaded the developer.img file, and verified its MD5 checksum. However, when I tried to install it, either by clicking on its icon, or running the macOS-like open command, it complained

    The application `Mount" can't be launched because it can't be found.

I copied the /usr/include directory from the 0.8.1 VM, but that is not enough to allow C/C++ compilations, because there are many other missing files.

I also ran pkg update and pkg upgrade to make installed packages current, and freebsd-update with its fetch and install options to update the kernel, and rebooted. That brought the system from FreeBSD 13.1-RELEASE to 13.1-RELEASE-p7, but the developer.img file still cannot be mounted and installed.

I conclude that HelloSystem is not yet a suitable platform for software development. However, FreeBSD is a solid and stable operating system, and HelloSystem automatically uses the preferred ZFS filesystem, so I expect to check for newer HelloSystem releases from time to time, and revisit TeX Live builds in newer VMs.


HelloSystem 0.8.2b AMD64 success

On 22 May 2023, I built a new VM for HelloSystem: this is still labeled 0.8.2, but is based on FreeBSD 13.2-STABLE, instead of 13.1. The Web site package is labeled experimental-13.2.

The missing header files are found in a separate package, hello-0.8.2_0H335-FreeBSD-13.2-amd64.developer.img. That file needs to be downloaded into a local user directory. I then navigated in the file manager tool to its location, and clicked on its icon. That popped up a panel asking for the administrator password, with a button to continue installation. When it completed, the previously empty system header file directory, /usr/include, had 2519 files in it.

After doing a large number of package installations, I successfully built TeX Live 2023 and Asymptote with the gcc-12.2.0 compiler family. Asymptote reported only two missing features: Eigen and LSP. I installed the eigen binary package, and did a clean rebuild of Asymptote: alas, it is still lacking those two features.


NetBSD 10.0 AMD64 success

The TeX Live 2023 build with the native GNU compilers (gcc-10.4.0) on 64-bit NetBSD 10.0 (beta) AMD64 (= x86_64) was problem free.


NetBSD 10.0 i386 success

The TeX Live 2023 build with the native GNU compilers (gcc-10.4.0) on 32-bit NetBSD 10.0 (beta) i386 (= x86) was problem free.


OpenBSD 7.2 AMD64 success

OpenBSD 7.2 was officially released on 20 October 2022, although I had a beta release installed in a virtual machine on 4 August 2022. I built a new VM from the official release on 1 November 2022, and installed a large suite of packages from the OpenBSD 7.2 repository, including the gcc-11.2.0p3 and g++-11.2.0p3 compiler releases. With those compilers, builds of TeX Live 2023 from the source tree snapshots of 24 February 2023 and 6 March 2023, including Asymptote, were successful.

An OpenBSD user kindly reported that there are two versions of gcc available: 8.4 and 11.2, but regrettably, only one of those can be installed at a time because of conflicts in the libestdc++.so.* files. On the local build system, I have this:

    % ls -l /usr/local/lib/libestdc++.so*
    -rw-r--r--  1 root  bin  15107376 Sep 28 18:00 /usr/local/lib/libestdc++.so.20.0
    -rw-r--r--  1 root  bin      2389 Sep 28 18:00 /usr/local/lib/libestdc++.so.20.0-gdb.py

If a copy of those files is made elsewhere, and the variable LD_LIBRARY_PATH set appropriately (perhaps inside a wrapper script), then it may be possible to instead have the gcc-8.4 compilers installed. I have therefore included those two library files in the amd64-openbsd72 directory.


OpenBSD 7.3 AMD64 partial success [with workarounds]

A prerelease of OpenBSD 7.3 became available on 11-Mar-2023. After several failures at installing it from the install73.iso file on two different physical servers, I gave up, and switched to the cd73.iso file. That produced a successful installation, and packages have been installed for a TeX Live 2023 build attempt.

As with OpenBSD 7.2, I installed the gcc-11.x compilers. Alas, the TeX Live 2023 build died with C++ errors in the teckit package.

I removed the 11.x compilers, and installed the gcc-8.4.0 compilers, and that produced a successful build of TeX Live 2023, including Asymptote, but there are several missing binaries. That problem is still to be resolved.

Because of the libestdc++.so.* problems noted in the preceding section on OpenBSD 7.2, I have supplied those libraries that are needed for Asymptote in the amd64-openbsd73 binaries.


OpenIndiana i86pc partial success

The OpenSolaris descendant, OpenIndiana, used to have a version numbered release, and a rolling release called Hipster. However, only the latter is current. The main build of TeX Live 2023 with the gcc-10.4.0 compiler family (available as an optional package to supplement the default gcc-7.5.0 compilers) was successful.

Unfortunately, a build attempt for Asymptote failed with numerous C++ compiler errors. It is not clear why that happens, because builds on many other systems with gcc versions 8 and later have successfully built Asymptote. The Hipster package system offers no other gcc versions, but it does have a clang-13 package. A fresh build attempt of Asymptote with that compiler family also failed with many C++ errors.


Rocky 9 ppc64be [in progress]

A build attempt of TeX Live 2023 on Rocky 9 Linux on ppc64be (PowerPC Big-Endian) with the native gcc-11.3.1 (20220421 (Red Hat 11.3.1-2)) compilers failed with an internal compiler error in compiling libs/pixman/pixman-src/pixman/pixman-access.c.

I changed to the pixman directory and resumed the build with a smaller number of parallel make jobs, and the failure disappeared. However, even with a single make job, it showed up later like this:

  ...
  local/build/bare/texlive-20230311/source/libs/icu/icu-src/source/i18n/vtzone.cpp:1352:1: \
  internal compiler error: Segmentation fault
   1352 | }
        | ^
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See  for instructions.
  The bug is not reproducible, so it is likely a hardware or OS problem.

I gave up with that compiler, installed the gcc-toolset-12 package, and started a fresh TeX Live 2023 build that is still in progress.


Solaris 11.4 i86pc partial success [with workarounds]

The TeX Live 2023 build with native compilers (gcc-12.2.0) on Solaris 11.4 i86pc (== x86_64) initially failed because of shared library issues with an old 2008-vintage clisp in /opt/csw/bin/, the Open Community Software repository for Solaris.

The solution proved to be a temporary renaming of that executable, followed by a new build with the --disable-xindy flag for configure. That completed successfully.

A build attempt for Asymptote failed with similar C++ errors reported for OpenIndiana. I gave up trying to build that component, because two different compilers on OpenIndiana had failed to build Asymptote.


Trisquel 11.0 x86_64 success

The TeX Live 2023 build with native compilers (gcc-11.3.0) on Trisquel 11.0 (Aramo) on x86_64 was problem free. The new O/S release was announced on 19-Mar-2023, and I created a virtual machine for it at this site on 24-Mar-2023. It is based on Ubuntu 22.04 LTS (supported until 2027). The release announcement reports that Trisquel also runs on ARM32 and ARM64 CPUs, but I could find no ISO images for those systems at the download site.

The Asymptote build succeeded, but its --version output showed that there were a half-dozen disabled options. I installed some more packages, and did a few rebuilds and package installations, and finally got this report:

    % asy --version
    Asymptote version 2.85 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]

    ENABLED OPTIONS:
    V3D      3D vector graphics output
    WebGL    3D HTML rendering
    OpenGL   3D OpenGL rendering
    SSBO     GLSL shader storage buffer objects
    GSL      GNU Scientific Library (special functions)
    FFTW3    Fast Fourier transforms
    Eigen    Eigenvalue library
    XDR      External Data Representation (portable binary file format for V3D)
    CURL     URL support
    Readline Interactive history and editing
    Sigsegv  Distinguish stack overflows from segmentation faults
    GC       Boehm garbage collector
    threads  Render OpenGL in separate thread

    DISABLED OPTIONS:
    LSP      Language Server Protocol

I removed the usual --disable-lsp option for the build, to try to remove that single disabled option. However, compilation then failed. The Trisquel package system supplies /usr/bin/asy (version 2.78). Its version output has LSP enabled, but Eigen is missing.


Ubuntu 20.04 x86_64 success

The TeX Live 2023 build with native compilers (gcc-9.4.0) on Ubuntu 20.04.5 LTS (Long-Term Support, until April 2025) (code name Focal Fossa) on x86_64 was problem free.


Ubuntu 22.04 s390x success

The TeX Live 2023 build with native compilers (gcc-11.3.0) on Ubuntu 22.04.2 (code name Jammy Jellyfish) on s390x was problem free.


Ubuntu 22.10 x86_64 success

The TeX Live 2023 build with native compilers (gcc-12.2.0) on Ubuntu 22.10 (code name Kinetic Kudu) on x86_64 was problem free.


Ubuntu 23.04 RISC-V64 success [with workarounds]

The main TeX Live 2023 build with native compilers (gcc-12.2.0) on Ubuntu 23.04 (code name Lunar Lobster) on RISC-V64 was problem free.

The build attempt for Asymptote failed because the configure scripts for that component are too old to recognize the RISC-V64 architecture. I thought that it would be easy to repair this simply by replacing the files config.guess and config.sub with current versions, then rerunning autoconf and autoheader in the four subdirectories. That did not work, because the Asymptote build downloads a fresh copy of gc-8.2.0, wiping out the newer files.

I made another attempt by replacing the version number string 8.2.0 with 8.2.2 in the Asymptote tree, the latest version of the Boehm garbage collector listed at its Web site https://www.hboehm.info/gc/. I then removed the gc-8.2.0 directory tree, and tried a fresh build. That ultimately succeeded.

Asymptote's chief architect reports that gc-8.2.2 had caused issues on some systems, which is why it is not yet the default. However, adding the configuration flag --enable-gc-8.2.2 allows building Asymptote with a different version of the garbage collector, without needing any code modifications.


Ubuntu 23.04 x86_64 success

The TeX Live 2023 build with native compilers (gcc-12.2.0) on Ubuntu 23.04 (code name Lunar Lobster) on x86_64 was problem free.


Ubuntu 23.10 x86_64 success

The TeX Live 2023 build with native compilers (gcc-12.3.0) on Ubuntu 23.10 (code name Mantic Minotaur) on x86_64 was problem free.

The Asymptote build is still missing a few features that are available in versions from earlier Ubuntu releases, because I could not identify the needed packages:

    % asy --version
    ...
    DISABLED OPTIONS:
    V3D      3D vector graphics output
    WebGL    3D HTML rendering
    OpenGL   3D OpenGL rendering
    LSP      Language Server Protocol

Void Linux i686 success

The TeX Live 2023 build with native compilers (gcc-12.2.0) on Void Linux (rolling release) on i686 (== x86) was problem free.


Void Linux x86_64 success

The TeX Live 2023 build with native compilers (gcc-12.2.0) on Void Linux (rolling release) on x86_64 was problem free.


Void Linux x86_64 (MUSL) success

The TeX Live 2023 build with native compilers (gcc-12.2.0) on Void Linux (rolling release) on x86_64 with the MUSL C library (instead of glibc) was problem free.

Prior to the build, I installed all of the packages recommended for Asymptote, and on completion, I find that asy has these sorted library dependencies and version information:

    % ldd asy | sort -f
    /lib/ld-musl-x86_64.so.1 (0x7fbb2532f000)
    libc.so                     => /lib/ld-musl-x86_64.so.1 (0x7fbb2532f000)
    libcrypto.so.1.1            => /lib/libcrypto.so.1.1 (0x7fbb23e00000)
    libcurl.so.4                => /lib/libcurl.so.4 (0x7fbb24a91000)
    libfftw3.so.3               => /lib/libfftw3.so.3 (0x7fbb24608000)
    libgcc_s.so.1               => /lib/libgcc_s.so.1 (0x7fbb24a05000)
    libGL.so.1                  => /lib/libGL.so.1 (0x7fbb2452c000)
    libGLdispatch.so.0          => /lib/libGLdispatch.so.0 (0x7fbb2443d000)
    libglut.so.3                => /lib/libglut.so.3 (0x7fbb24b33000)
    libGLX.so.0                 => /lib/libGLX.so.0 (0x7fbb24bee000)
    libncursesw.so.6            => /lib/libncursesw.so.6 (0x7fbb2478c000)
    libnghttp2.so.14            => /lib/libnghttp2.so.14 (0x7fbb242b3000)
    libreadline.so.8            => /lib/libreadline.so.8 (0x7fbb24a23000)
    libsigsegv.so.2             => /lib/libsigsegv.so.2 (0x7fbb24800000)
    libssh2.so.1                => /lib/libssh2.so.1 (0x7fbb24272000)
    libssl.so.1.1               => /lib/libssl.so.1.1 (0x7fbb241e3000)
    libX11.so.6                 => /lib/libX11.so.6 (0x7fbb242fc000)
    libXau.so.6                 => /lib/libXau.so.6 (0x7fbb240e6000)
    libxcb.so.1                 => /lib/libxcb.so.1 (0x7fbb24100000)
    libXdmcp.so.6               => /lib/libXdmcp.so.6 (0x7fbb240de000)
    libXext.so.6                => /lib/libXext.so.6 (0x7fbb240eb000)
    libXi.so.6                  => /lib/libXi.so.6 (0x7fbb242e2000)
    libXxf86vm.so.1             => /lib/libXxf86vm.so.1 (0x7fbb242f5000)
    libz.so.1                   => /lib/libz.so.1 (0x7fbb24a77000)
    libzstd.so.1                => /lib/libzstd.so.1 (0x7fbb2412a000)

    % asy -version
    Asymptote version 2.85 [(C) 2004 Andy Hammerlindl, John C. Bowman, Tom Prince]

    ENABLED OPTIONS:
    WebGL    3D HTML rendering
    OpenGL   3D OpenGL rendering
    SSBO     GLSL shader storage buffer objects
    FFTW3    Fast Fourier transforms
    CURL     URL support
    Readline Interactive history and editing
    Sigsegv  Distinguish stack overflows from segmentation faults
    GC       Boehm garbage collector
    threads  Render OpenGL in separate thread

    DISABLED OPTIONS:
    V3D      3D vector graphics output
    GSL      GNU Scientific Library (special functions)
    Eigen    Eigenvalue library
    XDR      External Data Representation (portable binary file format for V3D)
    LSP      Language Server Protocol

I did another fresh build of Asymptote after I installed the libraries that I could identify that are needed for the disabled options. After I did that, the only one that disappeared from the report was that for GSL.