File custom.patch of Package python-py2pack
diff --git a/py2pack/__init__.py b/py2pack/__init__.py
index 24079f9..bac8792 100644
--- a/py2pack/__init__.py
+++ b/py2pack/__init__.py
@@ -88,9 +88,17 @@ def fetch(args):
if not url:
print("unable to find a source release for {0}!".format(args.name))
sys.exit(1)
+ if '.' not in url['filename']:
+ print('file {0} looks strange! From {1}'.format(url['filename'], url['url']))
+ sys.exit(1)
+ file_exists = os.path.exists(url['filename'])
+ if file_exists:
+ print('{0} already exists'.format(url['filename']))
+ sys.exit(1)
print('downloading package {0}-{1}...'.format(args.name, args.version))
print('from {0}'.format(url['url']))
urlretrieve(url['url'], url['filename'])
+ print('Created {0}'.format(url['filename']))
def _canonicalize_setup_data(data):
@@ -152,7 +160,12 @@ def _augment_data_from_tarball(args, filename, data):
docs_re = re.compile(r"{0}-{1}\/((?:AUTHOR|ChangeLog|CHANGES|NEWS|README).*)".format(args.name, args.version), re.IGNORECASE)
license_re = re.compile(r"{0}-{1}\/((?:COPYING|LICENSE).*)".format(args.name, args.version), re.IGNORECASE)
- data_archive = meta_utils.from_archive(filename)
+ try:
+ data_archive = meta_utils.from_archive(filename)
+ except Exception as e:
+ print('error {0}'.format(e))
+ return
+
data.update(data_archive['data'])
names = py2pack.utils._get_archive_filelist(filename)
@@ -216,6 +229,16 @@ def _get_source_url(pypi_name, filename):
pypi_name[0], pypi_name, filename)
+def _find_local_archive(args):
+ tarball_file = glob.glob("{0}-{1}.*".format(args.name, args.version))
+ # also check tarball files with underscore. Some packages have a name with
+ # a - but the tarball name has a _ . Eg the package os-faults
+ tarball_file += glob.glob("{0}-{1}.*".format(args.name.replace('-', '_'),
+ args.version))
+ if tarball_file:
+ return tarball_file[0]
+
+
def generate(args):
# TODO (toabctl): remove this is a later release
if args.run:
@@ -227,6 +250,8 @@ def generate(args):
args.template = file_template_list()[0]
if not args.filename:
args.filename = args.name + '.' + args.template.rsplit('.', 1)[1] # take template file ending
+ if os.path.exists('.osc'):
+ args.filename = 'python-' + args.filename
print('generating spec file for {0}...'.format(args.name))
data = pypi.release_data(args.name, args.version) # fetch all meta data
url = newest_download_url(args)
@@ -243,13 +268,15 @@ def generate(args):
data['user_name'] = pwd.getpwuid(os.getuid())[4] # set system user (packager)
data['summary_no_ending_dot'] = re.sub(r'(.*)\.', r'\g<1>', data.get('summary', ""))
- tarball_file = glob.glob("{0}-{1}.*".format(args.name, args.version))
- # also check tarball files with underscore. Some packages have a name with
- # a - but the tarball name has a _ . Eg the package os-faults
- tarball_file += glob.glob("{0}-{1}.*".format(args.name.replace('-', '_'),
- args.version))
- if tarball_file: # get some more info from that
- _augment_data_from_tarball(args, tarball_file[0], data)
+ tarball_file = _find_local_archive(args)
+ if not tarball_file:
+ fetch(args)
+ tarball_file = _find_local_archive(args)
+ if not tarball_file:
+ print('Cant find fetched file')
+ sys.exit(1)
+
+ _augment_data_from_tarball(args, tarball_file, data)
_normalize_license(data)
@@ -279,10 +306,14 @@ def newest_download_url(args):
'filename': args.source_url[args.source_url.rfind("/") + 1:]}
for url in pypi.release_urls(args.name, args.version): # Fetch all download URLs
if url['packagetype'] == 'sdist': # Found the source URL we care for
+ if url['url'] == 'UNKNOWN':
+ print('skipping UNKNOWN url from release urls of {0}'.format(args.name))
return url
# No PyPI tarball release, let's see if an upstream download URL is provided:
data = pypi.release_data(args.name, args.version) # Fetch all meta data
if 'download_url' in data and data['download_url']:
+ if data['download_url'] == 'UNKNOWN':
+ print('skipping UNKNOWN url from download urls of {0}'.format(args.name))
filename = os.path.basename(data['download_url'])
return {'url': data['download_url'], 'filename': filename}
return {} # We're all out of bubblegum
@@ -295,12 +326,39 @@ def file_template_list():
return template_files
+def update(args):
+ if not os.path.exists('.osc'):
+ sys.exit(1)
+ rpm_package = open('.osc/_package').read().strip()
+ if rpm_package.startswith('python-'):
+ pypi_package = rpm_package[len('python-'):]
+ args.name = pypi_package
+ elif rpm_package.startswith('python2-'):
+ print('Warning: stripping python2- prefix from {0}!'.format(rpm_package))
+ pypi_package = rpm_package[len('python2-'):]
+ args.name = pypi_package
+ elif rpm_package.startswith('python3-'):
+ print('Warning: stripping python3- prefix from {0}!'.format(rpm_package))
+ pypi_package = rpm_package[len('python3-'):]
+ args.name = pypi_package
+ else:
+ print('Warning: Unknown package {0} without python* prefix!'.format(rpm_package))
+ args.name = rpm_package
+ fetch(args)
+
+
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--version', action='version', version='%(prog)s {0}'.format(py2pack_version.version))
parser.add_argument('--proxy', help='HTTP proxy to use')
subparsers = parser.add_subparsers(title='commands')
+ parser_update = subparsers.add_parser('update', help='update package')
+ parser_update.set_defaults(func=update)
+ parser_update.add_argument('name', nargs='?', help='package name')
+ parser_update.add_argument('version', nargs='?', help='package version (optional)')
+ parser_update.add_argument('--source-url', default=None, help='source url')
+
parser_list = subparsers.add_parser('list', help='list all packages on PyPI')
parser_list.set_defaults(func=list)