From 379ef4a69bd1c8445081019c66ccdd03b9fdd87c Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Mon, 6 Feb 2012 08:45:57 -0500 Subject: [PATCH] Update setup split from openstack-common. Change-Id: I5cc8ef729b6ff0c85e57fa00c1c994038f2c8600 --- melange/openstack/common/setup.py | 87 +++++++++++++++++++++++++++++++ melange/openstack/common/utils.py | 18 ------- openstack-common.conf | 2 +- setup.py | 16 +----- 4 files changed, 90 insertions(+), 33 deletions(-) create mode 100644 melange/openstack/common/setup.py diff --git a/melange/openstack/common/setup.py b/melange/openstack/common/setup.py new file mode 100644 index 00000000..28f5e6f5 --- /dev/null +++ b/melange/openstack/common/setup.py @@ -0,0 +1,87 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2011 OpenStack LLC. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +""" +Utilities with minimum-depends for use in setup.py +""" + +import os +import re +import subprocess + + +def parse_mailmap(mailmap='.mailmap'): + mapping = {} + if os.path.exists(mailmap): + fp = open(mailmap, 'r') + for l in fp: + l = l.strip() + if not l.startswith('#') and ' ' in l: + canonical_email, alias = l.split(' ') + mapping[alias] = canonical_email + return mapping + + +def str_dict_replace(s, mapping): + for s1, s2 in mapping.iteritems(): + s = s.replace(s1, s2) + return s + + +# Get requirements from the first file that exists +def get_reqs_from_files(requirements_files): + reqs_in = [] + for requirements_file in requirements_files: + if os.path.exists(requirements_file): + return open(requirements_file, 'r').read().split('\n') + return [] + + +def parse_requirements(requirements_files=['requirements.txt', + 'tools/pip-requires']): + requirements = [] + for line in get_reqs_from_files(requirements_files): + if re.match(r'\s*-e\s+', line): + requirements.append(re.sub(r'\s*-e\s+.*#egg=(.*)$', r'\1', + line)) + elif re.match(r'\s*-f\s+', line): + pass + else: + requirements.append(line) + + return requirements + + +def parse_dependency_links(requirements_files=['requirements.txt', + 'tools/pip-requires']): + dependency_links = [] + for line in get_reqs_from_files(requirements_files): + if re.match(r'(\s*#)|(\s*$)', line): + continue + if re.match(r'\s*-[ef]\s+', line): + dependency_links.append(re.sub(r'\s*-[ef]\s+', '', line)) + return dependency_links + + +def write_requirements(): + venv = os.environ.get('VIRTUAL_ENV', None) + if venv is not None: + with open("requirements.txt", "w") as req_file: + output = subprocess.Popen(["pip", "-E", venv, "freeze", "-l"], + stdout=subprocess.PIPE) + requirements = output.communicate()[0].strip() + req_file.write(requirements) diff --git a/melange/openstack/common/utils.py b/melange/openstack/common/utils.py index d231f7fe..e45e1956 100644 --- a/melange/openstack/common/utils.py +++ b/melange/openstack/common/utils.py @@ -172,24 +172,6 @@ def parse_isotime(timestr): return datetime.datetime.strptime(timestr, TIME_FORMAT) -def parse_mailmap(mailmap='.mailmap'): - mapping = {} - if os.path.exists(mailmap): - fp = open(mailmap, 'r') - for l in fp: - l = l.strip() - if not l.startswith('#') and ' ' in l: - canonical_email, alias = l.split(' ') - mapping[alias] = canonical_email - return mapping - - -def str_dict_replace(s, mapping): - for s1, s2 in mapping.iteritems(): - s = s.replace(s1, s2) - return s - - def utcnow(): """Overridable version of utils.utcnow.""" if utcnow.override_time: diff --git a/openstack-common.conf b/openstack-common.conf index 2087ab69..a05fcea4 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -1,7 +1,7 @@ [DEFAULT] # The list of modules to copy from openstack-common -modules=config,exception,extensions,utils,wsgi +modules=config,exception,extensions,utils,wsgi,setup # The base module to hold the copy of openstack.common base=melange diff --git a/setup.py b/setup.py index 20a5758d..bd8e36e7 100644 --- a/setup.py +++ b/setup.py @@ -22,23 +22,11 @@ import subprocess from setuptools import find_packages from setuptools.command.sdist import sdist - -# In order to run the i18n commands for compiling and -# installing message catalogs, we use DistUtilsExtra. -# Don't make this a hard requirement, but warn that -# i18n commands won't be available if DistUtilsExtra is -# not installed... -try: - from DistUtilsExtra.auto import setup -except ImportError: - from setuptools import setup - print "Warning: DistUtilsExtra required to use i18n builders. " - print "To build melange with support for message catalogs, you need " - print " https://launchpad.net/python-distutils-extra >= 2.18" +from setuptools import setup gettext.install('melange', unicode=1) -from melange.openstack.common.utils import parse_mailmap, str_dict_replace +from melange.openstack.common.setup import parse_mailmap, str_dict_replace from melange import version