Bug 1549281 - Review Request: texlive-base - TeX formatting system
Summary: Review Request: texlive-base - TeX formatting system
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jason Tibbitts
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-02-26 21:28 UTC by Tom "spot" Callaway
Modified: 2020-06-02 14:51 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-06-02 14:51:03 UTC
Type: ---
Embargoed:
j: fedora-review+


Attachments (Terms of Use)

Description Tom "spot" Callaway 2018-02-26 21:28:47 UTC
Spec URL: https://spot.fedorapeople.org/texlive-base.spec
SRPM URL: https://spot.fedorapeople.org/texlive-base-20170520-16.fc28.src.rpm
Description: 
The TeX Live software distribution offers a complete TeX system for a
variety of Unix, Macintosh, Windows and other platforms. It
encompasses programs for editing, typesetting, previewing and printing
of TeX documents in many different languages, and a large collection
of TeX macros and font libraries.

Fedora Account System Username: spot
F28 Scratch Build: https://koji.fedoraproject.org/koji/taskinfo?taskID=25327800

Notes: TeXLive in Fedora is a hot mess. One I inherited, but still. A big part of the problem is that there are fundamentally two parts of TeXLive, the parts needed for the core binaries and libraries to build and work, and the rest.

So, to simplify things, I've split off the source code that makes up the base of TeXLive, and all of the dependent subpackages into this texlive-base package. It contains all of the architecture dependent code. This also means that the old texlive package can be converted to just include noarch stuff that isn't in texlive-base. It's still a horror, but a much uglier one that can be cleaned up somewhat (and hopefully, automated with a script).

Bonus: texlive-base is updated to TL2017, and can obsolete existing texlive packages now (I've been testing it for a while on my end)

Bonus2: It gets rid of the weird -bin/-doc subpackage model (at least in texlive-base).

So, while this package may look ugly and long to the unknowing reviewer, I assure you, it is a vast improvement over all of these bits being inside the "texlive" package (and most of these items were copied whole from it, before being cleaned up by hand). Once this review is done and this can be added to Fedora (hopefully 28 and 29), I have a texlive.spec without the -base bits in it that will build entirely noarch (and thus, only need to build once for all arches through koji).

Last, but not least, if you need a bribe to get through this, that can be arranged. :D

Comment 1 Jason Tibbitts 2018-02-27 00:15:33 UTC
So... yeah.  I don't want to do this, but someone needs to and I'd rather be on this end of the process than on your end of it.  And I apologize in advance, but this is going to be a rambling set of commentary as I look at and test different things.

Basically I'm going to take the attitude here that any improvement is just that.  If I were more argumentative I would say that this is still not quite the right split, and that we'd all be happier if the four things which have to link against poppler were off on their own or that we should consider a "texlive critpath" which would contain just the things that have to be working in order to build the rest of the distro.  But still, this is improvement; this package only has Source347: instead of Source7608: and you really can't argue with that.

I'm also going to assume that for tex packaging, the existing texlive package can serve as a "reasonable" (if hilariously enormous) template.  The licenses should all be correct (except for "foo").

You will need to add BuildRequires: gcc and probably gcc-c++ so that things will still work once they're pulled from the buildroot (assuming that happens)

You can simply %undefine __brp_mangle_shebangs to get rid of that if you don't want it.  Though it would be good to know why it's not wanted.

You might want to fix the "License: foo" bit (line 23).

I see you've done away with the AutoReqProv: lines which all of the -doc subpackages used to have.

There are fewer scriptlets than I expected.  There is work about to eliminate the need to call install-info, but of course that's not done yet.  Without that you'd be down to the fmutil.cnf manipulation.  I wonder if there's a better way to handle that, since fmtutil is supposed to handle reading multiple fmtutil.cnf files now.  If it could just process a directory inclusion then none of that mess would be necessary.  Probably not worth the effort.

You can use %_rpmmacrodir instead of defining %macrosdir yourself.  If you need EPEL compatibility, let me know and I'll get it in epel-rpm-macros as well.

I note that many of the packages have had very significant changes in what they provide.  For example, texlive-fontinst (chosen completely at random) went from:

tex(bbox.sty) = 2016
tex(cfntinst.sty) = 2016
tex(csc2x.tex) = 2016
tex(csckrn2x.tex) = 2016
tex(finstmsc.sty) = 2016
tex(fontdoc.sty) = 2016
tex(fontinst.sty) = 2016
tex(multislot.sty) = 2016
tex(osf2x.tex) = 2016
tex(xfntinst.sty) = 2016
tex-fontinst = 2016
texlive-fontinst = 6:svn40768-40.fc28.2

to:

tex(bbox.sty) = 7:20170520-16.fc29
tex(cfntinst.sty) = 7:20170520-16.fc29
tex(csc2x.tex) = 7:20170520-16.fc29
tex(csckrn2x.tex) = 7:20170520-16.fc29
tex(finstmsc.sty) = 7:20170520-16.fc29
tex(fontdoc.sty) = 7:20170520-16.fc29
tex(fontinst.sty) = 7:20170520-16.fc29
tex(multislot.sty) = 7:20170520-16.fc29
tex(osf2x.tex) = 7:20170520-16.fc29
tex(xfntinst.sty) = 7:20170520-16.fc29
tex-fontinst = 7:20170520-16.fc29
tex-fontinst-bin = 7:20170520-16.fc29
texlive-fontinst = 7:20170520-16.fc29
texlive-fontinst-bin = 7:20170520-16.fc29
texlive-fontinst-doc = 7:20170520-16.fc29

Now, the last five obviously aren't problematic.  But I wonder if the others were intentional?  The old package uses %tl_version for most of those provides.  But in the new pacakge %tl_version is completely absent.  %source_date would suffice but the versioning also grew %epoch and %release.  I guess the question is whether those were intended to provide semantic data like "2016" or whether the intent was for them to carry the full package version.

And looking at this texlive stuff makes me realize (again) that I could generate almost all of the subpackage declarations using RPM macros (with some lua code parsing the texlive.tlpdb file or something like it).  This would eliminate the need to have a script generate things separately from the maintenance of the package.  Might be an interesting exercise if you would like me to try.

Anyway, that's about it for now.  In general I don't think there's really anything to object to here, assuming you can stomach the "really huge package" concept.  And even if you can't, it's certainly an improvement.

Comment 2 Jason Tibbitts 2018-02-27 00:40:27 UTC
Also, for grins, I let brp-mangle-shebangs run and I do see that it's finding things which will indeed be problematic at some point.  There are plenty of /usr/bin/env calls, which do need to be fixed up.  Some executable .pl and .pm files have no shebang at all, so their executable bits are stripped.  And there are some ambiguous python scripts (using "#!/usr/bin/env python" which is a big no-no.  A breakdown follows, but honestly everything it's fixing looks valid and I don't see why you wouldn't want to let it do its job.


One script tries to pass options on the shebang line, which doesn't even work in Linux:

BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/de-macro/de-macro from #!/usr/bin/python -O to #!/usr/bin/python2 -O. This will become an ERROR, fix it manually!


Ambiguous pythons:

BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/dviasm/dviasm.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/ebong/ebong.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/latex-papersize/latex-papersize.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/lilyglyphs/lily-glyph-commands.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/lilyglyphs/lilyglyphs_common.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/lilyglyphs/lily-image-commands.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/lilyglyphs/lily-rebuild-pdfs.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/pdfbook2/pdfbook2 from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/depythontex.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex_2to3.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex_install.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!
BUILDSTDERR: *** WARNING: mangling shebang in /usr/share/texlive/texmf-dist/scripts/texliveonfly/texliveonfly.py from #!/usr/bin/env python to #!/usr/bin/python2. This will become an ERROR, fix it manually!


No shebang but executable:

BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/doc/fonts/cjk-gs-integrate/tools/release.sh is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/doc/generic/m-tx/buildzip.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/doc/support/findhyph/findhyph.bat is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/doc/support/lua2dox/install.bat is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/context/perl/mptopdf.pl is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/context/stubs/install/first-setup.bat is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/context/stubs/setup/setuptex.bat is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/glossaries/makeglossaries.bat is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/latexindent/defaultSettings.yaml is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/latexindent/LatexIndent/Command.pm is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/latexindent/LatexIndent/Environment.pm is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/latexindent/LatexIndent/IfElseFi.pm is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/latexindent/LatexIndent/KeyEqualsValuesBraces.pm is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/latexindent/LatexIndent/NamedGroupingBracesBrackets.pm is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/ltximg/ltximg.pl is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/lua2dox/lua2dox.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/lua2dox/lua.def is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/make4ht/lapp-mk4.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/make4ht/make4ht-dom.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/make4ht/make4ht-lib.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/make4ht/mathnode.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/make4ht/mkparams.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/make4ht/mkutils.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/pkfix/pkfix.pl is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/pst2pdf/pst2pdf.pl is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/pst-pdf/ps4pdf.bat is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/pythontex/pythontex_engines.py is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/pythontex/pythontex_utils.py is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/tex4ebook/config-t4e.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/tex4ebook/exec_epub3.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/tex4ebook/exec_epub.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/tex4ebook/exec_mobi.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/tex4ebook/list-fonts.lua is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/thumbpdf/thumbpdf.pl is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/vpe/vpe.pl is executable but has empty or no shebang, removing executable bit
BUILDSTDERR: *** WARNING: ./usr/share/texlive/texmf-dist/scripts/xetex/perl/lib/PDF/Reuse.pm is executable but has empty or no shebang, removing executable bit


The rest are OK, and it should be fine to just let the script fix them:
mangling shebang in /usr/share/texlive/texmf-dist/scripts/epspdf/epspdftk.tcl from /usr/bin/env wish to #!/usr/bin/wish

mangling shebang in /usr/share/texlive/texmf-dist/scripts/latexfileversion/latexfileversion from /usr/bin/env bash to #!/usr/bin/bash

mangling shebang in /usr/share/texlive/texmf-dist/scripts/pygmentex/pygmentex.py from /usr/bin/env python2 to #!/usr/bin/python2
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/depythontex2.py from /usr/bin/env python2 to #!/usr/bin/python2
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex2.py from /usr/bin/env python2 to #!/usr/bin/python2

mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/depythontex3.py from /usr/bin/env python3 to #!/usr/bin/python3
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex3.py from /usr/bin/env python3 to #!/usr/bin/python3

mangling shebang in /usr/share/texlive/texmf-dist/scripts/context/ruby/texmfstart.rb from /usr/bin/env ruby to #!/usr/bin/ruby
mangling shebang in /usr/share/texlive/texmf-dist/scripts/match_parens/match_parens from /usr/bin/env ruby to #!/usr/bin/ruby

mangling shebang in /usr/share/texlive/texmf-dist/scripts/cachepic/cachepic.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/checkcites/checkcites.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/context/lua/mtxrun.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/context/stubs/unix/mtxrun from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/diadia/diadia.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/epspdf/epspdf.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/getmap/getmapdl.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/glossaries/makeglossaries-lite.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/luaotfload/luaotfload-tool.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/luaotfload/mkcharacters from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/luaotfload/mkglyphlist from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/luaotfload/mkimport from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/luaotfload/mkstatus from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/luaotfload/mktests from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/lwarp/lwarpmk.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/make4ht/make4ht from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/m-tx/m-tx.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/musixtex/musixflx.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/musixtex/musixtex.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pfarrei/a5toa4.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pfarrei/pfarrei.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pmxchords/pmxchords.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/ptex2pdf/ptex2pdf.lua from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/splitindex/splitindex.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/tex4ebook/tex4ebook from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texdoc/texdoc.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/rungs.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/test-tlpdb.tlu from /usr/bin/env texlua to #!/usr/bin/texlua
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/texconf.tlu from /usr/bin/env texlua to #!/usr/bin/texlua

mangling shebang in /usr/share/texlive/texmf-dist/doc/pdftex/manual/syntaxform.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/doc/support/latexdiff/latexdiff-fast from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/doc/support/latexdiff/latexdiff from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/authorindex/authorindex from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/bundledoc/arlatex from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/bundledoc/bundledoc from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/chktex/deweb.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/cjk-gs-integrate/cjk-gs-integrate.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/crossrefware/bbl2bib.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/crossrefware/bibdoiadd.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/crossrefware/bibmradd.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/crossrefware/bibzbladd.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/crossrefware/ltx2crossrefxml.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/ctanify/ctanify from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/dosepsbin/dosepsbin.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/epstopdf/epstopdf.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/fig4latex/fig4latex from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/fontools/afm2afm from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/fontools/autoinst from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/fontools/ot2kpx from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/glossaries/makeglossaries from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/kotex-utils/jamo-normalize.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/kotex-utils/komkindex.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/kotex-utils/ttf2kotexfont.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/latex2man/latex2man from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/latexdiff/latexdiff.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/latexdiff/latexdiff-vc.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/latexdiff/latexrevise.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/latex-git-log/latex-git-log from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/latexindent/latexindent.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/mkgrkindex/mkgrkindex from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/mkjobtexmf/mkjobtexmf.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/mkpic/mkpic from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/oberdiek/pdfatfi.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pax/pdfannotextractor.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pdfcrop/pdfcrop.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pedigree-perl/pedigree.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/perltex/perltex.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/pkfix-helper/pkfix-helper from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/ps2eps/ps2eps.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/ptex-fontmaps/kanji-config-updmap.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/ptex-fontmaps/kanji-fontmap-creator.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/purifyeps/purifyeps from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/rubik/rubikrotation.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/srcredact/srcredact.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/sty2dtx/sty2dtx.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/tex4ht/mk4ht.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texcount/texcount.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texdef/latexdef.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texdef/texdef.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texdiff/texdiff from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texdirflatten/texdirflatten from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texdoctk/texdoctk.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texfot/texfot.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/e2pall.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/fmtutil.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/mktexlsr.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texlive/updmap.pl from /usr/bin/env perl to #!/usr/bin/perl
mangling shebang in /usr/share/texlive/texmf-dist/scripts/texloganalyser/texloganalyser from /usr/bin/env perl to #!/usr/bin/perl

Comment 3 Tom "spot" Callaway 2018-03-05 18:00:25 UTC
I disabled the shebangs script because texlive is notoriously ancient, huge, and finicky. I did not want to have to go through it and find all the places where the script was making changes that were incorrect. I also suspect strongly that the texlive upstream will not be willing to accept changes away from /usr/bin/env.

Example: the script was removing the exec bit on subscripts inside R, which R was executing internally, causing all of the R packages to stop working in rawhide. I suspect it is highly likely that loss of permissions in the texlive universe will result in the same sort of failures.

On the topic of versioning, I could not come up with a good reason for the odd "year only" versioning on some provides (but not others), so I just simplified everything to one model. AFAIK, nothing else in Fedora was expecting to find the year only versioning.

Here comes -17:

- add Provides: tetex-latex to the latex subpackage
- fix obviously incorrect license tag on -base package
- use %%_rpmmacrodir instead of our local %%macrosdir
- add BuildRequires: gcc gcc-c++

Spec URL: https://spot.fedorapeople.org/texlive-base.spec
SRPM URL: https://spot.fedorapeople.org/texlive-base-20170520-17.fc28.src.rpm

Comment 4 Jason Tibbitts 2018-03-06 01:57:31 UTC
The thing is about disabling brp-mangle-shebangs that if you don't let rpm fix some of those things then you will have to fix them by hand.  I can understand not wanting to audit every bit of the massive texlive package, but the < 150 cases in this somewhat less massive package doesn't seem unreasonable.  And we are trying to crack down on various classes of shebang-related issues, so I wouldn't think it proper to just ignore it because it's texlive.

But one thing of note is that none of the mangled scriptlets are anywhere in the usual path; they're all under the dumpster fire that is /usr/share/texlive/texmf-dist.  So, uh, maybe we could just compromise on this?

%global __brp_mangle_shebangs_exclude_from /usr/share/texlive/texmf-dist/(scripts|doc)

That way it won't set off any flags for disabling the script completely, and if anything with an errant shebang does get installed outside of those two paths in the future, it will be fixed up.  With the current package, that results in no changes as far as I can tell.

Even then, there is a bunch of stuff down in there that really does need to get fixed up at some point.  The stuff in "doc" really shouldn't matter (or things are really messed up).  The python stuff is probably all going to break, all of the env stuff is fragile and depends on what the user has in their PATH, and the scripts which legitimately have no shebang line are just hideous.  (The old "valid as both sh and perl" hack is used in some.)  I just have no idea if any of that stuff ever gets executed.  I guess we can assume that the executable ".bat" things don't ever get called.

You could also just do

%global __brp_mangle_shebangs_exclude ^$

to keep it from removing the executable bits when no shebang line is found, as a few of those are actually valid.  The fixups that are left are all things that need to get done at some point in any case.

The rest does look pretty much OK.  Some nitpicks which I won't quibble over but which vim yells about when I open the spec:

The texlive-arara package has eight bundled(*) provides; it would be nice to get versions on those if at all possible.

There are some tab indents around line 6673.  The rest of the spec seems to use space indents, though it's two spaces in some places and eight in others.

Vim complains about a few trailing spaces, but most people don't care.

That's all I can think of.

Comment 5 Tom "spot" Callaway 2018-03-07 18:53:09 UTC
* Wed Mar  7 2018 Tom Callaway <spot> - 7:20170520-18
- switch to shebang mangling that does not change exec perms
  most/all of the mangling is correct, but we do not want to risk breaking
  ancient texlive scripts that are suddenly -x
- add versions for arara bundled provides
- use spaces instead of tabs

Spec URL: https://spot.fedorapeople.org/texlive-base.spec
SRPM URL: https://spot.fedorapeople.org/texlive-base-20170520-18.fc28.src.rpm

Comment 6 Jason Tibbitts 2018-03-07 18:58:08 UTC
Thanks, spot.  Sorry to be a pain about the shebang thing.  If in the future you need help to dig into the mess of non-shebang-ed scripts down in there to try and clean them up, please let me know.  I'm still interested in making the texlive stack less horrible.

Comment 7 Gwyn Ciesla 2018-03-07 19:11:18 UTC
(fedrepo-req-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/texlive-base

Comment 8 Mattia Verga 2020-06-02 14:51:03 UTC
This package was approved and imported in repositories, but this review ticket was never closed.
I'm closing it now.


Note You need to log in before you can comment on or make changes to this bug.