From efbc4fd4e6d9246021da01469f871d99331b7f51 Mon Sep 17 00:00:00 2001 From: Jauhien Piatlicki Date: Sat, 10 May 2014 03:26:11 +0200 Subject: remove gs-ctan as Gentoo already has good support for CTAN packages --- README.md | 4 +- bin/gs-ctan | 3 - docs/Makefile | 2 +- docs/developer_instructions.html | 2 +- docs/developer_instructions.rst | 2 +- docs/g-sorcery.8 | 2 +- docs/g-sorcery.8.rst | 2 +- docs/g-sorcery.cfg.8 | 2 +- docs/g-sorcery.cfg.8.rst | 2 +- docs/gs-ctan.8 | 153 --------- docs/gs-ctan.8.rst | 130 ------- docs/gs-pypi.8 | 2 +- docs/gs-pypi.8.rst | 2 +- gs-ctan-overlays.xml | 14 - gs-ctan.json | 706 --------------------------------------- gs_ctan/__init__.py | 2 - gs_ctan/backend.py | 36 -- gs_ctan/ctan_db.py | 210 ------------ gs_ctan/data/gs-ctan.eclass | 102 ------ gs_ctan/ebuild.py | 62 ---- setup.py | 11 +- 21 files changed, 15 insertions(+), 1436 deletions(-) delete mode 100755 bin/gs-ctan delete mode 100644 docs/gs-ctan.8 delete mode 100644 docs/gs-ctan.8.rst delete mode 100644 gs-ctan-overlays.xml delete mode 100644 gs-ctan.json delete mode 100644 gs_ctan/__init__.py delete mode 100644 gs_ctan/backend.py delete mode 100644 gs_ctan/ctan_db.py delete mode 100644 gs_ctan/data/gs-ctan.eclass delete mode 100644 gs_ctan/ebuild.py diff --git a/README.md b/README.md index 0e26fb6..4b25590 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Add `jauhien` overlay: **layman -a jauhien**. Emerge g-sorcery: **emerge -va g-sorcery**. -Currently 3 backends are available: **gs-elpa**, **gs-pypi** and **gs-ctan**. +Currently 2 backends are available: **gs-elpa** and **gs-pypi**. Here is an example of using gs-elpa backend. @@ -127,6 +127,6 @@ Repositories you can use are gnu-elpa, marmalade and melpa. You can use them all in one overlay. Note, that if you call **generate-tree** command your overlay will be wiped and overlay tree for a given repository will be generated. Be careful! -See man pages of **gs-elpa**, **gs-pypi** and **gs-ctan** for further information. +See man pages of **gs-elpa** and **gs-pypi** for further information. If you want to develop a new backend see [developer's instructions](https://github.com/jauhien/g-sorcery/blob/master/docs/developer_instructions.rst). diff --git a/bin/gs-ctan b/bin/gs-ctan deleted file mode 100755 index 7b1612d..0000000 --- a/bin/gs-ctan +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -g-sorcery gs-ctan $@ diff --git a/docs/Makefile b/docs/Makefile index 8af5b2c..5c25523 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,7 +1,7 @@ HTML_SOURCES=developer_instructions HTML_DOCS=$(HTML_SOURCES:=.html) -MAN_SOURCES=g-sorcery g-sorcery.cfg gs-pypi gs-ctan +MAN_SOURCES=g-sorcery g-sorcery.cfg gs-pypi MANS=$(MAN_SOURCES:=.8) RST2HTML=rst2html.py diff --git a/docs/developer_instructions.html b/docs/developer_instructions.html index a9798cb..f4e89ab 100644 --- a/docs/developer_instructions.html +++ b/docs/developer_instructions.html @@ -943,7 +943,7 @@ that quacks like this class.

Before doing it you should have defined classes you pass to it as parameters. They should be database generator, two ebuild generators, eclass and metadata generators.

Also you should write an executable that calls g-sorcery and some configs.

-

To have better understanding you can look at gs-elpa, gs-ctan and gs-pypi backends available +

To have better understanding you can look at gs-elpa and gs-pypi backends available in g-sorcery repository. Also available tests could be usefull.

Note that there is a tool for editing generated database named gs-db-tool.

diff --git a/docs/developer_instructions.rst b/docs/developer_instructions.rst index b54adfa..de266b9 100644 --- a/docs/developer_instructions.rst +++ b/docs/developer_instructions.rst @@ -634,7 +634,7 @@ generator, two ebuild generators, eclass and metadata generators. Also you should write an executable that calls g-sorcery and some configs. -To have better understanding you can look at gs-elpa, gs-ctan and gs-pypi backends available +To have better understanding you can look at gs-elpa and gs-pypi backends available in g-sorcery repository. Also available tests could be usefull. Note that there is a tool for editing generated database named **gs-db-tool**. diff --git a/docs/g-sorcery.8 b/docs/g-sorcery.8 index 1122fde..066e35b 100644 --- a/docs/g-sorcery.8 +++ b/docs/g-sorcery.8 @@ -127,7 +127,7 @@ At the moment the only package mangler \fBg\-sorcery\fP supports is \fBportage\f .UNINDENT .SH SEE ALSO .sp -\fBg\-sorcery.cfg\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBgs\-ctan\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) +\fBg\-sorcery.cfg\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) .SH AUTHOR Written by Jauhien Piatlicki . GSoC idea and mentorship by Rafael Martins. Lots of help and improvements diff --git a/docs/g-sorcery.8.rst b/docs/g-sorcery.8.rst index 121b571..9ea702f 100644 --- a/docs/g-sorcery.8.rst +++ b/docs/g-sorcery.8.rst @@ -112,4 +112,4 @@ NOTES SEE ALSO ======== -**g-sorcery.cfg**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **gs-ctan**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) +**g-sorcery.cfg**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) diff --git a/docs/g-sorcery.cfg.8 b/docs/g-sorcery.cfg.8 index 0f11180..1643315 100644 --- a/docs/g-sorcery.cfg.8 +++ b/docs/g-sorcery.cfg.8 @@ -63,7 +63,7 @@ marmalade_packages = clojure\-mode clojurescript\-mode .UNINDENT .SH SEE ALSO .sp -\fBg\-sorcery\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBgs\-ctan\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) +\fBg\-sorcery\fP(8), \fBgs\-elpa\fP(8), \fBgs\-pypi\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) .SH AUTHOR Written by Jauhien Piatlicki . GSoC idea and mentorship by Rafael Martins. Lots of help and improvements diff --git a/docs/g-sorcery.cfg.8.rst b/docs/g-sorcery.cfg.8.rst index 50a732c..7f9790f 100644 --- a/docs/g-sorcery.cfg.8.rst +++ b/docs/g-sorcery.cfg.8.rst @@ -56,4 +56,4 @@ EXAMPLE SEE ALSO ======== -**g-sorcery**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **gs-ctan**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) +**g-sorcery**\(8), **gs-elpa**\(8), **gs-pypi**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) diff --git a/docs/gs-ctan.8 b/docs/gs-ctan.8 deleted file mode 100644 index 8c456be..0000000 --- a/docs/gs-ctan.8 +++ /dev/null @@ -1,153 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH GS-CTAN 8 "2013-08-04" "0.1" "g-sorcery" -.SH NAME -gs-ctan \- manage overlays for CTAN repository -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.sp -\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBsync\fP -.sp -\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBlist\fP -.sp -\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\fP \fIPACKAGE\fP -.sp -\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBinstall\fP \fIPACKAGE\fP -.sp -\fBgs\-ctan\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\-tree\fP [\fB\-d\fP] -.SH DESCRIPTION -.sp -\fBgs\-ctan\fP is an ebuild generator for CTAN TEXLIVE repository. -.sp -There are two ways of using \fBgs\-ctan\fP: -.INDENT 0.0 -.INDENT 3.5 -.INDENT 0.0 -.IP \(bu 2 -use it with \fBlayman\fP -.sp -In this case all you need to do is install \fBlayman\-9999\fP and \fBg\-sorcery\fP. -Then you should just run \fIlayman \-L\fP as -root and find an overlay you want. Type of overlay will be -displayed as \fIg\-sorcery\fP. Then you add this overlay as -usual. It\(aqs all you need to do and it\(aqs the recommended way of -using \fBgs\-ctan\fP. -.IP \(bu 2 -use it as stand\-alone tool -.sp -In this case you should create an overlay (see \fBportage\fP documentation), sync it and populate -it with one or more ebuilds. Then ebuilds could be installed by emerge or by \fBgs\-ctan\fP tool. -.UNINDENT -.UNINDENT -.UNINDENT -.SH OPTIONS -.INDENT 0.0 -.TP -.B \fB\-\-overlay\fP \fIOVERLAY\fP, \fB\-o\fP \fIOVERLAY\fP -Overlay directory. This option is mandatory if there is no -\fBdefault_overlay\fP entry in a backend config. -.TP -.B \fB\-\-repository\fP \fIREPO\fP, \fB\-r\fP \fIREPO\fP -Repository name. This option is not mandatory. If present should be \fBctan\fP. -.UNINDENT -.SH COMMANDS -.INDENT 0.0 -.TP -.B \fBsync\fP -Synchronize a repository database. -.TP -.B \fBlist\fP -List packages available in a repository. -.TP -.B \fBgenerate\fP -Generate a given ebuild and all its dependencies. -.TP -.B \fBinstall\fP -Generate and install an ebuild using your package mangler. -.TP -.B \fBgenerate\-tree\fP -Generate entire overlay structure. Without option \fB\-d\fP after -this command sources are not fetched during generation and there -are no entries for them in Manifest files. -.UNINDENT -.SH FILES -.INDENT 0.0 -.TP -.B \fB/etc/g\-sorcery/gs\-ctan.json\fP -Backend config. -.TP -.B \fB/etc/layman/overlays/gs\-ctan\-overlays.xml\fP -List of available repositories. -.UNINDENT -.SH EXAMPLES -.INDENT 0.0 -.TP -.B Using gs\-ctan with layman -Execute -.sp -\fBlayman \-L\fP -.sp -If you see there a \fBctan\fP overlay then anything should work. -.sp -\fBlayman \-a ctan\fP -.sp -Emerge any package from it using \fBemerge\fP. -.TP -.B Generating user ebuilds in user overlay -Create new user overlay. Run -.sp -\fBgs\-ctan \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBsync\fP -.sp -List packages: -.sp -\fBgs\-ctan \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBlist\fP -.sp -Install any package you want: -.sp -\fBgs\-ctan \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBinstall\fP \fIPACKAGE\fP -.sp -Note, that if you call \fBgenerate\-tree\fP command your overlay -will be wiped and overlay tree for a given repository will be generated. Be careful! -.UNINDENT -.SH NOTES -.INDENT 0.0 -.IP 1. 3 -At the moment the only package mangler \fBgs\-ctan\fP supports is \fBportage\fP. -.UNINDENT -.SH SEE ALSO -.sp -\fBgs\-pypi\fP(8), \fBgs\-elpa\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) -.SH AUTHOR -Written by Jauhien Piatlicki . GSoC idea -and mentorship by Rafael Martins. Lots of help and improvements -by Brian Dolbec. -.SH COPYRIGHT -Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2 -.\" Generated by docutils manpage writer. -. diff --git a/docs/gs-ctan.8.rst b/docs/gs-ctan.8.rst deleted file mode 100644 index 348617e..0000000 --- a/docs/gs-ctan.8.rst +++ /dev/null @@ -1,130 +0,0 @@ -======= -gs-ctan -======= - ------------------------------------ -manage overlays for CTAN repository ------------------------------------ - -:Author: Written by Jauhien Piatlicki . GSoC idea - and mentorship by Rafael Martins. Lots of help and improvements - by Brian Dolbec. -:Date: 2013-08-04 -:Copyright: Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2 -:Version: 0.1 -:Manual section: 8 -:Manual group: g-sorcery - - -SYNOPSIS -======== - -**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **sync** - -**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **list** - -**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **generate** *PACKAGE* - -**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **install** *PACKAGE* - -**gs-ctan** **-o** *OVERLAY* [**-r** *REPO*] **generate-tree** [**-d**] - -DESCRIPTION -=========== - -**gs-ctan** is an ebuild generator for CTAN TEXLIVE repository. - -There are two ways of using **gs-ctan**: - - * use it with **layman** - - In this case all you need to do is install **layman-9999** and **g-sorcery**. - Then you should just run `layman -L` as - root and find an overlay you want. Type of overlay will be - displayed as *g-sorcery*. Then you add this overlay as - usual. It's all you need to do and it's the recommended way of - using **gs-ctan**. - - * use it as stand-alone tool - - In this case you should create an overlay (see **portage** documentation), sync it and populate - it with one or more ebuilds. Then ebuilds could be installed by emerge or by **gs-ctan** tool. - - -OPTIONS -======= - -**--overlay** *OVERLAY*, **-o** *OVERLAY* - Overlay directory. This option is mandatory if there is no - **default_overlay** entry in a backend config. - -**--repository** *REPO*, **-r** *REPO* - Repository name. This option is not mandatory. If present should be **ctan**. - -COMMANDS -======== - -**sync** - Synchronize a repository database. - -**list** - List packages available in a repository. - -**generate** - Generate a given ebuild and all its dependencies. - -**install** - Generate and install an ebuild using your package mangler. - -**generate-tree** - Generate entire overlay structure. Without option **-d** after - this command sources are not fetched during generation and there - are no entries for them in Manifest files. - -FILES -===== -**/etc/g-sorcery/gs-ctan.json** - Backend config. - -**/etc/layman/overlays/gs-ctan-overlays.xml** - List of available repositories. - -EXAMPLES -======== - -Using gs-ctan with layman - Execute - - **layman -L** - - If you see there a **ctan** overlay then anything should work. - - **layman -a ctan** - - Emerge any package from it using **emerge**. - -Generating user ebuilds in user overlay - Create new user overlay. Run - - **gs-ctan -o** *OVERLAY_DIRECTORY* **-r ctan** **sync** - - List packages: - - **gs-ctan -o** *OVERLAY_DIRECTORY* **-r ctan** **list** - - Install any package you want: - - **gs-ctan -o** *OVERLAY_DIRECTORY* **-r ctan** **install** *PACKAGE* - - Note, that if you call **generate-tree** command your overlay - will be wiped and overlay tree for a given repository will be generated. Be careful! - -NOTES -===== - -1. At the moment the only package mangler **gs-ctan** supports is **portage**. - -SEE ALSO -======== - -**gs-pypi**\(8), **gs-elpa**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) diff --git a/docs/gs-pypi.8 b/docs/gs-pypi.8 index 633de7d..7536605 100644 --- a/docs/gs-pypi.8 +++ b/docs/gs-pypi.8 @@ -142,7 +142,7 @@ At the moment the only package mangler \fBgs\-pypi\fP supports is \fBportage\fP. .UNINDENT .SH SEE ALSO .sp -\fBgs\-elpa\fP(8), \fBgs\-ctan\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) +\fBgs\-elpa\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8) .SH AUTHOR Written by Jauhien Piatlicki . GSoC idea and mentorship by Rafael Martins. Lots of help and improvements diff --git a/docs/gs-pypi.8.rst b/docs/gs-pypi.8.rst index d5c7c07..92031cc 100644 --- a/docs/gs-pypi.8.rst +++ b/docs/gs-pypi.8.rst @@ -127,4 +127,4 @@ NOTES SEE ALSO ======== -**gs-elpa**\(8), **gs-ctan**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) +**gs-elpa**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8) diff --git a/gs-ctan-overlays.xml b/gs-ctan-overlays.xml deleted file mode 100644 index 0faceb6..0000000 --- a/gs-ctan-overlays.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - ctan - CTAN packages - http://www.ctan.org/ - - piatlicki@gmail.com - Jauhien Piatlicki - - gs-ctan ctan - - diff --git a/gs-ctan.json b/gs-ctan.json deleted file mode 100644 index d25dbd1..0000000 --- a/gs-ctan.json +++ /dev/null @@ -1,706 +0,0 @@ -{ - "backend": "gs-ctan", - "package": "gs_ctan", - "repositories": { - "ctan": { - "repo_uri": "http://mirror.ctan.org/systems/texlive/tlnet/" - } - }, - "common_config": { - "licenses": { - "apache2": "Apache-2.0", - "artistic": "Artistic", - "Artistic2": "Artistic-2", - "gpl": "GPL-1", - "gpl2": "GPL-2", - "gpl3": "GPL-3", - "knuth": "TeX", - "lgpl": "LGPL-2", - "lgpl2.1": "LGPL-2.1", - "lppl": "LPPL-1.2", - "lppl1": "LPPL-1.2", - "lppl1.2": "LPPL-1.2", - "lppl1.3": "LPPL-1.3c" - }, - "exclude": [ - "avantgar", "bookman", "charter", "cm-super", - "cmextra", "courier", "euro", "euro-ce", "eurosym", "fpl", - "helvetic", "lm", "lm-math", "marvosym", "mathpazo", "ncntrsbk", - "palatino", "pxfonts", "rsfs", "symbol", "tex-gyre", "tex-gyre-math", - "times", "tipa", "txfonts", "utopia", "wasy", "wasysym", "zapfchan", "zapfding", - "epsf", "fontname", "genmisc", "kastrup", "multido", "path", - "tex-ps", "ulem", - "anysize", "booktabs", "caption", "cite", "cmap", "crop", "ctable", "ec", - "eso-pic", "euler", "extsizes", "fancybox", "fancyref", "fancyvrb", "float", - "fontspec", "fp", "index", "jknapltx", "koma-script", "l3kernel", - "l3packages", "l3experimental", "listings", "mdwtools", "memoir", "metalogo", - "mh", "microtype", "ms", "ntgclass", "parskip", "pdfpages", "powerdot", "psfrag", - "rcs", "rotating", "sansmath", "section", "seminar", "sepnum", "setspace", - "subfig", "textcase", "thumbpdf", "typehtml", "underscore", "url", "xkeyval", - "aichej", "amsrefs", "apacite", "apalike2", "beebe", "bibarts", "biber", - "bibexport", "bibhtml", "biblatex-apa", "biblatex-bwl", "biblatex-caspervector", - "biblatex-chem", "biblatex-chicago", "biblatex-dw", "biblatex-fiwi", "biblatex-gost", - "biblatex-historian", "biblatex-ieee", "biblatex-juradiss", "biblatex-luh-ipw", - "biblatex-mla", "biblatex-musuos", "biblatex-nature", "biblatex-nejm", - "biblatex-philosophy", "biblatex-phys", "biblatex-publist", "biblatex-science", - "biblatex-swiss-legal", "biblatex-trad", "biblist", "bibtopic", "bibtopicprefix", - "bibunits", "breakcites", "cell", "chbibref", "chicago", "chicago-annote", "chembst", - "chscite", "collref", "compactbib", "custom-bib", "din1505", "dk-bib", "doipubmed", - "fbs", "figbib", "footbib", "francais-bst", "geschichtsfrkl", "harvard", "harvmac", - "historische-zeitschrift", "ijqc", "inlinebib", "iopart-num", "jneurosci", "jurabib", - "ksfh_nat", "listbib", "logreq", "margbib", "multibib", "multibibliography", - "munich", "notes2bib", "oscola", "perception", "pnas2009", "rsc", "showtags", - "sort-by-letters", "splitbib", "uni-wtal-ger", "uni-wtal-lin", "urlbst", "usebib", - "vak", "xcite", - "Asana-Math", "adforn", "adfsymbols", "aecc", "allrunes", "antiqua", "antt", - "archaic", "arev", "ascii-font", "aspectratio", "astro", "augie", "auncial-new", - "aurical", "b1encoding", "barcodes", "baskervald", "bbding", "bbm", "bbm-macros", - "bbold", "bbold-type1", "belleek", "bera", "berenisadf", "bguq", "blacklettert1", - "boisik", "bookhands", "boondox", "braille", "brushscr", "cabin", "calligra", "calligra-type1", - "cantarell", "carolmin-ps", "ccicons", "cfr-lm", "cherokee", "cm-lgc", "cm-unicode", - "cmbright", "cmll", "cmpica", "cmtiup", "comfortaa", "concmath-fonts", "cookingsymbols", - "countriesofeurope", "courier-scaled", "cryst", "cyklop", "dancers", "dejavu", "dice", - "dictsym", "dingbat", "doublestroke", "dozenal", "droid", "duerer", "duerer-latex", - "dutchcal", "ean", "ebgaramond", "ecc", "eco", "eiad", "eiad-ltx", "electrum", "elvish", - "epigrafica", "epsdice", "esstix", "esvect", "eulervm", "euxm", "fdsymbol", "feyn", "fge", - "foekfont", "fonetika", "fontawesome", "fourier", "fouriernc", "frcursive", "genealogy", - "gentium", "gfsartemisia", "gfsbodoni", "gfscomplutum", "gfsdidot", "gfsneohellenic", - "gfssolomos", "gillcm", "gnu-freefont", "gothic", "greenpoint", "grotesq", "hacm", - "hands", "hfbright", "hfoldsty", "ifsym", "inconsolata", "initials", "ipaex-type1", "iwona", - "jablantile", "jamtimes", "junicode", "kixfont", "knuthotherfonts", "kpfonts", - "kurier", "lato", "lfb", "libertine", "librebaskerville", "libris", "linearA", "lxfonts", - "ly1", "mathabx", "mathabx-type1", "mathdesign", "mdputu", "mdsymbol", "mnsymbol", "newpx", - "newtx", "nkarta", "ocherokee", "ocr-b", "ocr-b-outline", "ogham", "oinuit", "oldlatin", - "oldstandard", "opensans", "orkhun", "pacioli", "paratype", "phaistos", "phonetic", "pigpen", - "poltawski", "prodint", "punk", "punk-latex", "punknova", "pxtxalfa", "quattrocento", "raleway", - "recycle", "romande", "rsfso", "sansmathaccent", "sansmathfonts", "sauter", "sauterfonts", - "schulschriften", "semaphor", "skull", "sourcecodepro", "sourcesanspro", "starfont", "staves", - "stix", "superiors", "tapir", "tengwarscript", "tfrupee", "tpslifonts", "trajan", "txfontsb", - "umtypewriter", "universa", "urwchancal", "venturisadf", "wsuipa", "xits", "yfonts", - "edmac", "eplain", "mltex", "psizzl", "startex", "texsis", - "abbr", "abstyles", "barr", "bitelist", "borceux", "c-pascal", "catcodes", "chronosys", - "colorsep", "dinat", "dirtree", "dowith", "eijkhout", "encxvlna", "epigram", "fenixpar", - "fltpoint", "fntproof", "gates", "ifetex", "iftex", "insbox", "langcode", "lecturer", "librarian", - "mathdots", "metatex", "midnight", "navigator", "ofs", "pdf-trans", "plainpkg", "schemata", - "shade", "systeme", "tabto-generic", "texapi", "upca", "xlop", "yax", - "2up", "ESIEEcv", "GS1", "HA-prosper", "Tabbing", "a0poster", - "a4wide", "a5comb", "abraces", "abstract", "achemso", "acro", - "acronym", "acroterm", "actuarialangle", "addlines", - "adjmulticol", "adjustbox", "adrconv", "advdate", "akktex", - "akletter", "alterqcm", "altfont", "amsaddr", "animate", - "anonchap", "answers", "anyfontsize", "appendix", - "appendixnumberbeamer", "apptools", "arcs", "arrayjobx", - "assignment", "attachfile", "autopdf", "authoraftertitle", - "authorindex", "autonum", "background", "bashful", "bchart", - "beamer2thesis", "beameraudience", "beamerposter", - "beamersubframe", "beamertheme-upenn-bc", "beamerthemejltree", - "beamerthemenirma", "begriff", "beton", "bez123", "bezos", - "bhcexam", "bigfoot", "bigints", "bizcard", "blindtext", - "blkarray", "block", "blowup", "boites", "bold-extra", - "bookest", "booklet", "boolexpr", "bophook", "boxedminipage", - "boxhandler", "bracketkey", "braket", "breakurl", "bullcntr", - "bussproofs", "bxdpx-beamer", "calcage", "calctab", - "calculator", "calrsfs", "cals", "calxxxx-yyyy", "cancel", - "canoniclayout", "capt-of", "captcont", "captdef", "cases", - "casyl", "catchfilebetweentags", "catechis", "catoptions", - "cbcoptic", "ccaption", "cclicenses", "cd", "cd-cover", - "cdpbundl", "cellspace", "censor", "changebar", "changelayout", - "changepage", "changes", "chappg", "chapterfolder", "chet", - "chextras", "chkfloat", "chletter", "chngcntr", "chronology", - "circ", "classics", "clefval", "cleveref", "clipboard", "clock", - "cmdstring", "cmdtrack", "cmsd", "codedoc", "codepage", - "collcell", "collectbox", "colordoc", "colorinfo", "colortab", - "colorwav", "colourchange", "combelow", "combine", "comma", - "commado", "comment", "concepts", "concprog", "constants", - "contour", "contracard", "cooking", "cool", "coollist", - "coolstr", "coolthms", "cooltooltips", "coordsys", - "copyrightbox", "coseoul", "counttexruns", "courseoutline", - "coursepaper", "coverpage", "cprotect", "crbox", - "crossreference", "csquotes", "csvsimple", "csvtools", - "cuisine", "currfile", "cutwin", "cv", "cweb-latex", "dashbox", - "dashrule", "dashundergaps", "datatool", "dateiliste", - "datenumber", "datetime", "dblfloatfix", "decimal", "decorule", - "delim", "delimtxt", "diagbox", "diagnose", "dialogl", - "dichokey", "dinbrief", "directory", "dirtytalk", "dlfltxb", - "dnaseq", "docmfp", "docmute", "documentation", "doi", - "dotarrow", "dotseqn", "download", "dox", "dpfloat", - "dprogress", "drac", "draftcopy", "draftwatermark", "dtk", - "dtxgallery", "dvdcoll", "dynblocks", "easy", "easy-todo", - "easyfig", "easylist", "ean13isbn", "ebezier", "ecclesiastic", - "ecv", "ed", "edmargin", "eemeir", "egplot", "ellipsis", - "elmath", "elpres", "emarks", "embrac", "emptypage", - "emulateapj", "endfloat", "endheads", "endnotes", "engpron", - "engrec", "enotez", "enumitem", "enumitem-zref", "envbig", - "environ", "epigraph", "epiolmec", "eqell", "eqlist", "eqname", - "eqparbox", "errata", "esami", "esdiff", "esint", "esint-type1", - "etaremune", "etextools", "etoc", "etoolbox", "eukdate", - "everyhook", "everypage", "exam", "examdesign", "examplep", - "exceltex", "excludeonly", "exercise", "exp-testopt", - "expdlist", "export", "exsheets", "exsol", "extract", - "facsimile", "factura", "fancynum", "fancypar", "fancytabs", - "fancytooltips", "figsize", "filecontents", "filedate", - "filehook", "fileinfo", "filemod", "fink", "finstrut", - "fixfoot", "fixme", "fixmetodonotes", "fjodor", "flabels", - "flacards", "flagderiv", "flashcards", "flashmovie", "flipbook", - "flippdf", "floatflt", "floatrow", "flowfram", "fmp", - "fmtcount", "fn2end", "fnbreak", "fncychap", "fncylab", - "fnpara", "fnpct", "fnumprint", "foilhtml", "fontaxes", - "fonttable", "footmisc", "footnotebackref", "footnoterange", - "footnpag", "forarray", "foreign", "forloop", "formlett", - "formular", "fragments", "frame", "framed", "frankenstein", - "frege", "ftcap", "ftnxtra", "fullblck", "fullwidth", - "fundus-calligra", "fundus-cyr", "fundus-sueterlin", "fwlw", - "gauss", "gcard", "gcite", "genmpage", "getfiledate", "ginpenc", - "gitinfo", "gloss", "gmdoc", "gmdoc-enhance", "gmeometric", - "gmiflink", "gmutils", "gmverb", "graphicx-psmin", "grfpaste", - "grid", "gridset", "guitlogo", "hanging", "hardwrap", - "harnon-cv", "harpoon", "hc", "he-she", "hhtensor", "histogr", - "hitec", "hletter", "hpsdiss", "hrefhide", "hvindex", - "hypdvips", "hyper", "hypernat", "hyperref-docsrc", "hyperxmp", - "hyphenat", "idxlayout", "ifmslide", "ifmtarg", "ifnextok", - "ifoddpage", "ifplatform", "ifthenx", "iitem", "image-gallery", - "imakeidx", "import", "incgraph", "inlinedef", "inputtrc", - "interactiveworkbook", "interfaces", "inversepath", "invoice", - "iso", "iso10303", "isodate", "isonums", "isodoc", "isorot", - "isotope", "issuulinks", "iwhdp", "jlabels", "jvlisting", - "kantlipsum", "kerntest", "keycommand", "keyreader", - "keystroke", "keyval2e", "kix", "koma-moderncvclassic", - "koma-script-sfs", "ktv-texdata", "labbook", "labelcas", - "labels", "lastpage", "latex-tds", "layouts", "lazylist", "lcd", - "lcg", "leading", "leftidx", "lengthconvert", "lettre", - "lettrine", "lewis", "lhelp", "libgreek", "limap", "linegoal", - "lipsum", "lisp-on-tex", "listing", "listofsymbols", - "listliketab", "lkproof", "lmake", "locality", "localloc", - "logbox", "logical-markup-utils", "logpap", "longnamefilelist", - "loops", "lsc", "lstaddons", "ltablex", "ltabptch", "ltxdockit", - "ltxindex", "ltxkeys", "ltxnew", "ltxtools", "magaz", "mailing", - "mailmerge", "makebarcode", "makebox", "makecell", "makecirc", - "makecmds", "makedtx", "makeglos", "mandi", "manfnt", - "manuscript", "marginfix", "marginnote", "mathalfa", - "mathastext", "mathexam", "maybemath", "mbenotes", "mcaption", - "mceinleger", "mcite", "mciteplus", "mdframed", "media9", - "meetingmins", "memexsupp", "memory", "menu", "menukeys", - "method", "metre", "mftinc", "midpage", "minibox", "minifp", - "minipage-marginpar", "minitoc", "minted", "minutes", "misc209", - "mla-paper", "mlist", "mmap", "mnotes", "moderncv", - "moderntimeline", "modref", "modroman", "monofill", "moreenum", - "morefloats", "morehype", "moresize", "moreverb", "morewrites", - "movie15", "mparhack", "msc", "msg", "mslapa", "mtgreek", - "multenum", "multibbl", "multicap", "multienv", "multiexpand", - "multirow", "mversion", "mwe", "mycv", "mylatexformat", "nag", - "nameauth", "namespc", "ncclatex", "ncctools", "needspace", - "nestquot", "newcommand", "newenviron", "newfile", "newlfm", - "newspaper", "newunicodechar", "newvbtm", "newverbs", - "nextpage", "nfssext-cfr", "nicefilelist", "niceframe", - "nicetext", "nlctdoc", "noconflict", "noitcrul", "nolbreaks", - "nomencl", "nomentbl", "nonfloat", "nonumonpart", "nopageno", - "notes", "notoccite", "nowidow", "ntheorem", "numberedblock", - "numname", "numprint", "ocg-p", "ocgx", "ocr-latex", "octavo", - "oldstyle", "onlyamsmath", "opcit", "optional", "outline", - "outliner", "outlines", "overpic", "pagecolor", "pagecont", - "pagenote", "pagerange", "pageslts", "paper", "papercdcase", - "papermas", "papertex", "paracol", "paralist", "paresse", - "parnotes", "parselines", "patch", "patchcmd", "pauldoc", - "pawpict", "pbox", "pbsheet", "pdf14", "pdfcomment", "pdfcprot", - "pdfmarginpar", "pdfscreen", "pdfslide", "pdfsync", "pdfwin", - "pdfx", "pecha", "perltex", "permute", "petiteannonce", - "philex", "photo", "piff", "pittetd", "placeins", "plates", - "plantslabels", "plweb", "polynom", "polynomial", "polytable", - "postcards", "poster-mac", "ppr-prv", "preprint", "prettyref", - "preview", "printlen", "probsoln", "program", "progress", - "progressbar", "properties", "prosper", "protex", "protocol", - "psfragx", "pst-pdf", "pstool", "pxgreeks", "python", "qcm", - "quoting", "qstest", "qsymbols", "quotchap", "quotmark", - "ran_toks", "randtext", "rccol", "rcs-multi", "rcsinfo", - "readarray", "realboxes", "recipe", "recipecard", "rectopma", - "refcheck", "refman", "refstyle", "regcount", "regexpatch", - "register", "regstats", "relenc", "relsize", "repeatindex", - "rjlparshap", "rlepsf", "rmpage", "robustcommand", - "robustindex", "romanbar", "romanneg", "romannum", "rotfloat", - "rotpages", "roundbox", "rterface", "rtkinenc", "rvwrite", - "sauerj", "savefnmark", "savesym", "savetrees", "scale", - "scalebar", "scalerel", "sdrt", "secdot", "sectionbox", - "sectsty", "selectp", "semantic", "semioneside", "sepfootnotes", - "seqsplit", "sf298", "sffms", "sfmath", "shadow", "shadowtext", - "shadethm", "shapepar", "shipunov", "shorttoc", "show2e", - "showcharinbox", "showdim", "showexpl", "showlabels", "sidecap", - "sidenotes", "silence", "simplecd", "simplecv", "simplewick", - "sitem", "skb", "skdoc", "skeycommand", "skeyval", "skrapport", - "slantsc", "smalltableof", "smartref", "snapshot", "snotez", - "soul", "spanglish", "sparklines", "sphack", "spreadtab", - "spverbatim", "splitindex", "spot", "spotcolor", "srbook-mem", - "srcltx", "sseq", "stack", "stackengine", "standalone", - "statistik", "stdclsdv", "stdpage", "stex", "storebox", - "storecmd", "stringstrings", "sttools", "stubs", "subdepth", - "subeqn", "subeqnarray", "subfigmat", "subfigure", "subfiles", - "subfloat", "substitutefont", "substr", "supertabular", "svg", - "svgcolor", "svn", "svn-multi", "svn-prov", "syntax", - "syntrace", "synttree", "tabfigures", "tableaux", - "tablefootnote", "tableof", "tablists", "tabls", "tabto-ltx", - "tabu", "tabularborder", "tabularcalc", "tabularew", "tabulary", - "tagging", "talk", "tamefloats", "tcldoc", "tcolorbox", - "tdclock", "technics", "ted", "termcal", "termlist", - "tex-label", "texlogos", "texmate", "texments", "texpower", - "texshade", "textfit", "textgreek", "textmerg", "textpos", - "theoremref", "threadcol", "threeparttable", "threeparttablex", - "thinsp", "thmtools", "thumb", "thumbs", "thumby", "ticket", - "titlecaps", "titlefoot", "titlepic", "titleref", "titlesec", - "titling", "tocbibind", "tocloft", "tocvsec2", "todo", - "todonotes", "tokenizer", "toolbox", "topfloat", "totcount", - "totpages", "trfsigns", "trimspaces", "trsym", "trivfloat", - "truncate", "tucv", "turnthepage", "twoinone", "twoup", - "txgreeks", "type1cm", "typeface", "typogrid", "ucs", - "uebungsblatt", "umoline", "underlin", "underoverlap", - "undolabl", "units", "upmethodology", "upquote", "uri", - "ushort", "uwmslide", "varindex", "varsfromjobname", "varwidth", - "vdmlisting", "verbasef", "verbatimbox", "verbatimcopy", - "verbdef", "verbments", "version", "versions", "vertbars", - "vhistory", "vmargin", "volumes", "vpe", "vruler", "vwcol", - "wallpaper", "warning", "warpcol", "was", "widetable", - "williams", "wordlike", "wrapfig", "xargs", "xbmc", "xcomment", - "xhfill", "xtab", "xdoc", "xfor", "xifthen", "xint", "xmpincl", - "xnewcommand", "xoptarg", "xpatch", "xpeek", "xpunctuate", - "xstring", "xwatermark", "xytree", "yafoot", "yagusylo", "ydoc", - "yplan", "zed-csp", "ziffer", "zwgetfdate", "zwpagelayout", - "12many", "amstex", "backnaur", "binomexp", "boldtensors", - "bosisio", "bropd", "ccfonts", "commath", "concmath", - "concrete", "conteq", "eqnarray", "extarrows", "extpfeil", - "faktor", "interval", "ionumbers", "isomath", "mathcomp", - "mattens", "mhequ", "multiobjective", "nath", "ot-tableau", - "oubraces", "proba", "rec-thy", "shuffle", "skmath", "statex", - "statex2", "stmaryrd", "subsupscripts", "susy", "syllogism", - "synproof", "tablor", "tensor", "tex-ewd", "thmbox", - "turnstile", "unicode-math", "venn", "yhmath", "ytableau", - "figflow", "fixpdfmag", "font-change", "fontch", "getoptk", - "graphics-pln", "hyplain", "js-misc", "mkpattern", "newsletr", - "pitex", "placeins-plain", "plipsum", "plnfss", "plstmary", - "present", "resumemac", "texinfo", "timetable", "treetex", - "varisize", - "aastex", "chktex", "curve", "envlab", "g-brief", "isotope", "latexmk", "minted", "", - "polytable", "rcsinfo", "tex4ht", "xmltex", "abntex", "circuit_macros", "detex", "europecv", - "glossaries", "ivritex", "lazylist", "natbib", "ppower4", "revtex", "texamator", "xymtex", - "bera", "cjk-latex", "dot2tex", "feynmf", "harvard", "latex-beamer", "leaflet", "newlfm", - "prosper", "rubber", "texmfind", "biblatex", "cpp2latex", "dot2texi", "flabels", "herm-pic", - "latex-calendar", "lgrind", "notoccite", "pscyr", "serienbrief", "texpower", "bibtex2html", - "crosstex", "dvi2gr", "floatflt", "hevea", "latex-unicode", "luatex", "oesch", "pstplus", - "sketch", "tipa", "bibtexu", "csindex", "dvi2tty", "foiltex", "hlatex", "latex2html", - "pdfannotextractor", "qtexengine", "slatex", "translator", "catdvi", - "culmus-latex", "dvipost", "frakturx", "html2latex", "latex2rtf", "metapost", "pdftex", - "quotchap", "style-check", "tth", "cdcover", "currvita", "ellipsis", "fundus", "hyphen_show", - "latexdiff", "mh", "pgf", "rail", "svninfo", "xcolor", - "amsfonts", "bibtex", "cm", "dvipdfmx-def", "enctex", "etex", - "etex-pkg", "glyphlist", "hyph-utf8", "ifluatex", "ifxetex", - "lua-alt-getopt", "luatex", "makeindex", "metafont", "mflogo", - "mfware", "misc", "pdftex", "plain", - "context", "jmn", - "accfonts", "afm2pl", "dosepsbin", "epstopdf", "fontware", - "lcdftypetools", "ps2pkm", "pstools", "psutils", "dvipsconfig", - "fontinst", "fontools", "mf2pt1", "t1utils", - "bartel-chess-fonts", "chess", "chess-problem-diagrams", - "chessboard", "chessfss", "crossword", "crosswrd", "egameps", - "gamebook", "go", "hanoi", "hexgame", "horoscop", "logicpuzzle", - "othello", "othelloboard", "psgo", "reverxii", "schwalbe-chess", - "sgame", "skak", "skaknew", "sudoku", "sudokubundle", "xq", - "xskak", "xmlplay", - "alnumsec", "arydshln", "bibleref", "bibleref-lds", - "bibleref-mouth", "bibleref-parse", "covington", "dramatist", - "dvgloss", "ecltree", "edfnotes", "ednotes", "eledform", - "eledmac", "gb4e", "gmverse", "jura", "juraabbrev", "juramisc", - "jurarsp", "ledmac", "leipzig", "lexikon", "lineno", "linguex", - "liturg", "parallel", "parrun", "plari", "play", "poemscol", - "poetrytex", "qobitree", "qtree", "rrgtrees", "rtklage", - "screenplay", "sides", "stage", "textglos", "tree-dvips", - "verse", "xyling", - "SIstyle", "SIunits", "alg", "algorithm2e", "algorithmicx", - "algorithms", "biocon", "bohr", "bpchem", "bytefield", - "chemarrow", "chemcompounds", "chemcono", "chemexec", - "chemmacros", "chemnum", "chemstyle", "clrscode", "complexity", - "computational-complexity", "digiconfigs", "drawstack", - "dyntree", "eltex", "endiagram", "engtlc", "fouridx", "functan", - "galois", "gastex", "gene-logic", "gu", "hep", "hepnames", - "hepparticles", "hepthesis", "hepunits", "karnaugh", "mhchem", - "miller", "mychemistry", "nuc", "objectz", "physics", "physymb", - "pseudocode", "sasnrdisplay", "sciposter", "sfg", "siunitx", - "steinmetz", "struktex", "substances", "t-angles", "textopo", - "ulqda", "unitsdef", "youngtab", - "checkcites", "chickenize", "enigma", "interpreter", - "lua-check-hyphen", "lua-visual-debug", "lua2dox", - "luabibentry", "luabidi", "luacode", "luaindex", "luainputenc", - "luaintro", "lualatex-doc", "lualatex-math", "lualibs", - "luamplib", "luaotfload", "luasseq", "luatexbase", "luatexko", - "luatextra", "luaxml", "odsfile", "selnolig", "showhyphens", - "spelling", - "automata", "bbcard", "blockdraw_mp", "bpolynomial", - "cmarrows", "drv", "dviincl", "emp", "epsincl", "expressg", - "exteps", "featpost", "feynmp-auto", "garrigues", "gmp", - "hatching", "latexmp", "metago", "metaobj", "metaplot", - "metapost", "metauml", "mfpic", "mfpic4ode", "mp3d", - "mpcolornames", "mpattern", "mpgraphics", "piechartmp", "roex", - "slideshow", "splines", "suanpan", "textpath", "threeddice", - "abc", "figbas", "gchords", "gtrcrd", "guitar", "harmony", - "m-tx", "musixguit", "musixtex", "musixtex-fonts", "pmx", - "songbook", "songs", - "aleph", "antomega", "lambda", "mxedruli", "omega", "omegaware", "otibet", - "asyfig", "autoarea", "bardiag", "bloques", "bodegraph", - "bondgraph", "braids", "bxeepic", "cachepic", "chemfig", - "combinedgraphics", "circuitikz", "curve", "curve2e", "curves", - "dcpic", "diagmac2", "doc-pictex", "dottex", "", "dratex", - "drs", "duotenzor", "eepic", "", "epspdfconversion", "esk", - "fast-diagram", "fig4latex", "flowchart", "forest", "gincltex", - "gnuplottex", "gradientframe", "grafcet", "here", "hf-tikz", - "hobby", "hvfloat", "knitting", "knittingpattern", "lapdf", - "lpic", "makeshape", "mathspic", "miniplot", "modiagram", - "numericplots", "pb-diagram", "petri-nets", "", "pgf-blur", - "pgf-soroban", "pgf-umlsd", "pgfgantt", "pgfkeyx", "pgfmolbio", - "pgfopts", "pgfplots", "piano", "picinpar", "pict2e", "pictex", - "pictex2", "pinlabel", "pmgraph", "prerex", "productbox", - "pxpgfmark", "randbild", "randomwalk", "reotex", "rviewport", - "sa-tikz", "schemabloc", "setdeck", "smartdiagram", "spath3", - "swimgraf", "texdraw", "tikz-3dplot", "tikz-bayesnet", - "tikz-cd", "tikz-dependency", "tikz-inet", "tikz-qtree", - "tikz-timing", "tikzinclude", "tikzmark", "tikzorbital", - "tikzpagenodes", "tikzpfeile", "tikzposter", "tikzscale", - "tikzsymbols", "tqft", "tkz-base", "tkz-berge", "tkz-doc", - "tkz-euclide", "tkz-fct", "tkz-graph", "tkz-kiviat", - "tkz-linknodes", "tkz-orm", "tkz-tab", "tsemlines", - "tufte-latex", "venndiagram", "xpicture", "xypic", - "auto-pst-pdf", "bclogo", "makeplot", "pdftricks", - "pedigree-perl", "psbao", "pst-2dplot", "pst-3d", "pst-3dplot", - "pst-abspos", "pst-am", "pst-asr", "pst-bar", "pst-barcode", - "pst-bezier", "pst-blur", "pst-bspline", "pst-calendar", - "pst-circ", "pst-coil", "pst-cox", "pst-dbicons", - "pst-diffraction", "pst-electricfield", "pst-eps", "pst-eucl", - "pst-exa", "pst-fill", "pst-fit", "pst-fr3d", "pst-fractal", - "pst-fun", "pst-func", "pst-gantt", "pst-geo", "pst-ghsb", - "pst-gr3d", "pst-grad", "pst-graphicx", "pst-infixplot", - "pst-jtree", "pst-knot", "pst-labo", "pst-layout", "pst-lens", - "pst-light3d", "pst-magneticfield", "pst-math", "pst-mirror", - "pst-node", "pst-ob3d", "pst-ode", "pst-optexp", "pst-optic", - "pst-osci", "pst-pad", "pst-pdgr", "pst-platon", "pst-plot", - "pst-poly", "pst-pulley", "pst-qtree", "pst-rubans", - "pst-sigsys", "pst-slpe", "pst-solarsystem", "pst-spectra", - "pst-solides3d", "pst-soroban", "pst-stru", "pst-support", - "pst-text", "pst-thick", "pst-tools", "pst-tree", "pst-tvz", - "pst-uml", "pst-vectorian", "pst-vowel", "pst-vue3d", "pst2pdf", - "pstricks", "pstricks-add", "pstricks_calcnotes", "uml", - "vaucanson-g", "vocaltract", - "IEEEconf", "IEEEtran", "aastex", "abntex2", "acmconf", - "active-conf", "adfathesis", "afthesis", "aguplus", "aiaa", - "ametsoc", "anufinalexam", "aomart", "apa", "apa6", "apa6e", - "arsclassica", "articleingud", "asaetr", "ascelike", - "beamer-FUBerlin", "bgteubner", "cascadilla", "chem-journal", - "classicthesis", "cmpj", "confproc", "ebook", "ebsthesis", - "ejpecp", "elbioimp", "elsarticle", "elteikthesis", "erdc", - "estcpmm", "fbithesis", "fcltxdoc", "gaceta", "gatech-thesis", - "har2nat", "hobete", "icsv", "ieeepes", "ijmart", "imac", - "imtekda", "jmlr", "jpsj", "kdgdocs", "kluwer", "lps", "matc3", - "matc3mem", "mentis", "msu-thesis", "musuos", "muthesis", - "nature", "nddiss", "nih", "nostarch", "nrc", "onrannual", - "opteng", "philosophersimprint", "pkuthss", "powerdot-FUBerlin", - "pracjourn", "procIAGssymp", "proposal", "ptptex", "psu-thesis", - "resphilosophica", "resumecls", "revtex", "revtex4", - "ryethesis", "sageep", "sapthesis", "scrjrnl", "seuthesis", - "soton", "spie", "stellenbosch", "suftesi", "sugconf", - "tabriz-thesis", "texilikechaps", "texilikecover", - "thesis-titlepage-fhac", "thuthesis", "toptesi", "tugboat", - "tugboat-plain", "tui", "uaclasses", "uadocs", "uafthesis", - "ucdavisthesis", "ucthesis", "uestcthesis", "uiucredborder", - "uiucthesis", "ulthese", "umthesis", "umich-thesis", - "unamthesis", "unswcover", "ut-thesis", "uothesis", "uowthesis", - "uspatent", "uwthesis", "vancouver", "xcookybooky", - "york-thesis", "texinfo", - "arabxetex", "euenc", "fixlatvian", "fontbook", "fontwrap", - "mathspec", "philokalia", "polyglossia", "realscripts", - "unisugar", "xecjk", "xecolor", "xecyr", "xeindex", "xepersian", - "xesearch", "xetex", "xetex-def", "xetex-itrans", - "xetex-pstricks", "xetexconfig", "xetexfontinfo", "xltxtra", - "xunicode", - "ethiop", "ethiop-t1", "fc", "hyphen-ethiopic", - "amiri", "arabi", "arabtex", "bidi", "hyphen-arabic", - "hyphen-farsi", "persian-bib", "persian-modern", - "adobemapping", "arphic", "c90", "cjkpunct", "cns", "ctex", - "dnp", "fonts-tlwg", "garuda-c90", "hyphen-chinese", "ipaex", - "japanese", "japanese-otf", "japanese-otf-uptex", "jfontmaps", - "jsclasses", "luatexja", "norasi-c90", "ptex", "thailatex", - "uhc", "uptex", "wadalab", "xpinyin", "zhmetrics", "zhnumber", - "zhspacing", - "hrlatex", "hyphen-croatian", "cmcyr", "cyrillic", - "cyrillic-bin", "cyrplain", "disser", "eskd", "eskdx", "gost", - "lcyw", "lh", "lhcyr", "ruhyphen", "russ", "t2", "ukrhyph", - "hyphen-bulgarian", "hyphen-russian", "hyphen-ukrainian", "cs", - "csbulletin", "cslatex", "csplain", "hyphen-czech", - "hyphen-slovak", "hyphen-danish", "finbib", "aeguill", - "basque-book", "basque-date", "bib-fr", "bibleref-french", - "booktabs-fr", "droit-fr", "facture", "frenchle", "frletter", - "impnattypo", "mafr", "tabvar", "tdsfrmath", "variations", - "bibleref-german", "dehyph-exptl", "dhua", "booktabs-de", - "csquotes-de", "etoolbox-de", "geometry-de", "german", - "germbib", "germkorr", "hausarbeit-jura", "microtype-de", - "r_und_s", "tipa-de", "umlaute", "betababel", "bgreek", - "cbfonts", "gfsbaskerville", "gfsporson", "greek-inputenc", - "greekdates", "greektex", "grverb", "ibycus-babel", "ibygrk", - "kerkis", "levy", "lgreek", "lgrx", "mkgrkindex", "teubner", - "xgreek", "yannisgr", "cjhebrew", "magyar", "bangtex", - "bengali", "burmese", "devnag", "ebong", "hyphen-indic", - "hyphen-sanskrit", "malayalam", "sanskrit", "velthuis", "wnri", - "wnri-latex", "xetex-devanagari", "codicefiscaleitaliano", - "fixltxhyph", "hyphen-italian", "frontespizio", "itnumpar", - "layaureo", "lithuanian", "montex", "mongolian-babel", "cc-pl", - "gustlib", "gustprog", "mex", "mwcls", "pl", "polski", - "przechlewski-book", "qpxqtx", "tap", "utf8mex", "ordinalpt", - "swebib", "ctib", "otibet", "turkmen", "vntex", - "lshort-persian", "lshort-bulgarian", "pst-eucl-translation-bg", - "asymptote-faq-zh-cn", "asymptote-by-example-zh-cn", - "asymptote-manual-zh-cn", "ctex-faq", "latex-notes-zh-cn", - "lshort-chinese", "texlive-zh-cn", "lshort-czech", - "lshort-slovak", "texlive-cz", "lshort-dutch", "FAQ-en", - "MemoirChapStyles", "Type1fonts", "amslatex-primer", - "around-the-bend", "ascii-chart", "components-of-TeX", - "comprehensive", "dtxtut", "first-latex-doc", "gentle", - "guide-to-latex", "happy4th", "impatient", "intro-scientific", - "knuth", "l2tabu-english", "latex-course", "latex-doc-ptr", - "latex-graphics-companion", "latex-veryshortguide", - "latex-web-companion", "latex2e-help-texinfo", "latex4wp", - "latexcheat", "latexfileinfo-pkgs", "lshort-english", - "macros2e", "math-e", "mathmode", "memdesign", - "metafont-beginners", "metapost-examples", "mil3", - "patgen2-tutorial", "pictexsum", "plain-doc", - "pstricks-examples-en", "pstricks-tutorial", "simplified-latex", - "svg-inkscape", "tabulars-e", "tamethebeast", "tds", - "tex-font-errors-cheatsheet", "tex-overview", "tex-refs", - "texbytopic", "titlepages", "tlc2", "visualfaq", "webguide", - "xetexref", "lshort-finnish", "apprends-latex", "epslatex-fr", - "impatient-fr", "l2tabu-french", "lshort-french", "texlive-fr", - "translation-array-fr", "translation-dcolumn-fr", - "translation-natbib-fr", "translation-tabbing-fr", - "einfuehrung", "fifinddo-info", "kopka", "l2picfaq", "l2tabu", - "latex-bib-ex", "latex-referenz", "latex-tabellen", - "lshort-german", "presentations", "pstricks-examples", - "templates-fenn", "templates-sommer", "texlive-de", - "translation-arsclassica-de", "translation-biblatex-de", - "translation-chemsym-de", "translation-ecv-de", - "translation-enumitem-de", "translation-europecv-de", - "translation-filecontents-de", "translation-moreverb-de", - "voss-de", "amsldoc-it", "amsmath-it", "amsthdoc-it", - "fancyhdr-it", "l2tabu-italian", "latex4wp-it", - "lshort-italian", "psfrag-italian", "texlive-it", - "lshort-japanese", "lshort-korean", "lshort-mongol", - "lshort-polish", "beamer-tut-pt", "cursolatex", - "latexcheat-ptbr", "lshort-portuguese", "xypic-tut-pt", - "lshort-russian", "mpman-ru", "texlive-ru", "texlive-sr", - "lshort-slovenian", "es-tex-faq", "l2tabu-spanish", - "latex2e-help-texinfo-spanish", "latexcheat-esmx", - "lshort-spanish", "lshort-thai", "lshort-turkish", "lshort-ukr", - "amsldoc-vn", "lshort-vietnamese", "ntheorem-vn", - "babel-albanian", "babel-breton", "babel-croatian", "babel-danish", - "babel-dutch", "babel-estonian", "babel-finnish", "babel-friulan", - "babel-hungarian", "babel-icelandic", "babel-irish", "babel-kurmanji", - "babel-latin", "babel-norsk", "babel-piedmontese", "babel-romanian", - "babel-romansh", "babel-samin", "babel-scottish", "babel-slovenian", - "babel-swedish", "babel-turkish", "babel-welsh", "finbib", "hrlatex", - "arabxetex", "euenc", "fixlatvian", "fontbook", "fontwrap", - "mathspec", "philokalia", "polyglossia", "ptext", "realscripts", - "ucharclasses", "unisugar", "xecjk", "xecolor", "xecyr", - "xeindex", "xepersian", "xesearch", "xetex", "xetex-def", - "xetex-itrans", "xetex-pstricks", "xetex-tibetan", - "xetexconfig", "xetexfontinfo", "xetexko", "xevlna", "xltxtra", - "xunicode", - "babel-bulgarian", "babel-russian", "babel-serbian", - "babel-serbianc", "babel-ukraineb", "cmcyr", "cyrillic", - "cyrillic-bin", "cyrplain", "disser", "eskd", "eskdx", "gost", - "hyphen-bulgarian", "hyphen-mongolian", "hyphen-russian", - "hyphen-serbian", "hyphen-ukrainian", "lcyw", "lh", "lhcyr", - "lshort-bulgarian", "lshort-mongol", "lshort-russian", - "lshort-ukr", "mongolian-babel", "montex", "mpman-ru", - "pst-eucl-translation-bg", "ruhyphen", "russ", - "serbian-apostrophe", "serbian-date-lat", "serbian-def-cyr", - "serbian-lig", "t2", "texlive-ru", "texlive-sr", "ukrhyph", - "ae", "amscls", "amsmath", "babel", "babel-english", "babelbib", - "carlisle", "colortbl", "fancyhdr", "fix2col", "geometry", - "graphics", "hyperref", "latex", "latex-bin", "latex-fonts", - "latexconfig", "ltxmisc", "mfnfss", "mptopdf", "natbib", - "oberdiek", "pdftex-def", "pslatex", "psnfss", "pspicture", - "tools", - "adobemapping", "arphic", "asymptote-by-example-zh-cn", - "asymptote-faq-zh-cn", "asymptote-manual-zh-cn", "bxbase", - "bxjscls", "c90", "cjk-ko", "cjkpunct", "cns", "convbkmk", - "ctex", "ctex-faq", "dnp", "garuda-c90", "hyphen-chinese", - "ipaex", "japanese", "japanese-otf", "japanese-otf-uptex", - "jfontmaps", "jsclasses", "latex-notes-zh-cn", "lshort-chinese", - "lshort-japanese", "lshort-korean", "luatexja", "nanumtype1", - "norasi-c90", "ptex", "ptex2pdf", "pxbase", "pxchfon", - "pxcjkcat", "pxjahyper", "pxrubrica", "texlive-zh-cn", "uhc", - "uptex", "wadalab", "xpinyin", "zhmetrics", "zhnumber", - "zhspacing", "zxjafbfont", "zxjafont", "zxjatype", "beamer", - "2up", "ESIEEcv", "HA-prosper", "Tabbing", "a0poster", "a4wide", - "a5comb", "abstract", "achemso", "acro", "acronym", "acroterm", - "addlines", "adjmulticol", "adrconv", "advdate", "akktex", - "akletter", "alterqcm", "altfont", "amsaddr", "animate", - "anonchap", "answers", "anyfontsize", "appendix", - "appendixnumberbeamer", "arcs", "arrayjobx", "assignment", - "attachfile", "authoraftertitle", "authorindex", "autonum", - "background", "bashful", "bchart", "beamer2thesis", - "beameraudience", "beamerposter", "beamersubframe", - "beamerthemejltree", "beamerthemenirma", "begriff", "beton", - "bez123", "bezos", "bhcexam", "bigfoot", "bigints", "bizcard", - "blindtext", "blkarray", "block", "blowup", "boites", - "bold-extra", "bookest", "booklet", "boolexpr", "bophook", - "boxedminipage", "boxhandler", "bracketkey", "braket", - "breakurl", "bullcntr", "bussproofs", "calctab", "calculator", - "calrsfs", "cals", "calxxxx-yyyy", "cancel", "canoniclayout", - "capt-of", "captcont", "captdef", "cases", "casyl", - "catchfilebetweentags", "catechis", "catoptions", "cbcoptic", - "ccaption", "cclicenses", "cd", "cd-cover", "cdpbundl", - "cellspace", "censor", "changebar", "changelayout", - "changepage", "changes", "chappg", "chapterfolder", "chet", - "chextras", "chletter", "chngcntr", "chronology", "circ", - "clefval", "cleveref", "clock", "cmdstring", "cmsd", "codedoc", - "codepage", "collcell", "collectbox", "colordoc", "colorinfo", - "colortab", "colorwav", "colourchange", "combelow", "combine", - "comma", "comment", "concprog", "constants", "contour", - "cooking", "cool", "coollist", "coolstr", "coolthms", - "cooltooltips", "coordsys", "copyrightbox", "coseoul", - "courseoutline", "coursepaper", "coverpage", "cprotect", - "crbox", "crossreference", "csquotes", "csvsimple", "csvtools", - "cuisine", "currfile", "cutwin", "cv", "cweb-latex", "dashbox", - "dashrule", "dashundergaps", "datatool", "dateiliste", - "datenumber", "datetime", "dblfloatfix", "decimal", "decorule", - "delim", "delimtxt", "diagbox", "diagnose", "dichokey", - "dinbrief", "directory", "dirtytalk", "dlfltxb", "dnaseq", - "docmfp", "docmute", "documentation", "doi", "dotarrow", - "dotseqn", "dox", "dpfloat", "dprogress", "drac", "draftcopy", - "draftwatermark", "dtk", "dtxgallery", "dvdcoll", "dynblocks", - "easy", "easy-todo", "easyfig", "easylist", "ean13isbn", - "ebezier", "ecclesiastic", "ecv", "ed", "edmargin", "eemeir", - "egplot", "ellipsis", "elmath", "elpres", "emarks", "embrac", - "emptypage", "emulateapj", "endfloat", "endheads", "endnotes", - "engpron", "engrec", "enotez", "enumitem", "enumitem-zref", - "envbig", "environ", "epigraph", "epiolmec", "eqell", "eqlist", - "eqname", "eqparbox", "errata", "esdiff", "esint", - "esint-type1", "etaremune", "etextools", "etoolbox", "eukdate", - "everyhook", "everypage", "exam", "examdesign", "examplep", - "exceltex", "excludeonly", "exercise", "exp-testopt", - "expdlist", "export", "extract", "facsimile", "fancynum", - "fancypar", "fancytabs", "fancytooltips", "figsize", - "filecontents", "filehook", "fileinfo", "filemod", "fink", - "finstrut", "fixfoot", "fixme", "fixmetodonotes", "fjodor", - "flabels", "flacards", "flagderiv", "flashcards", "flashmovie", - "flipbook", "flippdf", "floatflt", "floatrow", "flowfram", - "fmp", "fmtcount", "fn2end", "fnbreak", "fncychap", "fncylab", - "fnpara", "fnpct", "foilhtml", "fontaxes", "fonttable", - "footmisc", "footnotebackref", "footnoterange", "footnpag", - "forarray", "foreign", "forloop", "formlett", "formular", - "fragments", "frame", "framed", "frankenstein", "frege", - "friulan", "ftcap", "ftnxtra", "fullblck", "fullwidth", - "fundus-calligra", "fundus-cyr", "fundus-sueterlin", "fwlw", - "gauss", "gcard", "gcite", "genmpage", "getfiledate", "ghab", - "ginpenc", "gitinfo", "gloss", "gmdoc", "gmdoc-enhance", - "gmeometric", "gmiflink", "gmutils", "gmverb", "graphicx-psmin", - "grfpaste", "grid", "gridset", "guitlogo", "hanging", - "hardwrap", "harnon-cv", "harpoon", "hc", "he-she", "hhtensor", - "histogr", "hitec", "hletter", "hpsdiss", "hrefhide", "hvindex", - "hypdvips", "hyper", "hypernat", "hyperref-docsrc", "hyperxmp", - "hyphenat", "idxlayout", "ifmslide", "ifmtarg", "ifnextok", - "ifoddpage", "ifplatform", "ifthenx", "image-gallery", - "imakeidx", "import", "incgraph", "inlinedef", "inputtrc", - "interactiveworkbook", "interfaces", "inversepath", "invoice", - "iso", "iso10303", "isodate", "isonums", "isodoc", "isorot", - "isotope", "issuulinks", "iwhdp", "jlabels", "jvlisting", - "kantlipsum", "kerntest", "keycommand", "keyreader", - "keystroke", "keyval2e", "kix", "koma-moderncvclassic", - "koma-script-sfs", "labbook", "labelcas", "labels", "lastpage", - "latex-tds", "layouts", "lazylist", "lcd", "lcg", "leading", - "leftidx", "lettre", "lettrine", "lewis", "lhelp", "libgreek", - "limap", "linegoal", "lipsum", "listing", "listofsymbols", - "listliketab", "lkproof", "lmake", "locality", "localloc", - "logbox", "logical-markup-utils", "logpap", "longnamefilelist", - "lsc", "lstaddons", "ltabptch", "ltxdockit", "ltxindex", - "ltxkeys", "ltxnew", "ltxtools", "magaz", "mailing", - "mailmerge", "makebarcode", "makebox", "makecell", "makecirc", - "makecmds", "makedtx", "makeglos", "manfnt", "manuscript", - "marginfix", "marginnote", "mathalfa", "mathastext", "mathexam", - "maybemath", "mbenotes", "mcaption", "mceinleger", "mcite", - "mciteplus", "mdframed", "media9", "meetingmins", "memexsupp", - "menu", "menukeys", "method", "metre", "mftinc", "midpage", - "minibox", "minipage-marginpar", "minitoc", "minted", "minutes", - "misc209", "mla-paper", "mlist", "mmap", "moderncv", - "moderntimeline", "modref", "modroman", "monofill", "moreenum", - "morefloats", "morehype", "moresize", "moreverb", "morewrites", - "movie15", "mparhack", "msc", "msg", "mslapa", "mtgreek", - "multenum", "multibbl", "multicap", "multienv", "multirow", - "mversion", "mwe", "mycv", "mylatexformat", "nag", "nameauth", - "namespc", "ncclatex", "ncctools", "needspace", "newcommand", - "newfile", "newlfm", "newspaper", "newunicodechar", "newvbtm", - "newverbs", "nextpage", "nfssext-cfr", "nicefilelist", - "niceframe", "nicetext", "nlctdoc", "noitcrul", "nolbreaks", - "nomencl", "nomentbl", "nonfloat", "nonumonpart", "nopageno", - "notes", "notoccite", "nowidow", "ntheorem", "numname", - "numprint", "ocgtools", "ocr-latex", "octavo", "oldstyle", - "onlyamsmath", "opcit", "optional", "outline", "outliner", - "outlines", "overpic", "pagecolor", "pagecont", "pagenote", - "pagerange", "pageslts", "paper", "papercdcase", "papermas", - "papertex", "paracol", "paralist", "paresse", "parnotes", - "parselines", "patch", "patchcmd", "pauldoc", "pawpict", "pbox", - "pbsheet", "pdf14", "pdfcomment", "pdfcprot", "pdfmarginpar", - "pdfscreen", "pdfslide", "pdfsync", "pdfwin", "pdfx", "pecha", - "perltex", "permute", "petiteannonce", "philex", "photo", - "piff", "pittetd", "placeins", "plates", "plantslabels", - "plweb", "polyglot", "polynom", "polynomial", "polytable", - "postcards", "poster-mac", "ppr-prv", "preprint", "prettyref", - "preview", "printlen", "probsoln", "program", "progress", - "progressbar", "properties", "prosper", "protex", "protocol", - "psfragx", "pst-pdf", "pstool", "pxgreeks", "python", "qcm", - "quoting", "qstest", "qsymbols", "quotchap", "quotmark", - "randtext", "rccol", "rcs-multi", "rcsinfo", "realboxes", - "recipe", "recipecard", "rectopma", "refcheck", "refman", - "refstyle", "regcount", "regexpatch", "register", "regstats", - "relenc", "relsize", "repeatindex", "rjlparshap", "rlepsf", - "rmpage", "robustcommand", "robustindex", "romanbar", - "romanneg", "romannum", "romansh", "rotfloat", "rotpages", - "rtkinenc", "rvwrite", "sauerj", "savefnmark", "savesym", - "savetrees", "scale", "scalebar", "sdrt", "secdot", - "sectionbox", "sectsty", "selectp", "semantic", "semioneside", - "sepfootnotes", "seqsplit", "serbian-apostrophe", - "serbian-date-lat", "serbian-def-cyr", "serbian-lig", - "serbianc", "sf298", "sffms", "sfmath", "shadow", "shadowtext", - "shadethm", "shapepar", "shipunov", "shorttoc", "show2e", - "showcharinbox", "showexpl", "showlabels", "sidecap", - "sidenotes", "silence", "simplecd", "simplecv", "simplewick", - "sitem", "skb", "skeycommand", "skeyval", "slantsc", - "smalltableof", "smartref", "snapshot", "soul", "spanglish", - "sparklines", "sphack", "spreadtab", "spverbatim", "splitindex", - "spot", "spotcolor", "srbook-mem", "srcltx", "sseq", "stack", - "standalone", "statistik", "stdclsdv", "stdpage", "stex", - "storebox", "storecmd", "stringstrings", "sttools", "stubs", - "subdepth", "subeqn", "subeqnarray", "subfigmat", "subfigure", - "subfiles", "subfloat", "substitutefont", "substr", - "supertabular", "svgcolor", "svn", "svn-multi", "svn-prov", - "syntax", "syntrace", "synttree", "tabfigures", "tableaux", - "tablefootnote", "tablists", "tabls", "tabto-ltx", "tabu", - "tabularborder", "tabularcalc", "tabularew", "tabulary", - "tagging", "talk", "tcldoc", "tcolorbox", "tdclock", "technics", - "ted", "termcal", "termlist", "tex-label", "texlogos", - "texmate", "texments", "texpower", "texshade", "textfit", - "textgreek", "textmerg", "textpos", "theoremref", - "threeparttable", "threeparttablex", "thinsp", "thmtools", - "thumb", "thumbs", "thumby", "ticket", "timesht", "titlefoot", - "titlepic", "titleref", "titlesec", "titling", "tocbibind", - "tocloft", "tocvsec2", "todo", "todonotes", "tokenizer", - "toolbox", "topfloat", "totcount", "totpages", "tram", - "trfsigns", "trimspaces", "trsym", "trivfloat", "truncate", - "tucv", "turnthepage", "twoinone", "twoup", "txgreeks", - "type1cm", "typeface", "typogrid", "ucs", "uebungsblatt", - "umoline", "underlin", "undolabl", "units", "upmethodology", - "upquote", "uri", "ushort", "varindex", "varsfromjobname", - "varwidth", "verbasef", "verbatimbox", "verbatimcopy", - "verbdef", "verbments", "version", "versions", "vertbars", - "vhistory", "vmargin", "volumes", "vpe", "vruler", "vwcol", - "wallpaper", "warning", "warpcol", "was", "widetable", - "williams", "wordlike", "wrapfig", "xargs", "xbmc", "xcomment", - "xhfill", "xtab", "xdoc", "xfor", "xifthen", "xmpincl", - "xnewcommand", "xoptarg", "xpatch", "xpunctuate", "xstring", - "xwatermark", "xytree", "yafoot", "yagusylo", "ydoc", "yplan", - "zed-csp", "ziffer", "zwgetfdate", "zwpagelayout" - ] - } -} diff --git a/gs_ctan/__init__.py b/gs_ctan/__init__.py deleted file mode 100644 index cf529d7..0000000 --- a/gs_ctan/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env python - diff --git a/gs_ctan/backend.py b/gs_ctan/backend.py deleted file mode 100644 index 92245e6..0000000 --- a/gs_ctan/backend.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -""" - backend.py - ~~~~~~~~~~ - - CTAN backend - - :copyright: (c) 2013 by Jauhien Piatlicki - :license: GPL-2, see LICENSE for more details. -""" - -import os - -from g_sorcery.backend import Backend -from g_sorcery.metadata import MetadataGenerator -from g_sorcery.eclass import EclassGenerator -from g_sorcery.fileutils import get_pkgpath - -from .ctan_db import CtanDBGenerator -from .ebuild import CtanEbuildWithoutDigestGenerator, CtanEbuildWithDigestGenerator - - -class CtanEclassGenerator(EclassGenerator): - """ - Implementation of eclass generator. Only specifies a data directory. - """ - def __init__(self): - super(CtanEclassGenerator, self).__init__(os.path.join(get_pkgpath(__file__), 'data')) - - -#Backend instance to be loaded by g_sorcery -instance = Backend(CtanDBGenerator, - CtanEbuildWithDigestGenerator, CtanEbuildWithoutDigestGenerator, - CtanEclassGenerator, MetadataGenerator) diff --git a/gs_ctan/ctan_db.py b/gs_ctan/ctan_db.py deleted file mode 100644 index 0f7d939..0000000 --- a/gs_ctan/ctan_db.py +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -""" - ctan_db.py - ~~~~~~~~~~ - - CTAN package database - - :copyright: (c) 2013 by Jauhien Piatlicki - :license: GPL-2, see LICENSE for more details. -""" - -import itertools -import re - -import portage - -from g_sorcery.g_collections import Dependency, Package, serializable_elist -from g_sorcery.package_db import DBGenerator -from g_sorcery.logger import Logger - -class CtanDBGenerator(DBGenerator): - """ - Implementation of database generator for CTAN LaTeX backend. - """ - def __init__(self, package_db_class): - super(CtanDBGenerator, self).__init__(package_db_class) - - logger = Logger() - gentoo_arch = portage.settings['ARCH'] - self.arch = "" - if gentoo_arch == "x86": - self.arch = "i386-linux" - elif gentoo_arch == "amd64": - self.arch = "x86_64-linux" - else: - logger.warning("not supported arch: " + gentoo_arch) - - - def get_download_uries(self, common_config, config): - """ - Get download URI. - """ - tlpdb_uri = config["repo_uri"] + "/tlpkg/texlive.tlpdb.xz" - return [tlpdb_uri] - - def parse_data(self, data_f): - """ - Parse downloaded data. - - Parsed data is a list of dictionaries. - Each dictionary corresponds to one package. - - Args: - data_f: Open file wit data. - - Returns: - Parsed data. - """ - data = data_f.read() - - data = data.split("\n") - - #entries are separated by new lines - data = \ - [list(group) for key, group in itertools.groupby(data, bool) if key] - - #we need only Package entries - data = \ - [entry for entry in data if entry[1] == "category Package"] - - result = [] - - KEY = 0 - VALUE = 1 - FILES_LENGTH = len("files") - - for entry in data: - res_entry = {} - previous_key = "" - current_key = "" - for line in entry: - line = line.split(" ") - if line[KEY][-FILES_LENGTH:] == "files": - current_key = line[KEY] - res_entry[current_key] = {} - for value in line[VALUE:]: - key, val = value.split("=") - res_entry[current_key][key] = val - res_entry[current_key]["files"] = [] - elif not line[KEY]: - res_entry[current_key]["files"].append(" ".join(line[VALUE:])) - elif line[KEY] == "depend": - if "depend" in res_entry: - res_entry["depend"].append(" ".join(line[VALUE:])) - else: - res_entry["depend"] = [" ".join(line[VALUE:])] - else: - if previous_key == line[KEY]: - res_entry[previous_key] += " " + " ".join(line[VALUE:]) - else: - res_entry[line[KEY]] = " ".join(line[VALUE:]) - previous_key = line[KEY] - current_key = "" - - parts = res_entry["name"].split(".") - if len(parts) > 1: - if parts[1] != self.arch: - continue - - result.append(res_entry) - - return result - - def process_data(self, pkg_db, data, common_config, config): - """ - Process parsed data and fill database. - """ - - category = "dev-tex" - - pkg_db.add_category(category) - - ARCH_LENGTH = len("ARCH") - - data = data["texlive.tlpdb"] - - for entry in data: - realname = entry["name"] - - pkgname = realname - parts = pkgname.split(".") - if len(parts) > 1: - pkgname = "_".join(parts) - - if self.in_config([common_config, config], "exclude", pkgname): - continue - - #todo: work on common data vars processing: external deps, filtering etc. - #at the moment just copy necessary code from elpa_db.py - allowed_ords = set(range(ord('a'), ord('z'))) | set(range(ord('A'), ord('Z'))) | \ - set(range(ord('0'), ord('9'))) | set(list(map(ord, - ['+', '_', '-', ' ', '.', '(', ')', '[', ']', '{', '}', ',']))) - - if "shortdesc" in entry: - description = entry["shortdesc"] - else: - description = entry["name"] - description = "".join([x for x in description if ord(x) in allowed_ords]) - - if "longdesc" in entry: - longdescription = entry["longdesc"] - longdescription = "".join([x for x in longdescription if ord(x) in allowed_ords]) - else: - longdescription = description - - if "catalogue-version" in entry: - version = entry["catalogue-version"] - #todo better version checking and processing - match_object = re.match("(^[0-9]+[a-z]?$)|(^[0-9][0-9\.]+[0-9][a-z]?$)", version) - if not match_object: - version = entry["revision"] - else: - version = entry["revision"] - - if "catalogue-license" in entry: - license = self.convert([common_config, config], "licenses", entry["catalogue-license"]) - else: - license = "unknown" - - if "catalogue-ctan" in entry: - source_type = "zip" - base_src_uri = "ftp://tug.ctan.org/pub/tex-archive" - catalogue = entry["catalogue-ctan"] - homepage = "http://www.ctan.org/tex-archive" + catalogue - catalogue = catalogue[:-len(realname)] - else: - source_type = "tar.xz" - base_src_uri = "http://mirror.ctan.org/systems/texlive/tlnet/archive/" - catalogue = "" - homepage = "http://www.ctan.org/tex-archive/systems/texlive/tlnet" - - dependencies = serializable_elist(separator="\n\t") - - if "depend" in entry: - for dependency in entry["depend"]: - if dependency[-ARCH_LENGTH:] == "ARCH": - dependency = dependency[:-ARCH_LENGTH-1] + "_" + self.arch - dependencies.append(Dependency(category, dependency)) - - ebuild_data = {"realname" : realname, - "description" : description, - "homepage" : homepage, - "license" : license, - "source_type" : source_type, - "base_src_uri" : base_src_uri, - "catalogue" : catalogue, - "dependencies" : dependencies, - "depend" : dependencies, - "rdepend" : dependencies, - #eclass entry - 'eclasses' : ['gs-ctan'], - #metadata entries - 'maintainer' : [{'email' : 'piatlicki@gmail.com', - 'name' : 'Jauhien Piatlicki'}], - 'longdescription' : longdescription - } - - pkg_db.add_package(Package(category, pkgname, version), ebuild_data) diff --git a/gs_ctan/data/gs-ctan.eclass b/gs_ctan/data/gs-ctan.eclass deleted file mode 100644 index b2124ed..0000000 --- a/gs_ctan/data/gs-ctan.eclass +++ /dev/null @@ -1,102 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ -# automatically generated by gs-ctan -# please do not edit this file -# -# TODO: write common base eclass for g-sorcery -# -# Original Author: Jauhien Piatlicki -# Purpose: support installation of latex packages -# from overlays generated by gs-ctan -# -# Bugs to piatlicki@gmail.com -# -# @ECLASS: gs-ctan.eclass -# -# @ECLASS-VARIABLE: BASE_SRC_URI -# @DESCRIPTION: address of a repository with packages -# -# @ECLASS-VARIABLE: CATALOGUE -# @DESCRIPTION: directory on the server where package lives -# -# @ECLASS-VARIABLE: SOURCE_TYPE -# @DESCRIPTION: type of a package (zip or tar.xz) -# -# @ECLASS-VARIABLE: DIGEST_SOURCES -# @DESCRIPTION: whether manifest for sources exists -# -# @ECLASS-VARIABLE: REALNAME -# @DESCRIPTION: real name of a package in the repository -# -# @ECLASS-VARIABLE: GSCTAN_STORE_DIR -# @DESCRIPTION: store location for downloaded sources -GSCTAN_STORE_DIR="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}" -# -# @ECLASS-VARIABLE: GSCTAN_FETCH_CMD -# @DESCRIPTION: fetch command -GSCTAN_FETCH_CMD="wget" - -inherit latex-package - -if [[ ${SOURCE_TYPE} = "zip" ]]; then - EXPORT_FUNCTIONS src_{unpack,compile,install} -else - EXPORT_FUNCTIONS src_{unpack,install} -fi - -SUFFIX="${SOURCE_TYPE}" -SOURCEFILE=${REALNAME}.${SUFFIX} - -gs-ctan_fetch() { - addwrite "${GSCTAN_STORE_DIR}" - pushd "${GSCTAN_STORE_DIR}" >/dev/null || die "can't chdir to ${GSCTAN_STORE_DIR}" - if [[ ! -f "${SOURCEFILE}" ]]; then - $GSCTAN_FETCH_CMD ${BASE_SRC_URI}${CATALOGUE}${SOURCEFILE} || die - fi - popd >/dev/null || die -} - -gs-ctan_src_unpack() { - if [[ ${SOURCE_TYPE} = "zip" ]]; then - if [[ x${DIGEST_SOURCES} = x ]]; then - gs-ctan_fetch - fi - cp ${GSCTAN_STORE_DIR}/${SOURCEFILE} . || die - unzip ${SOURCEFILE} || die - mv ${PN} ${P} || die - else - if [[ x${DIGEST_SOURCES} = x ]]; then - gs-ctan_fetch - fi - mkdir ${S} || die - cd ${S} || die - tar xvf ${GSCTAN_STORE_DIR}/${SOURCEFILE} || die - rm -rf tlpkg || die - fi -} - -gs-ctan_src_compile() { - cd ${S} || die - latex-package_src_compile - for d in `ls -d -- */`; do - pushd ${d} || die - latex-package_src_compile - popd || die - done -} - -gs-ctan_src_install() { - if [[ ${SOURCE_TYPE} = "zip" ]]; then - cd ${S} || die - latex-package_src_install - for d in `ls -d -- */`; do - pushd ${d} || die - latex-package_src_install - popd || die - done - else - insinto ${TEXMF} - doins -r * - fi -} diff --git a/gs_ctan/ebuild.py b/gs_ctan/ebuild.py deleted file mode 100644 index 2ba154b..0000000 --- a/gs_ctan/ebuild.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -""" - ebuild.py - ~~~~~~~~~ - - ebuild generation - - :copyright: (c) 2013 by Jauhien Piatlicki - :license: GPL-2, see LICENSE for more details. -""" - -import collections - -from g_sorcery.ebuild import DefaultEbuildGenerator - -Layout = collections.namedtuple("Layout", - ["vars_before_inherit", "inherit", "vars_after_description", "vars_after_keywords"]) - - -class CtanEbuildWithoutDigestGenerator(DefaultEbuildGenerator): - """ - Implementation of ebuild generator without sources digesting. - """ - def __init__(self, package_db): - - vars_before_inherit = \ - ["base_src_uri", "catalogue", "source_type", "realname"] - - inherit = ["gs-ctan"] - - vars_after_description = \ - ["homepage", {"name" : "src_uri", "value" : ""}, "license"] - - vars_after_keywords = \ - ["depend", "rdepend"] - - layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords) - - super(CtanEbuildWithoutDigestGenerator, self).__init__(package_db, layout) - -class CtanEbuildWithDigestGenerator(DefaultEbuildGenerator): - """ - Implementation of ebuild generator with sources digesting. - """ - def __init__(self, package_db): - - vars_before_inherit = \ - ["base_src_uri", "catalogue", "source_type", "realname", {"name" : "digest_sources", "value" : "yes"}] - - inherit = ["gs-ctan"] - - vars_after_description = \ - ["homepage", {"name" : "src_uri", "value" : "${BASE_SRC_URI}${CATALOGUE}${REALNAME}.${SOURCE_TYPE} -> ${P}.${SOURCE_TYPE}"}, "license"] - - vars_after_keywords = \ - ["depend", "rdepend"] - - layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords) - - super(CtanEbuildWithDigestGenerator, self).__init__(package_db, layout) diff --git a/setup.py b/setup.py index 9a1291a..80e8421 100644 --- a/setup.py +++ b/setup.py @@ -7,16 +7,13 @@ setup(name = 'g-sorcery', description = 'g-sorcery framework for automated ebuild generators', author = 'Jauhien Piatlicki', author_email = 'jauhien@gentoo.org', - packages = ['g_sorcery', 'gs_db_tool', 'gs_ctan', 'gs_pypi'], + packages = ['g_sorcery', 'gs_db_tool', 'gs_pypi'], package_data = {'g_sorcery': ['data/*'], - 'gs_pypi': ['data/*'], - 'gs_ctan': ['data/*']}, + 'gs_pypi': ['data/*']}, scripts = ['bin/g-sorcery', 'bin/gs-db-tool', - 'bin/gs-ctan', 'bin/gs-pypi-generate-db', 'bin/gs-pypi'], - data_files = [('/etc/g-sorcery/', ['gs-ctan.json']), - ('/etc/g-sorcery/', ['gs-pypi.json']), + 'bin/gs-pypi-generate-db', 'bin/gs-pypi'], + data_files = [('/etc/g-sorcery/', ['gs-pypi.json']), ('/etc/g-sorcery/', ['g-sorcery.cfg']), - ('/etc/layman/overlays/', ['gs-ctan-overlays.xml']), ('/etc/layman/overlays/', ['gs-pypi-overlays.xml'])], license = 'GPL', ) -- cgit v1.2.3-65-gdbad