aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md132
-rwxr-xr-xbin/gs-ctan3
-rwxr-xr-xbin/gs-elpa3
-rw-r--r--bin/gs-pypi3
-rwxr-xr-xbin/gs-pypi-generate-db18
-rw-r--r--docs/Makefile2
-rw-r--r--docs/developer_instructions.html2
-rw-r--r--docs/developer_instructions.rst2
-rw-r--r--docs/g-sorcery.86
-rw-r--r--docs/g-sorcery.8.rst6
-rw-r--r--docs/g-sorcery.cfg.86
-rw-r--r--docs/g-sorcery.cfg.8.rst6
-rw-r--r--docs/gs-ctan.8153
-rw-r--r--docs/gs-ctan.8.rst130
-rw-r--r--docs/gs-elpa.8165
-rw-r--r--docs/gs-elpa.8.rst144
-rw-r--r--docs/gs-pypi.8153
-rw-r--r--docs/gs-pypi.8.rst130
-rw-r--r--gs-ctan-overlays.xml14
-rw-r--r--gs-ctan.json706
-rw-r--r--gs-elpa-overlays.xml34
-rw-r--r--gs-elpa.json54
-rw-r--r--gs-pypi-overlays.xml14
-rw-r--r--gs-pypi.json46
-rw-r--r--gs_ctan/__init__.py2
-rw-r--r--gs_ctan/backend.py36
-rw-r--r--gs_ctan/ctan_db.py210
-rw-r--r--gs_ctan/data/gs-ctan.eclass102
-rw-r--r--gs_ctan/ebuild.py62
-rw-r--r--gs_elpa/__init__.py2
-rw-r--r--gs_elpa/backend.py37
-rw-r--r--gs_elpa/data/gs-elpa.eclass63
-rw-r--r--gs_elpa/ebuild.py65
-rw-r--r--gs_elpa/elpa_db.py130
-rw-r--r--gs_pypi/__init__.py2
-rw-r--r--gs_pypi/backend.py35
-rw-r--r--gs_pypi/data/gs-pypi.eclass15
-rw-r--r--gs_pypi/ebuild.py67
-rw-r--r--gs_pypi/gs_pypi_generate_db.py60
-rw-r--r--gs_pypi/pypi_db.py289
-rw-r--r--setup.py24
41 files changed, 36 insertions, 3097 deletions
diff --git a/README.md b/README.md
index 0e26fb6..9bdd5b7 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,15 @@
+Usage
+=====
+
+This project is a framework, you may be interested in it only if
+you want to develop your own ebuild generator.
+
+As user you may be interested in already implemented ones:
+[gs-elpa](https://github.com/jauhien/gs-elpa) and
+[gs-pypi](https://github.com/jauhien/gs-pypi).
+
+User instructions in gs-elpa are more complete, so consult them for how to use.
+
Objective
=========
@@ -10,123 +22,7 @@ maintained ebuilds in Gentoo tree or even in overlays. Installing such
a software with its own distribution system does not seem like a good
idea, especially if one needs to install it system-wide.
-There is a number of solutions for this problem in Gentoo. But here
-another problem lies: there are special dedicated “g-helpers” for a
-number of 3rd party software providers. But, as Rafael Martins states
-“each one tries to solve the very same problems on its own unique and
-"innovative" way”. While it would be really nice to have a solid base
-framework with realization of all the basic algorithms necessary for
-ebuild and overlay generation, with uniform UI and with good
-integration with system package manager.
-
-Deliverables
-
-At the end of the project there should be a framework and number of
-backends for some of the 3rd party software providers. This framework
-should make writing of those g-helpers easier and regular.
-
-At the moment I see this framework as a number of classes in Python
-that can be inherited and expanded in backends with the specific
-logic. All the logic related to the interaction with user, portage and
-overlay tools should be implemented in the framework and normally
-should not be changed by backends. Integration with system may need
-patching of some existing tools (like layman).
-
-Framework should have: - basic logic for ebuild and overlay
-manipulation, dependencies resolving, patching and so on - cli, that
-allows users to generate separate ebuilds and even overlays with
-available backends - integration with other system tools (I mean
-layman, as I'm not really familiar with tools used by other package
-manglers. But supporting them would be a good idea as well).
-
-Backend should have everything specific for a given 3rd party software
-provider: concrete algorithms for ebuild-generation, eclasses,
-databases with information about available software and so on.
-
-Installation and using
-======================
-
-You should emerge **app-portage/layman-9999**.
-
-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**.
-
-Here is an example of using gs-elpa backend.
-
-There are two ways of using **gs-elpa**:
-
-* 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 **g-sorcery**.
-
-Using **g-sorcery** with layman you can populate overlay only with packages you want.
-To do so you should add a section named BACKEND (BACKEND here is the name of backend used for
-your repo). In this section you can add entries named REPO_packages (REPO here is the name
-of repository you want to add) which are space separated lists of packages you need. ebuilds for
-dependencies will be generated automatically if backend supports this possibility.
-
-Note, that some overlays may depend on other overlays, in this case you'll need to add those
-dependencies first.
-
-
-* 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-elpa** tool.
-
-**Using gs-elpa with layman**
-
-Execute
-
-**layman -L**
-
-Find there an overlay you need (there are
-3 gs-elpa overlays currently: gnu-elpa, marmalade and melpa).
-Add, e.g.
-
-**layman -a gnu-elpa -a marmalade**
-
-Emerge any package from it, e.g.
-
-**emerge -va clojure-mode**
-
-To generate only ebuilds we need such a */etc/g-sorcery/g-sorcery.cfg* file can be used:
-
-```
-[main]
-package_manager=portage
-
-[gs-elpa]
-marmalade_packages = clojure-mode clojurescript-mode
-```
-
-
-**Generating user ebuilds in user overlay**
-
-Create new user overlay. Run
-
-**gs-elpa -o** *OVERLAY_DIRECTORY* **-r gnu-elpa** **sync**
-
-List packages:
-
-**gs-elpa -o** *OVERLAY_DIRECTORY* **-r gnu-elpa** **list**
-
-Install any package you want:
-
-**gs-elpa -o** *OVERLAY_DIRECTORY* **-r gnu-elpa** **install** *PACKAGE*
-
-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.
+This project is aimed to create a framework for ebuild-generators for
+3rd party software providers.
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/bin/gs-elpa b/bin/gs-elpa
deleted file mode 100755
index ce096fa..0000000
--- a/bin/gs-elpa
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-g-sorcery gs-elpa $@
diff --git a/bin/gs-pypi b/bin/gs-pypi
deleted file mode 100644
index fbaabd4..0000000
--- a/bin/gs-pypi
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-g-sorcery gs-pypi $@
diff --git a/bin/gs-pypi-generate-db b/bin/gs-pypi-generate-db
deleted file mode 100755
index 81710ec..0000000
--- a/bin/gs-pypi-generate-db
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- gs-pypi-generate-db
- ~~~~~~~~~~~~~~~~~~~
-
- PyPI database generation
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import sys
-from gs_pypi import gs_pypi_generate_db
-
-if __name__ == "__main__":
- sys.exit(gs_pypi_generate_db.main())
diff --git a/docs/Makefile b/docs/Makefile
index cba7bc8..6c47097 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-elpa gs-pypi gs-ctan
+MAN_SOURCES=g-sorcery g-sorcery.cfg
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.</p>
<p>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.</p>
<p>Also you should write an executable that calls g-sorcery and some configs.</p>
-<p>To have better understanding you can look at gs-elpa, gs-ctan and gs-pypi backends available
+<p>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.</p>
<p>Note that there is a tool for editing generated database named <strong>gs-db-tool</strong>.</p>
</div>
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..1d2f353 100644
--- a/docs/g-sorcery.8
+++ b/docs/g-sorcery.8
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH G-SORCERY 8 "2013-08-04" "0.1" "g-sorcery"
+.TH G-SORCERY 8 "2014-05-10" "0.1" "g-sorcery"
.SH NAME
g-sorcery \- manage overlays for 3rd party software providers
.
@@ -127,12 +127,12 @@ 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 <piatlicki@gmail.com>. GSoC idea
and mentorship by Rafael Martins. Lots of help and improvements
by Brian Dolbec. Integration with layman based on work of Auke Booij.
.SH COPYRIGHT
-Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2
+Copyright (c) 2013-2014 Jauhien Piatlicki, License: GPL-2
.\" Generated by docutils manpage writer.
.
diff --git a/docs/g-sorcery.8.rst b/docs/g-sorcery.8.rst
index 121b571..86f7e66 100644
--- a/docs/g-sorcery.8.rst
+++ b/docs/g-sorcery.8.rst
@@ -9,8 +9,8 @@ manage overlays for 3rd party software providers
:Author: Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
and mentorship by Rafael Martins. Lots of help and improvements
by Brian Dolbec. Integration with layman based on work of Auke Booij.
-:Date: 2013-08-04
-:Copyright: Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2
+:Date: 2014-05-10
+:Copyright: Copyright (c) 2013-2014 Jauhien Piatlicki, License: GPL-2
:Version: 0.1
:Manual section: 8
:Manual group: g-sorcery
@@ -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..9167c29 100644
--- a/docs/g-sorcery.cfg.8
+++ b/docs/g-sorcery.cfg.8
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH G-SORCERY.CFG 8 "2013-09-20" "0.1" "g-sorcery"
+.TH G-SORCERY.CFG 8 "2014-05-10" "0.1" "g-sorcery"
.SH NAME
g-sorcery.cfg \- custom settings for g-sorcery
.
@@ -63,12 +63,12 @@ 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 <piatlicki@gmail.com>. 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
+Copyright (c) 2013-2014 Jauhien Piatlicki, License: GPL-2
.\" Generated by docutils manpage writer.
.
diff --git a/docs/g-sorcery.cfg.8.rst b/docs/g-sorcery.cfg.8.rst
index 50a732c..930b4db 100644
--- a/docs/g-sorcery.cfg.8.rst
+++ b/docs/g-sorcery.cfg.8.rst
@@ -9,8 +9,8 @@ custom settings for g-sorcery
:Author: Written by Jauhien Piatlicki <piatlicki@gmail.com>. GSoC idea
and mentorship by Rafael Martins. Lots of help and improvements
by Brian Dolbec.
-:Date: 2013-09-20
-:Copyright: Copyright (c) 2013 Jauhien Piatlicki, License: GPL-2
+:Date: 2014-05-10
+:Copyright: Copyright (c) 2013-2014 Jauhien Piatlicki, License: GPL-2
:Version: 0.1
:Manual section: 8
:Manual group: g-sorcery
@@ -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 <piatlicki@gmail.com>. 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 <piatlicki@gmail.com>. 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-elpa.8 b/docs/gs-elpa.8
deleted file mode 100644
index cd71794..0000000
--- a/docs/gs-elpa.8
+++ /dev/null
@@ -1,165 +0,0 @@
-.\" Man page generated from reStructuredText.
-.
-.TH GS-ELPA 8 "2013-08-04" "0.1" "g-sorcery"
-.SH NAME
-gs-elpa \- manage overlays for ELPA repositories
-.
-.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\-elpa\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBsync\fP
-.sp
-\fBgs\-elpa\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBlist\fP
-.sp
-\fBgs\-elpa\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\fP \fIPACKAGE\fP
-.sp
-\fBgs\-elpa\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBinstall\fP \fIPACKAGE\fP
-.sp
-\fBgs\-elpa\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\-tree\fP [\fB\-d\fP]
-.SH DESCRIPTION
-.sp
-\fBgs\-elpa\fP is an ebuild generator for ELPA repositories \-\- repositories with
-elisp packages for emacs.
-.sp
-There are two ways of using \fBgs\-elpa\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\-elpa\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\-elpa\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. Can be one of \fBgnu\-elpa\fP, \fBmarmalade\fP, \fBmelpa\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\-elpa.json\fP
-Backend config.
-.TP
-.B \fB/etc/layman/overlays/gs\-elpa\-overlays.xml\fP
-List of available repositories.
-.UNINDENT
-.SH EXAMPLES
-.INDENT 0.0
-.TP
-.B Using gs\-elpa with layman
-Execute
-.sp
-\fBlayman \-L\fP
-.sp
-Find there an overlay you need (there are
-3 gs\-elpa overlays currently: gnu\-elpa, marmalade and melpa).
-Add, e.g.
-.sp
-\fBlayman \-a gnu\-elpa \-a marmalade\fP
-.sp
-Emerge any package from it, e.g.
-.sp
-\fBemerge \-va clojure\-mode\fP
-.TP
-.B Generating user ebuilds in user overlay
-Create new user overlay. Run
-.sp
-\fBgs\-elpa \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r gnu\-elpa\fP \fBsync\fP
-.sp
-List packages:
-.sp
-\fBgs\-elpa \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r gnu\-elpa\fP \fBlist\fP
-.sp
-Install any package you want:
-.sp
-\fBgs\-elpa \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r gnu\-elpa\fP \fBinstall\fP \fIPACKAGE\fP
-.sp
-Repositories you can use are gnu\-elpa, marmalade and melpa. You can use them
-all in one overlay. 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\-elpa\fP supports is \fBportage\fP.
-.UNINDENT
-.SH BUGS
-.sp
-Some packages in \fBmarmalade\fP and \fBmelpa\fP depend on packages from gnu\-elpa. \fBinstall\fP and \fBgenerate\fP
-commands will fail on them as dependencies between overlays are not supported currently. So the
-recommended way of using gs\-elpa is using it with layman. Even doing so you should always add
-gnu\-elpa repository: \fBlayman \-a gnu\-elpa\fP.
-.SH SEE ALSO
-.sp
-\fBgs\-pypi\fP(8), \fBgs\-ctan\fP(8), \fBg\-sorcery.cfg\fP(8), \fBportage\fP(5), \fBemerge\fP(1), \fBlayman\fP(8)
-.SH AUTHOR
-Written by Jauhien Piatlicki <piatlicki@gmail.com>. 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-elpa.8.rst b/docs/gs-elpa.8.rst
deleted file mode 100644
index 008c30e..0000000
--- a/docs/gs-elpa.8.rst
+++ /dev/null
@@ -1,144 +0,0 @@
-=======
-gs-elpa
-=======
-
--------------------------------------
-manage overlays for ELPA repositories
--------------------------------------
-
-:Author: Written by Jauhien Piatlicki <piatlicki@gmail.com>. 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-elpa** **-o** *OVERLAY* [**-r** *REPO*] **sync**
-
-**gs-elpa** **-o** *OVERLAY* [**-r** *REPO*] **list**
-
-**gs-elpa** **-o** *OVERLAY* [**-r** *REPO*] **generate** *PACKAGE*
-
-**gs-elpa** **-o** *OVERLAY* [**-r** *REPO*] **install** *PACKAGE*
-
-**gs-elpa** **-o** *OVERLAY* [**-r** *REPO*] **generate-tree** [**-d**]
-
-DESCRIPTION
-===========
-
-**gs-elpa** is an ebuild generator for ELPA repositories -- repositories with
-elisp packages for emacs.
-
-There are two ways of using **gs-elpa**:
-
- * 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-elpa**.
-
- * 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-elpa** 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. Can be one of **gnu-elpa**, **marmalade**, **melpa**.
-
-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-elpa.json**
- Backend config.
-
-**/etc/layman/overlays/gs-elpa-overlays.xml**
- List of available repositories.
-
-EXAMPLES
-========
-
-Using gs-elpa with layman
- Execute
-
- **layman -L**
-
- Find there an overlay you need (there are
- 3 gs-elpa overlays currently: gnu-elpa, marmalade and melpa).
- Add, e.g.
-
- **layman -a gnu-elpa -a marmalade**
-
- Emerge any package from it, e.g.
-
- **emerge -va clojure-mode**
-
-Generating user ebuilds in user overlay
- Create new user overlay. Run
-
- **gs-elpa -o** *OVERLAY_DIRECTORY* **-r gnu-elpa** **sync**
-
- List packages:
-
- **gs-elpa -o** *OVERLAY_DIRECTORY* **-r gnu-elpa** **list**
-
- Install any package you want:
-
- **gs-elpa -o** *OVERLAY_DIRECTORY* **-r gnu-elpa** **install** *PACKAGE*
-
- 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!
-
-NOTES
-=====
-
-1. At the moment the only package mangler **gs-elpa** supports is **portage**.
-
-BUGS
-====
-
-Some packages in **marmalade** and **melpa** depend on packages from gnu-elpa. **install** and **generate**
-commands will fail on them as dependencies between overlays are not supported currently. So the
-recommended way of using gs-elpa is using it with layman. Even doing so you should always add
-gnu-elpa repository: **layman -a gnu-elpa**.
-
-SEE ALSO
-========
-
-**gs-pypi**\(8), **gs-ctan**\(8), **g-sorcery.cfg**\(8), **portage**\(5), **emerge**\(1), **layman**\(8)
diff --git a/docs/gs-pypi.8 b/docs/gs-pypi.8
deleted file mode 100644
index 633de7d..0000000
--- a/docs/gs-pypi.8
+++ /dev/null
@@ -1,153 +0,0 @@
-.\" Man page generated from reStructuredText.
-.
-.TH GS-PYPI 8 "2013-08-04" "0.1" "g-sorcery"
-.SH NAME
-gs-pypi \- manage overlays for PYPI 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\-pypi\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBsync\fP
-.sp
-\fBgs\-pypi\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBlist\fP
-.sp
-\fBgs\-pypi\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\fP \fIPACKAGE\fP
-.sp
-\fBgs\-pypi\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBinstall\fP \fIPACKAGE\fP
-.sp
-\fBgs\-pypi\fP \fB\-o\fP \fIOVERLAY\fP [\fB\-r\fP \fIREPO\fP] \fBgenerate\-tree\fP [\fB\-d\fP]
-.SH DESCRIPTION
-.sp
-\fBgs\-pypi\fP is an ebuild generator for PYPI PYTHON repository.
-.sp
-There are two ways of using \fBgs\-pypi\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\-pypi\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\-pypi\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\-pypi.json\fP
-Backend config.
-.TP
-.B \fB/etc/layman/overlays/gs\-pypi\-overlays.xml\fP
-List of available repositories.
-.UNINDENT
-.SH EXAMPLES
-.INDENT 0.0
-.TP
-.B Using gs\-pypi with layman
-Execute
-.sp
-\fBlayman \-L\fP
-.sp
-If you see there a \fBpypi\fP overlay then anything should work.
-.sp
-\fBlayman \-a pypi\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\-pypi \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBsync\fP
-.sp
-List packages:
-.sp
-\fBgs\-pypi \-o\fP \fIOVERLAY_DIRECTORY\fP \fB\-r ctan\fP \fBlist\fP
-.sp
-Install any package you want:
-.sp
-\fBgs\-pypi \-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\-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)
-.SH AUTHOR
-Written by Jauhien Piatlicki <piatlicki@gmail.com>. 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-pypi.8.rst b/docs/gs-pypi.8.rst
deleted file mode 100644
index d5c7c07..0000000
--- a/docs/gs-pypi.8.rst
+++ /dev/null
@@ -1,130 +0,0 @@
-=======
-gs-pypi
-=======
-
------------------------------------
-manage overlays for PYPI repository
------------------------------------
-
-:Author: Written by Jauhien Piatlicki <piatlicki@gmail.com>. 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-pypi** **-o** *OVERLAY* [**-r** *REPO*] **sync**
-
-**gs-pypi** **-o** *OVERLAY* [**-r** *REPO*] **list**
-
-**gs-pypi** **-o** *OVERLAY* [**-r** *REPO*] **generate** *PACKAGE*
-
-**gs-pypi** **-o** *OVERLAY* [**-r** *REPO*] **install** *PACKAGE*
-
-**gs-pypi** **-o** *OVERLAY* [**-r** *REPO*] **generate-tree** [**-d**]
-
-DESCRIPTION
-===========
-
-**gs-pypi** is an ebuild generator for PYPI PYTHON repository.
-
-There are two ways of using **gs-pypi**:
-
- * 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-pypi**.
-
- * 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-pypi** 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-pypi.json**
- Backend config.
-
-**/etc/layman/overlays/gs-pypi-overlays.xml**
- List of available repositories.
-
-EXAMPLES
-========
-
-Using gs-pypi with layman
- Execute
-
- **layman -L**
-
- If you see there a **pypi** overlay then anything should work.
-
- **layman -a pypi**
-
- Emerge any package from it using **emerge**.
-
-Generating user ebuilds in user overlay
- Create new user overlay. Run
-
- **gs-pypi -o** *OVERLAY_DIRECTORY* **-r ctan** **sync**
-
- List packages:
-
- **gs-pypi -o** *OVERLAY_DIRECTORY* **-r ctan** **list**
-
- Install any package you want:
-
- **gs-pypi -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-pypi** supports is **portage**.
-
-SEE ALSO
-========
-
-**gs-elpa**\(8), **gs-ctan**\(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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE repositories SYSTEM "/dtd/repositories.dtd">
-<repositories xmlns="" version="1.0">
-<repo quality="experimental" status="unofficial">
- <name>ctan</name>
- <description>CTAN packages</description>
- <homepage>http://www.ctan.org/</homepage>
- <owner>
- <email>piatlicki@gmail.com</email>
- <name>Jauhien Piatlicki</name>
- </owner>
- <source type="g-sorcery">gs-ctan ctan</source>
-</repo>
-</repositories>
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-elpa-overlays.xml b/gs-elpa-overlays.xml
deleted file mode 100644
index b3dd883..0000000
--- a/gs-elpa-overlays.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE repositories SYSTEM "/dtd/repositories.dtd">
-<repositories xmlns="" version="1.0">
-<repo quality="experimental" status="unofficial">
- <name>gnu-elpa</name>
- <description>packages for emacs</description>
- <homepage>http://elpa.gnu.org/</homepage>
- <owner>
- <email>piatlicki@gmail.com</email>
- <name>Jauhien Piatlicki</name>
- </owner>
- <source type="g-sorcery">gs-elpa gnu-elpa</source>
-</repo>
-<repo quality="experimental" status="unofficial">
- <name>marmalade</name>
- <description>packages for emacs</description>
- <homepage>http://marmalade-repo.org/</homepage>
- <owner>
- <email>piatlicki@gmail.com</email>
- <name>Jauhien Piatlicki</name>
- </owner>
- <source type="g-sorcery">gs-elpa marmalade</source>
-</repo>
-<repo quality="experimental" status="unofficial">
- <name>melpa</name>
- <description>packages for emacs</description>
- <homepage>http://melpa.milkbox.net</homepage>
- <owner>
- <email>piatlicki@gmail.com</email>
- <name>Jauhien Piatlicki</name>
- </owner>
- <source type="g-sorcery">gs-elpa melpa</source>
-</repo>
-</repositories>
diff --git a/gs-elpa.json b/gs-elpa.json
deleted file mode 100644
index a4accde..0000000
--- a/gs-elpa.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "backend": "gs-elpa",
- "package": "gs_elpa",
- "repositories": {
- "gnu-elpa": {
- "repo_uri": "http://elpa.gnu.org/packages/"
- },
- "marmalade": {
- "repo_uri": "http://marmalade-repo.org/packages/",
- "masters": ["gentoo", "gnu-elpa"]
- },
- "melpa": {
- "repo_uri": "http://melpa.milkbox.net/packages/",
- "masters": ["gentoo", "gnu-elpa"]
- }
- },
- "common_config": {
- "exclude": [
- "actionscript-mode", "alt-font-menu", "analog", "anything",
- "apache-mode", "apel", "auctex", "autoconf-mode",
- "bbdb", "binclock", "blogmax", "bm", "bongo", "boxquote", "browse-kill-ring",
- "bubblet", "calfw", "cedet", "chess", "circe", "cldoc", "cmail", "color-browser",
- "color-moccur", "color-theme", "company-mode", "cperl-mode",
- "crontab-mode", "crypt++", "csharp-mode", "css-mode", "csv-mode",
- "ddskk", "delicious", "develock", "df-mode", "dictionary", "dircolors",
- "dired-sort-menu", "distel", "doctest-mode", "doxymacs", "dropdown-list",
- "ebuild-mode", "ecb", "edb", "edit-list", "elib", "elscreen",
- "emacs-common-gentoo", "emacs-daemon", "emacs-jabber",
- "emacs-wm", "emacs-wget", "emacs-wiki", "emacs-wiki-blog",
- "emhacks", "emms", "eperiodic", "erc", "erobot", "eselect-mode", "ess",
- "evil", "fff", "filladapt", "flashcard", "flim", "folding", "gnuserv",
- "gnuserv-programs", "google-c-style", "graphviz-dot-mode",
- "grep-edit", "h4x0r", "haskell-mode", "highline", "howm", "htmlize",
- "http-emacs", "httpd", "icicles", "identica-mode", "igrep", "imaxima", "inform-mode",
- "initsplit", "jam-mode", "jasmin", "javascript", "jde", "keywiz", "limit",
- "lookup", "lua-mode", "lyskom-elisp-client", "magit", "mailcrypt", "mairix", "markdown-mode",
- "matlab", "mcomplete", "mell", "mew", "mic-paren", "mldonkey", "mmm-mode",
- "moccur-edit", "mode-compile", "mpg123-el", "mu-cite", "muse", "nagios-mode", "navi2ch",
- "nxml-docbook5-schemas", "nxml-gentoo-schemas", "nxml-libvirt-schemas", "nxml-mode",
- "nxml-svg-schemas", "ocaml-mode", "org-mode",
- "outline-magic", "paredit", "parenface1.1", "php-mode",
- "planner", "po-mode", "po.foo", "po.elscreen",
- "popwin", "pov-mode", "prime-el", "prom-wl", "proofgeneral", "protbuf",
- "psgml", "pymacs", "python-mode", "quack", "quilt-el", "qwerty", "redo", "regress", "remember",
- "rfcview", "riece", "rnc-mode", "rpm-spec-mode", "ruby-mode", "rudel", "sawfish", "scala-mode",
- "scheme-complete", "scss-mode", "semi", "session", "setnu", "slime", "sml-mode", "sokoban", "ssh",
- "stripes", "sumibi", "tdtd", "teco", "template", "tempo-snippets", "thinks", "thumbs", "tnt",
- "tuareg-mode", "twittering-mode", "typing", "u-vm-color", "uboat", "undo-tree", "uptimes",
- "vhdl-mode", "view-process", "vm", "volume", "w3mnav", "wanderlust", "whine", "wikipedia-mode", "xclip",
- "xrdb-mode", "xslide", "yaml-mode", "yasnippet", "yatex", "yc", "zenburn", "yyzenirc"
- ],
- "external": {"emacs": "virtual/emacs", "cl-lib": "virtual/emacs"}
- }
-}
diff --git a/gs-pypi-overlays.xml b/gs-pypi-overlays.xml
deleted file mode 100644
index 6aba9e7..0000000
--- a/gs-pypi-overlays.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE repositories SYSTEM "/dtd/repositories.dtd">
-<repositories xmlns="" version="1.0">
-<repo quality="experimental" status="unofficial">
- <name>pypi</name>
- <description>python packages</description>
- <homepage>https://pypi.python.org/pypi</homepage>
- <owner>
- <email>piatlicki@gmail.com</email>
- <name>Jauhien Piatlicki</name>
- </owner>
- <source type="g-sorcery">gs-pypi pypi</source>
-</repo>
-</repositories>
diff --git a/gs-pypi.json b/gs-pypi.json
deleted file mode 100644
index 7c239a7..0000000
--- a/gs-pypi.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "backend": "gs-pypi",
- "package": "gs_pypi",
- "repositories": {
- "pypi": {
- "repo_uri": "https://pypi.python.org/",
- "db_uri": "https://github.com/jauhien/gs-pypi-db/archive/master.tar.gz"
- }
- },
- "common_config": {
- "licenses": {
- "Academic Free License (AFL)": "AFL-3.0",
- "Aladdin Free Public License (AFPL)": "Aladdin",
- "Apache Software License": "Apache-2.0",
- "Artistic License": "Artistic",
- "BSD License": "BSD",
- "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication": "CC0-1.0",
- "Common Public License": "CPL-1.0",
- "GNU Affero General Public License v3": "AGPL-3",
- "GNU Affero General Public License v3 or later (AGPLv3+)": "AGPL-3",
- "GNU Free Documentation License (FDL)": "FDL-1.1+",
- "GNU General Public License (GPL)": "GPL-1+",
- "GNU General Public License v2 (GPLv2)": "GPL-2",
- "GNU General Public License v2 or later (GPLv2+)": "GPL-2+",
- "GNU General Public License v3 (GPLv3)": "GPL-3",
- "GNU General Public License v3 or later (GPLv3+)": "GPL-3+",
- "GNU Lesser General Public License v2 (LGPLv2)": "LGPL-2",
- "GNU Lesser General Public License v2 or later (LGPLv2+)": "LGPL-2+",
- "GNU Lesser General Public License v3 (LGPLv3)": "LGPL-3",
- "GNU Lesser General Public License v3 or later (LGPLv3+)": "LGPL-3+",
- "GNU Library or Lesser General Public License (LGPL)": "LGPL-2+",
- "ISC License (ISCL)": "ISC",
- "MIT License": "MIT",
- "Mozilla Public License 1.0 (MPL)": "MPL-1.0",
- "Mozilla Public License 1.1 (MPL 1.1)": "MPL-1.1",
- "Mozilla Public License 2.0 (MPL 2.0)": "MPL-2.0",
- "Public Domain": "public-domain",
- "Python License (CNRI Python License)": "CNRI",
- "Python Software Foundation License": "PYTHON",
- "Repoze Public License": "repoze",
- "W3C License": "W3C",
- "Zope Public License": "ZPL",
- "zlib/libpng License": "ZLIB"
- }
- }
-}
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 <piatlicki@gmail.com>
-# 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/gs_elpa/__init__.py b/gs_elpa/__init__.py
deleted file mode 100644
index cf529d7..0000000
--- a/gs_elpa/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env python
-
diff --git a/gs_elpa/backend.py b/gs_elpa/backend.py
deleted file mode 100644
index 259fab6..0000000
--- a/gs_elpa/backend.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- backend.py
- ~~~~~~~~~~
-
- ELPA 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 .elpa_db import ElpaDBGenerator
-from .ebuild import ElpaEbuildWithDigestGenerator, \
- ElpaEbuildWithoutDigestGenerator
-
-
-class ElpaEclassGenerator(EclassGenerator):
- """
- Implementation of eclass generator. Only specifies a data directory.
- """
- def __init__(self):
- super(ElpaEclassGenerator, self).__init__(os.path.join(get_pkgpath(__file__), 'data'))
-
-
-#Backend instance to be loaded by g_sorcery
-instance = Backend(ElpaDBGenerator,
- ElpaEbuildWithDigestGenerator, ElpaEbuildWithoutDigestGenerator,
- ElpaEclassGenerator, MetadataGenerator)
diff --git a/gs_elpa/data/gs-elpa.eclass b/gs_elpa/data/gs-elpa.eclass
deleted file mode 100644
index c4c85c6..0000000
--- a/gs_elpa/data/gs-elpa.eclass
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-# automatically generated by gs-elpa
-# please do not edit this file
-#
-# Original Author: Jauhien Piatlicki <piatlicki@gmail.com>
-# Purpose: support installation of elisp packages for emacs
-# from overlays generated by gs-elpa
-#
-# Bugs to piatlicki@gmail.com
-#
-# @ECLASS: gs-elpa.eclass
-#
-# @ECLASS-VARIABLE: REPO_URI
-# @DESCRIPTION: address of a repository of elisp packages
-#
-# @ECLASS-VARIABLE: SOURCE_TYPE
-# @DESCRIPTION: type of a package (single or tar)
-#
-# @ECLASS-VARIABLE: DIGEST_SOURCES
-# @DESCRIPTION: whether manifest for sources exists
-#
-# @ECLASS-VARIABLE: REALNAME
-# @DESCRIPTION: real name of a package in the repository
-#
-
-inherit elisp g-sorcery
-
-EXPORT_FUNCTIONS src_{unpack,compile,install}
-
-if [[ ${SOURCE_TYPE} != "single" ]]; then
- SUFFIX="${SOURCE_TYPE}"
-else
- SUFFIX="el"
-fi
-
-SOURCEFILE=${REALNAME}-${PV}.${SUFFIX}
-
-gs-elpa_src_unpack() {
- g-sorcery_src_unpack
- if [[ ${SOURCE_TYPE} = "single" ]]; then
- mkdir ${P} || die
- mv ./${SOURCEFILE} ./${P}/${REALNAME}.${SUFFIX} || die
- fi
-}
-
-gs-elpa_src_compile() {
- rm -f ${PN}-pkg.el || die
- elisp-make-autoload-file || die
- elisp_src_compile || die
-}
-
-gs-elpa_src_install() {
- local sitefile="50${PN}-gentoo.el"
- cat <<EOF >> ${sitefile} || die
-(add-to-list 'load-path "@SITELISP@")
-(load "${PN}-autoloads" nil t)
-EOF
- elisp-site-file-install ${sitefile} || die
- rm -f ${sitefile} || die
- elisp_src_install || die
-}
diff --git a/gs_elpa/ebuild.py b/gs_elpa/ebuild.py
deleted file mode 100644
index d1d63f2..0000000
--- a/gs_elpa/ebuild.py
+++ /dev/null
@@ -1,65 +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 ElpaEbuildWithDigestGenerator(DefaultEbuildGenerator):
- """
- Implementation of ebuild generator with sources digesting.
- """
- def __init__(self, package_db):
-
- vars_before_inherit = \
- ["repo_uri", "source_type", "realname", {"name" : "digest_sources", "value" : "yes"}]
-
- inherit = ["g-sorcery", "gs-elpa"]
-
- vars_after_description = \
- ["homepage", {"name" : "src_uri", "value" : "${REPO_URI}${REALNAME}-${PV}.${SUFFIX}"}]
-
- vars_after_keywords = \
- ["depend", "rdepend"]
-
- layout = Layout(vars_before_inherit,
- inherit, vars_after_description, vars_after_keywords)
-
- super(ElpaEbuildWithDigestGenerator, self).__init__(package_db, layout)
-
-class ElpaEbuildWithoutDigestGenerator(DefaultEbuildGenerator):
- """
- Implementation of ebuild generator without sources digesting.
- """
- def __init__(self, package_db):
-
- vars_before_inherit = \
- ["repo_uri", "source_type", "realname"]
-
- inherit = ["g-sorcery", "gs-elpa"]
-
- vars_after_description = \
- ["homepage"]
-
- vars_after_keywords = \
- ["depend", "rdepend"]
-
- layout = Layout(vars_before_inherit, inherit,
- vars_after_description, vars_after_keywords)
-
- super(ElpaEbuildWithoutDigestGenerator, self).__init__(package_db, layout)
diff --git a/gs_elpa/elpa_db.py b/gs_elpa/elpa_db.py
deleted file mode 100644
index 8f8cd6d..0000000
--- a/gs_elpa/elpa_db.py
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- elpa_db.py
- ~~~~~~~~~~
-
- ELPA package database
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import sexpdata
-
-from g_sorcery.compatibility import py2k
-
-if py2k:
- from urlparse import urljoin
-else:
- from urllib.parse import urljoin
-
-from g_sorcery.g_collections import Dependency, Package, serializable_elist
-from g_sorcery.package_db import DBGenerator
-from g_sorcery.exceptions import SyncError
-
-class ElpaDBGenerator(DBGenerator):
- """
- Implementation of database generator for ELPA backend.
- """
- def get_download_uries(self, common_config, config):
- """
- Download database file from REPO_URI/archive-contents
- and parse it with sexpdata.
-
- Args:
- common_config: Backend config.
- config: Repository config.
-
- Returns:
- List with one URI entry.
- """
- ac_uri = urljoin(config["repo_uri"], 'archive-contents')
- return [{"uri" : ac_uri, "parser" : sexpdata.load}]
-
- def process_data(self, pkg_db, data, common_config, config):
- """
- Process downloaded and parsed data and generate tree.
-
- Args:
- pkg_db: Package database.
- data: Dictionary with data, keys are file names.
- common_config; Backend config.
- config: Repository config.
- """
- archive_contents = data['archive-contents']
- repo_uri = config["repo_uri"]
-
- if sexpdata.car(archive_contents) != 1:
- raise SyncError('sync failed: ' \
- + repo_uri + ' bad archive contents format')
-
- pkg_db.add_category('app-emacs')
-
- PKG_INFO = 2
- PKG_NAME = 0
-
- INFO_VERSION = 0
- INFO_DEPENDENCIES = 1
- INFO_DESCRIPTION = 2
- INFO_SRC_TYPE = 3
-
- DEP_NAME = 0
- #DEP_VERSION = 1 #we do not use it at the moment
-
- for entry in sexpdata.cdr(archive_contents):
- desc = entry[PKG_INFO].value()
- realname = entry[PKG_NAME].value()
-
- if self.in_config([common_config, config], "exclude", realname):
- continue
-
- pkg = Package("app-emacs", realname,
- '.'.join(map(str, desc[INFO_VERSION])))
- source_type = desc[INFO_SRC_TYPE].value()
-
- allowed_ords = set(range(ord('a'), ord('z'))) \
- | set(range(ord('A'), ord('Z'))) | \
- set(range(ord('0'), ord('9'))) | set(list(map(ord,
- ['+', '_', '-', ' ', '.', '(', ')', '[', ']', '{', '}', ','])))
- description = "".join([x for x in desc[INFO_DESCRIPTION] if ord(x) in allowed_ords])
-
- deps = desc[INFO_DEPENDENCIES]
- dependencies = serializable_elist(separator="\n\t")
- for dep in deps:
- dep = self.convert_dependency([common_config, config],
- dep[DEP_NAME].value(), external = False)
- if dep:
- dependencies.append(dep)
-
- properties = {'source_type' : source_type,
- 'description' : description,
- 'dependencies' : dependencies,
- 'depend' : dependencies,
- 'rdepend' : dependencies,
- 'homepage' : repo_uri,
- 'repo_uri' : repo_uri,
- 'realname' : realname,
- #eclass entry
- 'eclasses' : ['g-sorcery', 'gs-elpa'],
- #metadata entries
- 'maintainer' : [{'email' : 'piatlicki@gmail.com',
- 'name' : 'Jauhien Piatlicki'}],
- 'longdescription' : description
- }
- pkg_db.add_package(pkg, properties)
-
- def convert_internal_dependency(self, configs, dependency):
- """
- At the moment we have only internal dependencies, each of them
- is just a package name.
-
- Args:
- configs: Backend and repo configs.
- dependency: Package name.
-
- Returns:
- Dependency instance with category="app-emacs", package="dependency".
- """
- return Dependency("app-emacs", dependency)
diff --git a/gs_pypi/__init__.py b/gs_pypi/__init__.py
deleted file mode 100644
index cf529d7..0000000
--- a/gs_pypi/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env python
-
diff --git a/gs_pypi/backend.py b/gs_pypi/backend.py
deleted file mode 100644
index b9e9988..0000000
--- a/gs_pypi/backend.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- backend.py
- ~~~~~~~~~~
-
- PyPI 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 .pypi_db import PypiDBGenerator
-from .ebuild import PypiEbuildWithoutDigestGenerator, PypiEbuildWithDigestGenerator
-
-
-class PypiEclassGenerator(EclassGenerator):
- """
- Implementation of eclass generator. Only specifies a data directory.
- """
- def __init__(self):
- super(PypiEclassGenerator, self).__init__(os.path.join(get_pkgpath(__file__), 'data'))
-
-
-instance = Backend(PypiDBGenerator,
- PypiEbuildWithDigestGenerator, PypiEbuildWithoutDigestGenerator,
- PypiEclassGenerator, MetadataGenerator, sync_db=True)
diff --git a/gs_pypi/data/gs-pypi.eclass b/gs_pypi/data/gs-pypi.eclass
deleted file mode 100644
index c35796c..0000000
--- a/gs_pypi/data/gs-pypi.eclass
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-# automatically generated by gs-pypi
-# please do not edit this file
-#
-# Original Author: Jauhien Piatlicki <piatlicki@gmail.com>
-# Purpose: support installation of python packages from PyPI repo
-#
-# Bugs to piatlicki@gmail.com
-#
-# @ECLASS: gs-pypi.eclass
-#
-
-inherit distutils-r1 g-sorcery
diff --git a/gs_pypi/ebuild.py b/gs_pypi/ebuild.py
deleted file mode 100644
index 82024c3..0000000
--- a/gs_pypi/ebuild.py
+++ /dev/null
@@ -1,67 +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
-import os
-
-from g_sorcery.ebuild import DefaultEbuildGenerator
-
-Layout = collections.namedtuple("Layout",
- ["vars_before_inherit", "inherit", "vars_after_description", "vars_after_keywords"])
-
-
-class PypiEbuildWithoutDigestGenerator(DefaultEbuildGenerator):
- """
- Implementation of ebuild generator without sources digesting.
- """
- def __init__(self, package_db):
-
- vars_before_inherit = \
- ["realname", "realversion",
- {"name" : "repo_uri", "value" : 'http://pypi.python.org/packages/source/${REALNAME:0:1}/${REALNAME}/'},
- {"name" : "sourcefile", "value" : '${REALNAME}-${REALVERSION}.tar.gz'}, {"name" : "python_compat", "raw" : True}]
-
- inherit = ["gs-pypi"]
-
- vars_after_description = \
- ["homepage", "license"]
-
- vars_after_keywords = \
- []
-
- layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords)
-
- super(PypiEbuildWithoutDigestGenerator, self).__init__(package_db, layout)
-
-class PypiEbuildWithDigestGenerator(DefaultEbuildGenerator):
- """
- Implementation of ebuild generator with sources digesting.
- """
- def __init__(self, package_db):
-
- vars_before_inherit = \
- ["realname", "realversion",
- {"name" : "digest_sources", "value" : "yes"}, {"name" : "python_compat", "raw" : True}]
-
- inherit = ["gs-pypi"]
-
- vars_after_description = \
- ["homepage", "license",
- {"name" : "src_uri", "value" : 'http://pypi.python.org/packages/source/${REALNAME:0:1}/${REALNAME}/${REALNAME}-${REALVERSION}.tar.gz'}]
-
- vars_after_keywords = \
- []
-
- layout = Layout(vars_before_inherit, inherit, vars_after_description, vars_after_keywords)
-
- super(PypiEbuildWithDigestGenerator, self).__init__(package_db, layout)
diff --git a/gs_pypi/gs_pypi_generate_db.py b/gs_pypi/gs_pypi_generate_db.py
deleted file mode 100644
index a59b5e3..0000000
--- a/gs_pypi/gs_pypi_generate_db.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- pypi_db.py
- ~~~~~~~~~~
-
- PyPI database generation
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import os
-import sys
-
-from g_sorcery.compatibility import TemporaryDirectory
-from g_sorcery.exceptions import FileJSONError
-from g_sorcery.fileutils import copy_all, FileJSON
-from g_sorcery.logger import Logger
-
-from .pypi_db import PypiDBGenerator
-
-def main():
-
- if len(sys.argv) < 2:
- print("Usage: ")
- print("gs-pypi-generate-db db_name")
- return -1
-
- logger = Logger()
- cfg_path = None
- for path in '.', '~', '/etc/g-sorcery':
- current = os.path.join(path, "gs-pypi.json")
- if (os.path.isfile(current)):
- cfg_path = path
- break
- if not cfg_path:
- logger.error('no config file for gs-pypi backend\n')
- return -1
- cfg_f = FileJSON(cfg_path, "gs-pypi.json", ['package'])
- try:
- config = cfg_f.read()
- except FileJSONError as e:
- logger.error('error loading config file for gs-pypi: ' + str(e) + '\n')
- return -1
-
- generator = PypiDBGenerator()
- db_name = sys.argv[1]
- temp_dir = TemporaryDirectory()
- pkg_db = generator(temp_dir.name, "pypi", config=config["repositories"]["pypi"], common_config=config["common_config"])
- if os.path.exists(db_name):
- os.system('rm -rf ' + db_name + '/*')
- else:
- os.mkdir(db_name)
- copy_all(os.path.join(temp_dir.name, "pypi/db"), db_name)
- os.system('tar cvzf ' + db_name + '.tar.gz ' + db_name)
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/gs_pypi/pypi_db.py b/gs_pypi/pypi_db.py
deleted file mode 100644
index 2b201c6..0000000
--- a/gs_pypi/pypi_db.py
+++ /dev/null
@@ -1,289 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""
- pypi_db.py
- ~~~~~~~~~~
-
- PyPI package database
-
- :copyright: (c) 2013 by Jauhien Piatlicki
- :license: GPL-2, see LICENSE for more details.
-"""
-
-import datetime
-import re
-import time
-
-import bs4
-
-from g_sorcery.exceptions import DownloadingError
-from g_sorcery.g_collections import Package, serializable_elist
-from g_sorcery.package_db import DBGenerator
-
-class PypiDBGenerator(DBGenerator):
- """
- Implementation of database generator for PYPI backend.
- """
- def get_download_uries(self, common_config, config):
- """
- Get URI of packages index.
- """
- self.repo_uri = config["repo_uri"]
- return [{"uri": self.repo_uri + "pypi?%3Aaction=index", "output": "packages"}]
-
- def parse_data(self, data_f):
- """
- Download and parse packages index. Then download and parse pages for all packages.
- """
- soup = bs4.BeautifulSoup(data_f.read())
- packages = soup.table
- data = {}
- data["index"] = {}
-
- pkg_uries = []
-
- for entry in packages.find_all("tr")[1:-1]:
- package, description = entry.find_all("td")
-
- if description.contents:
- description = description.contents[0]
- else:
- description = ""
- package, version = package.a["href"].split("/")[2:]
- data["index"][(package, version)] = description
- pkg_uries.append({"uri": self.repo_uri + "pypi/" + package + "/" + version,
- "parser": self.parse_package_page,
- "output": package + "-" + version})
- entry.decompose()
-
- packages.decompose()
- soup.decompose()
-
- pkg_uries = self.decode_download_uries(pkg_uries)
- for uri in pkg_uries:
- attempts = 0
- while True:
- try:
- attempts += 1
- self.process_uri(uri, data)
- except DownloadingError as error:
- print(str(error))
- time.sleep(5)
- if attempts < 100:
- continue
- break
-
- return data
-
- def parse_package_page(self, data_f):
- """
- Parse package page.
- """
- soup = bs4.BeautifulSoup(data_f.read())
- data = {}
- data["files"] = []
- data["info"] = {}
- try:
- for table in soup("table", class_ = "list")[-1:]:
- if not "File" in table("th")[0].string:
- continue
-
- for entry in table("tr")[1:-1]:
- fields = entry("td")
-
- FILE = 0
- URL = 0
- MD5 = 1
-
- TYPE = 1
- PYVERSION = 2
- UPLOADED = 3
- SIZE = 4
-
- file_inf = fields[FILE]("a")[0]["href"].split("#")
- file_url = file_inf[URL]
- file_md5 = file_inf[MD5][4:]
-
- file_type = fields[TYPE].string
- file_pyversion = fields[PYVERSION].string
- file_uploaded = fields[UPLOADED].string
- file_size = fields[SIZE].string
-
- data["files"].append({"url": file_url,
- "md5": file_md5,
- "type": file_type,
- "pyversion": file_pyversion,
- "uploaded": file_uploaded,
- "size": file_size})
- entry.decompose()
- table.decompose()
-
- uls = soup("ul", class_ = "nodot")
- if uls:
- if "Downloads (All Versions):" in uls[0]("strong")[0].string:
- ul = uls[1]
- else:
- ul = uls[0]
-
- for entry in ul.contents:
- if not hasattr(entry, "name") or entry.name != "li":
- continue
- entry_name = entry("strong")[0].string
- if not entry_name:
- continue
-
- if entry_name == "Categories":
- data["info"][entry_name] = {}
- for cat_entry in entry("a"):
- cat_data = cat_entry.string.split(" :: ")
- if not cat_data[0] in data["info"][entry_name]:
- data["info"][entry_name][cat_data[0]] = cat_data[1:]
- else:
- data["info"][entry_name][cat_data[0]].extend(cat_data[1:])
- continue
-
- if entry("span"):
- data["info"][entry_name] = entry("span")[0].string
- continue
-
- if entry("a"):
- data["info"][entry_name] = entry("a")[0]["href"]
- continue
- entry.decompose()
- ul.decompose()
-
- except Exception as error:
- print("There was an error during parsing: " + str(error))
- print("Ignoring this package.")
- data = {}
- data["files"] = []
- data["info"] = {}
-
- soup.decompose()
- return data
-
- def process_data(self, pkg_db, data, common_config, config):
- """
- Process parsed package data.
- """
- category = "dev-python"
- pkg_db.add_category(category)
-
- #todo: write filter functions
- allowed_ords_pkg = set(range(ord('a'), ord('z') + 1)) | set(range(ord('A'), ord('Z') + 1)) | \
- set(range(ord('0'), ord('9') + 1)) | set(list(map(ord,
- ['+', '_', '-'])))
-
- allowed_ords_desc = set(range(ord('a'), ord('z') + 1)) | set(range(ord('A'), ord('Z') + 1)) | \
- set(range(ord('0'), ord('9') + 1)) | set(list(map(ord,
- ['+', '_', '-', ' ', '.', '(', ')', '[', ']', '{', '}', ','])))
-
- now = datetime.datetime.now()
- pseudoversion = "%04d%02d%02d" % (now.year, now.month, now.day)
-
- for (package, version), description in data["packages"]["index"].items():
-
- pkg = package + "-" + version
- if not pkg in data["packages"]:
- continue
-
- pkg_data = data["packages"][pkg]
-
- if not pkg_data["files"] and not pkg_data["info"]:
- continue
-
- files_src_uri = ""
- md5 = ""
- if pkg_data["files"]:
- for file_entry in pkg_data["files"]:
- if file_entry["type"] == "\n Source\n ":
- files_src_uri = file_entry["url"]
- md5 = file_entry["md5"]
- break
-
- download_url = ""
- info = pkg_data["info"]
- if info:
- if "Download URL:" in info:
- download_url = pkg_data["info"]["Download URL:"]
-
- if download_url:
- source_uri = download_url #todo: find how to define src_uri
- else:
- source_uri = files_src_uri
-
- if not source_uri:
- continue
-
- homepage = ""
- pkg_license = ""
- py_versions = []
- if info:
- if "Home Page:" in info:
- homepage = info["Home Page:"]
- categories = {}
- if "Categories" in info:
- categories = info["Categories"]
-
- if 'Programming Language' in categories:
- for entry in categories['Programming Language']:
- if entry == '2':
- py_versions.extend(['2_6', '2_7'])
- elif entry == '3':
- py_versions.extend(['3_2', '3_3'])
- elif entry == '2.6':
- py_versions.extend(['2_6'])
- elif entry == '2.7':
- py_versions.extend(['2_7'])
- elif entry == '3.2':
- py_versions.extend(['3_2'])
- elif entry == '3.3':
- py_versions.extend(['3_3'])
-
- if "License" in categories:
- pkg_license = categories["License"][-1]
- pkg_license = self.convert([common_config, config], "licenses", pkg_license)
-
- if not py_versions:
- py_versions = ['2_6', '2_7', '3_2', '3_3']
- if len(py_versions) == 1:
- python_compat = 'python' + py_versions[0]
- else:
- python_compat = '( python{' + py_versions[0]
- for ver in py_versions[1:]:
- python_compat += ',' + ver
- python_compat += '} )'
-
- filtered_package = "".join([x for x in package if ord(x) in allowed_ords_pkg])
- description = "".join([x for x in description if ord(x) in allowed_ords_desc])
- filtered_version = version
- match_object = re.match("(^[0-9]+[a-z]?$)|(^[0-9][0-9\.]+[0-9][a-z]?$)",
- filtered_version)
- if not match_object:
- filtered_version = pseudoversion
-
- dependencies = serializable_elist(separator="\n\t")
- eclasses = ['g-sorcery', 'gs-pypi']
- maintainer = [{'email' : 'piatlicki@gmail.com',
- 'name' : 'Jauhien Piatlicki'}]
-
- ebuild_data = {}
- ebuild_data["realname"] = package
- ebuild_data["realversion"] = version
-
- ebuild_data["description"] = description
- ebuild_data["longdescription"] = description
- ebuild_data["dependencies"] = dependencies
- ebuild_data["eclasses"] = eclasses
- ebuild_data["maintainer"] = maintainer
-
- ebuild_data["homepage"] = homepage
- ebuild_data["license"] = pkg_license
- ebuild_data["source_uri"] = source_uri
- ebuild_data["md5"] = md5
- ebuild_data["python_compat"] = python_compat
-
- ebuild_data["info"] = info
-
- pkg_db.add_package(Package(category, filtered_package, filtered_version), ebuild_data)
diff --git a/setup.py b/setup.py
index 10f0461..015ec76 100644
--- a/setup.py
+++ b/setup.py
@@ -3,23 +3,13 @@
from distutils.core import setup
setup(name = 'g-sorcery',
- version = '0.1_alpha',
- description = 'g-sorcery framework for automated ebuild generators',
+ version = '0.1',
+ description = 'framework for automated ebuild generators',
author = 'Jauhien Piatlicki',
- author_email = 'piatlicki@gmail.com',
- packages = ['g_sorcery', 'gs_db_tool', 'gs_elpa', 'gs_ctan', 'gs_pypi'],
- package_data = {'g_sorcery': ['data/*'],
- 'gs_pypi': ['data/*'],
- 'gs_elpa': ['data/*'],
- 'gs_ctan': ['data/*']},
- scripts = ['bin/g-sorcery', 'bin/gs-db-tool', 'bin/gs-elpa',
- 'bin/gs-ctan', 'bin/gs-pypi-generate-db', 'bin/gs-pypi'],
- data_files = [('/etc/g-sorcery/', ['gs-elpa.json']),
- ('/etc/g-sorcery/', ['gs-ctan.json']),
- ('/etc/g-sorcery/', ['gs-pypi.json']),
- ('/etc/g-sorcery/', ['g-sorcery.cfg']),
- ('/etc/layman/overlays/', ['gs-elpa-overlays.xml']),
- ('/etc/layman/overlays/', ['gs-ctan-overlays.xml']),
- ('/etc/layman/overlays/', ['gs-pypi-overlays.xml'])],
+ author_email = 'jauhien@gentoo.org',
+ packages = ['g_sorcery', 'gs_db_tool'],
+ package_data = {'g_sorcery': ['data/*']},
+ scripts = ['bin/g-sorcery', 'bin/gs-db-tool'],
+ data_files = [('/etc/g-sorcery/', ['g-sorcery.cfg'])],
license = 'GPL',
)