mirror of https://github.com/secdev/scapy.git
Merge pull request #272 from 6WIND/version-mgmt
enhance version management
This commit is contained in:
commit
1c7e836c39
|
@ -1,2 +1,7 @@
|
|||
*.pyc
|
||||
*.pyo
|
||||
dist/
|
||||
build/
|
||||
MANIFEST
|
||||
*.egg-info/
|
||||
scapy/VERSION
|
||||
|
|
|
@ -3,3 +3,4 @@ include run_scapy
|
|||
recursive-include bin *
|
||||
recursive-include doc *
|
||||
recursive-include test *
|
||||
include scapy/VERSION
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
## Copyright (C) Philippe Biondi <phil@secdev.org>
|
||||
## This program is published under a GPLv2 license
|
||||
|
||||
from __future__ import with_statement
|
||||
|
||||
"""
|
||||
Scapy: create, send, sniff, dissect and manipulate network packets.
|
||||
|
||||
|
@ -10,6 +12,71 @@ Usable either from an interactive console or as a Python library.
|
|||
http://www.secdev.org/projects/scapy
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
|
||||
_SCAPY_PKG_DIR = os.path.dirname(__file__)
|
||||
|
||||
def _version_from_git_describe():
|
||||
"""
|
||||
Read the version from ``git describe``. It returns the latest tag with an
|
||||
optional suffix if the current directory is not exactly on the tag.
|
||||
|
||||
Example::
|
||||
|
||||
$ git describe --always
|
||||
v2.3.2-346-g164a52c075c8
|
||||
|
||||
The tag prefix (``v``) and the git commit sha1 (``-g164a52c075c8``) are
|
||||
removed if present.
|
||||
|
||||
If the current directory is not exactly on the tag, a ``.devN`` suffix is
|
||||
appended where N is the number of commits made after the last tag.
|
||||
|
||||
Example::
|
||||
|
||||
>>> _version_from_git_describe()
|
||||
'2.3.2.dev346'
|
||||
"""
|
||||
p = subprocess.Popen(['git', 'describe', '--always'], cwd=_SCAPY_PKG_DIR,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
|
||||
out, err = p.communicate()
|
||||
|
||||
if p.returncode == 0:
|
||||
tag = out.strip()
|
||||
match = re.match(r'^v?(.+?)-(\d+)-g[a-f0-9]+$', tag)
|
||||
if match:
|
||||
# remove the 'v' prefix and add a '.devN' suffix
|
||||
return '%s.dev%s' % (match.group(1), match.group(2))
|
||||
else:
|
||||
# just remove the 'v' prefix
|
||||
return re.sub(r'^v', '', tag)
|
||||
else:
|
||||
raise subprocess.CalledProcessError(p.returncode, err)
|
||||
|
||||
def _version():
|
||||
version_file = os.path.join(_SCAPY_PKG_DIR, 'VERSION')
|
||||
try:
|
||||
tag = _version_from_git_describe()
|
||||
# successfully read the tag from git, write it in VERSION for
|
||||
# installation and/or archive generation.
|
||||
with open(version_file, 'w') as f:
|
||||
f.write(tag)
|
||||
return tag
|
||||
except:
|
||||
# failed to read the tag from git, try to read it from a VERSION file
|
||||
try:
|
||||
with open(version_file, 'r') as f:
|
||||
tag = f.read()
|
||||
return tag
|
||||
except:
|
||||
return 'unknown.version'
|
||||
|
||||
VERSION = _version()
|
||||
|
||||
if __name__ == "__main__":
|
||||
from scapy.main import interact
|
||||
interact()
|
||||
|
|
|
@ -9,6 +9,7 @@ Implementation for of the configuration object.
|
|||
|
||||
import os,time,socket,sys
|
||||
|
||||
from scapy import VERSION
|
||||
from scapy.data import *
|
||||
from scapy import base_classes
|
||||
from scapy import themes
|
||||
|
@ -319,7 +320,7 @@ noenum : holds list of enum fields for which conversion to string should NOT
|
|||
AS_resolver: choose the AS resolver class to use
|
||||
extensions_paths: path or list of paths where extensions are to be looked for
|
||||
"""
|
||||
version = "2.3.2-dev"
|
||||
version = VERSION
|
||||
session = ""
|
||||
interactive = False
|
||||
interactive_shell = ""
|
||||
|
|
|
@ -1,2 +1,7 @@
|
|||
[metadata]
|
||||
description-file = README.md
|
||||
|
||||
[sdist]
|
||||
formats=gztar
|
||||
owner=root
|
||||
group=root
|
||||
|
|
5
setup.py
5
setup.py
|
@ -47,7 +47,7 @@ if os.name == "nt":
|
|||
|
||||
setup(
|
||||
name='scapy',
|
||||
version='2.3.2-dev',
|
||||
version=__import__('scapy').VERSION,
|
||||
packages=[
|
||||
'scapy',
|
||||
'scapy/arch',
|
||||
|
@ -62,6 +62,9 @@ setup(
|
|||
],
|
||||
scripts=SCRIPTS,
|
||||
data_files=[('share/man/man1', ["doc/scapy.1.gz"])],
|
||||
package_data={
|
||||
'scapy': ['VERSION'],
|
||||
},
|
||||
|
||||
# Metadata
|
||||
author='Philippe BIONDI',
|
||||
|
|
Loading…
Reference in New Issue