Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:mozillamessaging:thunderstorm:test
python-setuptools
svn_versioning_4.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File svn_versioning_4.patch of Package python-setuptools
Index: setuptools/svn_util.py =================================================================== --- setuptools/svn_util.py (revision 0) +++ setuptools/svn_util.py (revision 0) @@ -0,0 +1,109 @@ +import os +import re + +def get_entries_files(base, recurse=True): + for base,dirs,files in os.walk(os.curdir): + if '.svn' not in dirs: + dirs[:] = [] + continue # no sense walking uncontrolled subdirs + dirs.remove('.svn') + f = open(os.path.join(base,'.svn','entries')) + yield f.read() + f.close() + +class SVNEntries(object): + def __init__(self, data): + self.data = data + + @classmethod + def load(class_, base): + filename = os.path.join(base, '.svn', 'entries') + f = open(filename) + result = SVNEntries.read(f) + f.close() + return result + + @classmethod + def read(class_, file): + data = file.read() + is_xml = data.startswith('<?xml') + class_ = [SVNEntriesText, SVNEntriesXML][is_xml] + return class_(data) + + def parse_revision(self): + all_revs = self.parse_revision_numbers() + [0] + return max(all_revs) + +class SVNEntriesText(SVNEntries): + known_svn_versions = { + '1.4.x': 8, + '1.5.x': 9, + '1.6.x': 10, + } + + def __get_cached_sections(self): + return self.sections + + def get_sections(self): + SECTION_DIVIDER = '\f\n' + sections = self.data.split(SECTION_DIVIDER) + sections = map(str.splitlines, sections) + try: + # remove the SVN version number from the first line + svn_version = int(sections[0].pop(0)) + if not svn_version in self.known_svn_versions.values(): + log.warn("Unknown subversion verson %d", svn_version) + except ValueError: + return + self.sections = sections + self.get_sections = self.__get_cached_sections + return self.sections + + def is_valid(self): + return bool(self.get_sections()) + + def get_url(self): + return self.get_sections()[0][4] + + def parse_revision_numbers(self): + revision_line_number = 9 + rev_numbers = [ + int(section[revision_line_number]) + for section in self.get_sections() + if len(section)>revision_line_number + and section[revision_line_number] + ] + return rev_numbers + + def get_undeleted_records(self): + undeleted = lambda s: s and s[0] and (len(s) < 6 or s[5] != 'delete') + result = [ + section[0] + for section in self.get_sections() + if undeleted(section) + ] + return result + +class SVNEntriesXML(SVNEntries): + def is_valid(self): + return True + + def get_url(self): + "Get repository URL" + urlre = re.compile('url="([^"]+)"') + return urlre.search(self.data).group(1) + + def parse_revision_numbers(self): + revre = re.compile('committed-rev="(\d+)"') + return [ + int(m.group(1)) + for m in revre.finditer(self.data) + ] + + def get_undeleted_records(self): + entries_pattern = re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I) + results = [ + unescape(match.group(1)) + for match in entries_pattern.finditer(self.data) + ] + return results Property changes on: setuptools/svn_util.py ___________________________________________________________________ Name: svn:keywords + Id Rev Author Date Name: svn:eol-style + native Index: setuptools/command/egg_info.py =================================================================== --- setuptools/command/egg_info.py (revision 72970) +++ setuptools/command/egg_info.py (working copy) @@ -8,6 +8,7 @@ from distutils.errors import * from distutils import log from setuptools.command.sdist import sdist +from setuptools import svn_util from distutils.util import convert_path from distutils.filelist import FileList from pkg_resources import parse_requirements, safe_name, parse_version, \ @@ -205,30 +206,20 @@ def get_svn_revision(self): revision = 0 - urlre = re.compile('url="([^"]+)"') - revre = re.compile('committed-rev="(\d+)"') for base,dirs,files in os.walk(os.curdir): if '.svn' not in dirs: dirs[:] = [] continue # no sense walking uncontrolled subdirs dirs.remove('.svn') - f = open(os.path.join(base,'.svn','entries')) - data = f.read() - f.close() - - if data.startswith('9') or data.startswith('8'): - data = map(str.splitlines,data.split('\n\x0c\n')) - del data[0][0] # get rid of the '8' or '9' - dirurl = data[0][3] - localrev = max([int(d[9]) for d in data if len(d)>9 and d[9]]+[0]) - elif data.startswith('<?xml'): - dirurl = urlre.search(data).group(1) # get repository URL - localrev = max([int(m.group(1)) for m in revre.finditer(data)]+[0]) - else: + + entries = svn_util.SVNEntries.load(base) + if not entries.is_valid(): log.warn("unrecognized .svn/entries format; skipping %s", base) dirs[:] = [] continue + localrev = entries.parse_revision() + dirurl = entries.get_url() if base==os.curdir: base_url = dirurl+'/' # save the root url elif not dirurl.startswith(base_url): @@ -243,7 +234,6 @@ - def find_sources(self): """Generate SOURCES.txt manifest file""" manifest_filename = os.path.join(self.egg_info,"SOURCES.txt") Index: setuptools/command/sdist.py =================================================================== --- setuptools/command/sdist.py (revision 72970) +++ setuptools/command/sdist.py (working copy) @@ -2,6 +2,7 @@ from distutils.util import convert_path from distutils import log import os, re, sys, pkg_resources +from setuptools.svn_util import SVNEntries entities = [ ("<","<"), (">", ">"), (""", '"'), ("'", "'"), @@ -80,24 +81,11 @@ yield joinpath(dirname, parts[0]) -entries_pattern = re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I) def entries_finder(dirname, filename): - f = open(filename,'rU') - data = f.read() - f.close() - if data.startswith('9') or data.startswith('8'): # subversion 1.5/1.4 - for record in map(str.splitlines, data.split('\n\x0c\n')[1:]): - if not record or len(record)>=6 and record[5]=="delete": - continue # skip deleted - yield joinpath(dirname, record[0]) - elif data.startswith('<?xml'): - for match in entries_pattern.finditer(data): - yield joinpath(dirname,unescape(match.group(1))) - else: - log.warn("unrecognized .svn/entries format in %s", dirname) + for record in SVNEntries.load(dirname).get_undeleted_records(): + yield joinpath(dirname, record) - finders = [ (convert_path('CVS/Entries'), re_finder(re.compile(r"^\w?/([^/]+)/", re.M))),
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor