versioning TeXlive packages on CTAN
Brook Milligan
brook at nmsu.edu
Sun Aug 25 07:16:28 CEST 2019
> On Aug 24, 2019, at 10:52 PM, Norbert Preining <preining at logic.at> wrote:
>
> Hi Brook,
>
> On Sat, 24 Aug 2019, Brook Milligan wrote:
>> Pkgsrc already maintains copies of all the distfiles in use, including
>> archived versions that are no longer available on the original distribution sites.
>
> Ahh, I didn't know. So that is the problem.
>
> But then, why don't you parse the texlive.tlpdb (in
> tlnet/tlpkg/texlive.tlpdb) which contains the version numbers for all
> packages? There are perl modules and full documentation for that.
>
> You could on pkg build do
> - parse tlpdb
> - get version number of package foo
> - if it is the first time, download and upload to your server
> (maybe changing the name on the fly)
>
> Would that be an option?
>
> This is what tlgmr does, it gets all the version numbers direct from the
> tlpdb, which is **the** **authorative** source of information.
>
> Example:
>
> name 2up
> category Package
> revision 41578
> ...
>
> The version we are using in TL is the revision number (because the real
> version as reported by packages is not guaranteed to be strictly
> increasing, while the revision which is computed from our subversion
> repository is strictly increasing).
>
> I think by parsing (using the Perl modules in tlnet/tlpkg/TeXLive, in
> particular TLPDB.pm and TLPOBJ.pm (others you don't need to know)) the
> tlpdb you can do everything already.
>
> Let me know your opinion
Yes, we could do all sorts of processing, because of course the information is in the original files. In fact, that is exactly how we make the original packages in the first place. The version information is stripped out of the distfile contents and stuffed inside the pkgsrc package files. We have scripts to do this and they are quite easy to use. This is not the problem.
Once a package is made, the version, the URL, the checksum, etc. are all fixed (at least until the package is next updated). This is true for all pkgsrc packages, not just TeXlive ones. If the URL now points to the wrong file (i.e., it got updated on CTAN but the name never changed), then nothing works. We currently have special infrastructure that is used only for TeXlive packages; it basically avoids downloading packages from CTAN because we cannot trust the files there to have sane checksums. This means that developers of new (or updated) packages must download everything manually and manually install the distfiles in the pkgsrc archive. This is annoying and, as I am trying to suggest, entirely unnecessary.
As you note in the follow-up email, all that needs to be done is modify whatever script you use to generate the package files. I presume this is already automated. It would seem to be a minor change to add whatever version information is appropriate to the filenames that are generated and (optionally) add a symlink.
That apparently simple change would make a big difference by making the version explicit in the CTAN archives.
I hope you can see the benefit of this.
Thanks a lot for discussing the options and the reasoning behind my interest in this.
Cheers,
Brook
More information about the tex-live
mailing list