enhance version management
When making an official release of scapy, one must:
* Modify the hardcoded version in setup.py and scapy/config.py
* Create a commit with this change
* Create a git tag with the same version
* Run ./setup.py sdist register upload
* Modify the hardcoded version in setup.py and scapy/config.py again to
append '-dev'.
* Create another commit with the modified version.
* Push the 3 commits and the tag.
Not only this is tedious but it is also error prone.
Add utility functions in scapy/__init__.py to determine current version.
If git is available (thus running from a git clone), use "git describe" to
get the current version. Write the version for future reference to a
text file (scapy/VERSION).
If git is not available (running from an installed scapy package) read
the version from the scapy/VERSION file.
This changes the release process as follows:
* Create a git tag on the commit where you want to release
* Run ./setup.py sdist register upload
* Push the tag
This allows to have a single place where the version is managed: git.
Note: change the development versions to X.Y.Z.devN where N is the
number of commits after the last tag. This complies to PEP 440
https://www.python.org/dev/peps/pep-0440/#developmental-releases
Signed-off-by: Robin Jarry <robin.jarry@6wind.com>
diff --git a/setup.py b/setup.py
index f677142..53bf808 100755
--- a/setup.py
+++ b/setup.py
@@ -47,7 +47,7 @@
setup(
name='scapy',
- version='2.3.2-dev',
+ version=__import__('scapy').VERSION,
packages=[
'scapy',
'scapy/arch',
@@ -62,6 +62,9 @@
],
scripts=SCRIPTS,
data_files=[('share/man/man1', ["doc/scapy.1.gz"])],
+ package_data={
+ 'scapy': ['VERSION'],
+ },
# Metadata
author='Philippe BIONDI',