Page MenuHomeFreeBSD

print/texlive update to 2019 (from 2015)
Needs ReviewPublic

Authored by uzsolt_uzsolt.hu on Aug 8 2018, 10:47 AM.
This revision needs review, but there are no reviewers specified.

Details

Reviewers
None
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
Unit Tests Skipped

Event Timeline

mat added a comment.Aug 8 2018, 12:59 PM

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.

mat added a comment.Aug 17 2018, 8:59 AM

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:

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.

mat added a comment.Aug 17 2018, 3:42 PM
In D16623#356521, @mat 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}.

arved added a subscriber: arved.Apr 29 2019, 6:45 PM

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_uzsolt.hu retitled this revision from print/texlive update to 2018 (from 2015) to print/texlive update to 2019 (from 2015).Mon, Aug 5, 11:44 AM
arrowd added a subscriber: arrowd.Mon, Aug 5, 1:24 PM

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?

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?

mat added a comment.Tue, Aug 13, 2:11 PM

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.