sile-typesetter / sile

The SILE Typesetter — Simon’s Improved Layout Engine
https://sile-typesetter.org
MIT License
1.66k stars 98 forks source link

Build Fedora packages #872

Open alerque opened 4 years ago

alerque commented 4 years ago

Using a SILE official copy repository?

hegjon commented 1 year ago

My name is Jonny Heggheim [1], I'm a Fedora package maintainer and I would love to have SILE included in our official RPM repository.

I am new to Lua and its eco-system and how to package it for Fedora. I have started with one of the missing dependencies [2].

[1] https://src.fedoraproject.org/user/jonny [2] https://bugzilla.redhat.com/show_bug.cgi?id=2142399

hegjon commented 1 year ago

Dependency lua-cldr is also added for package review https://bugzilla.redhat.com/show_bug.cgi?id=2142653

alerque commented 1 year ago

This is great! Let me know if you need anything from me. It's been a long time since I worked with RPM packaging (and it was PLD Linux long before Fedora existed) but if you get stuck let me know. You might also be able to take some hints from the recently added OpenSUSE packaging since it is RPM based on they have all the Lua dependencies built now. The distro specific packaging macros are bound to be different but you can probably still take some clues from them.

hegjon commented 1 year ago

Thanks, I have looked at the OpenSUSE packaging, they are using luarocks RPM macros that is not included in Fedora. So my packages are mostly dropping files into /usr/share/lua/5.4/

hegjon commented 1 year ago

I have made and added the following depenecies for package review:

I have started on lua-linenoise, but I am not sure how to package it, since Fedora does not want bundled libraries and it is built against a forked version of linenoise.

alerque commented 1 year ago

I think you'll need somebody with Fedora expertise to answer that one. As a general rule Arch Linux doesn't like bundling libraries either and when possible we don't — but Arch also takes a pragmatism-above-principles approach and when there isn't another way to get the job done we do what works. That means there are some bundled libraries in packages.

In the case of forked libraries and where the fork is (as in the case of Lua linenoise) the long stading defacto library to use for the ecosystem I think there should be a way to do it.

hegjon commented 1 year ago

I started building the dependencies at COPR while I am waiting for peer review approval https://copr.fedorainfracloud.org/coprs/jonny/SILE/packages/

You can use COPR for CI if you have a static build/check, then you get a large coverage of RPM distros/arches.

alerque commented 1 year ago

I've only ever heard of COPR as a repository of user contributed packages, not as a CI tool. But I'm happy to consider adding CI runners to our toolking that trigger test builds on other platform. We already do this with Nix confirming that the Nix Flake builds and runs for everything that hits the master branch. If there is some way we can do that with other distros without adding the packaging itself to our repo then that might be a useful signal helping us not to break things for downstream folks.

hegjon commented 1 year ago

You do not need to distribute artifacts if they are not working. I would start by getting it to compile (and running tests), once you get a hang of it, then you can start by building RPMS for different distros.

Copr is a build system available for everybody. You provide the src.rpm and Copr provides a yum repository. Copr can be used for upstream builds, for continuous integration, or to provide a yum repository for users of your project,

https://docs.pagure.org/copr.copr/user_documentation.html#faq

hegjon commented 1 year ago

Here is a complete build that is using rpkg templates where they built an RPM for each commit: https://github.com/francescmm/GitQlient/blob/2976ce31b1cc0bad65db97b788da48c0415b96b9/contrib/rpm/gitqlient.spec

You can also use Makefiles: https://github.com/hegjon/storj-rpm/blob/master/.copr/Makefile

hegjon commented 1 year ago

Let me know if you need anything from me.

It would be great to know if the dependency luautf8 is needed when using Lua 5.4.4 or later

alerque commented 1 year ago

As of current versions, yes. We're assuming it's API including the bits above and beyond what Lua proper introduced. In practice most of what we use could probably be refactored to be 5.4 compatible and only need that rock as a shim for older versions, but that has not been done yet and it would come with some downsides for downstream class and package authors that would need to be aware of the differences instead of just being guarantied a consistent API.

hegjon commented 1 year ago

All of the missing dependencies have been built and I am running into my first SILE issue :)

Do you see a configuration issue?

sile/documentation on  master took 39s
❯ sile --traceback c01-whatis.sil
SILE v0.14.3 (Lua 5.4)
<c01-whatis.sil> as sil

! Unknown command chapter at:
    c01-whatis.sil:2:1: in \chapter
    c01-whatis.sil:1:1: in \document
    c01-whatis.sil: in <snippet>:
        [[\begin{document}␤\chapter{What is SILE?}␤% Our chapters open on double page spreads. We want␤% chapt]]

stack traceback:
    [C]: in function 'error'
    /usr/local/share/sile/core/utilities.lua:39: in function 'core.utilities.error'
    /usr/local/share/sile/core/sile.lua:232: in function 'core.sile.process'
    /usr/local/share/sile/classes/base.lua:306: in field '?'
    /usr/local/share/sile/core/sile.lua:363: in function 'core.sile.call'
    /usr/local/share/sile/core/sile.lua:224: in function 'core.sile.process'
    (...tail calls...)
    /usr/local/share/sile/core/sile.lua:288: in function 'core.sile.processString'
    /usr/local/share/sile/core/sile.lua:319: in function 'core.sile.processFile'
    (...tail calls...)
    [C]: in function 'xpcall'
    /usr/local/bin/sile:115: in main chunk
    [C]: in ?

error summary:
    Processing at: c01-whatis.sil:2:1: in \chapter
    Using code at: /usr/local/share/sile/core/sile.lua:232: Unknown command chapter

Files in sile package:

❯ rpm -qlv sile
-rwxr-xr-x    1 root     root                     3538 Nov 16 22:45 /usr/bin/sile
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id/3a
lrwxrwxrwx    1 root     root                       33 Nov 16 22:45 /usr/lib/.build-id/3a/15d22b20fd207fa738d5c9f57ec2054ba7f8ee -> ../../../../usr/lib64/sile/svg.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id/3f
lrwxrwxrwx    1 root     root                       43 Nov 16 22:45 /usr/lib/.build-id/3f/a8bc2e589e1a039fcf55afb41208d5df923d5f -> ../../../../usr/lib64/sile/justenoughicu.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id/5e
lrwxrwxrwx    1 root     root                       50 Nov 16 22:45 /usr/lib/.build-id/5e/db6e0d05b7b79e4ab0a7b0f1196c1a351a6dcd -> ../../../../usr/lib64/sile/justenoughfontconfig.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id/9a
lrwxrwxrwx    1 root     root                       48 Nov 16 22:45 /usr/lib/.build-id/9a/3dcf138026a34b80885afc8900bfe38697df6c -> ../../../../usr/lib64/sile/justenoughharfbuzz.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id/b0
lrwxrwxrwx    1 root     root                       41 Nov 16 22:45 /usr/lib/.build-id/b0/78bb40023d10ed5d10140cb65f0cf2e359b2dc -> ../../../../usr/lib64/sile/fontmetrics.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib/.build-id/d4
lrwxrwxrwx    1 root     root                       49 Nov 16 22:45 /usr/lib/.build-id/d4/e2737caa5d17c00f21bdc37302b651cfac0c4b -> ../../../../usr/lib64/sile/justenoughlibtexpdf.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/lib64/sile
-rwxr-xr-x    1 root     root                    15912 Nov 16 22:45 /usr/lib64/sile/fontmetrics.so
-rwxr-xr-x    1 root     root                    15920 Nov 16 22:45 /usr/lib64/sile/justenoughfontconfig.so
-rwxr-xr-x    1 root     root                    24160 Nov 16 22:45 /usr/lib64/sile/justenoughharfbuzz.so
-rwxr-xr-x    1 root     root                    24144 Nov 16 22:45 /usr/lib64/sile/justenoughicu.so
-rwxr-xr-x    1 root     root                    36952 Nov 16 22:45 /usr/lib64/sile/justenoughlibtexpdf.so
-rwxr-xr-x    1 root     root                    57616 Nov 16 22:45 /usr/lib64/sile/svg.so
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/doc/sile
-rw-r--r--    1 root     root                   102857 Nov  5 06:56 /usr/share/doc/sile/CHANGELOG.md
-rw-r--r--    1 root     root                    15390 Nov  5 06:56 /usr/share/doc/sile/README.md
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/licenses/sile
-rw-r--r--    1 root     root                     1102 Nov  5 06:56 /usr/share/licenses/sile/LICENSE
-rw-r--r--    1 root     root                     1838 Nov 16 22:45 /usr/share/man/man1/sile.1.gz
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/classes
-rw-r--r--    1 root     root                    20610 Nov  5 06:56 /usr/share/sile/classes/base.lua
-rw-r--r--    1 root     root                     8687 Nov  5 06:56 /usr/share/sile/classes/bible.lua
-rw-r--r--    1 root     root                     8199 Nov  5 06:56 /usr/share/sile/classes/book.lua
-rw-r--r--    1 root     root                      768 Nov  5 06:56 /usr/share/sile/classes/diglot.lua
-rw-r--r--    1 root     root                    12876 Nov  5 06:56 /usr/share/sile/classes/docbook.lua
-rw-r--r--    1 root     root                      409 Nov  5 06:56 /usr/share/sile/classes/jbook.lua
-rw-r--r--    1 root     root                      401 Nov  5 06:56 /usr/share/sile/classes/jplain.lua
-rw-r--r--    1 root     root                     2103 Nov  5 06:56 /usr/share/sile/classes/letter.lua
-rw-r--r--    1 root     root                     1749 Nov  5 06:56 /usr/share/sile/classes/markdown.lua
-rw-r--r--    1 root     root                     2013 Nov  5 06:56 /usr/share/sile/classes/pecha.lua
-rw-r--r--    1 root     root                    11518 Nov  5 06:56 /usr/share/sile/classes/plain.lua
-rw-r--r--    1 root     root                      905 Nov  5 06:56 /usr/share/sile/classes/tbook.lua
-rw-r--r--    1 root     root                     1389 Nov  5 06:56 /usr/share/sile/classes/tplain.lua
-rw-r--r--    1 root     root                     1023 Nov  5 06:56 /usr/share/sile/classes/triglot.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/core
-rw-r--r--    1 root     root                    26131 Nov  5 06:56 /usr/share/sile/core/break.lua
-rw-r--r--    1 root     root                     5391 Nov  5 06:56 /usr/share/sile/core/cli.lua
-rw-r--r--    1 root     root                     6646 Nov  5 06:56 /usr/share/sile/core/color.lua
-rw-r--r--    1 root     root                     2659 Nov  5 06:56 /usr/share/sile/core/deprecations.lua
-rw-r--r--    1 root     root                     6171 Nov  5 06:56 /usr/share/sile/core/font.lua
-rw-r--r--    1 root     root                      475 Nov  5 06:56 /usr/share/sile/core/fontmanager.lua
-rw-r--r--    1 root     root                     9489 Nov  5 06:56 /usr/share/sile/core/frame.lua
-rw-r--r--    1 root     root                     1481 Nov  5 06:56 /usr/share/sile/core/frameparser.lua
-rw-r--r--    1 root     root                     5845 Nov  5 06:56 /usr/share/sile/core/hyphenator-liang.lua
-rw-r--r--    1 root     root                     3305 Nov  5 06:56 /usr/share/sile/core/languages.lua
-rw-r--r--    1 root     root                     5280 Nov  5 06:56 /usr/share/sile/core/length.lua
-rw-r--r--    1 root     root                     1394 Nov  5 06:56 /usr/share/sile/core/makedeps.lua
-rw-r--r--    1 root     root                     5735 Nov  5 06:56 /usr/share/sile/core/measurement.lua
-rw-r--r--    1 root     root                    19430 Nov  5 06:56 /usr/share/sile/core/nodefactory.lua
-rw-r--r--    1 root     root                    23993 Nov  5 06:56 /usr/share/sile/core/opentype-parser.lua
-rw-r--r--    1 root     root                     6906 Nov  5 06:56 /usr/share/sile/core/packagemanager.lua
-rw-r--r--    1 root     root                     4946 Nov  5 06:56 /usr/share/sile/core/pagebuilder.lua
-rw-r--r--    1 root     root                     2779 Nov  5 06:56 /usr/share/sile/core/papersize.lua
-rw-r--r--    1 root     root                     2877 Nov  5 06:56 /usr/share/sile/core/parserbits.lua
-rw-r--r--    1 root     root                      983 Nov  5 06:56 /usr/share/sile/core/repl.lua
-rw-r--r--    1 root     root                     5041 Nov  5 06:56 /usr/share/sile/core/settings.lua
-rw-r--r--    1 root     root                    14791 Nov  5 06:56 /usr/share/sile/core/sile.lua
-rw-r--r--    1 root     root                     7671 Nov  5 06:56 /usr/share/sile/core/tracestack.lua
-rw-r--r--    1 root     root                      109 Nov  5 06:56 /usr/share/sile/core/typesetter.lua
-rw-r--r--    1 root     root                     5537 Nov  5 06:56 /usr/share/sile/core/units.lua
-rw-r--r--    1 root     root                    18185 Nov  5 06:56 /usr/share/sile/core/utilities.lua
-rw-r--r--    1 root     root                       17 Nov 16 22:45 /usr/share/sile/core/version.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/i18n
-rw-r--r--    1 root     root                       81 Nov  5 06:56 /usr/share/sile/i18n/af.ftl
-rw-r--r--    1 root     root                       78 Nov  5 06:56 /usr/share/sile/i18n/am.ftl
-rw-r--r--    1 root     root                       84 Nov  5 06:56 /usr/share/sile/i18n/ar.ftl
-rw-r--r--    1 root     root                       87 Nov  5 06:56 /usr/share/sile/i18n/as.ftl
-rw-r--r--    1 root     root                       90 Nov  5 06:56 /usr/share/sile/i18n/bg.ftl
-rw-r--r--    1 root     root                      102 Nov  5 06:56 /usr/share/sile/i18n/bn.ftl
-rw-r--r--    1 root     root                       96 Nov  5 06:56 /usr/share/sile/i18n/bo.ftl
-rw-r--r--    1 root     root                       74 Nov  5 06:56 /usr/share/sile/i18n/ca.ftl
-rw-r--r--    1 root     root                       73 Nov  5 06:56 /usr/share/sile/i18n/cs.ftl
-rw-r--r--    1 root     root                       73 Nov  5 06:56 /usr/share/sile/i18n/cy.ftl
-rw-r--r--    1 root     root                       74 Nov  5 06:56 /usr/share/sile/i18n/da.ftl
-rw-r--r--    1 root     root                       85 Nov  5 06:56 /usr/share/sile/i18n/de.ftl
-rw-r--r--    1 root     root                       98 Nov  5 06:56 /usr/share/sile/i18n/el-monoton.ftl
-rw-r--r--    1 root     root                       98 Nov  5 06:56 /usr/share/sile/i18n/el-polyton.ftl
-rw-r--r--    1 root     root                       98 Nov  5 06:56 /usr/share/sile/i18n/el.ftl
-rw-r--r--    1 root     root                      381 Nov  5 06:56 /usr/share/sile/i18n/en.ftl
-rw-r--r--    1 root     root                      351 Nov  5 06:56 /usr/share/sile/i18n/eo.ftl
-rw-r--r--    1 root     root                       76 Nov  5 06:56 /usr/share/sile/i18n/es.ftl
-rw-r--r--    1 root     root                       76 Nov  5 06:56 /usr/share/sile/i18n/et.ftl
-rw-r--r--    1 root     root                       85 Nov  5 06:56 /usr/share/sile/i18n/eu.ftl
-rw-r--r--    1 root     root                       73 Nov  5 06:56 /usr/share/sile/i18n/fi.ftl
-rw-r--r--    1 root     root                      270 Nov  5 06:56 /usr/share/sile/i18n/fr.ftl
-rw-r--r--    1 root     root                       81 Nov  5 06:56 /usr/share/sile/i18n/ga.ftl
-rw-r--r--    1 root     root                        0 Nov  5 06:56 /usr/share/sile/i18n/gu.ftl
-rw-r--r--    1 root     root                       99 Nov  5 06:56 /usr/share/sile/i18n/hi.ftl
-rw-r--r--    1 root     root                       77 Nov  5 06:56 /usr/share/sile/i18n/hr.ftl
-rw-r--r--    1 root     root                       84 Nov  5 06:56 /usr/share/sile/i18n/hu.ftl
-rw-r--r--    1 root     root                      100 Nov  5 06:56 /usr/share/sile/i18n/hy.ftl
-rw-r--r--    1 root     root                       73 Nov  5 06:56 /usr/share/sile/i18n/id.ftl
-rw-r--r--    1 root     root                       77 Nov  5 06:56 /usr/share/sile/i18n/is.ftl
-rw-r--r--    1 root     root                       74 Nov  5 06:56 /usr/share/sile/i18n/it.ftl
-rw-r--r--    1 root     root                       77 Nov  5 06:56 /usr/share/sile/i18n/ja.ftl
-rw-r--r--    1 root     root                        0 Nov  5 06:56 /usr/share/sile/i18n/jv.ftl
-rw-r--r--    1 root     root                       96 Nov  5 06:56 /usr/share/sile/i18n/ka.ftl
-rw-r--r--    1 root     root                       99 Nov  5 06:56 /usr/share/sile/i18n/kn.ftl
-rw-r--r--    1 root     root                      362 Nov  5 06:56 /usr/share/sile/i18n/la.ftl
-rw-r--r--    1 root     root                       74 Nov  5 06:56 /usr/share/sile/i18n/lt.ftl
-rw-r--r--    1 root     root                       73 Nov  5 06:56 /usr/share/sile/i18n/lv.ftl
-rw-r--r--    1 root     root                      114 Nov  5 06:56 /usr/share/sile/i18n/ml.ftl
-rw-r--r--    1 root     root                      111 Nov  5 06:56 /usr/share/sile/i18n/mr.ftl
-rw-r--r--    1 root     root                        0 Nov  5 06:56 /usr/share/sile/i18n/my.ftl
-rw-r--r--    1 root     root                      389 Nov  5 06:56 /usr/share/sile/i18n/nb.ftl
-rw-r--r--    1 root     root                       82 Nov  5 06:56 /usr/share/sile/i18n/nl.ftl
-rw-r--r--    1 root     root                      389 Nov  5 06:56 /usr/share/sile/i18n/nn.ftl
-rw-r--r--    1 root     root                      389 Nov  5 06:56 /usr/share/sile/i18n/no.ftl
-rw-r--r--    1 root     root                        0 Nov  5 06:56 /usr/share/sile/i18n/or.ftl
-rw-r--r--    1 root     root                        0 Nov  5 06:56 /usr/share/sile/i18n/pa.ftl
-rw-r--r--    1 root     root                       81 Nov  5 06:56 /usr/share/sile/i18n/pl.ftl
-rw-r--r--    1 root     root                       78 Nov  5 06:56 /usr/share/sile/i18n/pt.ftl
-rw-r--r--    1 root     root                       85 Nov  5 06:56 /usr/share/sile/i18n/rm.ftl
-rw-r--r--    1 root     root                       76 Nov  5 06:56 /usr/share/sile/i18n/ro.ftl
-rw-r--r--    1 root     root                      423 Nov  5 06:56 /usr/share/sile/i18n/ru.ftl
-rw-r--r--    1 root     root                        0 Nov  5 06:56 /usr/share/sile/i18n/sa.ftl
-rw-r--r--    1 root     root                       73 Nov  5 06:56 /usr/share/sile/i18n/sk.ftl
-rw-r--r--    1 root     root                       74 Nov  5 06:56 /usr/share/sile/i18n/sl.ftl
-rw-r--r--    1 root     root                       83 Nov  5 06:56 /usr/share/sile/i18n/sr.ftl
-rw-r--r--    1 root     root                       76 Nov  5 06:56 /usr/share/sile/i18n/sv.ftl
-rw-r--r--    1 root     root                      105 Nov  5 06:56 /usr/share/sile/i18n/ta.ftl
-rw-r--r--    1 root     root                       93 Nov  5 06:56 /usr/share/sile/i18n/th.ftl
-rw-r--r--    1 root     root                       70 Nov  5 06:56 /usr/share/sile/i18n/tk.ftl
-rw-r--r--    1 root     root                      117 Nov  5 06:56 /usr/share/sile/i18n/tr.ftl
-rw-r--r--    1 root     root                       84 Nov  5 06:56 /usr/share/sile/i18n/ug.ftl
-rw-r--r--    1 root     root                       82 Nov  5 06:56 /usr/share/sile/i18n/uk.ftl
-rw-r--r--    1 root     root                      147 Nov  5 06:56 /usr/share/sile/i18n/und.ftl
-rw-r--r--    1 root     root                       91 Nov  5 06:56 /usr/share/sile/i18n/ur.ftl
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/inputters
-rw-r--r--    1 root     root                     2687 Nov  5 06:56 /usr/share/sile/inputters/base.lua
-rw-r--r--    1 root     root                     1131 Nov  5 06:56 /usr/share/sile/inputters/lua.lua
-rw-r--r--    1 root     root                     5729 Nov  5 06:56 /usr/share/sile/inputters/sil.lua
-rw-r--r--    1 root     root                     2475 Nov  5 06:56 /usr/share/sile/inputters/xml.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/languages
-rw-r--r--    1 root     root                   110964 Nov  5 06:56 /usr/share/sile/languages/af.lua
-rw-r--r--    1 root     root                     1314 Nov  5 06:56 /usr/share/sile/languages/am.lua
-rw-r--r--    1 root     root                     1139 Nov  5 06:56 /usr/share/sile/languages/as.lua
-rw-r--r--    1 root     root                    17439 Nov  5 06:56 /usr/share/sile/languages/bg.lua
-rw-r--r--    1 root     root                     1139 Nov  5 06:56 /usr/share/sile/languages/bn.lua
-rw-r--r--    1 root     root                     9077 Nov  5 06:56 /usr/share/sile/languages/ca.lua
-rw-r--r--    1 root     root                    32883 Nov  5 06:56 /usr/share/sile/languages/cs.lua
-rw-r--r--    1 root     root                    63368 Nov  5 06:56 /usr/share/sile/languages/cy.lua
-rw-r--r--    1 root     root                     9669 Nov  5 06:56 /usr/share/sile/languages/da.lua
-rw-r--r--    1 root     root                   147282 Nov  5 06:56 /usr/share/sile/languages/de.lua
-rw-r--r--    1 root     root                     8444 Nov  5 06:56 /usr/share/sile/languages/el-monoton.lua
-rw-r--r--    1 root     root                    20562 Nov  5 06:56 /usr/share/sile/languages/el-polyton.lua
-rw-r--r--    1 root     root                    76408 Nov  5 06:56 /usr/share/sile/languages/el.lua
-rw-r--r--    1 root     root                    42772 Nov  5 06:56 /usr/share/sile/languages/en.lua
-rw-r--r--    1 root     root                    25889 Nov  5 06:56 /usr/share/sile/languages/eo.lua
-rw-r--r--    1 root     root                    37908 Nov  5 06:56 /usr/share/sile/languages/es.lua
-rw-r--r--    1 root     root                    34423 Nov  5 06:56 /usr/share/sile/languages/et.lua
-rw-r--r--    1 root     root                     1911 Nov  5 06:56 /usr/share/sile/languages/eu.lua
-rw-r--r--    1 root     root                     4649 Nov  5 06:56 /usr/share/sile/languages/fi.lua
-rw-r--r--    1 root     root                    28766 Nov  5 06:56 /usr/share/sile/languages/fr.lua
-rw-r--r--    1 root     root                    62041 Nov  5 06:56 /usr/share/sile/languages/ga.lua
-rw-r--r--    1 root     root                     1042 Nov  5 06:56 /usr/share/sile/languages/gu.lua
-rw-r--r--    1 root     root                     1001 Nov  5 06:56 /usr/share/sile/languages/hi.lua
-rw-r--r--    1 root     root                    12132 Nov  5 06:56 /usr/share/sile/languages/hr.lua
-rw-r--r--    1 root     root                   716733 Nov  5 06:56 /usr/share/sile/languages/hu.lua
-rw-r--r--    1 root     root                    15778 Nov  5 06:56 /usr/share/sile/languages/hy.lua
-rw-r--r--    1 root     root                     2456 Nov  5 06:56 /usr/share/sile/languages/id.lua
-rw-r--r--    1 root     root                    38677 Nov  5 06:56 /usr/share/sile/languages/is.lua
-rw-r--r--    1 root     root                     2859 Nov  5 06:56 /usr/share/sile/languages/it.lua
-rw-r--r--    1 root     root                     7279 Nov  5 06:56 /usr/share/sile/languages/ja.lua
-rw-r--r--    1 root     root                     2022 Nov  5 06:56 /usr/share/sile/languages/jv.lua
-rw-r--r--    1 root     root                    32129 Nov  5 06:56 /usr/share/sile/languages/ka.lua
-rw-r--r--    1 root     root                     1168 Nov  5 06:56 /usr/share/sile/languages/kn.lua
-rw-r--r--    1 root     root                     2970 Nov  5 06:56 /usr/share/sile/languages/la.lua
-rw-r--r--    1 root     root                    13145 Nov  5 06:56 /usr/share/sile/languages/lt.lua
-rw-r--r--    1 root     root                   119171 Nov  5 06:56 /usr/share/sile/languages/lv.lua
-rw-r--r--    1 root     root                     1283 Nov  5 06:56 /usr/share/sile/languages/ml.lua
-rw-r--r--    1 root     root                     1070 Nov  5 06:56 /usr/share/sile/languages/mr.lua
-rw-r--r--    1 root     root                     3157 Nov  5 06:56 /usr/share/sile/languages/my.lua
-rw-r--r--    1 root     root                      225 Nov  5 06:56 /usr/share/sile/languages/nb.lua
-rw-r--r--    1 root     root                   122262 Nov  5 06:56 /usr/share/sile/languages/nl.lua
-rw-r--r--    1 root     root                      406 Nov  5 06:56 /usr/share/sile/languages/nn.lua
-rw-r--r--    1 root     root                   276885 Nov  5 06:56 /usr/share/sile/languages/no.lua
-rw-r--r--    1 root     root                     1012 Nov  5 06:56 /usr/share/sile/languages/or.lua
-rw-r--r--    1 root     root                      995 Nov  5 06:56 /usr/share/sile/languages/pa.lua
-rw-r--r--    1 root     root                    42905 Nov  5 06:56 /usr/share/sile/languages/pl.lua
-rw-r--r--    1 root     root                     2538 Nov  5 06:56 /usr/share/sile/languages/pt.lua
-rw-r--r--    1 root     root                     3001 Nov  5 06:56 /usr/share/sile/languages/rm.lua
-rw-r--r--    1 root     root                     5471 Nov  5 06:56 /usr/share/sile/languages/ro.lua
-rw-r--r--    1 root     root                    88324 Nov  5 06:56 /usr/share/sile/languages/ru.lua
-rw-r--r--    1 root     root                    11132 Nov  5 06:56 /usr/share/sile/languages/sa.lua
-rw-r--r--    1 root     root                    27306 Nov  5 06:56 /usr/share/sile/languages/sk.lua
-rw-r--r--    1 root     root                     9347 Nov  5 06:56 /usr/share/sile/languages/sl.lua
-rw-r--r--    1 root     root                    37757 Nov  5 06:56 /usr/share/sile/languages/sr.lua
-rw-r--r--    1 root     root                    43567 Nov  5 06:56 /usr/share/sile/languages/sv.lua
-rw-r--r--    1 root     root                     1192 Nov  5 06:56 /usr/share/sile/languages/ta.lua
-rw-r--r--    1 root     root                    66430 Nov  5 06:56 /usr/share/sile/languages/th.lua
-rw-r--r--    1 root     root                    21122 Nov  5 06:56 /usr/share/sile/languages/tk.lua
-rw-r--r--    1 root     root                     9252 Nov  5 06:56 /usr/share/sile/languages/tr.lua
-rw-r--r--    1 root     root                     5300 Nov  5 06:56 /usr/share/sile/languages/ug.lua
-rw-r--r--    1 root     root                    55470 Nov  5 06:56 /usr/share/sile/languages/uk.lua
-rw-r--r--    1 root     root                       67 Nov  5 06:56 /usr/share/sile/languages/und.lua
-rw-r--r--    1 root     root                     6109 Nov  5 06:56 /usr/share/sile/languages/unicode.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/lua-libraries
-rw-r--r--    1 root     root                     1456 Nov  5 06:56 /usr/share/sile/lua-libraries/bitshim.lua
-rw-r--r--    1 root     root                  2110178 Nov  5 06:56 /usr/share/sile/lua-libraries/char-def.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/lua-libraries/imagesize
-rw-r--r--    1 root     root                     3974 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/lua-libraries/imagesize/format
-rw-r--r--    1 root     root                      827 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/bmp.lua
-rw-r--r--    1 root     root                     5140 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/gif.lua
-rw-r--r--    1 root     root                     1663 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/jpeg.lua
-rw-r--r--    1 root     root                     1079 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/mng.lua
-rw-r--r--    1 root     root                     1332 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/pcd.lua
-rw-r--r--    1 root     root                     1011 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/png.lua
-rw-r--r--    1 root     root                     1200 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/pnm.lua
-rw-r--r--    1 root     root                      428 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/psd.lua
-rw-r--r--    1 root     root                     1697 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/swf.lua
-rw-r--r--    1 root     root                     3389 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/tiff.lua
-rw-r--r--    1 root     root                      439 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/xbm.lua
-rw-r--r--    1 root     root                      520 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/xcf.lua
-rw-r--r--    1 root     root                      619 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/format/xpm.lua
-rw-r--r--    1 root     root                      517 Nov  5 06:56 /usr/share/sile/lua-libraries/imagesize/util.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/lua-libraries/lunamark
-rw-r--r--    1 root     root                     3477 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark.lua
-rw-r--r--    1 root     root                     6201 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/entities.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/lua-libraries/lunamark/reader
-rw-r--r--    1 root     root                      739 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/reader.lua
-rw-r--r--    1 root     root                    41584 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/reader/markdown.lua
-rw-r--r--    1 root     root                     5760 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/util.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/lua-libraries/lunamark/writer
-rw-r--r--    1 root     root                      733 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer.lua
-rw-r--r--    1 root     root                     1984 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/ast.lua
-rw-r--r--    1 root     root                     4472 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/context.lua
-rw-r--r--    1 root     root                     4326 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/docbook.lua
-rw-r--r--    1 root     root                    10245 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/dzslides.lua
-rw-r--r--    1 root     root                     7442 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/generic.lua
-rw-r--r--    1 root     root                     1646 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/groff.lua
-rw-r--r--    1 root     root                     5230 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/html.lua
-rw-r--r--    1 root     root                      735 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/html5.lua
-rw-r--r--    1 root     root                     7754 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/latex.lua
-rw-r--r--    1 root     root                     3084 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/man.lua
-rw-r--r--    1 root     root                     1817 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/tex.lua
-rw-r--r--    1 root     root                     1499 Nov  5 06:56 /usr/share/sile/lua-libraries/lunamark/writer/xml.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/outputters
-rw-r--r--    1 root     root                     1003 Nov  5 06:56 /usr/share/sile/outputters/base.lua
-rw-r--r--    1 root     root                     3673 Nov  5 06:56 /usr/share/sile/outputters/cairo.lua
-rw-r--r--    1 root     root                     5395 Nov  5 06:56 /usr/share/sile/outputters/debug.lua
-rw-r--r--    1 root     root                      319 Nov  5 06:56 /usr/share/sile/outputters/dummy.lua
-rw-r--r--    1 root     root                     7177 Nov  5 06:56 /usr/share/sile/outputters/libtexpdf.lua
-rw-r--r--    1 root     root                     3098 Nov  5 06:56 /usr/share/sile/outputters/podofo.lua
-rw-r--r--    1 root     root                     1875 Nov  5 06:56 /usr/share/sile/outputters/text.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/autodoc
-rw-r--r--    1 root     root                    14110 Nov  5 06:56 /usr/share/sile/packages/autodoc/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/background
-rw-r--r--    1 root     root                     2016 Nov  5 06:56 /usr/share/sile/packages/background/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/balanced-frames
-rw-r--r--    1 root     root                     4022 Nov  5 06:56 /usr/share/sile/packages/balanced-frames/init.lua
-rw-r--r--    1 root     root                     3232 Nov  5 06:56 /usr/share/sile/packages/base.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/bibtex
-rw-r--r--    1 root     root                    14406 Nov  5 06:56 /usr/share/sile/packages/bibtex/bibliography.lua
-rw-r--r--    1 root     root                     5526 Nov  5 06:56 /usr/share/sile/packages/bibtex/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/bibtex/styles
-rw-r--r--    1 root     root                     3916 Nov  5 06:56 /usr/share/sile/packages/bibtex/styles/chicago.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/bidi
-rw-r--r--    1 root     root                    10305 Nov  5 06:56 /usr/share/sile/packages/bidi/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/boustrophedon
-rw-r--r--    1 root     root                     2699 Nov  5 06:56 /usr/share/sile/packages/boustrophedon/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/break-firstfit
-rw-r--r--    1 root     root                     2204 Nov  5 06:56 /usr/share/sile/packages/break-firstfit/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/chapterverse
-rw-r--r--    1 root     root                     3829 Nov  5 06:56 /usr/share/sile/packages/chapterverse/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/chordmode
-rw-r--r--    1 root     root                     3926 Nov  5 06:56 /usr/share/sile/packages/chordmode/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/color
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/color-fonts
-rw-r--r--    1 root     root                     3419 Nov  5 06:56 /usr/share/sile/packages/color-fonts/init.lua
-rw-r--r--    1 root     root                     1921 Nov  5 06:56 /usr/share/sile/packages/color/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/complex-spaces
-rw-r--r--    1 root     root                     1875 Nov  5 06:56 /usr/share/sile/packages/complex-spaces/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/converters
-rw-r--r--    1 root     root                     4324 Nov  5 06:56 /usr/share/sile/packages/converters/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/counters
-rw-r--r--    1 root     root                    11285 Nov  5 06:56 /usr/share/sile/packages/counters/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/cropmarks
-rw-r--r--    1 root     root                     4316 Nov  5 06:56 /usr/share/sile/packages/cropmarks/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/date
-rw-r--r--    1 root     root                     1268 Nov  5 06:56 /usr/share/sile/packages/date/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/debug
-rw-r--r--    1 root     root                      830 Nov  5 06:56 /usr/share/sile/packages/debug/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/dropcaps
-rw-r--r--    1 root     root                     5748 Nov  5 06:56 /usr/share/sile/packages/dropcaps/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/features
-rw-r--r--    1 root     root                     7593 Nov  5 06:56 /usr/share/sile/packages/features/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/folio
-rw-r--r--    1 root     root                     3757 Nov  5 06:56 /usr/share/sile/packages/folio/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/font-fallback
-rw-r--r--    1 root     root                     9255 Nov  5 06:56 /usr/share/sile/packages/font-fallback/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/footnotes
-rw-r--r--    1 root     root                     4434 Nov  5 06:56 /usr/share/sile/packages/footnotes/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/frametricks
-rw-r--r--    1 root     root                    12323 Nov  5 06:56 /usr/share/sile/packages/frametricks/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/grid
-rw-r--r--    1 root     root                    10212 Nov  5 06:56 /usr/share/sile/packages/grid/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/gutenberg
-rw-r--r--    1 root     root                     1509 Nov  5 06:56 /usr/share/sile/packages/gutenberg/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/hanmenkyoshi
-rw-r--r--    1 root     root                     3730 Nov  5 06:56 /usr/share/sile/packages/hanmenkyoshi/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/ifattop
-rw-r--r--    1 root     root                      828 Nov  5 06:56 /usr/share/sile/packages/ifattop/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/image
-rw-r--r--    1 root     root                     3028 Nov  5 06:56 /usr/share/sile/packages/image/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/indexer
-rw-r--r--    1 root     root                     3623 Nov  5 06:56 /usr/share/sile/packages/indexer/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/infonode
-rw-r--r--    1 root     root                     4004 Nov  5 06:56 /usr/share/sile/packages/infonode/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/inputfilter
-rw-r--r--    1 root     root                     2007 Nov  5 06:56 /usr/share/sile/packages/inputfilter/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/insertions
-rw-r--r--    1 root     root                    18586 Nov  5 06:56 /usr/share/sile/packages/insertions/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/leaders
-rw-r--r--    1 root     root                     5899 Nov  5 06:56 /usr/share/sile/packages/leaders/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/linespacing
-rw-r--r--    1 root     root                     7822 Nov  5 06:56 /usr/share/sile/packages/linespacing/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/lists
-rw-r--r--    1 root     root                    13606 Nov  5 06:56 /usr/share/sile/packages/lists/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/lorem
-rw-r--r--    1 root     root                     5148 Nov  5 06:56 /usr/share/sile/packages/lorem/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/masters
-rw-r--r--    1 root     root                     4596 Nov  5 06:56 /usr/share/sile/packages/masters/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/math
-rw-r--r--    1 root     root                    43263 Nov  5 06:56 /usr/share/sile/packages/math/base-elements.lua
-rw-r--r--    1 root     root                    13448 Nov  5 06:56 /usr/share/sile/packages/math/init.lua
-rw-r--r--    1 root     root                    14661 Nov  5 06:56 /usr/share/sile/packages/math/texlike.lua
-rw-r--r--    1 root     root                     5992 Nov  5 06:56 /usr/share/sile/packages/math/typesetter.lua
-rw-r--r--    1 root     root                   193564 Nov  5 06:56 /usr/share/sile/packages/math/unicode-symbols.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/pagebuilder-bestfit
-rw-r--r--    1 root     root                     2426 Nov  5 06:56 /usr/share/sile/packages/pagebuilder-bestfit/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/pandoc
-rw-r--r--    1 root     root                     9851 Nov  5 06:56 /usr/share/sile/packages/pandoc/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/parallel
-rw-r--r--    1 root     root                     6043 Nov  5 06:56 /usr/share/sile/packages/parallel/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/pdf
-rw-r--r--    1 root     root                     7732 Nov  5 06:56 /usr/share/sile/packages/pdf/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/pdfstructure
-rw-r--r--    1 root     root                     4657 Nov  5 06:56 /usr/share/sile/packages/pdfstructure/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/pullquote
-rw-r--r--    1 root     root                     4156 Nov  5 06:56 /usr/share/sile/packages/pullquote/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/raiselower
-rw-r--r--    1 root     root                     2105 Nov  5 06:56 /usr/share/sile/packages/raiselower/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/rebox
-rw-r--r--    1 root     root                     1551 Nov  5 06:56 /usr/share/sile/packages/rebox/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/rotate
-rw-r--r--    1 root     root                     4937 Nov  5 06:56 /usr/share/sile/packages/rotate/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/ruby
-rw-r--r--    1 root     root                     5076 Nov  5 06:56 /usr/share/sile/packages/ruby/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/rules
-rw-r--r--    1 root     root                    12515 Nov  5 06:56 /usr/share/sile/packages/rules/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/simpletable
-rw-r--r--    1 root     root                     3466 Nov  5 06:56 /usr/share/sile/packages/simpletable/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/specimen
-rw-r--r--    1 root     root                     3148 Nov  5 06:56 /usr/share/sile/packages/specimen/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/svg
-rw-r--r--    1 root     root                     4472 Nov  5 06:56 /usr/share/sile/packages/svg/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/tableofcontents
-rw-r--r--    1 root     root                     9395 Nov  5 06:56 /usr/share/sile/packages/tableofcontents/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/tate
-rw-r--r--    1 root     root                     6384 Nov  5 06:56 /usr/share/sile/packages/tate/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/textcase
-rw-r--r--    1 root     root                     2870 Nov  5 06:56 /usr/share/sile/packages/textcase/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/twoside
-rw-r--r--    1 root     root                     6722 Nov  5 06:56 /usr/share/sile/packages/twoside/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/unichar
-rw-r--r--    1 root     root                     1838 Nov  5 06:56 /usr/share/sile/packages/unichar/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/url
-rw-r--r--    1 root     root                     7899 Nov  5 06:56 /usr/share/sile/packages/url/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/verbatim
-rw-r--r--    1 root     root                     2682 Nov  5 06:56 /usr/share/sile/packages/verbatim/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/packages/xmltricks
-rw-r--r--    1 root     root                     1516 Nov  5 06:56 /usr/share/sile/packages/xmltricks/init.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/shapers
-rw-r--r--    1 root     root                     5729 Nov  5 06:56 /usr/share/sile/shapers/base.lua
-rw-r--r--    1 root     root                     4697 Nov  5 06:56 /usr/share/sile/shapers/harfbuzz.lua
-rw-r--r--    1 root     root                     2967 Nov  5 06:56 /usr/share/sile/shapers/pango.lua
drwxr-xr-x    2 root     root                        0 Nov 16 22:45 /usr/share/sile/typesetters
-rw-r--r--    1 root     root                    26257 Nov  5 06:56 /usr/share/sile/typesetters/base.lua
hegjon commented 1 year ago

The build log, including commands and flags can be found here: https://copr.fedorainfracloud.org/coprs/jonny/SILE/build/5043639/

alerque commented 1 year ago

The above shows you are manually trying to build one chapter of the manual using a file that is a fragment not a complete document. The error is because the chapter files ASSUME they are fragments included into the master documentation file. Hence they do not specify the class and macros and various other things needed to build them. The \chapter and other commands are defined in the book class, but the chapter fragment files don't specify their class, assuming the master document will do that. The master file is sile.sil, but you'll actually run into trouble trying to build that with sile sile.sil as well because the documentation makes a number of assumptions about fonts and packages locations (it extracts strings from the package source code to document them). The correct way to build the manual is to run make docs from the root source directory after configuring and building SILE itself. (./configure and make). That will download all the necessary fonts locally and invoke SILE with the necessary arguments to use the fonts without installing them on the system.

If you want a quick and dirty test you can do something as simple as:

$ echo -n '\document{foo}' | sile - -o foo.pdf

There is also a make selfcheck target that does something like this, then checks that the resulting PDF file is valid.

hegjon commented 1 year ago

Thanks for the explanation, $ echo -n '\document{foo}' | sile - -o foo.pdf seems like a good smoke test during build.

It's getting close for testing. Most of the examples are working.

I got this error on snakes.sil example:

$ sile snakes.sil
SILE v0.14.3 (Lua 5.4)
<snakes.sil> as sil
</usr/local/share/sile/core/sile.lua:363> as lua

! Font family 'Hack' not available, falling back to 'OpenSymbol' at snakes.sil: in \vbox near 26:1: in \footnote after 26:50: in \url

libtexpdf:fatal: Invalid XObject ID: -1
alerque commented 1 year ago

That error message could be more friendly! I'll look into it, but in this case 'Invalid XQbject' just means it couldn't find the image it was asked to load. You seem to hake cd'ed into the examples directory, but the examples have paths in them relative to the website project root. This is evident from this bit in the example:

SILE.outputter:drawImage("content/examples/snake.png", ...

Note I get the same result, but it works if you start from the same relative path as the resources.

$ pwd
sile-typesetter.github.io/content/examples
$ sile snakes.sil
SILE v0.14.4 (Lua 5.4)
<snakes.sil> as sil
</usr/share/sile/core/sile.lua:363> as lua

libtexpdf:fatal: Invalid XObject ID: -1
$ cd ../../
$ pwd
sile-typesetter.github.io
$ sile content/examples/snakes.sil
SILE v0.14.4 (Lua 5.4)
<content/examples/snakes.sil> as sil
</usr/share/sile/core/sile.lua:363> as lua
[1]

It would be possible to rewrite the example to use a path relative to the base file rather than to the CWD, it just so happens it wasn't written that way. I'll look into that as well as to a more friendly error message on the image loader.

The other message you see is just that you don't have the Hack font used in some of the examples on your system.

alerque commented 1 year ago

I fixed the example so it will be more flexible about where you call it from. I also looked into fixing the error message and I think I'm going to duck out of that for now. We have an image package that provides an \img[src=...] function that already does some error checking and makes sure it can resolve the file before passing it to the outputter. This function returns friendly error messages. That friendly stuff is being bypassed in that example because the snakes example is reaching deep into internals to hand draw the image with customized properties. The error being thrown is by the libtexpdf backend and Lua doesn't actually give us a way to catch it because it is dying rather than returning an error that we could wrap in something friendly. I'll open an issue on that project to do better on that front, but the only other thing we could do easily is test for the file ahead of time. This would slow down the snakes example any anything else that was using it a lot because we would have to run the tests every time it looks through the code, defeating the purpose of reaching in so deep to the backend. At the end of the day that example is to demonstrate reaching deep into the backend of things and I guess it shouldn't come as a surprise that it can give cryptic errors when you do cryptic things. Again the normal document command for loading an image will be much friendlier already.

hegjon commented 1 year ago

Ah, makes sense, I downloaded snakes from the home page, I did not think about that it was referencing a image

alerque commented 1 year ago

I just tweaked the example on the site so that the example itself checks for the file up front so that you get a friendly error in case of people downloading standalone examples instead of the whole example directory. That should probably be addresses in the online gallery so examples that require more than one file are available as a zip or something like that.

alerque commented 1 year ago

I saw there was some progress on Lua packages getting moved to core Fedora packaging. It looks like there are a few more to go, and then SILE itself. Again let me know if you need any help from me.

When it does make it in, I'd love to see a PR that adds a section to the README and manual with the correct install command for Fedora. Also let me know at that point if there is somebody I should ping or some out of date flag mechanism I should trigger on future releases.

Once we have install instructions documented, I'll probably mention it in a blog post. We still haven't announced the OpenSUSE packaging either so something short that points out the new options might be in order.

hegjon commented 1 year ago

I saw there was some progress on Lua packages getting moved to core Fedora packaging. It looks like there are a few more to go, and then SILE itself. Again let me know if you need any help from me.

Yes, it will probably take some time before all the dependencies are approved, all packages in Fedora are peer reviewed.

It would be great if you could test the RPM package so that package bugs are detected early.

How to test/install for now:

$ sudo dnf copr enable jonny/SILE
$ sudo dnf install sile

The sile command will be installed in /usr/bin/sile. To list the files in the package you can run: $ rpm -ql sile, if something is wrong, just let me know.

When it does make it in, I'd love to see a PR that adds a section to the README and manual with the correct install command for Fedora. Also let me know at that point if there is somebody I should ping or some out of date flag mechanism I should trigger on future releases.

Would be great to have the install steps in the README so that your Fedora users know that it is easy to get going on Fedora. For up-to-date packages I like the usage of https://release-monitoring.org/ I tend to declare a new project if it is not already there. The service will create and assign a bug ticket to me when it noticed that there is a new version.

Once we have install instructions documented, I'll probably mention it in a blog post. We still haven't announced the OpenSUSE packaging either so something short that points out the new options might be in order.

I think it would be great to write and prepare an article at https://fedoramagazine.org/ and publish it once SILE have been pushed to Fedora stable repository.

alerque commented 1 year ago

How to test/install for now:

I would be happy to see these provisional install instructions added to the README with a note that they will eventually change to official repos. Fell free to send a PR and we can tweak the wording again later when the steps change.

I'll check it out when I get a chance, but if you got it to run at all and the ./configure didn't block you out I suspect everything is likely to be fine. It's pretty aggressive about checking for dependencies and the install step puts almost everything in nearly the same place so if it runs it found it...

alerque commented 1 year ago

Those steps don't quite get me there, at least not from a fresh Fedora docker image:

[root@0fa9995cc78c /]# dnf copr enable jonny/SILE
No such command: copr. Please use /usr/bin/dnf --help
It could be a DNF plugin command, try: "dnf install 'dnf-command(copr)'"

I tried dnf install copr-cli, but that didn't get me there. How does one get started?

hegjon commented 1 year ago

I tried dnf install copr-cli, but that didn't get me there. How does one get started?

I would give dnf install 'dnf-command(copr)' a try, copr-cli is mostly for developers who want to build on copr.

alerque commented 1 year ago

Doh. I tried that but without the quotes.

alerque commented 1 year ago

I got it to install this time, but it looks like the sile package doesn't specify all/any of the Lua dependencies it needs. It installs but doesn't run. The first one it trips on is Penlight, but lua-penlight was not among the packages that installed as a dependency.

[root@ab3c4f4dcaec /]# dnf install sile
Copr repo for SILE owned by jonny                                                                                 15 kB/s |  23 kB     00:01
Last metadata expiration check: 0:00:01 ago on Sat Nov 19 19:03:16 2022.
Dependencies resolved.
=================================================================================================================================================
 Package                           Architecture   Version                                Repository                                         Size
=================================================================================================================================================
Installing:
 sile                              x86_64         0.14.4-1.fc37                          copr:copr.fedorainfracloud.org:jonny:SILE         1.1 M
Installing dependencies:
 fontconfig                        x86_64         2.14.1-1.fc37                          updates                                           294 k
 fonts-filesystem                  noarch         1:2.0.5-9.fc37                         fedora                                            7.9 k
 freetype                          x86_64         2.12.1-3.fc37                          fedora                                            407 k
 google-noto-fonts-common          noarch         20201206^1.git0c78c8329-5.fc37         fedora                                             18 k
 google-noto-sans-vf-fonts         noarch         20201206^1.git0c78c8329-5.fc37         fedora                                            728 k
 graphite2                         x86_64         1.3.14-10.fc37                         fedora                                             95 k
 harfbuzz                          x86_64         5.2.0-1.fc37                           fedora                                            801 k
 langpacks-core-font-en            noarch         3.0-26.fc37                            fedora                                             10 k
 libicu                            x86_64         71.1-2.fc37                            fedora                                             10 M
 libpng                            x86_64         2:1.6.37-13.fc37                       fedora                                            119 k
 libtexpdf                         x86_64         0.14.4-1.fc37                          copr:copr.fedorainfracloud.org:jonny:SILE         264 k
 lua                               x86_64         5.4.4-4.fc37                           fedora                                            189 k
 xml-common                        noarch         0.6.3-59.fc37                          fedora                                             31 k

Transaction Summary
=================================================================================================================================================
Install  14 Packages

Lua itself is there but none of the other packages. Are they not in your COPR repo?

Also google-noto-fonts getting pulled in as a dependency but no Gentium Plus (the document default font) or Libertinus (the default math font)? Technically those are optional, but at least Gentium should probably be marked as a hard dependency to meat end user expectations of being able to do basic stuff out of the box.

hegjon commented 1 year ago

That is very strange, the last build two days ago explicit lists these runtime dependencies:

Requires: lua-bit32
Requires: lua-cassowary
Requires: lua-cldr
Requires: lua-cliargs
Requires: lua-cosmo
Requires: lua-expat
Requires: lua-filesystem
Requires: lua-fluent
Requires: lua-linenoise
Requires: lua-loadkit
Requires: lua-lpeg
Requires: lua-luarepl
Requires: lua-penlight
Requires: lua-sec
Requires: lua-socket
Requires: lua-utf8
Requires: lua-vstruct
Requires: lua-zlib

Requires: sil-gentium-plus-fonts
Requires: texlive-libertinus-fonts
hegjon commented 1 year ago

Could you run rpm -qi sile, so that I see the build date in case that users end up installing an older build?

alerque commented 1 year ago
[root@ab3c4f4dcaec /]# rpm -qi sile
Name        : sile
Version     : 0.14.4
Release     : 1.fc37
Architecture: x86_64
Install Date: Sat Nov 19 19:04:01 2022
Group       : Unspecified
Size        : 6051080
License     : MIT
Signature   : RSA/SHA256, Wed Nov 16 21:56:06 2022, Key ID 0f1d583869ad2ac0
Source RPM  : sile-0.14.4-1.fc37.src.rpm
Build Date  : Wed Nov 16 21:55:33 2022
Build Host  : copr-hv-x86-64-04-prod-02725019-20221116-212749
Vendor      : Fedora Copr - user jonny
URL         : https://sile-typesetter.org/
Summary     : The SILE Typesetter
Description :
SILE is a typesetting system; its job is to produce beautiful printed documents.
Conceptually, SILE is similar to TeX—from which it borrows some concepts and
even syntax and algorithms—but the similarities end there.
Rather than being a derivative of the TeX family SILE is a new typesetting and
layout engine written from the ground up using modern technologies and borrowing
some ideas from graphical systems such as InDesign.
hegjon commented 1 year ago

Ok, seems like copr/dnf is installing an older build, all my builds on sile have used the same version.

Doing a build now with a bumped release https://copr.fedorainfracloud.org/coprs/jonny/SILE/build/5048100/

hegjon commented 1 year ago

Just run dnf upgrade sile --refresh to have the new build

hegjon commented 1 year ago

Also google-noto-fonts getting pulled in as a dependency but no Gentium Plus (the document default font) or Libertinus (the default math font)? Technically those are optional, but at least Gentium should probably be marked as a hard dependency to meat end user expectations of being able to do basic stuff out of the box.

It would be great to fine tune the dependencies before getting it into the Fedora repository. The font hack is not included in Fedora, not sure how that affects they output.

alerque commented 1 year ago

Not having Hack will mean the default monospace font doesn't work. Not a hard requirement but including the default base font, monospace font, and math font would definitely give the smoothest entry point for folks. On most platforms I've only specified Gentium as a hard requirement and used optional dependencies or suggestions or whatever is available for the others.

alerque commented 1 year ago

That package update now pulls in a ton of bogus dependencies including tons of perl modules and a whole texlive instalation, groff, etc. I think you've crosswired some of the devevloper / build time dependencies with run time (perl, groff) and pulled the wrong package for Libertinus (tex package instead of plain font).

hegjon commented 1 year ago

Hmm.. looks like all the libertinus packages are tied to texlive, not sure why there is not an non-tex variant?

$ dnf search \*libertinus\*
Last metadata expiration check: 0:05:14 ago on Sun 20 Nov 2022 12:49:09 PM CET.
================================== Name & Summary Matched: *libertinus* ==================================
texlive-libertinus.noarch : The Libertinus font family
texlive-libertinus-doc.noarch : doc files of libertinus
texlive-libertinus-fonts.noarch : The Libertinus font family
texlive-libertinus-otf.noarch : Support for Libertinus OpenType
texlive-libertinus-type1.noarch : Support for using Libertinus fonts with LaTeX/pdfLaTeX
texlive-libertinust1math.noarch : A Type 1 font and LaTeX support for Libertinus Math
texlive-libertinust1math-doc.noarch : doc files of libertinust1math
alerque commented 1 year ago

Then I would suggest either not making a dependency at all (documents that use math will throw a warning, and people have the option to specify a math font or go get that font on their own) or alternatively package it as a stand along package yourself. Pulling in all of texlive to get SILE running is worse than not having the default math font.

As for perl and all the modules, it is only needed for testing SILE as a developer, not for running it as an end user. The regression test suite uses it, but nothing else.

alerque commented 1 year ago

(A pending PR #1563 already has better separation of developer-tooling dependencies vs. run time ones and by default ./configure will only check for the later in future releases.)

hegjon commented 1 year ago

As for perl and all the modules, it is only needed for testing SILE as a developer, not for running it as an end user. The regression test suite uses it, but nothing else.

I think perl might get pulled in because of texlive, there are no explicit dependencies on the build tools

hegjon commented 1 year ago

Then I would suggest either not making a dependency at all (documents that use math will throw a warning, and people have the option to specify a math font or go get that font on their own) or alternatively package it as a stand along package yourself. Pulling in all of texlive to get SILE running is worse than not having the default math font.

It seems like most other distros are packaging https://github.com/alerque/libertinus as a standalone font, not sure what the history for Fedora and texlive is.

hegjon commented 1 year ago

I am building [1] from https://github.com/alerque/libertinus now. I will update SILE later with new relaxed font dependencies.

[1] https://copr.fedorainfracloud.org/coprs/jonny/SILE/package/libertinus-fonts/

hegjon commented 1 year ago

There is a new SILE build on COPR, changelog:

hegjon commented 1 year ago

I have made a RPM package for hack-fonts, it also live in the same SILE copr project https://copr.fedorainfracloud.org/coprs/jonny/SILE/build/5057377/

hegjon commented 1 year ago

I found this corner-case / issue, had to use strace in order to figure out what was going on:

$ cat /usr/local/share/sile/core/version.lua
return "v0.14.3"

$ cat /usr/share/sile/core/version.lua
return "v0.14.5"

$ sile --version
SILE v0.14.3 (Lua 5.4)

sile will use libraries located in /usr/local/share/sile over /usr/share/sile/, the other variant is an older install via make install. Users might run into strange issues if they have several version installed.

Would it be possible to patch the /usr/bin/sile for the RPM during build to make sure the packaged files have priority?

alerque commented 1 year ago

It would be possible but would also have serious adverse effects. That path priority is not coming from SILE it is coming from the lua interpreter itself and the default package path. SILE deliberately plays nicely with the default LUA path and uses this as a mechanism for end users to override any part of SILE itself. Users can use document level, project level, user level, and system level overrides to either extend or change existing functionality. Preferring the /usr/local path is a way LuaRocks allows users to install something that overrides what their system might have installed.

If you patch that out of SILE by extracting and dropping it from the default path you'll take away that standard pattern. I think your situation of having two versions installed, one manually and one system package installed is working as expected: the manual one takes precedence. That it is older in your case is an artifact of they way you played around with it. The correct way to fix it would be to make uninstall using the same configured source tree you installed from.

alerque commented 1 year ago

I'm pretty sure the same is true on most linux systems with /usr/local/bin/foo executables taking precedence over /usr/bin/foo when both appear on the same system. The latter is the system package manager managed location, the former is the default user source install location and the user managed one takes precedency and can be used to override system tools in most cases.

hegjon commented 1 year ago

Ok, that makes sense, then I will not spend any time on trying to "fix" it

alerque commented 1 year ago

I'm back from the road and just took another swipe at this. The install now asks for a set of lua dependencies and a "weak" font dependency that looks completely correct to me. I've never heard of a "weak" dependency but it sounds like just the ticket for covering default fonts that are assumed but not actually required to function. I'd be happy to see the COPR installation documented now and updated again for official repos later unless you think it will hit repos relatively soon, in which case we could wait.

hegjon commented 1 year ago

I seldom use weak dependencies, but Fedora guidelines demand [1] using fonts as weak dependency.

Non-font packages SHOULD NOT require specific font packages

I think it will take a lot of time before all the packages are included in the main repository, so having them in COPR while waiting seems like a good plan. I will update the documentation at the COPR project settings, so it seems more polished. Once that is done, I will make a PR for the documentation/README.

[1] https://docs.fedoraproject.org/en-US/packaging-guidelines/FontsPolicy/#_dependencies_to_font_packages_in_other_packages

hegjon commented 1 year ago

Complete overview of the remaining packages:

lua-fluent - Lua implementation of Project Fluent: https://bugzilla.redhat.com/show_bug.cgi?id=2142798

lua-cliargs - A command-line argument parser: https://bugzilla.redhat.com/show_bug.cgi?id=2143056

lua-vstruct - Lua library to manipulate binary data: https://bugzilla.redhat.com/show_bug.cgi?id=2143351

lua-cosmo - Safe templates for Lua: https://bugzilla.redhat.com/show_bug.cgi?id=2142671

lua-luarepl - REPL.lua a reusable Lua REPL written in Lua: https://bugzilla.redhat.com/show_bug.cgi?id=2143382

lua-linenoise - A binding for the linenoise command line library: https://bugzilla.redhat.com/show_bug.cgi?id=2143020

lua-cldr - Lua interface to Unicode CLDR data: https://bugzilla.redhat.com/show_bug.cgi?id=2142653

lua-zlib - Simple streaming interface to zlib for Lua: https://bugzilla.redhat.com/show_bug.cgi?id=2143050

lua-epnf - Extended PEG Notation Format (easy grammars for LPeg): https://bugzilla.redhat.com/show_bug.cgi?id=2142786

lua-utf8 - A UTF-8 support module for Lua: https://bugzilla.redhat.com/show_bug.cgi?id=2143391

lua-loadkit - Loadkit allows you to load arbitrary files within the Lua package path: https://bugzilla.redhat.com/show_bug.cgi?id=2143028

libertinus-fonts - The Libertinus Fonts project: https://bugzilla.redhat.com/show_bug.cgi?id=2149626

hack-fonts - A typeface designed for source code: https://bugzilla.redhat.com/show_bug.cgi?id=2149686

sile - The SILE Typesetter: https://bugzilla.redhat.com/show_bug.cgi?id=2149698

https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/NPO6REEV6NZOG2E2434QA5VRTZ5WCLEO/