Opened 8 years ago
Closed 4 years ago
#51668 closed submission (fixed)
texlive-texdist: new port
Reported by: | dliessi (Davide Liessi) | Owned by: | macports-tickets@… |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | drkp (Dan Ports), mojca (Mojca Miklavec), koch@…, cooljeanius (Eric Gallager) | |
Port: | texlive-texdist |
Description
TeXDist directory structure for MacPorts' TeX Live. It is used by MacTeX's texdist utility and TeX Distribution Preference Pane to switch between TeX distributions.
See http://www.tug.org/mactex/multipletexdistributions.html
This port deletes and writes files outside ${prefix}. The rationale is explained in the comment inside the Portfile.
Attachments (2)
Change History (24)
Changed 8 years ago by dliessi (Davide Liessi)
Changed 8 years ago by dliessi (Davide Liessi)
Attachment: | Description.rtf added |
---|
comment:1 Changed 8 years ago by mojca (Mojca Miklavec)
Cc: | mojca added |
---|
comment:2 follow-up: 4 Changed 8 years ago by mojca (Mojca Miklavec)
comment:3 follow-up: 5 Changed 8 years ago by mojca (Mojca Miklavec)
I'm very happy that you sent this patch. But in my opinion this should be part of texlive-common
. Otherwise people will either forget to install texlive-texmfdist
or keep it installed long after they remove texlive
form MacPorts.
Then again, in case Dan would not be comfortable putting the code there, it's still better to have a functional package than not having anything at all.
Dan? Would you be willing to accept the contents to one of your existing texlive packages? I imagine texlive-common
would be the best place, but it's up to you.
(I wonder if we really need all the zillion symlinks though. I thought the original author had a neat idea to use them somehow, but I imagine that nowadays almost the only useful bit is the bin dir.)
comment:4 Changed 8 years ago by dliessi (Davide Liessi)
Replying to mojca:
Why do you make symlinks to
powerpc
rather than making a symlink to the actual architecture being used?
That is what also MacTeX does for its symlinks: e.g., MacTeX 2013 links ppc
, powerpc
, i386
to bin/universal-darwin
, x86_64
to bin/x86_64-darwin
and texbin
to x86_64
.
I don't recall the exact reason, but there might be some programs that check for a specific architecture instead of texbin.
comment:5 Changed 8 years ago by dliessi (Davide Liessi)
Replying to mojca:
I'm very happy that you sent this patch. But in my opinion this should be part of
texlive-common
. Otherwise people will either forget to installtexlive-texmfdist
or keep it installed long after they removetexlive
form MacPorts.
I would not oppose including this in one of the texlive ports. I would even be willing to maintain the relevant part of that Portfile.
The reason for having a separate port is that I believe most MacTeX users will not install TeX Live through MacPorts and most MacPorts TeX Live users will not install MacTeX, so this package is probably useless for most TeX users on Mac.
(One of the entries in my to-do list is to ask the author(s) of the texdist
script to put it somewhere online and provide also that script via this package, which would motivate a separate package.
The script is currently available only inside the MacTeX bundles, as far as I know.)
(I wonder if we really need all the zillion symlinks though. I thought the original author had a neat idea to use them somehow, but I imagine that nowadays almost the only useful bit is the bin dir.)
(Indeed, the original author had great plans, and you are probably right, but I decided to provide the full directory structure to adhere to the informal specification and for consistency with the ones provided by MacTeX.)
comment:6 follow-up: 7 Changed 8 years ago by mojca (Mojca Miklavec)
No, ppc
is there because MacTeX provides binaries for several architectures and it is in principle possible to switch between them (nowadays you could switch between x86_64
and universal
(=i386
+ppc
)). MacTeX installs it "just in case", but you wouldn't want to use PPC on 10.12 anyway. Providing symlinks for anything but the exact architecture(s) that MacPorts builds on that particular machine is useless.
If you start working on texdist itself, please keep me in the loop.
comment:7 Changed 8 years ago by dliessi (Davide Liessi)
Replying to mojca:
No,
ppc
is there because MacTeX provides binaries for several architectures and it is in principle possible to switch between them (nowadays you could switch betweenx86_64
anduniversal
(=i386
+ppc
)). MacTeX installs it "just in case", but you wouldn't want to use PPC on 10.12 anyway. Providing symlinks for anything but the exact architecture(s) that MacPorts builds on that particular machine is useless.
OK, maybe I misunderstood what was going on. I'll try removing "false" symlinks and test switching between distributions and see how programs behave.
If you start working on texdist itself, please keep me in the loop.
I will.
comment:8 Changed 8 years ago by dliessi (Davide Liessi)
The texdist
script determines if a TeX distribution is usable by checking if Contents/Programs/$arch/tex
exists, where $arch
is the output of uname -p
.
So at least that symlink is needed, besides the texbin
one.
I could cheat and provide only the $arch
and texbin
symlinks: this would not provide the complete picture in the universal case, and it would provide wrong symlinks where uname -p
does not correspond to the actual architecture (e.g. on my machine it outputs i386
, while texlive-bin
installs x86_64
), but at least existing symlinks would not point to a different architecture family (PowerPC vs Intel).
The ideal situation would be to provide the following symlinks, besides texbin
:
- 32-bit Intel:
i386
- 64-bit Intel:
i386
,x86_64
- 32-bit or PowerPC:
ppc
,powerpc
- universal: the correct combination of the above
I can determine the installed architecture, if not universal, from the directory name in ${texlive_mactex_texdistdir}
and manually fix the 64-bit Intel case, but this does not work for the universal case.
Is there a simple way to determine which architectures were installed in the universal case?
comment:9 follow-up: 10 Changed 8 years ago by mojca (Mojca Miklavec)
Are you sure that the script checks for uname -p
? That sounds stupid to me, but it's also true that it might not have seen any changes for years and nobody bothered.
There might be one more thing. I'm almost sure that picking a different symlink won't have any effect if one builds universal binaries. This would probably only change the behaviour if we had a different set of, say, 32-bit binaries elsewhere. You may ask those who wrote the software or on one of the Mac-specific TUG mailing lists. For that reason it might be useless to set those other symlinks.
comment:10 Changed 8 years ago by dliessi (Davide Liessi)
Replying to mojca:
Are you sure that the script checks for
uname -p
? That sounds stupid to me, but it's also true that it might not have seen any changes for years and nobody bothered.
I'd like to resume the work on texlive-texdist, starting with fixing the problem of the architecture detection in the texdist script (maybe with your help). Then I'd like texlive-texdist to install also the texdist script along with the directory structure.
I sent email to Richard Koch some days ago asking whether a public repository of the texdist script is avaliable, where I could file bug reports and provide patches and from where I could instruct the Portfile to download and install the script. He hasn't replied yet, but in the meantime I saw that you set up this repository, which contains the texdist script, originally by Gerben Wierda and licensed (apparently) as BSD. Is this a new "official" public location for the texdist script (even though the description of the repository says "legacy Macs")? Is there any other public repository?
comment:11 Changed 8 years ago by mojca (Mojca Miklavec)
Cc: | koch@… added |
---|
comment:12 Changed 8 years ago by mojca (Mojca Miklavec)
First of all: I'm not even sure if the above link will stay under that name. There might be better project names than TeXLive-M. https://github.com/texlive or https://github.com/MacTeX or whatever (I don't know who owns those project names).
But let me first explain what exactly the repository on the link above is about. This is more or less a tiny fraction of what MacTeX provides. I made some minor changes in the scripts based on what Richard Koch sent me.
"Legacy" in the name stands for the fact that MacTeX will no longer support anything beyond officially supported versions, so MacTeX 2017 won't work on 10.9 and below, MacTeX 2018 won't work on 10.10 and below ... The package above is meant as "replacement", so that users of legacy systems will still be able to switch between different distributions.
The texdist
script in the above repository is not the upstream version. It's just a copy. I have no clue where the "upstream" version would reside, if anywhere at all.
Here's the link with PrefPane (semi-abandoned):
And a local version of PrefPane:
- LocalTeX at http://pages.uoregon.edu/koch/
But keep in mind that the PrefPane no longer works on the latest OSes and that the version on older OSes is buggy enough to not even support TL 2017 where the name of the bin folder was slightly modified. It was removed from MacTeX in any case and nowadays you would get an advice to use TeX Live Utility for switching between distributions.
comment:13 follow-up: 15 Changed 8 years ago by dliessi (Davide Liessi)
Does TeX Live Utility use the texdist script to switch between distribution?
comment:14 Changed 8 years ago by mojca (Mojca Miklavec)
See also Is texdistmgr no longer needed on macOS? on StackExchange.
comment:15 follow-up: 16 Changed 8 years ago by mojca (Mojca Miklavec)
Replying to dliessi:
Does TeX Live Utility use the texdist script to switch between distribution?
According to Adam it doesn't.
See https://github.com/amaxwell/tlutility/blob/master/texdist/texdist_change_default.sh
comment:16 Changed 8 years ago by dliessi (Davide Liessi)
Replying to mojca:
See https://github.com/amaxwell/tlutility/blob/master/texdist/texdist_change_default.sh
That script is much simpler than texdist, since most of the work is done in Objective-C, and as far as I understand also the TeXDist and LocalTeX preference panes do not use the texdist script and implement everything in Objective-C. So, for what concerns MacPorts, I'd still prefer to fix the architecture recognition in texdist and provide that script with texlive-texdist.
I think that the version in https://github.com/TeXLive-M/TeXDist is indeed the last version available, but we would need input by Dick to be sure of this.
Maybe for the moment we can fix texdist there and use that in the Portfile. The changes can then be copied to the upstream repository if and when it will be possible.
comment:17 follow-up: 18 Changed 8 years ago by mojca (Mojca Miklavec)
I don't know if what you want to do is to provide the structure that explains what exactly is in MacPorts. Or the script that can switch between installations.
You don't need the texdist
script nor texdist_change_default.sh
for the first goal.
What exactly would you use texdist
in MacPorts for? Just curious.
comment:18 Changed 8 years ago by dliessi (Davide Liessi)
Replying to mojca:
I don't know if what you want to do is to provide the structure that explains what exactly is in MacPorts. Or the script that can switch between installations.
The first (and original) goal is to provide the structure.
This is done in the attached Portfile, but as we discussed earlier there are some difficulties in providing the architecture-specific links in a sensible way, due also to the (buggy?) way texdist
determines the architecture to test if the distribution is usable.
So two things need to be done.
- Find a way to know which architetures were installed by
texlive-bin
: I could simply retrieve the defaults, but it would be better to check what the port actually installed, especially with respect to universal binaries; this means thattexlive-texdist
should depend ontexlive-bin
, though, so maybe it would be even better to add everything to thetexlive-bin
Portfile, which would solve the problem. - Fix the architecture check in
texdist
upstream (which I understand is in http://tug.org/svn/texlive/trunk/Master/source/mactexdoc.tar.xz).
The problem with texdist
lead me to a second goal: given that we will provide the directory structure with MacPorts, I think it wouldn't hurt (and it is little extra work) to provide also texdist
.
What exactly would you use
texdist
in MacPorts for? Just curious.
I have other versions of TeX Live / MacTeX installed, besides MacPorts, and I'd like to use texdist
to switch between them.
If users installed other distributions using MacTeX they should already have a copy of texdist
, but not so if they used the UNIX TeX Live installer, as far as I understand.
I understand that few users install both MacPorts' TeX Live and other TeX distributions.
comment:19 Changed 8 years ago by mojca (Mojca Miklavec)
In my opinion the structure should be made by the texlive-bin
port itself rather than by an independent port.
So let's concentrate on two independent efforts:
- adding the structure to
texlive-bin
- potentially fixing
texdist
, but let's discuss that somewhere else
comment:20 Changed 8 years ago by dliessi (Davide Liessi)
I moved the code for texlive-texdist
to texlive-bin
and I fixed the architecture symlinks to be meaningful and to accomodate for the architecture test in texdist
.
Since the installed files change, I also increased the revision.
I pushed the relevant commit to the texdist-in-texlive-bin
branch in my fork: https://github.com/dliessi/macports-ports/tree/texdist-in-texlive-bin
Please have a look at it.
If you want to test it, you'll probably want to empty the configure, build and destroot phases and delete/comment the lines in post-destroot that precede the long comment on TeXDist, to avoid building all texlive-bin
; then you can sudo port destroot
and examine the links that are created.
If you think everything is ok, I can open a pull request so that Dan can examine it and possibly merge it.
comment:21 Changed 4 years ago by cooljeanius (Eric Gallager)
Cc: | cooljeanius added |
---|
comment:22 Changed 4 years ago by drkp (Dan Ports)
Resolution: | → fixed |
---|---|
Status: | new → closed |
I didn't see this ticket earlier. Thanks a lot.
Why do you make symlinks to
powerpc
rather than making a symlink to the actual architecture being used?