From 439d61050e0291d58a875b08f64d33562250a1be Mon Sep 17 00:00:00 2001
From: Markus Holzer <markus.holzer@fau.de>
Date: Mon, 15 Mar 2021 09:42:14 +0000
Subject: [PATCH] Fix installation from git

---
 doc/version_from_git.py | 27 +++++++++++++++------------
 setup.py                | 12 +++++++++---
 2 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/doc/version_from_git.py b/doc/version_from_git.py
index 67cbcb3f8..2964f6d1c 100644
--- a/doc/version_from_git.py
+++ b/doc/version_from_git.py
@@ -18,17 +18,20 @@ def version_number_from_git(tag_prefix='release/', sha_length=10, version_format
 
     version_strings = get_released_versions()
     version_strings.sort(key=StrictVersion)
-    latest_release = version_strings[-1]
-    commits_since_tag = subprocess.getoutput('git rev-list {}..HEAD --count'.format(tag_from_version(latest_release)))
-    sha = subprocess.getoutput('git rev-parse HEAD')[:sha_length]
-    is_dirty = len(subprocess.getoutput("git status --untracked-files=no -s")) > 0
+    if len(version_strings) > 0:
+        latest_release = version_strings[-1]
+        commits_since_tag = subprocess.getoutput('git rev-list {}..HEAD --count'.format(tag_from_version(latest_release)))
+        sha = subprocess.getoutput('git rev-parse HEAD')[:sha_length]
+        is_dirty = len(subprocess.getoutput("git status --untracked-files=no -s")) > 0
 
-    if int(commits_since_tag) == 0:
-        version_string = latest_release
-    else:
-        next_version = increment_version(latest_release)
-        version_string = version_format.format(version=next_version, commits=commits_since_tag, sha=sha)
+        if int(commits_since_tag) == 0:
+            version_string = latest_release
+        else:
+            next_version = increment_version(latest_release)
+            version_string = version_format.format(version=next_version, commits=commits_since_tag, sha=sha)
 
-    if is_dirty:
-        version_string += ".dirty"
-    return version_string
+        if is_dirty:
+            version_string += ".dirty"
+        return version_string
+    else:
+        return "development"
diff --git a/setup.py b/setup.py
index 3b200addd..50950ea62 100644
--- a/setup.py
+++ b/setup.py
@@ -59,12 +59,18 @@ def readme():
 
 def cython_extensions(*extensions):
     from distutils.extension import Extension
-    ext = '.pyx' if USE_CYTHON else '.c'
-    result = [Extension(e, [e.replace('.', '/') + ext]) for e in extensions]
     if USE_CYTHON:
+        ext = '.pyx'
+        result = [Extension(e, [os.path.join(*e.split(".")) + ext]) for e in extensions]
         from Cython.Build import cythonize
         result = cythonize(result, language_level=3)
-    return result
+        return result
+    elif all([os.path.exists(os.path.join(*e.split(".")) + '.c') for e in extensions]):
+        ext = '.c'
+        result = [Extension(e, [os.path.join(*e.split(".")) + ext]) for e in extensions]
+        return result
+    else:
+        return None
 
 
 try:
-- 
GitLab