Skip to content

Commit

Permalink
Migrate to pbr for build
Browse files Browse the repository at this point in the history
pbr is the libification of what was openstack.common.setup. If provides
the build information in a delcarative form, instead of as executable python
code, which works around the chicken and egg problem of needing setup
libraries present to run setup, but needing to run setup to tell if you
need setup libraries.

One of the features that comes along with this is versioning based on
git tags. If the current revision is a signed git tag, then that is the
version of the package. If it is not, the version is equal to the most
recent git tag, plus a commit count, plus a git sha (similar to git
describe, but scrubbed for python version rules compliance)

pbr updates are also part of the upcoming automation around ensuring
global requirements stay in sync.

Closes-Bug: #1179007
Change-Id: Ia473960be7e8aa44f09d48cea72ed3c8845f82fa
  • Loading branch information
emonty committed Aug 14, 2013
1 parent 8a84998 commit 4332bff
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 154 deletions.
1 change: 1 addition & 0 deletions requirements.txt
@@ -1,3 +1,4 @@
pbr>=0.5.21,<1.0
dnspython>=1.10.0
eventlet>=0.9.15
greenlet>=0.3.1
Expand Down
90 changes: 90 additions & 0 deletions setup.cfg
@@ -1,3 +1,93 @@
[metadata]
name = swift
summary = OpenStack Object Storage
description-file =
README.md
author = OpenStack
author-email = openstack-dev@lists.openstack.org
home-page = http://www.openstack.org/
classifier =
Development Status :: 5 - Production/Stable
Environment :: OpenStack
Intended Audience :: Information Technology
Intended Audience :: System Administrators
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
Programming Language :: Python :: 2
Programming Language :: Python :: 2.6
Programming Language :: Python :: 2.7

[pbr]
skip_authors = True
skip_changelog = True

[files]
packages =
swift
scripts =
bin/swift-account-audit
bin/swift-account-auditor
bin/swift-account-reaper
bin/swift-account-replicator
bin/swift-account-server
bin/swift-bench
bin/swift-bench-client
bin/swift-config
bin/swift-container-auditor
bin/swift-container-replicator
bin/swift-container-server
bin/swift-container-sync
bin/swift-container-updater
bin/swift-dispersion-populate
bin/swift-dispersion-report
bin/swift-drive-audit
bin/swift-form-signature
bin/swift-get-nodes
bin/swift-init
bin/swift-object-auditor
bin/swift-object-expirer
bin/swift-object-info
bin/swift-object-replicator
bin/swift-object-server
bin/swift-object-updater
bin/swift-oldies
bin/swift-orphans
bin/swift-proxy-server
bin/swift-recon
bin/swift-recon-cron
bin/swift-ring-builder
bin/swift-temp-url

[entry_points]
paste.app_factory =
proxy = swift.proxy.server:app_factory
object = swift.obj.server:app_factory
container = swift.container.server:app_factory
account = swift.account.server:app_factory

paste.filter_factory =
healthcheck = swift.common.middleware.healthcheck:filter_factory
crossdomain = swift.common.middleware.crossdomain:filter_factory
memcache = swift.common.middleware.memcache:filter_factory
ratelimit = swift.common.middleware.ratelimit:filter_factory
cname_lookup = swift.common.middleware.cname_lookup:filter_factory
catch_errors = swift.common.middleware.catch_errors:filter_factory
domain_remap = swift.common.middleware.domain_remap:filter_factory
staticweb = swift.common.middleware.staticweb:filter_factory
tempauth = swift.common.middleware.tempauth:filter_factory
keystoneauth = swift.common.middleware.keystoneauth:filter_factory
recon = swift.common.middleware.recon:filter_factory
tempurl = swift.common.middleware.tempurl:filter_factory
formpost = swift.common.middleware.formpost:filter_factory
name_check = swift.common.middleware.name_check:filter_factory
bulk = swift.common.middleware.bulk:filter_factory
container_quotas = swift.common.middleware.container_quotas:filter_factory
account_quotas = swift.common.middleware.account_quotas:filter_factory
proxy_logging = swift.common.middleware.proxy_logging:filter_factory
slo = swift.common.middleware.slo:filter_factory
list_endpoints = swift.common.middleware.list_endpoints:filter_factory

[build_sphinx]
all_files = 1
build-dir = doc/build
Expand Down
110 changes: 7 additions & 103 deletions setup.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
# Copyright (c) 2010-2012 OpenStack, LLC.
#!/usr/bin/env python
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -14,105 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from setuptools import setup, find_packages
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools

from swift import __canonical_version__ as version


name = 'swift'


with open('requirements.txt', 'r') as f:
requires = [x.strip() for x in f if x.strip()]


setup(
name=name,
version=version,
description='Swift',
license='Apache License (2.0)',
author='OpenStack, LLC.',
author_email='openstack-admins@lists.launchpad.net',
url='https://launchpad.net/swift',
packages=find_packages(exclude=['test', 'bin']),
test_suite='nose.collector',
classifiers=[
'Development Status :: 5 - Production/Stable',
'License :: OSI Approved :: Apache Software License',
'Operating System :: POSIX :: Linux',
'Programming Language :: Python',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Environment :: No Input/Output (Daemon)',
'Environment :: OpenStack',
],
install_requires=requires,
scripts=[
'bin/swift-account-audit',
'bin/swift-account-auditor',
'bin/swift-account-reaper',
'bin/swift-account-replicator',
'bin/swift-account-server',
'bin/swift-bench',
'bin/swift-bench-client',
'bin/swift-config',
'bin/swift-container-auditor',
'bin/swift-container-replicator',
'bin/swift-container-server',
'bin/swift-container-sync',
'bin/swift-container-updater',
'bin/swift-dispersion-populate',
'bin/swift-dispersion-report',
'bin/swift-drive-audit',
'bin/swift-form-signature',
'bin/swift-get-nodes',
'bin/swift-init',
'bin/swift-object-auditor',
'bin/swift-object-expirer',
'bin/swift-object-info',
'bin/swift-object-replicator',
'bin/swift-object-server',
'bin/swift-object-updater',
'bin/swift-oldies',
'bin/swift-orphans',
'bin/swift-proxy-server',
'bin/swift-recon',
'bin/swift-recon-cron',
'bin/swift-ring-builder',
'bin/swift-temp-url',
],
entry_points={
'paste.app_factory': [
'proxy=swift.proxy.server:app_factory',
'object=swift.obj.server:app_factory',
'container=swift.container.server:app_factory',
'account=swift.account.server:app_factory',
],
'paste.filter_factory': [
'healthcheck=swift.common.middleware.healthcheck:filter_factory',
'crossdomain=swift.common.middleware.crossdomain:filter_factory',
'memcache=swift.common.middleware.memcache:filter_factory',
'ratelimit=swift.common.middleware.ratelimit:filter_factory',
'cname_lookup=swift.common.middleware.cname_lookup:filter_factory',
'catch_errors=swift.common.middleware.catch_errors:filter_factory',
'domain_remap=swift.common.middleware.domain_remap:filter_factory',
'staticweb=swift.common.middleware.staticweb:filter_factory',
'tempauth=swift.common.middleware.tempauth:filter_factory',
'keystoneauth=swift.common.middleware.keystoneauth:filter_factory',
'recon=swift.common.middleware.recon:filter_factory',
'tempurl=swift.common.middleware.tempurl:filter_factory',
'formpost=swift.common.middleware.formpost:filter_factory',
'name_check=swift.common.middleware.name_check:filter_factory',
'bulk=swift.common.middleware.bulk:filter_factory',
'container_quotas=swift.common.middleware.container_quotas:'
'filter_factory',
'account_quotas=swift.common.middleware.account_quotas:'
'filter_factory',
'proxy_logging=swift.common.middleware.proxy_logging:'
'filter_factory',
'slo=swift.common.middleware.slo:filter_factory',
'list_endpoints=swift.common.middleware.list_endpoints:'
'filter_factory',
],
},
)
setuptools.setup(
setup_requires=['pbr>=0.5.21,<1.0'],
pbr=True)
31 changes: 18 additions & 13 deletions swift/__init__.py
@@ -1,16 +1,21 @@
class Version(object):
def __init__(self, canonical_version, final):
self.canonical_version = canonical_version
self.final = final
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# 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.

@property
def pretty_version(self):
if self.final:
return self.canonical_version
else:
return '%s-dev' % (self.canonical_version,)
import pbr.version


_version = Version('1.9.2', False)
__version__ = _version.pretty_version
__canonical_version__ = _version.canonical_version
_version_info = pbr.version.VersionInfo('swift')
__version__ = _version_info.release_string()
__canonical_version__ = _version_info.version_string()
38 changes: 0 additions & 38 deletions test/unit/common/test_init.py

This file was deleted.

0 comments on commit 4332bff

Please sign in to comment.