Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: third_party/twisted_8_1/twisted/python/_release.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/twisted_8_1/twisted/python/_release.py
diff --git a/third_party/twisted_8_1/twisted/python/_release.py b/third_party/twisted_8_1/twisted/python/_release.py
deleted file mode 100644
index 875a94a718664198bd079bdcd18b3714b0ddb9af..0000000000000000000000000000000000000000
--- a/third_party/twisted_8_1/twisted/python/_release.py
+++ /dev/null
@@ -1,803 +0,0 @@
-# -*- test-case-name: twisted.python.test.test_release -*-
-# Copyright (c) 2007-2008 Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Twisted's automated release system.
-
-This module is only for use within Twisted's release system. If you are anyone
-else, do not use it. The interface and behaviour will change without notice.
-"""
-
-from datetime import date
-import os
-from tempfile import mkdtemp
-import tarfile
-
-# Popen4 isn't available on Windows. BookBuilder won't work on Windows, but
-# we don't care. -exarkun
-try:
- from popen2 import Popen4
-except ImportError:
- Popen4 = None
-
-from twisted.python.versions import Version
-from twisted.python.filepath import FilePath
-
-# This import is an example of why you shouldn't use this module unless you're
-# radix
-try:
- from twisted.lore.scripts import lore
-except ImportError:
- pass
-
-# The offset between a year and the corresponding major version number.
-VERSION_OFFSET = 2000
-
-
-class CommandFailed(Exception):
- """
- Raised when a child process exits unsuccessfully.
-
- @type exitCode: C{int}
- @ivar exitCode: The exit code for the child process.
-
- @type output: C{str}
- @ivar output: The bytes read from stdout and stderr of the child process.
- """
- def __init__(self, exitCode, output):
- Exception.__init__(self, exitCode, output)
- self.exitCode = exitCode
- self.output = output
-
-
-
-def _changeVersionInFile(old, new, filename):
- """
- Replace the C{old} version number with the C{new} one in the given
- C{filename}.
- """
- replaceInFile(filename, {old.base(): new.base()})
-
-
-
-def getNextVersion(version, now=None):
- """
- Calculate the version number for a new release of Twisted based on
- the previous version number.
-
- @param version: The previous version number.
- @param now: (optional) The current date.
- """
- # XXX: This has no way of incrementing the patch number. Currently, we
- # don't need it. See bug 2915. Jonathan Lange, 2007-11-20.
- if now is None:
- now = date.today()
- major = now.year - VERSION_OFFSET
- if major != version.major:
- minor = 0
- else:
- minor = version.minor + 1
- return Version(version.package, major, minor, 0)
-
-
-
-class Project(object):
- """
- A representation of a project that has a version.
-
- @ivar directory: A L{twisted.python.filepath.FilePath} pointing to the base
- directory of a Twisted-style Python package. The package should contain
- a C{_version.py} file and a C{topfiles} directory that contains a
- C{README} file.
- """
-
- def __init__(self, directory):
- self.directory = directory
-
-
- def __repr__(self):
- return '%s(%r)' % (
- self.__class__.__name__, self.directory)
-
-
- def getVersion(self):
- """
- @return: A L{Version} specifying the version number of the project
- based on live python modules.
- """
- namespace = {}
- execfile(self.directory.child("_version.py").path, namespace)
- return namespace["version"]
-
-
- def updateVersion(self, version):
- """
- Replace the existing version numbers in _version.py and README files
- with the specified version.
- """
- oldVersion = self.getVersion()
- replaceProjectVersion(oldVersion.package,
- self.directory.child("_version.py").path,
- version)
- _changeVersionInFile(
- oldVersion, version,
- self.directory.child("topfiles").child("README").path)
-
-
-
-def findTwistedProjects(baseDirectory):
- """
- Find all Twisted-style projects beneath a base directory.
-
- @param baseDirectory: A L{twisted.python.filepath.FilePath} to look inside.
- @return: A list of L{Project}.
- """
- projects = []
- for filePath in baseDirectory.walk():
- if filePath.basename() == 'topfiles':
- projectDirectory = filePath.parent()
- projects.append(Project(projectDirectory))
- return projects
-
-
-
-def updateTwistedVersionInformation(baseDirectory, now):
- """
- Update the version information for Twisted and all subprojects to the
- date-based version number.
-
- @param baseDirectory: Where to look for Twisted. If None, the function
- infers the information from C{twisted.__file__}.
- @param now: The current date (as L{datetime.date}). If None, it defaults
- to today.
- """
- for project in findTwistedProjects(baseDirectory):
- project.updateVersion(getNextVersion(project.getVersion(), now=now))
-
-
-
-def replaceProjectVersion(name, filename, newversion):
- """
- Write version specification code into the given filename, which
- sets the version to the given version number.
-
- @param filename: A filename which is most likely a "_version.py"
- under some Twisted project.
- @param newversion: A version object.
- """
- # XXX - this should be moved to Project and renamed to writeVersionFile.
- # jml, 2007-11-15.
- f = open(filename, 'w')
- if newversion.prerelease is not None:
- prerelease = ", prerelease=%r" % (newversion.prerelease,)
- else:
- prerelease = ""
- f.write('''\
-# This is an auto-generated file. Do not edit it.
-from twisted.python import versions
-version = versions.Version(%r, %s, %s, %s%s)
-''' % (name, newversion.major, newversion.minor, newversion.micro, prerelease))
- f.close()
-
-
-
-def replaceInFile(filename, oldToNew):
- """
- I replace the text `oldstr' with `newstr' in `filename' using science.
- """
- os.rename(filename, filename+'.bak')
- f = open(filename+'.bak')
- d = f.read()
- f.close()
- for k,v in oldToNew.items():
- d = d.replace(k, v)
- f = open(filename + '.new', 'w')
- f.write(d)
- f.close()
- os.rename(filename+'.new', filename)
- os.unlink(filename+'.bak')
-
-
-
-class NoDocumentsFound(Exception):
- """
- Raised when no input documents are found.
- """
-
-
-
-class LoreBuilderMixin(object):
- """
- Base class for builders which invoke lore.
- """
- def lore(self, arguments):
- """
- Run lore with the given arguments.
-
- @param arguments: A C{list} of C{str} giving command line arguments to
- lore which should be used.
- """
- options = lore.Options()
- options.parseOptions(["--null"] + arguments)
- lore.runGivenOptions(options)
-
-
-
-class DocBuilder(LoreBuilderMixin):
- """
- Generate HTML documentation for projects.
- """
-
- def build(self, version, resourceDir, docDir, template, apiBaseURL=None, deleteInput=False):
- """
- Build the documentation in C{docDir} with Lore.
-
- Input files ending in .xhtml will be considered. Output will written as
- .html files.
-
- @param version: the version of the documentation to pass to lore.
- @type version: C{str}
-
- @param resourceDir: The directory which contains the toplevel index and
- stylesheet file for this section of documentation.
- @type resourceDir: L{twisted.python.filepath.FilePath}
-
- @param docDir: The directory of the documentation.
- @type docDir: L{twisted.python.filepath.FilePath}
-
- @param template: The template used to generate the documentation.
- @type template: L{twisted.python.filepath.FilePath}
-
- @type apiBaseURL: C{str} or C{NoneType}
- @param apiBaseURL: A format string which will be interpolated with the
- fully-qualified Python name for each API link. For example, to
- generate the Twisted 8.0.0 documentation, pass
- C{"http://twistedmatrix.com/documents/8.0.0/api/%s.html"}.
-
- @param deleteInput: If True, the input documents will be deleted after
- their output is generated.
- @type deleteInput: C{bool}
-
- @raise NoDocumentsFound: When there are no .xhtml files in the given
- C{docDir}.
- """
- linkrel = self.getLinkrel(resourceDir, docDir)
- inputFiles = docDir.globChildren("*.xhtml")
- filenames = [x.path for x in inputFiles]
- if not filenames:
- raise NoDocumentsFound("No input documents found in %s" % (docDir,))
- if apiBaseURL is not None:
- arguments = ["--config", "baseurl=" + apiBaseURL]
- else:
- arguments = []
- arguments.extend(["--config", "template=%s" % (template.path,),
- "--config", "ext=.html",
- "--config", "version=%s" % (version,),
- "--linkrel", linkrel] + filenames)
- self.lore(arguments)
- if deleteInput:
- for inputFile in inputFiles:
- inputFile.remove()
-
-
- def getLinkrel(self, resourceDir, docDir):
- """
- Calculate a value appropriate for Lore's --linkrel option.
-
- Lore's --linkrel option defines how to 'find' documents that are
- linked to from TEMPLATE files (NOT document bodies). That is, it's a
- prefix for links ('a' and 'link') in the template.
-
- @param resourceDir: The directory which contains the toplevel index and
- stylesheet file for this section of documentation.
- @type resourceDir: L{twisted.python.filepath.FilePath}
-
- @param docDir: The directory containing documents that must link to
- C{resourceDir}.
- @type docDir: L{twisted.python.filepath.FilePath}
- """
- if resourceDir != docDir:
- return '/'.join(filePathDelta(docDir, resourceDir)) + "/"
- else:
- return ""
-
-
-
-class ManBuilder(LoreBuilderMixin):
- """
- Generate man pages of the different existing scripts.
- """
-
- def build(self, manDir):
- """
- Generate Lore input files from the man pages in C{manDir}.
-
- Input files ending in .1 will be considered. Output will written as
- -man.xhtml files.
-
- @param manDir: The directory of the man pages.
- @type manDir: L{twisted.python.filepath.FilePath}
-
- @raise NoDocumentsFound: When there are no .1 files in the given
- C{manDir}.
- """
- inputFiles = manDir.globChildren("*.1")
- filenames = [x.path for x in inputFiles]
- if not filenames:
- raise NoDocumentsFound("No manual pages found in %s" % (manDir,))
- arguments = ["--input", "man",
- "--output", "lore",
- "--config", "ext=-man.xhtml"] + filenames
- self.lore(arguments)
-
-
-
-class APIBuilder(object):
- """
- Generate API documentation from source files using
- U{pydoctor<http://codespeak.net/~mwh/pydoctor/>}. This requires
- pydoctor to be installed and usable (which means you won't be able to
- use it with Python 2.3).
- """
- def build(self, projectName, projectURL, sourceURL, packagePath, outputPath):
- """
- Call pydoctor's entry point with options which will generate HTML
- documentation for the specified package's API.
-
- @type projectName: C{str}
- @param projectName: The name of the package for which to generate
- documentation.
-
- @type projectURL: C{str}
- @param projectURL: The location (probably an HTTP URL) of the project
- on the web.
-
- @type sourceURL: C{str}
- @param sourceURL: The location (probably an HTTP URL) of the root of
- the source browser for the project.
-
- @type packagePath: L{FilePath}
- @param packagePath: The path to the top-level of the package named by
- C{projectName}.
-
- @type outputPath: L{FilePath}
- @param outputPath: An existing directory to which the generated API
- documentation will be written.
- """
- from pydoctor.driver import main
- main(
- ["--project-name", projectName,
- "--project-url", projectURL,
- "--system-class", "pydoctor.twistedmodel.TwistedSystem",
- "--project-base-dir", packagePath.parent().path,
- "--html-viewsource-base", sourceURL,
- "--add-package", packagePath.path,
- "--html-output", outputPath.path,
- "--quiet", "--make-html"])
-
-
-
-class BookBuilder(LoreBuilderMixin):
- """
- Generate the LaTeX and PDF documentation.
-
- The book is built by assembling a number of LaTeX documents. Only the
- overall document which describes how to assemble the documents is stored
- in LaTeX in the source. The rest of the documentation is generated from
- Lore input files. These are primarily XHTML files (of the particular
- Lore subset), but man pages are stored in GROFF format. BookBuilder
- expects all of its input to be Lore XHTML format, so L{ManBuilder}
- should be invoked first if the man pages are to be included in the
- result (this is determined by the book LaTeX definition file).
- Therefore, a sample usage of BookBuilder may look something like this:
-
- man = ManBuilder()
- man.build(FilePath("doc/core/man"))
- book = BookBuilder()
- book.build(
- FilePath('doc/core/howto'),
- [FilePath('doc/core/howto'), FilePath('doc/core/howto/tutorial'),
- FilePath('doc/core/man'), FilePath('doc/core/specifications')],
- FilePath('doc/core/howto/book.tex'), FilePath('/tmp/book.pdf'))
- """
- def run(self, command):
- """
- Execute a command in a child process and return the output.
-
- @type command C{str}
- @param command: The shell command to run.
-
- @raise L{RuntimeError}: If the child process exits with an error.
- """
- process = Popen4(command)
- stdout = process.fromchild.read()
- exitCode = process.wait()
- if os.WIFSIGNALED(exitCode) or os.WEXITSTATUS(exitCode):
- raise CommandFailed(exitCode, stdout)
- return stdout
-
-
- def buildTeX(self, howtoDir):
- """
- Build LaTeX files for lore input files in the given directory.
-
- Input files ending in .xhtml will be considered. Output will written as
- .tex files.
-
- @type howtoDir: L{FilePath}
- @param howtoDir: A directory containing lore input files.
-
- @raise ValueError: If C{howtoDir} does not exist.
- """
- if not howtoDir.exists():
- raise ValueError("%r does not exist." % (howtoDir.path,))
- self.lore(
- ["--output", "latex",
- "--config", "section"] +
- [child.path for child in howtoDir.globChildren("*.xhtml")])
-
-
- def buildPDF(self, bookPath, inputDirectory, outputPath):
- """
- Build a PDF from the given a LaTeX book document.
-
- @type bookPath: L{FilePath}
- @param bookPath: The location of a LaTeX document defining a book.
-
- @type inputDirectory: L{FilePath}
- @param inputDirectory: The directory which the inputs of the book are
- relative to.
-
- @type outputPath: L{FilePath}
- @param outputPath: The location to which to write the resulting book.
- """
- if not bookPath.basename().endswith(".tex"):
- raise ValueError("Book filename must end with .tex")
-
- workPath = FilePath(mkdtemp())
- try:
- startDir = os.getcwd()
- try:
- os.chdir(inputDirectory.path)
-
- texToDVI = (
- "latex -interaction=nonstopmode "
- "-output-directory=%s %s") % (
- workPath.path, bookPath.path)
-
- # What I tell you three times is true!
- # The first two invocations of latex on the book file allows it
- # correctly create page numbers for in-text references. Why this is
- # the case, I could not tell you. -exarkun
- for i in range(3):
- self.run(texToDVI)
-
- bookBaseWithoutExtension = bookPath.basename()[:-4]
- dviPath = workPath.child(bookBaseWithoutExtension + ".dvi")
- psPath = workPath.child(bookBaseWithoutExtension + ".ps")
- pdfPath = workPath.child(bookBaseWithoutExtension + ".pdf")
- self.run(
- "dvips -o %(postscript)s -t letter -Ppdf %(dvi)s" % {
- 'postscript': psPath.path,
- 'dvi': dviPath.path})
- self.run("ps2pdf13 %(postscript)s %(pdf)s" % {
- 'postscript': psPath.path,
- 'pdf': pdfPath.path})
- pdfPath.moveTo(outputPath)
- workPath.remove()
- finally:
- os.chdir(startDir)
- except:
- workPath.moveTo(bookPath.parent().child(workPath.basename()))
- raise
-
-
- def build(self, baseDirectory, inputDirectories, bookPath, outputPath):
- """
- Build a PDF book from the given TeX book definition and directories
- containing lore inputs.
-
- @type baseDirectory: L{FilePath}
- @param baseDirectory: The directory which the inputs of the book are
- relative to.
-
- @type inputDirectories: C{list} of L{FilePath}
- @param inputDirectories: The paths which contain lore inputs to be
- converted to LaTeX.
-
- @type bookPath: L{FilePath}
- @param bookPath: The location of a LaTeX document defining a book.
-
- @type outputPath: L{FilePath}
- @param outputPath: The location to which to write the resulting book.
- """
- for inputDir in inputDirectories:
- self.buildTeX(inputDir)
- self.buildPDF(bookPath, baseDirectory, outputPath)
- for inputDirectory in inputDirectories:
- for child in inputDirectory.children():
- if child.splitext()[1] == ".tex" and child != bookPath:
- child.remove()
-
-
-
-def filePathDelta(origin, destination):
- """
- Return a list of strings that represent C{destination} as a path relative
- to C{origin}.
-
- It is assumed that both paths represent directories, not files. That is to
- say, the delta of L{twisted.python.filepath.FilePath} /foo/bar to
- L{twisted.python.filepath.FilePath} /foo/baz will be C{../baz},
- not C{baz}.
-
- @type origin: L{twisted.python.filepath.FilePath}
- @param origin: The origin of the relative path.
-
- @type destination: L{twisted.python.filepath.FilePath}
- @param destination: The destination of the relative path.
- """
- commonItems = 0
- path1 = origin.path.split(os.sep)
- path2 = destination.path.split(os.sep)
- for elem1, elem2 in zip(path1, path2):
- if elem1 == elem2:
- commonItems += 1
- path = [".."] * (len(path1) - commonItems)
- return path + path2[commonItems:]
-
-
-
-class DistributionBuilder(object):
- """
- A builder of Twisted distributions.
-
- This knows how to build tarballs for Twisted and all of its subprojects.
- """
-
- from twisted.python.dist import twisted_subprojects as subprojects
- blacklist = ["vfs", "web2"]
-
- def __init__(self, rootDirectory, outputDirectory, apiBaseURL=None):
- """
- Create a distribution builder.
-
- @param rootDirectory: root of a Twisted export which will populate
- subsequent tarballs.
- @type rootDirectory: L{FilePath}.
-
- @param outputDirectory: The directory in which to create the tarballs.
- @type outputDirectory: L{FilePath}
-
- @type apiBaseURL: C{str} or C{NoneType}
- @param apiBaseURL: A format string which will be interpolated with the
- fully-qualified Python name for each API link. For example, to
- generate the Twisted 8.0.0 documentation, pass
- C{"http://twistedmatrix.com/documents/8.0.0/api/%s.html"}.
- """
- self.rootDirectory = rootDirectory
- self.outputDirectory = outputDirectory
- self.apiBaseURL = apiBaseURL
- self.manBuilder = ManBuilder()
- self.docBuilder = DocBuilder()
-
-
- def _buildDocInDir(self, path, version, howtoPath):
- """
- Generate documentation in the given path, building man pages first if
- necessary and swallowing errors (so that directories without lore
- documentation in them are ignored).
-
- @param path: The path containing documentation to build.
- @type path: L{FilePath}
- @param version: The version of the project to include in all generated
- pages.
- @type version: C{str}
- @param howtoPath: The "resource path" as L{DocBuilder} describes it.
- @type howtoPath: L{FilePath}
- """
- templatePath = self.rootDirectory.child("doc").child("core"
- ).child("howto").child("template.tpl")
- if path.basename() == "man":
- self.manBuilder.build(path)
- if path.isdir():
- try:
- self.docBuilder.build(version, howtoPath, path,
- templatePath, self.apiBaseURL, True)
- except NoDocumentsFound:
- pass
-
-
- def buildTwisted(self, version):
- """
- Build the main Twisted distribution in C{Twisted-<version>.tar.bz2}.
-
- @type version: C{str}
- @param version: The version of Twisted to build.
-
- @return: The tarball file.
- @rtype: L{FilePath}.
- """
- releaseName = "Twisted-%s" % (version,)
- buildPath = lambda *args: '/'.join((releaseName,) + args)
-
- outputFile = self.outputDirectory.child(releaseName + ".tar.bz2")
- tarball = tarfile.TarFile.open(outputFile.path, 'w:bz2')
-
- docPath = self.rootDirectory.child("doc")
-
- # Generate docs!
- if docPath.isdir():
- for subProjectDir in docPath.children():
- if (subProjectDir.isdir()
- and subProjectDir.basename() not in self.blacklist):
- for child in subProjectDir.walk():
- self._buildDocInDir(child, version,
- subProjectDir.child("howto"))
-
- # Now, this part is nasty. We need to exclude blacklisted subprojects
- # from the main Twisted distribution. This means we need to exclude
- # their bin directories, their documentation directories, their
- # plugins, and their python packages. Given that there's no "add all
- # but exclude these particular paths" functionality in tarfile, we have
- # to walk through all these directories and add things that *aren't*
- # part of the blacklisted projects.
-
- for binthing in self.rootDirectory.child("bin").children():
- if binthing.basename() not in self.blacklist:
- tarball.add(binthing.path,
- buildPath("bin", binthing.basename()))
-
- bad_plugins = ["twisted_%s.py" % (blacklisted,)
- for blacklisted in self.blacklist]
-
- for submodule in self.rootDirectory.child("twisted").children():
- if submodule.basename() == "plugins":
- for plugin in submodule.children():
- if plugin.basename() not in bad_plugins:
- tarball.add(plugin.path, buildPath("twisted", "plugins",
- plugin.basename()))
- elif submodule.basename() not in self.blacklist:
- tarball.add(submodule.path, buildPath("twisted",
- submodule.basename()))
-
- for docDir in self.rootDirectory.child("doc").children():
- if docDir.basename() not in self.blacklist:
- tarball.add(docDir.path, buildPath("doc", docDir.basename()))
-
- for toplevel in self.rootDirectory.children():
- if not toplevel.isdir():
- tarball.add(toplevel.path, buildPath(toplevel.basename()))
-
- tarball.close()
-
- return outputFile
-
-
- def buildCore(self, version):
- """
- Build a core distribution in C{TwistedCore-<version>.tar.bz2}.
-
- This is very similar to L{buildSubProject}, but core tarballs and the
- input are laid out slightly differently.
-
- - scripts are in the top level of the C{bin} directory.
- - code is included directly from the C{twisted} directory, excluding
- subprojects.
- - all plugins except the subproject plugins are included.
-
- @type version: C{str}
- @param version: The version of Twisted to build.
-
- @return: The tarball file.
- @rtype: L{FilePath}.
- """
- releaseName = "TwistedCore-%s" % (version,)
- outputFile = self.outputDirectory.child(releaseName + ".tar.bz2")
- buildPath = lambda *args: '/'.join((releaseName,) + args)
- tarball = self._createBasicSubprojectTarball(
- "core", version, outputFile)
-
- # Include the bin directory for the subproject.
- for path in self.rootDirectory.child("bin").children():
- if not path.isdir():
- tarball.add(path.path, buildPath("bin", path.basename()))
-
- # Include all files within twisted/ that aren't part of a subproject.
- for path in self.rootDirectory.child("twisted").children():
- if path.basename() == "plugins":
- for plugin in path.children():
- for subproject in self.subprojects:
- if plugin.basename() == "twisted_%s.py" % (subproject,):
- break
- else:
- tarball.add(plugin.path,
- buildPath("twisted", "plugins",
- plugin.basename()))
- elif not path.basename() in self.subprojects + ["topfiles"]:
- tarball.add(path.path, buildPath("twisted", path.basename()))
-
- tarball.add(self.rootDirectory.child("twisted").child("topfiles").path,
- releaseName)
- tarball.close()
-
- return outputFile
-
-
- def buildSubProject(self, projectName, version):
- """
- Build a subproject distribution in
- C{Twisted<Projectname>-<version>.tar.bz2}.
-
- @type projectName: C{str}
- @param projectName: The lowercase name of the subproject to build.
- @type version: C{str}
- @param version: The version of Twisted to build.
-
- @return: The tarball file.
- @rtype: L{FilePath}.
- """
- releaseName = "Twisted%s-%s" % (projectName.capitalize(), version)
- outputFile = self.outputDirectory.child(releaseName + ".tar.bz2")
- buildPath = lambda *args: '/'.join((releaseName,) + args)
- subProjectDir = self.rootDirectory.child("twisted").child(projectName)
-
- tarball = self._createBasicSubprojectTarball(projectName, version,
- outputFile)
-
- tarball.add(subProjectDir.child("topfiles").path, releaseName)
-
- # Include all files in the subproject package except for topfiles.
- for child in subProjectDir.children():
- name = child.basename()
- if name != "topfiles":
- tarball.add(
- child.path,
- buildPath("twisted", projectName, name))
-
- pluginsDir = self.rootDirectory.child("twisted").child("plugins")
- # Include the plugin for the subproject.
- pluginFileName = "twisted_%s.py" % (projectName,)
- pluginFile = pluginsDir.child(pluginFileName)
- if pluginFile.exists():
- tarball.add(pluginFile.path,
- buildPath("twisted", "plugins", pluginFileName))
-
- # Include the bin directory for the subproject.
- binPath = self.rootDirectory.child("bin").child(projectName)
- if binPath.isdir():
- tarball.add(binPath.path, buildPath("bin"))
- tarball.close()
-
- return outputFile
-
-
- def _createBasicSubprojectTarball(self, projectName, version, outputFile):
- """
- Helper method to create and fill a tarball with things common between
- subprojects and core.
-
- @param projectName: The subproject's name.
- @type projectName: C{str}
- @param version: The version of the release.
- @type version: C{str}
- @param outputFile: The location of the tar file to create.
- @type outputFile: L{FilePath}
- """
- releaseName = "Twisted%s-%s" % (projectName.capitalize(), version)
- buildPath = lambda *args: '/'.join((releaseName,) + args)
-
- tarball = tarfile.TarFile.open(outputFile.path, 'w:bz2')
-
- tarball.add(self.rootDirectory.child("LICENSE").path,
- buildPath("LICENSE"))
-
- docPath = self.rootDirectory.child("doc").child(projectName)
-
- if docPath.isdir():
- for child in docPath.walk():
- self._buildDocInDir(child, version, docPath.child("howto"))
- tarball.add(docPath.path, buildPath("doc"))
-
- return tarball
« no previous file with comments | « third_party/twisted_8_1/twisted/python/_epoll.pyx ('k') | third_party/twisted_8_1/twisted/python/_twisted_zsh_stub » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698