Browse Source

Align with project configs.

* docs in doc/ rather than docs/
* write out changelog from git
* freeze requirements file

Change-Id: If28d5414f7b2747fd6835546c45e1acfac8a3563
changes/26/4626/4
Monty Taylor 10 years ago
parent
commit
f8ba5af130
  1. 3
      MANIFEST.in
  2. 0
      doc/Makefile
  3. 0
      doc/keystone_compat_flows.sdx
  4. 0
      doc/source/_templates/.placeholder
  5. 0
      doc/source/_theme/layout.html
  6. 0
      doc/source/_theme/theme.conf
  7. 0
      doc/source/api_curl_examples.rst
  8. 0
      doc/source/architecture.rst
  9. 0
      doc/source/community.rst
  10. 0
      doc/source/conf.py
  11. 0
      doc/source/configuration.rst
  12. 0
      doc/source/configuringservices.rst
  13. 0
      doc/source/developing.rst
  14. 0
      doc/source/images/authComp.svg
  15. 0
      doc/source/images/graphs_305.svg
  16. 0
      doc/source/images/graphs_authComp.svg
  17. 0
      doc/source/images/graphs_authCompDelegate.svg
  18. 0
      doc/source/images/graphs_both.svg
  19. 0
      doc/source/images/graphs_delegate_forbiden_basic.svg
  20. 0
      doc/source/images/graphs_delegate_forbiden_proxy.svg
  21. 0
      doc/source/images/graphs_delegate_reject_basic.svg
  22. 0
      doc/source/images/graphs_delegate_reject_oauth.svg
  23. 0
      doc/source/images/graphs_delegate_unimplemented.svg
  24. 0
      doc/source/images/graphs_mapper.svg
  25. 0
      doc/source/images/graphs_proxyAuth.svg
  26. 0
      doc/source/images/images_layouts.svg
  27. 0
      doc/source/index.rst
  28. 0
      doc/source/man/keystone-all.rst
  29. 0
      doc/source/man/keystone-manage.rst
  30. 0
      doc/source/middleware_architecture.rst
  31. 0
      doc/source/nova-api-paste.rst
  32. 0
      doc/source/old/backends.rst
  33. 0
      doc/source/old/controllingservers.rst
  34. 0
      doc/source/old/endpoints.rst
  35. 0
      doc/source/old/extensions.rst
  36. 0
      doc/source/old/middleware.rst
  37. 0
      doc/source/old/migration.rst
  38. 0
      doc/source/old/releases.rst
  39. 0
      doc/source/old/services.rst
  40. 0
      doc/source/old/ssl.rst
  41. 2
      doc/source/setup.rst
  42. 0
      doc/source/static/basic.css
  43. 0
      doc/source/static/default.css
  44. 0
      doc/source/static/jquery.tweet.js
  45. 0
      doc/source/static/tweaks.css
  46. 1
      keystone/openstack/common/cfg.py
  47. 127
      keystone/openstack/common/setup.py
  48. 2
      openstack-common.conf
  49. 21
      setup.cfg
  50. 59
      setup.py

3
MANIFEST.in

@ -4,12 +4,13 @@ include README.rst
include openstack-common.conf
include run_tests.py
include run_tests.sh
include setup.cfg
include setup.py
include TODO
include tox.ini
include etc/*
graft bin
graft docs
graft doc
graft tests
graft tools
recursive-include keystone *.json *.xml *.cfg README

0
docs/Makefile → doc/Makefile

0
docs/keystone_compat_flows.sdx → doc/keystone_compat_flows.sdx

0
docs/source/_templates/.placeholder → doc/source/_templates/.placeholder

0
docs/source/_theme/layout.html → doc/source/_theme/layout.html

0
docs/source/_theme/theme.conf → doc/source/_theme/theme.conf

0
docs/source/api_curl_examples.rst → doc/source/api_curl_examples.rst

0
docs/source/architecture.rst → doc/source/architecture.rst

0
docs/source/community.rst → doc/source/community.rst

0
docs/source/conf.py → doc/source/conf.py

0
docs/source/configuration.rst → doc/source/configuration.rst

0
docs/source/configuringservices.rst → doc/source/configuringservices.rst

0
docs/source/developing.rst → doc/source/developing.rst

0
docs/source/images/authComp.svg → doc/source/images/authComp.svg

0
docs/source/images/graphs_305.svg → doc/source/images/graphs_305.svg

0
docs/source/images/graphs_authComp.svg → doc/source/images/graphs_authComp.svg

0
docs/source/images/graphs_authCompDelegate.svg → doc/source/images/graphs_authCompDelegate.svg

0
docs/source/images/graphs_both.svg → doc/source/images/graphs_both.svg

0
docs/source/images/graphs_delegate_forbiden_basic.svg → doc/source/images/graphs_delegate_forbiden_basic.svg

0
docs/source/images/graphs_delegate_forbiden_proxy.svg → doc/source/images/graphs_delegate_forbiden_proxy.svg

0
docs/source/images/graphs_delegate_reject_basic.svg → doc/source/images/graphs_delegate_reject_basic.svg

0
docs/source/images/graphs_delegate_reject_oauth.svg → doc/source/images/graphs_delegate_reject_oauth.svg

0
docs/source/images/graphs_delegate_unimplemented.svg → doc/source/images/graphs_delegate_unimplemented.svg

0
docs/source/images/graphs_mapper.svg → doc/source/images/graphs_mapper.svg

0
docs/source/images/graphs_proxyAuth.svg → doc/source/images/graphs_proxyAuth.svg

0
docs/source/images/images_layouts.svg → doc/source/images/images_layouts.svg

0
docs/source/index.rst → doc/source/index.rst

0
docs/source/man/keystone-all.rst → doc/source/man/keystone-all.rst

0
docs/source/man/keystone-manage.rst → doc/source/man/keystone-manage.rst

0
docs/source/middleware_architecture.rst → doc/source/middleware_architecture.rst

0
docs/source/nova-api-paste.rst → doc/source/nova-api-paste.rst

0
docs/source/old/backends.rst → doc/source/old/backends.rst

0
docs/source/old/controllingservers.rst → doc/source/old/controllingservers.rst

0
docs/source/old/endpoints.rst → doc/source/old/endpoints.rst

0
docs/source/old/extensions.rst → doc/source/old/extensions.rst

0
docs/source/old/middleware.rst → doc/source/old/middleware.rst

0
docs/source/old/migration.rst → doc/source/old/migration.rst

0
docs/source/old/releases.rst → doc/source/old/releases.rst

0
docs/source/old/services.rst → doc/source/old/services.rst

0
docs/source/old/ssl.rst → doc/source/old/ssl.rst

2
docs/source/setup.rst → doc/source/setup.rst

@ -124,7 +124,7 @@ into your system from the requires files::
$ pip install -r tools/pip-requires
# Install the dependencies for developing, testing, and running keystone
$ pip install -r tools/pip-requires-test
$ pip install -r tools/test-requires
# Fake-install the project by symlinking Keystone into your Python site-packages
$ python setup.py develop

0
docs/source/static/basic.css → doc/source/static/basic.css

0
docs/source/static/default.css → doc/source/static/default.css

0
docs/source/static/jquery.tweet.js → doc/source/static/jquery.tweet.js

0
docs/source/static/tweaks.css → doc/source/static/tweaks.css

1
keystone/openstack/common/cfg.py

@ -1,6 +1,5 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 OpenStack, LLC
# Copyright 2011 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may

127
keystone/openstack/common/setup.py

@ -0,0 +1,127 @@
# 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 canonicalize_emails(changelog, mapping):
""" Takes in a string and an email alias mapping and replaces all
instances of the aliases in the string with their real email
"""
for alias, email in mapping.iteritems():
changelog = changelog.replace(alias, email)
return changelog
# 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)
def _run_shell_command(cmd):
output = subprocess.Popen(["/bin/sh", "-c", cmd],
stdout=subprocess.PIPE)
return output.communicate()[0].strip()
def write_vcsversion(location):
""" Produce a vcsversion dict that mimics the old one produced by bzr
"""
if os.path.isdir('.git'):
branch_nick_cmd = 'git branch | grep -Ei "\* (.*)" | cut -f2 -d" "'
branch_nick = _run_shell_command(branch_nick_cmd)
revid_cmd = "git rev-parse HEAD"
revid = _run_shell_command(revid_cmd).split()[0]
revno_cmd = "git log --oneline | wc -l"
revno = _run_shell_command(revno_cmd)
with open(location, 'w') as version_file:
version_file.write("""
# This file is automatically generated by setup.py, So don't edit it. :)
version_info = {
'branch_nick': '%s',
'revision_id': '%s',
'revno': %s
}
""" % (branch_nick, revid, revno))
def write_git_changelog():
""" Write a changelog based on the git changelog """
if os.path.isdir('.git'):
git_log_cmd = 'git log --stat'
changelog = _run_shell_command(git_log_cmd)
mailmap = parse_mailmap()
with open("ChangeLog", "w") as changelog_file:
changelog_file.write(canonicalize_emails(changelog, mailmap))

2
openstack-common.conf

@ -1,7 +1,7 @@
[DEFAULT]
# The list of modules to copy from openstack-common
modules=cfg
modules=cfg,setup
# The base module to hold the copy of openstack.common
base=keystone

21
setup.cfg

@ -0,0 +1,21 @@
[egg_info]
tag_build =
tag_date = 0
tag_svn_revision = 0
[build_sphinx]
all_files = 1
build-dir = doc/build
source-dir = doc/source
[nosetests]
# NOTE(jkoelker) To run the test suite under nose install the following
# coverage http://pypi.python.org/pypi/coverage
# tissue http://pypi.python.org/pypi/tissue (pep8 checker)
# openstack-nose https://github.com/jkoelker/openstack-nose
verbosity=2
detailed-errors=1
with-openstack=1
openstack-red=0.05
openstack-yellow=0.025
openstack-show-elapsed=1

59
setup.py

@ -1,5 +1,57 @@
from setuptools import setup, find_packages
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 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.
from setuptools import find_packages
from setuptools.command.sdist import sdist
from setuptools import setup
from keystone.openstack.common.setup import parse_requirements
from keystone.openstack.common.setup import parse_dependency_links
from keystone.openstack.common.setup import write_requirements
from keystone.openstack.common.setup import write_git_changelog
class local_sdist(sdist):
"""Customized sdist hook - builds the ChangeLog file from VC first"""
def run(self):
write_git_changelog()
sdist.run(self)
cmdclass = {'sdist': local_sdist}
try:
from sphinx.setup_command import BuildDoc
class local_BuildDoc(BuildDoc):
def run(self):
for builder in ['html', 'man']:
self.builder = builder
self.finalize_options()
BuildDoc.run(self)
cmdclass['build_sphinx'] = local_BuildDoc
except:
pass
requires = parse_requirements()
depend_links = parse_dependency_links()
write_requirements()
setup(name='keystone',
version='2012.1',
@ -8,9 +60,12 @@ setup(name='keystone',
author='OpenStack, LLC.',
author_email='openstack@lists.launchpad.net',
url='http://www.openstack.org',
cmdclass=cmdclass,
packages=find_packages(exclude=['test', 'bin']),
include_package_data=True,
scripts=['bin/keystone-all', 'bin/keystone-manage'],
zip_safe=False,
install_requires=['setuptools'],
install_requires=requires,
dependency_links=depend_links,
test_suite='nose.collector',
)
Loading…
Cancel
Save