Bug 1917073 - Review Request: cLaTeXMath - A dynamic and cross-platform LaTeX rendering library
Summary: Review Request: cLaTeXMath - A dynamic and cross-platform LaTeX rendering lib...
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Robert-André Mauchin 🐧
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1917075
TreeView+ depends on / blocked
 
Reported: 2021-01-17 01:44 UTC by Lyes Saadi
Modified: 2022-04-03 16:45 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-04-03 15:49:41 UTC
Type: ---
Embargoed:
zebob.m: fedora-review+


Attachments (Terms of Use)

Description Lyes Saadi 2021-01-17 01:44:36 UTC
Spec URL: https://lyessaadi.fedorapeople.org/reviews/cLaTeXMath/cLaTeXMath.spec
SRPM URL: https://lyessaadi.fedorapeople.org/reviews/cLaTeXMath/cLaTeXMath-0.0.3-1.fc34.src.rpm

Description:
It is a dynamic, cross-platform, and embeddable LaTeX rendering library. Its
main purpose is to display mathematical formulas written in LaTeX. It can be
embedded in applications on various platforms (Android, iOS, Windows, Linux GTK,
Qt...). The following pictures demonstrate the application run in Ubuntu (using
GTK) and Windows.


Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=59876215

Comment 1 Lyes Saadi 2021-01-17 01:57:20 UTC
A question for the person going to review this: Should fonts be specified as bundled in the Provide section?

Comment 3 Elliott Sales de Andrade 2021-01-24 21:06:32 UTC
You should attempt to unbundle the fonts; they should be available in individual texlive-* packages.

Why is the version 0.0.3 when there is only version 0.0.1 tagged upstream?

Comment 4 Lyes Saadi 2021-01-24 21:27:07 UTC
> You should attempt to unbundle the fonts; they should be available in individual texlive-* packages.

Upstream doesn't provide any mechanism for unbundling and finding the original sources of all those fonts would be quite a challenge...

> Why is the version 0.0.3 when there is only version 0.0.1 tagged upstream?

Well, upstream is kind of a mess right now? There's both meson and cmake compiling options, with only the meson one being versioned. There's two 0.0.1, a GitHub one and a meson one. And the meson versioning is being updated without any commit being tagged...?

I will go with the meson versioning and update the package each time that version is updated (unless some bugs are fixed).

Should I ask for clearer instructions and better versioning from upstream?

Comment 5 Robert-André Mauchin 🐧 2021-03-08 11:38:30 UTC
 - Export the license to a separate file

sed -e '0,/^# License/d' README.md > LICENSE

 - Split the doc into a separate noarch subpackage:

- Large documentation must go in a -doc subpackage. Large could be size
  (~1MB) or number of files.
  Note: Documentation size is 2826240 bytes in 25 files.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_documentation

 - Please add the license breakdown above the License: field

 - Don't install this file:

cLaTeXMath.x86_64: W: hidden-file-or-dir /usr/share/clatexmath/.clatexmath-res_root
cLaTeXMath.x86_64: E: zero-length /usr/share/clatexmath/.clatexmath-res_root

 - The fonts files could be replaced with symbolic links to the fonts provided by texlive fonts packages.
This is a Should item so I wouldn't block the package on that alone.


Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
- Large documentation must go in a -doc subpackage. Large could be size
  (~1MB) or number of files.
  Note: Documentation size is 2826240 bytes in 25 files.
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_documentation


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "Expat License", "GNU General Public
     License v2.0 or later", "*No copyright* zlib/libpng license", "SIL
     Open Font License 1.1". 221 files have unknown license. Detailed
     output of licensecheck in
     /home/bob/packaging/review/cLaTeXMath/review-
     cLaTeXMath/licensecheck.txt
[-]: License file installed when any subpackage combination is installed.
[!]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[!]: Avoid bundling fonts in non-fonts packages.
     Note: Package contains font files
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Fully versioned dependency in subpackages if applicable.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: The placement of pkgconfig(.pc) files are correct.
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[!]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 4700160 bytes in /usr/share
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: cLaTeXMath-0.0.3-1.fc35.x86_64.rpm
          cLaTeXMath-devel-0.0.3-1.fc35.x86_64.rpm
          cLaTeXMath-debuginfo-0.0.3-1.fc35.x86_64.rpm
          cLaTeXMath-debugsource-0.0.3-1.fc35.x86_64.rpm
          cLaTeXMath-0.0.3-1.fc35.src.rpm
cLaTeXMath.x86_64: W: spelling-error %description -l en_US iOS -> OS, SOS, DOS
cLaTeXMath.x86_64: W: hidden-file-or-dir /usr/share/clatexmath/.clatexmath-res_root
cLaTeXMath.x86_64: E: zero-length /usr/share/clatexmath/.clatexmath-res_root
cLaTeXMath-devel.x86_64: W: spelling-error %description -l en_US iOS -> OS, SOS, DOS
cLaTeXMath.src: W: spelling-error %description -l en_US iOS -> OS, SOS, DOS
5 packages and 0 specfiles checked; 1 errors, 4 warnings.

Comment 6 Lyes Saadi 2021-03-14 19:09:25 UTC
First, sorry for the late answer...

>  - The fonts files could be replaced with symbolic links to the fonts provided by texlive fonts packages.
> This is a Should item so I wouldn't block the package on that alone.

I've looked more into it, but, unfortunately, I am unable to find them under the ttf extension. The closest I've got is with texlive-amsfonts which distributes the fonts under the tfm, afm, pfm, pfb and mf extensions.

Though, I have been able to find in the lyx-fonts package most of the math fonts in ttf. But I don't think it makes sense to link some while not linking others.

On another note, should I try to create a font subpackage and to install them properly, similarly to what the lyx package does?

>  - Please add the license breakdown above the License: field

Should this be done for individual fonts? Or can `res/` be generalized under multiple Licenses by saying "Fonts are under the OFL, Knuth and DoubleStroke licenses"?

I am trying to track down each files' licenses.

The `fonts/` folder seems to contain only OFL fonts, except for the `special.ttf` for which I have no idea from where it is.

I have no idea about `cyrillic` and `greek` though...

If it is necessary/recommended, I'll ask the maintainer to see if he can give me each file's origin.

Comment 7 Lyes Saadi 2021-03-14 19:15:47 UTC
>  - Don't install this file:
>
> cLaTeXMath.x86_64: W: hidden-file-or-dir /usr/share/clatexmath/.clatexmath-res_root
> cLaTeXMath.x86_64: E: zero-length /usr/share/clatexmath/.clatexmath-res_root

This file is actually surprisingly essential: https://github.com/NanoMichael/cLaTeXMath/blob/3bdd94b9b7263e1a30325d75aafe275a2f00fc45/src/latex.cpp#L48

Comment 9 Robert-André Mauchin 🐧 2021-03-15 08:46:15 UTC
 - The doc subpackage should be marked as noarch

 - This font is GPLv2

GNU General Public License v2.0 or later
----------------------------------------
cLaTeXMath-580809b4c5177fa59a8a645987bbba105361b4a2/res/greek/fcsbpg.ttf

 - There are licenses for fonts specified here:

https://github.com/opencollab/jlatexmath/blob/master/LICENSE

Comment 10 Lyes Saadi 2021-03-15 14:21:39 UTC
>  - This font is GPLv2

Ah! It seems that all the fonts are from jlatexmath indeed (cLaTeXMath seems to be a C rewrite of jlatexmath, even if no mention of it is made)! And its License contains a neat summary:

> The archive contains several fonts :
> 1) the fonts eufb10.ttf, eufm10.ttf, msam10.ttf and msbm10.ttf are under OFL (Open Font License);
>
> 2) the font dsrom10.ttf is under a free license;
>
> 3) the font stmary10.ttf and rsfs10.ttf are in PD (Public Domain);
>
> 4) the fonts cmbsy10.ttf, cmbx10.ttf, cmbxti10.ttf, cmex10.ttf, cmmi10.ttf, cmr10.ttf, cmss10.ttf, cmssbx10.ttf, cmsy10.ttf and cmtt10.ttf are under Knuth License.

The only fonts still not explicitly not mentioned are those of the `cyrillic`, `greek` and `special.ttf` fonts, which we can safely assume are then under the GPLv2.

I will open later on a pull request on cLaTeXMath seeking to add the GPLv2 license there, as it seems to be missing. Should I also open an issue in jlatexmath to confirm those are under the GPLv2? Though, this seems to be confirmed by the existence in other packages of those fonts under the "GPLv2+ with exceptions" and "GPL+" licenses in the "ctan-cm-lgc-sans-fonts" and "texlive-cm-lgc" packages respectively.

Also, the "free license" under which dsrom10 is, is quite opaque? I can find it in several other packages in Fedora.

- In `lyx`: dsrom is not specified, but in the license breakdown it is said: « The actual license says "The author of these fonts, Basil K. Malyshev, has kindly granted permission to use and modify these fonts." », which is the closest I've found to what is described as « free license ». The font package has in the License tag: « Copyright only and GPL+ ».
- In `TeXmath`: dsrom is present, but nothing is specified?
- In `texlive-doublestroke`: as is explicited in the name of the package, this would be the most logical since the DoubleStroke license is included. Oh, and seeing the mess the `texlive` package is, I don't think there is a license breakdown in it :P (I checked, there is none)! But this is I think the most reliable source there is. My guess is just that the lyx/jslatexmath maintainers have lost the source of dsrom, and multiple other fonts and just slapped "free license", which was then interpreted as Copyright only by lyx's packager? This is just speculation though.

---

Anyway, what a mess is the tex fonts licensing world!

Comment 11 Robert-André Mauchin 🐧 2021-03-15 14:46:57 UTC
Isn't dsrom10 under DoubleStroke? It is provided by the Texlive DouleStrike package:


  dnf info texlive-doublestroke                                                                                                                  1s 535ms  fish 
Last metadata expiration check: 0:11:57 ago on Mon Mar 15 15:31:57 2021.
Available Packages
Name         : texlive-doublestroke
Epoch        : 9
Version      : svn15878.1.111
Release      : 38.fc34
Architecture : noarch
Size         : 83 k
Source       : texlive-2020-38.fc34.src.rpm
Repository   : updates-testing
Summary      : Typeset mathematical double stroke symbols
URL          : http://tug.org/texlive/
License      : Doublestroke
Description  : A font based on Computer Modern Roman useful for typesetting
             : the mathematical symbols for the natural numbers (N), whole
             : numbers (Z), rational numbers (Q), real numbers (R) and complex
             : numbers (C); coverage includes all Roman capital letters, '1',
             : 'h' and 'k'. The font is available both as Metafont source and
             : in Adobe Type 1 format, and LaTeX macros for its use are
             : provided. The fonts appear in the blackboard bold sampler.

   dnf repoquery -l texlive-doublestroke                                                                                                          1s 548ms  fish 
Last metadata expiration check: 0:12:12 ago on Mon Mar 15 15:31:57 2021.
/usr/share/texlive/texmf-dist/fonts/map/dvips/doublestroke
/usr/share/texlive/texmf-dist/fonts/map/dvips/doublestroke/dstroke.map
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsrom.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsrom10.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsrom12.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsrom8.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsromo.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsromu.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsss10.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsss12.mf
/usr/share/texlive/texmf-dist/fonts/source/public/doublestroke/dsss8.mf
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke/dsrom10.tfm
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke/dsrom12.tfm
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke/dsrom8.tfm
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke/dsss10.tfm
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke/dsss12.tfm
/usr/share/texlive/texmf-dist/fonts/tfm/public/doublestroke/dsss8.tfm
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsrom10.pfb
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsrom12.pfb
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsrom8.pfb
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsss10.pfb
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsss12.pfb
/usr/share/texlive/texmf-dist/fonts/type1/public/doublestroke/dsss8.pfb
/usr/share/texlive/texmf-dist/tex/latex/doublestroke
/usr/share/texlive/texmf-dist/tex/latex/doublestroke/Udsrom.fd
/usr/share/texlive/texmf-dist/tex/latex/doublestroke/Udsss.fd
/usr/share/texlive/texmf-dist/tex/latex/doublestroke/dsfont.sty

Comment 12 Lyes Saadi 2021-03-15 14:49:12 UTC
Yes, this is my guess as well! (as I clarified at the end, maybe I wasn't clear enough?)

Comment 13 Robert-André Mauchin 🐧 2021-03-15 21:28:03 UTC
Could you post your latest spec with the changes?

Comment 14 Lyes Saadi 2021-03-15 21:48:55 UTC
Spec URL: https://lyessaadi@lyessaadi.fedorapeople.org/reviews/cLaTeXMath/cLaTeXMath.spec
SRPM URL: https://lyessaadi@lyessaadi.fedorapeople.org/reviews/cLaTeXMath/cLaTeXMath-0.0.3-3.fc33.src.rpm

- Adding a detailed licensing breakdown
- Adding the GPLv2+ License

Comment 15 Lyes Saadi 2021-03-15 21:50:10 UTC
There it is! I am unable to do scratch build because kinit seems not to work? Maybe the AAA migration beginning?

Anyway, I hope everything's good !

Comment 16 Robert-André Mauchin 🐧 2021-03-15 22:02:05 UTC
LGTM, package approved.

Comment 17 Lyes Saadi 2021-03-15 22:03:32 UTC
Thank you so much :D!

Comment 18 Tomas Hrcka 2021-03-16 10:29:10 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/cLaTeXMath

Comment 19 Lyes Saadi 2021-03-16 19:36:49 UTC
Hello,

So, forgot to add the COPYING file (from jlatexmath) as well with the fonts. I will add it before importing it.

Anyway, I opened an issue in jlatexmath (https://github.com/opencollab/jlatexmath/issues/80) just to seek confirmation. The project seems still somewhat active, so I hope to have an answer soon. If I don't, I'll just go ahead, though I prefer not to.

After getting an eventual answer, I'll make sure to help cLaTeXMath clear up the confusion with the different Licenses upstream for other eventual packagers!

Comment 20 Lyes Saadi 2021-03-16 19:45:47 UTC
I also just noticed I inadvertently wrote GPLv2 in the License field and breakdown instead or GPLv2/

Comment 21 Lyes Saadi 2021-03-22 16:08:02 UTC
I will finally push the package whether I get an update or not this Friday just after the FAS outage.

(By the last comment I meant GPLv2+.)

Comment 22 Mattia Verga 2022-04-03 14:48:34 UTC
The package was never imported, are you still interested in finalizing this?

Comment 23 Lyes Saadi 2022-04-03 15:49:41 UTC
Hello,

Yes, I am still interested in packaging this, but, the reason why it wasn't imported is because we had legal issues which we were able to resolve, but in a less than ideal way. I decided after my last message to wait instead for the new version of the library, which would get rid of all the issues once and for all (and which is coming soon-ish). But, that new version also comes with a change of name (MicroTeX), so, I don't see a reason for keeping the repository (Should I open an issue with releng for this?). And I guess I'll just open a new review request when time comes.

Thank you for reminding me of this review request.

Comment 24 Ben Beasley 2022-04-03 16:23:28 UTC
(In reply to Lyes Saadi from comment #23)
> Hello,
> 
> Yes, I am still interested in packaging this, but, the reason why it wasn't
> imported is because we had legal issues which we were able to resolve, but
> in a less than ideal way. I decided after my last message to wait instead
> for the new version of the library, which would get rid of all the issues
> once and for all (and which is coming soon-ish). But, that new version also
> comes with a change of name (MicroTeX), so, I don't see a reason for keeping
> the repository (Should I open an issue with releng for this?). And I guess
> I'll just open a new review request when time comes.
> 
> Thank you for reminding me of this review request.

You can retire the package in Rawhide yourself with:

> $ fedpkg co cLaTeXMath
> $ cd cLaTeXMath
> $ fedpkg retire --notes 'Please replace this text with a brief summary of why the package was retired.'

That should be all you need to do.

Comment 25 Lyes Saadi 2022-04-03 16:29:20 UTC
Thank you, and sorry for the inconvenience!

Comment 26 Lyes Saadi 2022-04-03 16:37:23 UTC
I guess I should also orphan it, since I'm still shown as the admin?

Comment 27 Ben Beasley 2022-04-03 16:45:31 UTC
(In reply to Lyes Saadi from comment #26)
> I guess I should also orphan it, since I'm still shown as the admin?

You may, if you like, or you can just wait for the F34–F36 branches to reach end-of-life. I think it doesn’t matter much since the package was never imported.


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