From flow at gentoo.org Tue Jul 2 11:13:50 2024 From: flow at gentoo.org (Florian Schmaus) Date: Tue, 2 Jul 2024 11:13:50 +0200 Subject: [tldistro] texmf_scripts installation Message-ID: <421e9f73-2c10-4892-9248-7a289e7c05d5@gentoo.org> Hi everyone, this is a follow up on a recent retex-k discussion [1] and subsequent Gentoo bug report [2]. The summary is probably that Gentoo passes -enable-linked-scripts=no to texlive-core, therefore Gentoo's TeX Live packages have to handle binscript symlinking (and binlinks) themselves. As it was pointed out in the mailing list thread, only on windows, should the symlink to mktexlsr.pl be created. However, Gentoo currently links mktexlsr ? mktexlsr.pl, when it should be mktexlsr ? mktexlsr (if I understand correctly). In Gentoo, we basically parse the contents of linked_scripts/ to extract all binscripts that should be linked [3] and then create the links when installing the corresponding Gentoo package via dobin_texmf_scripts() { while [[ ${#} -gt 0 ]] ; do local trg trg=$(basename "${1}" | sed 's,\.[^/]*$,,' | tr '[:upper:]' '[:lower:]') einfo "Installing ${1} as ${trg} bin wrapper" [[ -x ${ED}/usr/share/${1} ]] || die "Trying to install a non existing or non executable symlink to /usr/bin: ${1}" dosym "../share/${1}" "/usr/bin/${trg}" shift done } source: https://github.com/gentoo/gentoo/blob/8cf00e2e03768a9a7585d9ad4d7c48fc26c2d0d4/eclass/texlive-common.eclass#L161-L170 Much of this predates my involvement with TeX Live packaging in Gentoo. But this function seems to mostly resemble --- the special case for listings-ext.sh is missing --- what TeX Live does. From linked_scripts/Makefile.am: for s in $(nobase_dist_texmf_scripts_SCRIPTS); do \ target=`basename $$s | tr '[A-Z]' '[a-z]'`; \ ## we can't use egrep or grep -E or ere patterns portably. echo "$$s" | grep 'memoize-.*\.' >/dev/null \ || echo "$$s" | grep 'listings-ext.sh' >/dev/null \ || target=`echo $$target | sed 's,\.[^/]*$$,,'`; \ rm -f $$target; \ echo "creating link '$$target' -> '$$REL/texmf-dist/scripts/$$s'"; \ $(LN_S) $$REL/texmf-dist/scripts/$$s $$target || exit 1; \ done && \ source: https://github.com/TeX-Live/texlive-source/blob/6f1cc5d69c54047f6830a00606e1a9ce65db49cd/texk/texlive/linked_scripts/Makefile.am#L329-L338 I do not see any special handing for mktexlsr.pl (and probably other existing scripts that should not be installed on Unix systems). In fact, if I run the loop manually, I get for s in texlive/mktexlsr texlive/mktexlsr.pl listings-ext/listings-ext.sh tlcockpit/tlcockpit.sh texlogsieve/texlogsieve; do target=`basename $s | tr '[A-Z]' '[a-z]'` echo "$s" | grep listings-ext.sh >/dev/null || target=`echo $target | sed 's,\.[^/]*$,,'` echo "creating link '$target' -> '$REL/texmf-dist/scripts/$s'" done creating link 'mktexlsr' -> '/texmf-dist/scripts/texlive/mktexlsr' creating link 'mktexlsr' -> '/texmf-dist/scripts/texlive/mktexlsr.pl' creating link 'listings-ext.sh' -> '/texmf-dist/scripts/listings-ext/listings-ext.sh' creating link 'tlcockpit' -> '/texmf-dist/scripts/tlcockpit/tlcockpit.sh' creating link 'texlogsieve' -> '/texmf-dist/scripts/texlogsieve/texlogsieve' So it looks like the it would install a final symlink from mktexlsr to mktexlsr.pl (i.e., what Gentoo currently does). I must be missing something. I am still discovering some aspects of Gentoo's TeX Live packaging and TeX Live in general. Where did I go wrong? How can we determine which linked scripts Gentoo should symlink and which not? Thanks - Flow 1: https://tug.org/pipermail/tex-k/2024-June/004073.html 2: https://bugs.gentoo.org/934975 3: nobase_dist_texmf_scripts_SCRIPTS == texmf_shell_scripts + texmf_other_scripts -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_0x8CAC2A9678548E35.asc Type: application/pgp-keys Size: 21237 bytes Desc: OpenPGP public key URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: OpenPGP_signature.asc Type: application/pgp-signature Size: 618 bytes Desc: OpenPGP digital signature URL: