Skip to content
Snippets Groups Projects
Commit 8ed23652 authored by Andreas Klöckner's avatar Andreas Klöckner
Browse files

Try hard to find a git revision to use as cache key

parent 32bf4dd2
No related branches found
No related tags found
No related merge requests found
...@@ -20,4 +20,6 @@ htmlcov ...@@ -20,4 +20,6 @@ htmlcov
lextab.py lextab.py
yacctab.py yacctab.py
loopy/_git_rev.py
.cache .cache
...@@ -21,6 +21,27 @@ THE SOFTWARE. ...@@ -21,6 +21,27 @@ THE SOFTWARE.
""" """
# {{{ find install- or run-time git revision
import os
if os.environ.get("AKPYTHON_EXEC_FROM_WITHIN_WITHIN_SETUP_PY") is not None:
# We're just being exec'd by setup.py. We can't import anything.
_git_rev = None
else:
import loopy._git_rev as _git_rev_mod
_git_rev = _git_rev_mod.GIT_REVISION
# If we're running from a dev tree, the last install (and hence the most
# recent update of the above git rev could have taken place very long ago.
from pytools import find_module_git_revision
_runtime_git_rev = find_module_git_revision(__file__, n_levels_up=1)
if _runtime_git_rev is not None:
_git_rev = _runtime_git_rev
# }}}
VERSION = (2017, 2, 1) VERSION = (2017, 2, 1)
VERSION_STATUS = "" VERSION_STATUS = ""
VERSION_TEXT = ".".join(str(x) for x in VERSION) + VERSION_STATUS VERSION_TEXT = ".".join(str(x) for x in VERSION) + VERSION_STATUS
...@@ -31,8 +52,7 @@ except ImportError: ...@@ -31,8 +52,7 @@ except ImportError:
_islpy_version = "_UNKNOWN_" _islpy_version = "_UNKNOWN_"
else: else:
_islpy_version = islpy.version.VERSION_TEXT _islpy_version = islpy.version.VERSION_TEXT
DATA_MODEL_VERSION = "%s-islpy%s-%s-v0" % (VERSION_TEXT, _islpy_version, _git_rev)
DATA_MODEL_VERSION = "v78-islpy%s" % _islpy_version
FALLBACK_LANGUAGE_VERSION = (2017, 2, 1) FALLBACK_LANGUAGE_VERSION = (2017, 2, 1)
......
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os
from setuptools import setup, find_packages from setuptools import setup, find_packages
ver_dic = {} ver_dic = {}
...@@ -10,8 +11,59 @@ try: ...@@ -10,8 +11,59 @@ try:
finally: finally:
version_file.close() version_file.close()
os.environ["AKPYTHON_EXEC_FROM_WITHIN_WITHIN_SETUP_PY"] = "1"
exec(compile(version_file_contents, "loopy/version.py", 'exec'), ver_dic) exec(compile(version_file_contents, "loopy/version.py", 'exec'), ver_dic)
# {{{ capture git revision at install time
# authoritative version in pytools/__init__.py
def find_git_revision(tree_root):
# Keep this routine self-contained so that it can be copy-pasted into
# setup.py.
from os.path import join, exists, abspath
tree_root = abspath(tree_root)
if not exists(join(tree_root, ".git")):
return None
from subprocess import Popen, PIPE, STDOUT
p = Popen(["git", "rev-parse", "HEAD"], shell=False,
stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True,
cwd=tree_root)
(git_rev, _) = p.communicate()
import sys
if sys.version_info >= (3,):
git_rev = git_rev.decode()
git_rev = git_rev.rstrip()
retcode = p.returncode
assert retcode is not None
if retcode != 0:
from warnings import warn
warn("unable to find git revision")
return None
return git_rev
def write_git_revision(package_name):
from os.path import dirname, join
dn = dirname(__file__)
git_rev = find_git_revision(dn)
with open(join(dn, package_name, "_git_rev.py"), "w") as outf:
outf.write("GIT_REVISION = %s\n" % repr(git_rev))
write_git_revision("loopy")
# }}}
setup(name="loo.py", setup(name="loo.py",
version=ver_dic["VERSION_TEXT"], version=ver_dic["VERSION_TEXT"],
description="A code generator for array-based code on CPUs and GPUs", description="A code generator for array-based code on CPUs and GPUs",
...@@ -37,7 +89,7 @@ setup(name="loo.py", ...@@ -37,7 +89,7 @@ setup(name="loo.py",
], ],
install_requires=[ install_requires=[
"pytools>=2018.1", "pytools>=2018.2",
"pymbolic>=2016.2", "pymbolic>=2016.2",
"genpy>=2016.1.2", "genpy>=2016.1.2",
"cgen>=2016.1", "cgen>=2016.1",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment