annotate setup.py @ 415:0e9a94b7fdfa

bake: Improve bake record information. * Store things in the bake record that require less interaction between the master process and the workers. For instance, don't store the paginator object in the render pass info -- instead, just store whether pagination was used, and whether it had more items. * Simplify information passing between workers and bake passes by saving the rendering info to the JSON cache. This means the "render first sub" job doesn't have to return anything except errors now. * Add more performance counter info.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 20 Jun 2015 19:23:16 -0700
parents 9fb7c4921d75
children d4a01a023998
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 #!/usr/bin/env python
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 import os
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 import os.path
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 import sys
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 import time
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 import subprocess
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
9 from setuptools import setup, find_packages, Command
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 from setuptools.command.test import test
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 def read(fname):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 with open(os.path.join(os.path.dirname(__file__), fname)) as fp:
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 return fp.read()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 def runcmd(cmd):
373
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
19 with subprocess.Popen(
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
20 cmd, stdout=subprocess.PIPE,
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 stderr=subprocess.PIPE) as p:
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 out, err = p.communicate()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 return out, err
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 class PyTest(test):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 def finalize_options(self):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 super(PyTest, self).finalize_options()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 self.test_args = ['tests']
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 self.test_suite = True
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 def run_tests(self):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 import pytest
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 errno = pytest.main(self.test_args)
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35 sys.exit(errno)
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
38 class GenerateVersionCommand(Command):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
39 description = 'generates a version file'
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
40 user_options = [
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
41 ('force=', 'f', 'force a specific version number')]
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
42
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
43 def initialize_options(self):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
44 self.force = None
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
45
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
46 def finalize_options(self):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
47 pass
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
48
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
49 def run(self):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
50 v = self.force or generate_version()
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
51 write_version(v)
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
52 print("Generated version %s" % v)
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
53 return 0
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
54
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
55
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
56 def generate_version():
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
57 """ Generate a version file from the source control information.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
58 (this is loosely based on what Mercurial does)"""
82
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
59 if os.path.isdir(os.path.join(os.path.dirname(__file__), '.hg')):
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
60 return generate_version_from_mercurial()
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
61 elif os.path.isdir(os.path.join(os.path.dirname(__file__), '.git')):
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
62 return generate_version_from_git()
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
63 else:
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
64 raise Exception("Can't generate version number: this is not a "
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
65 "Mercurial repository.")
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
66
179
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
67
82
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
68 def generate_version_from_mercurial():
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
69 try:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
70 # Get the version we're currently on. Also see if we have local
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
71 # changes.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
72 cmd = ['hg', 'id', '-i']
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
73 hgid, err = runcmd(cmd)
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
74 hgid = hgid.decode('utf8').strip()
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
75 has_local_changes = hgid.endswith('+')
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
76 hgid = hgid.rstrip('+')
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
77
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
78 # Get the tags on the current version.
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
79 cmd = ['hg', 'log', '-r', '.', '--template', '{tags}\n']
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
80 tags, err = runcmd(cmd)
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
81 versions = [t for t in tags.decode('utf8').split() if t[0].isdigit()]
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
82
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 if versions:
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
84 # Use the tag found at the current revision.
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 version = versions[-1]
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86 else:
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
87 # Use the latest tag, but add info about how many revisions
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
88 # there have been since then.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
89 cmd = ['hg', 'parents', '--template',
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
90 '{latesttag}+{latesttagdistance}']
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
91 version, err = runcmd(cmd)
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
92 tag, dist = version.decode('utf8').split('+')
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
93 if dist == '1':
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
94 # We're on the commit that created the tag in the first place.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
95 # Let's just do as if we were on the tag.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
96 version = tag
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
97 else:
179
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
98 version = '%s+%s.%s' % (tag, dist, hgid)
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
100 if has_local_changes:
179
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
101 if '+' in version:
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
102 version += '.'
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
103 else:
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
104 version += '+'
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
105 version += time.strftime('%Y%m%d')
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
106
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
107 return version
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
108 except OSError:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
109 raise Exception("Can't generate version number: Mercurial isn't "
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
110 "installed, or in the PATH.")
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
111 except Exception as ex:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
112 raise Exception("Can't generate version number: %s" % ex)
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114
82
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
115 def generate_version_from_git():
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
116 try:
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
117 cmd = ['git', 'describe', '--tags', '--dirty=+']
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
118 version, err = runcmd(cmd)
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
119 version = version.decode('utf8').strip()
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
120 if version.endswith('+'):
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
121 version += time.strftime('%Y%m%d')
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
122 return version
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
123 except OSError:
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
124 raise Exception("Can't generate version number: Git isn't installed, "
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
125 "or in the PATH.")
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
126 except Exception as ex:
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
127 raise Exception("Can't generate version number: %s" % ex)
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
128
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
129
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
130 def write_version(version):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
131 if not version:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
132 raise Exception("No version to write!")
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
133
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
134 f = open("piecrust/__version__.py", "w")
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
135 f.write('# this file is autogenerated by setup.py\n')
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
136 f.write('APP_VERSION = "%s"\n' % version)
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
137 f.close()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
138
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139
72
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
140 # Always try to generate an up to date version.
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
141 # Otherwise, fall back on an (hopefully) existing version file.
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
142 try:
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
143 version = generate_version()
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
144 write_version(version)
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
145 except:
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
146 version = None
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
147
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
148 if version is None:
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
149 try:
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
150 from piecrust.__version__ import APP_VERSION
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
151 version = APP_VERSION
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
152 except ImportError:
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
153 raise Exception("Can't get version from either a version file or "
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
154 "from the repository.")
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
155
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
156
373
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
157 install_requires = read('requirements.txt').splitlines()
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
158 tests_require = read('dev-requirements.txt').splitlines()
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
159
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
160
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
161 setup(
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
162 name="PieCrust",
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
163 version=version,
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
164 description="A powerful static website generator and lightweight CMS.",
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
165 long_description=read('README.rst') + '\n\n' + read('CHANGELOG.rst'),
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
166 author="Ludovic Chabant",
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
167 author_email="ludovic@chabant.com",
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
168 license="Apache License 2.0",
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
169 url="http://github.com/ludovicchabant/piecrust2",
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
170 keywords=' '.join([
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
171 'python',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
172 'website',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
173 'generator',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
174 'blog',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
175 'portfolio',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
176 'gallery',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
177 'cms'
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
178 ]),
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
179 packages=find_packages(),
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
180 include_package_data=True,
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
181 zip_safe=False,
373
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
182 install_requires=install_requires,
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
183 tests_require=tests_require,
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
184 cmdclass={
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
185 'test': PyTest,
373
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
186 'version': GenerateVersionCommand
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
187 },
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
188 classifiers=[
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
189 'Development Status :: 3 - Alpha',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
190 'License :: OSI Approved :: Apache Software License',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
191 'Environment :: Console',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
192 'Intended Audience :: Developers',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
193 'Intended Audience :: System Administrators',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
194 'Natural Language :: English',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
195 'Operating System :: MacOS :: MacOS X',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
196 'Operating System :: POSIX :: Linux',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
197 'Operating System :: Microsoft :: Windows',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
198 'Programming Language :: Python',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
199 'Programming Language :: Python :: 3'
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
200 ],
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
201 entry_points={'console_scripts': [
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
202 'chef = piecrust.main:main',
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
203 ]}
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
204 )
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
205