From cf0f5b0f5ab2d06046684ea0153607579b689dee Mon Sep 17 00:00:00 2001 From: Konstantin Ryabitsev Date: Jul 14 2009 14:20:53 +0000 Subject: Apply patch to fix SVN-1.6 versioning problem. see #511021 --- diff --git a/python-setuptools.spec b/python-setuptools.spec index 0c54bc1..d4fda36 100644 --- a/python-setuptools.spec +++ b/python-setuptools.spec @@ -2,7 +2,7 @@ Name: python-setuptools Version: 0.6c9 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Easily build and distribute Python packages Group: Applications/System @@ -11,6 +11,7 @@ URL: http://pypi.python.org/pypi/setuptools Source0: http://pypi.python.org/packages/source/s/setuptools/setuptools-%{version}.tar.gz Source1: psfl.txt Source2: zpl.txt +Patch0: http://bugs.python.org/setuptools/file55/svn_versioning_4.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch @@ -41,6 +42,7 @@ requiring setuptools. %prep %setup -q -n setuptools-%{version} +%patch0 -p0 -b .svn16 find -name '*.txt' | xargs chmod -x find -name '*.py' | xargs sed -i '1s|^#!python|#!%{__python}|' @@ -84,6 +86,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Tue Jul 14 2009 Konstantin Ryabitsev - 0.6c9-4 +- Apply SVN-1.6 versioning patch (rhbz #511021) + * Thu Feb 26 2009 Fedora Release Engineering - 0.6c9-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild diff --git a/svn_versioning_4.patch b/svn_versioning_4.patch new file mode 100644 index 0000000..175f9ae --- /dev/null +++ b/svn_versioning_4.patch @@ -0,0 +1,217 @@ +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('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('"), (""", '"'), ("'", "'"), +@@ -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('