Page MenuHomeFreeBSD

print/texlive update to 2019 (from 2015)
AbandonedPublic

Authored by uzsolt on Aug 8 2018, 10:47 AM.
Tags
None
Referenced Files
F79485747: D16623.id46410.diff
Tue, Mar 19, 12:36 AM
Unknown Object (File)
Mon, Mar 18, 6:15 AM
Unknown Object (File)
Wed, Mar 13, 4:05 PM
Unknown Object (File)
Tue, Mar 12, 8:56 AM
Unknown Object (File)
Sun, Mar 10, 12:22 PM
Unknown Object (File)
Sun, Mar 10, 12:22 PM
Unknown Object (File)
Sun, Mar 10, 12:22 PM
Unknown Object (File)
Sun, Mar 10, 12:21 PM

Details

Reviewers
hrs
tcberner
Summary

Builded packages is here (on 11.2, amd64): http://freebsd.uzsolt.hu/test_pkg/
You can download them and "pkg add ..." (and should remove old tex-* and texlive-* specific packages
(I think I added every conflicts to Makefile but who knows)).

Some background information:

print/texlive-kpathsea:
The search engine (was: devel/tex-kpathsea).
It's better to separate it because the generating format files (*.fmt) is needed it.
And its separation isn't hard and doesn't need any patches.

print/texlive-bin:
The main package which contains the main binaries and some scripts. It contains the generated format files (was: print/tex-formats).
To generate the formats needed (the new) print/texlive-texmf-core. With it can compile some simple tex-files to dvi.
The texlive-bin has options: ALEPH, LUATEX, PDFTEX and XETEX. I think the default LUATEX, PDFTEX and XETEX is enough.
If ports system will support subpackages maybe can split this package.
Don't create separate tex-formats package because can't handle the port options in external port.

The monster texlive-texmf package splitted. The main idea is taken
from Arch Linux (https://www.archlinux.org/packages/?q=texlive).
There is DOCS option. The documents are placed in PREFIX/share/doc/texlive-texmf
directory's subdirectories.

print/texlive-texmf-core:
It's needed by print/texlive-bin to create format files.
With this can compile some tex-files to dvi but not enough to LaTeX and not so simple cases.

print/texlive-texmf-base:
I think with this package can compile many TeX and LaTeX files.

print/texlive-texmf-*every*other*:
See their pkg-descr.* :)

The print/texlive-texmf-all is a common ("master", meta) port.
It causes install all texlive-texmf-* packages and provides a minimal "framework" to
minimize the similar works.

TODO:

  • testing, testing, testing I'm using (only) pdflatex and don't the others so I can' test them
  • add these ports to print/Makefile
  • remove Mk/bsd.tex.mk and modify USE_TEX-releated ports
  • add DEPRECATED and EXPIRATION_DATE to old texlive-ports
  • maybe add dependencies between texlive-texmf-* packages if it's needed (imho it would good with user-based testing because it's a huge work to check *every* TeX-package's dependencies).

IDEAS:

  • maybe can update texlive-texmf-* every (1-2-3) months, because the packages are updating and appears new packages continuously (see https://ctan.org/ctan-ann). It's not too hard because TeXLive has
    • subversion access (https://tug.org/texlive/svn/) to view the logs and
    • rsync access to create a huge texlive-texmf-%monthly%.tar.xz files I think can do it. In this case the tlmgr is maybe unneeded.
  • maybe can create splitted texlive-texmf-*-%version%.tar.xz source files (as Arch does) because they would be smaller and faster the build process (hasn't read the whole 2G tar.xz file every time).

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211997

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

Could you actually provide a diff against the current ports tree? Or are all of those new ports, in that case, the patch is missing the previous ports that are being removed by this update.

Also, the diff could probably loose the /usr/local/poudriere/ports/head/.

In D16623#353271, @mat wrote:

Could you actually provide a diff against the current ports tree? Or are all of those new ports, in that case, the patch is missing the previous ports that are being removed by this update.

Also, the diff could probably loose the /usr/local/poudriere/ports/head/.

There are all new ports and no ports removed.

Remove /usr/local... prefix.

In D16623#353289, @uzsolt_uzsolt.hu wrote:

There are all new ports and no ports removed.

So, how is this an "update" if there are only new things, and no old things go away?

In D16623#356521, @mat wrote:
In D16623#353289, @uzsolt_uzsolt.hu wrote:

There are all new ports and no ports removed.

So, how is this an "update" if there are only new things, and no old things go away?

So should remove old texlive-ports? In this case have to convert all USE_TEX-ports.

In D16623#356559, @uzsolt_uzsolt.hu wrote:
In D16623#356521, @mat wrote:
In D16623#353289, @uzsolt_uzsolt.hu wrote:

There are all new ports and no ports removed.

So, how is this an "update" if there are only new things, and no old things go away?

So should remove old texlive-ports? In this case have to convert all USE_TEX-ports.

If you work on updating texlive, then yes, you need to update the framework to use the new ports.

rfyu28uyeg_snkmail.com added inline comments.
print/texlive-bin/Makefile
49

Replace CPPFLAGS and LDFLAGS with 'USES=localbase'.

126

Replace ${STAGEDIR}${LOCALBASE} here and in the other *install* targets with ${STAGEDIR}${PREFIX}.

First, basic functional diff to 2019.

Binary ports:
print/texlive-bin
print/texlive-kpathsea
It's simplier to build only these two package. The more splits would be harder - you can check the old print/tex-* and devel/tex-* packages about the many patches.

I split the arch-independent texmf-tree to many functional subpackages so you don't need to install a huge (about 2-3Gb) package to use only some file (about 1%).
The print/texlive-texmf-all is a "parent" of other texlive-texmf-* packages ("metapackage") and it contains some useful "macros" and its dependencies are every texlive-texmf-* packages so you can install the whole beast with one package.
Doesn't exist seperate texmf-docs port it's included into texlive-texmf-* (option DOCS).
Doesn't exist seperate texmf-source port (I think it's unneeded - if anyone needs some source you can download from CTAN same as other port).

I deleted some old tex-* and texlive-* packages but I think remain some packages too.
Changed the USE-style dependencies in Mk/bsd.tex.mk but I didn't test it.

TODOs
Should check the all ports who has explicit dependency any texlive-releated ports (for example devel/tex-kpathsea) and refactoring it.

uzsolt retitled this revision from print/texlive update to 2018 (from 2015) to print/texlive update to 2019 (from 2015).Aug 5 2019, 11:44 AM

Just out of curiosity, what's the rationale for this package split?

Just out of curiosity, what's the rationale for this package split?

The "old" texlive-texmf installed size is about 1.35GiB without any documentation - it's plus 1.58GiB so they're about 3GiB and for example I don't use many-many (useful) packages (styles, classes, fonts, etc.).
I think the (new) texlive-texmf-publishers (for example) is needed only some people so it would be about 230MiB unnecessary files for many people. For my daily work I need only 10 texlive-texmf-* from all 36 (about one third). So I (and other texlive-users too) need install only the necessary packages (plus some similar) - save storage, bandwidth,... The test of texmf-dependent packages would be faster because doesn't need unpack and repack (into .txz) the whole texmf-tree.

I tried split the texmf-packages by their target (functionality) - I hope it's almost right (based on ArchLinux's splits: https://www.archlinux.org/packages/?q=texlive) but it's sure it isn't perfect.

Do you think isn't useful?

In D16623#459872, @uzsolt_uzsolt.hu wrote:

Just out of curiosity, what's the rationale for this package split?

The "old" texlive-texmf installed size is about 1.35GiB without any documentation - it's plus 1.58GiB so they're about 3GiB and for example I don't use many-many (useful) packages (styles, classes, fonts, etc.).
I think the (new) texlive-texmf-publishers (for example) is needed only some people so it would be about 230MiB unnecessary files for many people. For my daily work I need only 10 texlive-texmf-* from all 36 (about one third). So I (and other texlive-users too) need install only the necessary packages (plus some similar) - save storage, bandwidth,... The test of texmf-dependent packages would be faster because doesn't need unpack and repack (into .txz) the whole texmf-tree.

I tried split the texmf-packages by their target (functionality) - I hope it's almost right (based on ArchLinux's splits: https://www.archlinux.org/packages/?q=texlive) but it's sure it isn't perfect.

Do you think isn't useful?

Sure, I was just asking.

Mk/bsd.tex.mk
86

Do we need all these _USE_TEX_*_PKGNAME variables after their values got switched to texlive-bin?

Please, convert bsd.tex.mk to a USES=tex.

print/texlive-bin/Makefile
40

BUILD_DEPENDS should happen before LIB_DEPENDS.

In D16623#461841, @mat wrote:

Please, convert bsd.tex.mk to a USES=tex.

What do you think: the bsd.tex.mk is needed? I think all USE_TEX (or USES=tex) will be only a simple dependency to one package (texlive-bin, texlive-texmf-core). Doesn't need any type of tricks as in most of USEs.

Mk/bsd.tex.mk
86

I think only needed some variables because the binaries aren't splitted many subpackages.
Should find *every* port which uses USE_TEX (maybe with a simple "find -exec grep"), correct its value and test them.

In D16623#461841, @mat wrote:

Please, convert bsd.tex.mk to a USES=tex.

What's the state on Uses/tex.mk -- I would be willing to look into that if no one else has already done it :)

What's the state on Uses/tex.mk -- I would be willing to look into that if no one else has already done it :)

I totally forget it :(

But IMHO can remove whole Uses/tex.mk and can replace every USE_TEX=latex (in ports) to BUILD/RUN_DEPENDS=... or similar. Is it right way?
The most of ports are using latex or dvipsk which are part of (new port) print/texlive-bin (see 'find /usr/ports/ -name Makefile -exec grep -H 'USE_TEX' {} \;').

In D16623#486879, @uzsolt_uzsolt.hu wrote:

What's the state on Uses/tex.mk -- I would be willing to look into that if no one else has already done it :)

I totally forget it :(

But IMHO can remove whole Uses/tex.mk and can replace every USE_TEX=latex (in ports) to BUILD/RUN_DEPENDS=... or similar. Is it right way?
The most of ports are using latex or dvipsk which are part of (new port) print/texlive-bin (see 'find /usr/ports/ -name Makefile -exec grep -H 'USE_TEX' {} \;').

I think having a USES is a much nicer and shorter to write, and we can change origins and so on in the background without having to touch all the ports separately. Also should we get other tex-distributions...

Could you rebase the patch against the current tree?

Could you rebase the patch against the current tree?

Sorry but I don't have time to do it. Maybe in some weeks. Sorry again.

Happy New Year :)