From: Michael Hanke Date: Sat, 28 Mar 2009 16:10:10 +0000 (+0100) Subject: Initial import. X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c397134b9d5a201412476327ea513f491feed286;p=neurodebian.git Initial import. --- c397134b9d5a201412476327ea513f491feed286 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..39fe377 --- /dev/null +++ b/Makefile @@ -0,0 +1,75 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html web pickle htmlhelp latex changes linkcheck + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " changes to make an overview over all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + +clean: + -rm -rf build/* + +html: + mkdir -p build/html build/doctrees + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html + @echo + @echo "Build finished. The HTML pages are in build/html." + +pickle: + mkdir -p build/pickle build/doctrees + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +web: pickle + +json: + mkdir -p build/json build/doctrees + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + mkdir -p build/htmlhelp build/doctrees + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in build/htmlhelp." + +latex: + mkdir -p build/latex build/doctrees + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex + @echo + @echo "Build finished; the LaTeX files are in build/latex." + @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ + "run these through (pdf)latex." + +changes: + mkdir -p build/changes build/doctrees + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes + @echo + @echo "The overview file is in build/changes." + +linkcheck: + mkdir -p build/linkcheck build/doctrees + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in build/linkcheck/output.txt." diff --git a/deb2rst/archive.py b/deb2rst/archive.py new file mode 100644 index 0000000..2d6df3e --- /dev/null +++ b/deb2rst/archive.py @@ -0,0 +1,178 @@ +import urllib +import apt_pkg as ap +import apt +from ConfigParser import SafeConfigParser +import gzip +import subprocess + +class DebianPkgArchive(SafeConfigParser): + """ + """ + def __init__(self, dists): + """ + :Parameter: + dists: list + List of Release file URLs, one for each distribution in the archive. + """ + SafeConfigParser.__init__(self) + + for dist in dists: + filename, ignored = urllib.urlretrieve(dist) + baseurl = '/'.join(dist.split('/')[:-1]) + self._parseDistribution(filename, baseurl) + urllib.urlcleanup() + + + def __repr__(self): + """Generate INI file content for current content. + """ + # make adaptor to use str as file-like (needed for ConfigParser.write() + class file2str(object): + def __init__(self): + self.__s = '' + def write(self, val): + self.__s += val + def str(self): + return self.__s + + r = file2str() + self.write(r) + + return r.str() + + + def save(self, filename): + """Write current content to a file. + """ + f = open(filename, 'w') + self.write(f) + f.close() + + + def ensureUnique(self, section, option, value): + if not self.has_option(section, option): + self.set(section, option, value) + else: + if not self.get(section, option) == value: + raise ValueError, "%s: %s is not unique (%s != %s)" \ + % (section, option, + self.get(section, option), value) + + + def appendUniqueCSV(self, section, option, value): + """ + """ + if not self.has_option(section, option): + self.set(section, option, value) + else: + l = self.get(section, option).split(', ') + if not value in l: + self.set(section, option, ', '.join(l + [value])) + + + def _parseDistribution(self, rfile, baseurl): + """ + :Parameter: + rfile: filename + Release file for the distribution + baseurl: str + Base URL of this distribution. This path contains the Release file. + """ + # create parser instance + rparser = ap.ParseTagFile(open(rfile, 'r')) + # get release section content + rparser.Step() + + # architectures on this dist + archs = rparser.Section['Architectures'].split() + components = rparser.Section['Components'].split() + codename = rparser.Section['Codename'] + + # compile the list of Packages files to parse and parse them + for c in components: + for a in archs: + # compile URL + pkgsurl = '/'.join([baseurl, c, 'binary-' + a, 'Packages.gz']) + # retrieve + filename, ignored = urllib.urlretrieve(pkgsurl) + # decompress + subprocess.call(['gzip', '-d', filename]) + # parse + self._parsePkgsFile(filename[:-3], codename, c) + break + + + def _parsePkgsFile(self, pfile, codename, component): + """ + :Parameters: + pfile: Packages filename + codename: str + Codename of the release + component: str + The archive component this packages file corresponds to. + """ + pp = ap.ParseTagFile(open(pfile, 'r')) + + while pp.Step(): + sec = pp.Section + self._storePkg(sec, codename, component) + + + def _storePkg(self, psec, codename, component): + """ + :Parameter: + psec: apt_pkg parser section + """ + pkg = psec['Package'] + + if not self.has_section(pkg): + self.add_section(pkg) + + # which releases + self.appendUniqueCSV(pkg, "releases", codename) + + # arch listing + self.appendUniqueCSV(pkg, "archs %s" % codename, psec['Architecture']) + + # versions + self.ensureUnique(pkg, + "version %s %s" % (codename, psec['Architecture']), + psec['Version']) + + # now the stuff where a single variant is sufficient and where we go for + # the latest available one + if self.has_option(pkg, "newest version") \ + and apt.VersionCompare(psec['Version'], + self.get(pkg, "newest version")) < 0: + return + + # everything from here will overwrite existing ones + + # we seems to have an updated package + self.set(pkg, "newest version", psec['Version']) + + # description + self.set(pkg, "description", psec['Description']) + + # optional stuff + if psec.has_key('Homepage'): + self.set(pkg, 'homepage', psec['Homepage']) + + +def genPkgPage(db, pkg): + """ + :Parameters: + db: database + pkg: str + Package name + """ + pass + + + +dpa = DebianPkgArchive( + [ + 'http://elrond/debian/dists/dapper/Release', +# 'http://elrond/debian/dists/etch/Release', + ]) +print dpa diff --git a/source/conf.py b/source/conf.py new file mode 100644 index 0000000..aae7318 --- /dev/null +++ b/source/conf.py @@ -0,0 +1,190 @@ +# -*- coding: utf-8 -*- +# +# Debian Package Repository documentation build configuration file, created by +# sphinx-quickstart on Sat Mar 28 17:08:58 2009. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed automatically). +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If your extensions are in another directory, add it here. If the directory +# is relative to the documentation root, use os.path.abspath to make it +# absolute, like shown here. +#sys.path.append(os.path.abspath('.')) + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['.templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Debian Package Repository' +copyright = u'2009, Michael Hanke' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.20080328' +# The full version, including alpha/beta/rc tags. +release = '0.20080328' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# List of directories, relative to source directory, that shouldn't be searched +# for source files. +exclude_trees = [] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# Options for HTML output +# ----------------------- + +# The style sheet to use for HTML and HTML Help pages. A file of that name +# must exist either in Sphinx' static/ path, or in one of the custom paths +# given in html_static_path. +html_style = 'default.css' + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['.static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_use_modindex = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, the reST sources are included in the HTML build as _sources/. +#html_copy_source = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'DebianPackageRepositorydoc' + + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class [howto/manual]). +latex_documents = [ + ('index', 'DebianPackageRepository.tex', ur'Debian Package Repository Documentation', + ur'Michael Hanke', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_use_modindex = True diff --git a/source/index.rst b/source/index.rst new file mode 100644 index 0000000..81064f2 --- /dev/null +++ b/source/index.rst @@ -0,0 +1,19 @@ +.. Debian Package Repository documentation master file, created by sphinx-quickstart on Sat Mar 28 17:08:58 2009. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Debian Package Repository's documentation! +===================================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +