fix version when installing from git archive

When installing from a git archive downloaded from github, the file
scapy/VERSION is not present since it is generated when building a
source archive with:

    ./setup.py sdist

To work around the problem, use the export-subst git attribute to make
git archive write the current revison information in scapy/__init__.py.

Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
This commit is contained in:
Robin Jarry 2016-11-02 10:38:29 +01:00
parent cbcb87b29f
commit 9d6409e75c
2 changed files with 12 additions and 1 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
scapy/__init__.py export-subst

View File

@ -71,7 +71,17 @@ def _version():
tag = f.read()
return tag
except:
return 'unknown.version'
# Rely on git archive "export-subst" git attribute.
# See 'man gitattributes' for more details.
git_archive_id = '$Format:%h %d$'
sha1 = git_archive_id.strip().split()[0]
match = re.search(r'tag:(\S+)', git_archive_id)
if match:
return match.group(1)
elif sha1:
return sha1
else:
return 'unknown.version'
VERSION = _version()