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
|
*.pyc
|
||||||
*.pyo
|
*.pyo
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
MANIFEST
|
||||||
|
*.egg-info/
|
||||||
|
scapy/VERSION
|
||||||
|
|
|
@ -3,3 +3,4 @@ include run_scapy
|
||||||
recursive-include bin *
|
recursive-include bin *
|
||||||
recursive-include doc *
|
recursive-include doc *
|
||||||
recursive-include test *
|
recursive-include test *
|
||||||
|
include scapy/VERSION
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
## Copyright (C) Philippe Biondi <phil@secdev.org>
|
## Copyright (C) Philippe Biondi <phil@secdev.org>
|
||||||
## This program is published under a GPLv2 license
|
## This program is published under a GPLv2 license
|
||||||
|
|
||||||
|
from __future__ import with_statement
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Scapy: create, send, sniff, dissect and manipulate network packets.
|
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
|
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__":
|
if __name__ == "__main__":
|
||||||
from scapy.main import interact
|
from scapy.main import interact
|
||||||
interact()
|
interact()
|
||||||
|
|
|
@ -9,6 +9,7 @@ Implementation for of the configuration object.
|
||||||
|
|
||||||
import os,time,socket,sys
|
import os,time,socket,sys
|
||||||
|
|
||||||
|
from scapy import VERSION
|
||||||
from scapy.data import *
|
from scapy.data import *
|
||||||
from scapy import base_classes
|
from scapy import base_classes
|
||||||
from scapy import themes
|
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
|
AS_resolver: choose the AS resolver class to use
|
||||||
extensions_paths: path or list of paths where extensions are to be looked for
|
extensions_paths: path or list of paths where extensions are to be looked for
|
||||||
"""
|
"""
|
||||||
version = "2.3.2-dev"
|
version = VERSION
|
||||||
session = ""
|
session = ""
|
||||||
interactive = False
|
interactive = False
|
||||||
interactive_shell = ""
|
interactive_shell = ""
|
||||||
|
|
|
@ -1,2 +1,7 @@
|
||||||
[metadata]
|
[metadata]
|
||||||
description-file = README.md
|
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(
|
setup(
|
||||||
name='scapy',
|
name='scapy',
|
||||||
version='2.3.2-dev',
|
version=__import__('scapy').VERSION,
|
||||||
packages=[
|
packages=[
|
||||||
'scapy',
|
'scapy',
|
||||||
'scapy/arch',
|
'scapy/arch',
|
||||||
|
@ -62,6 +62,9 @@ setup(
|
||||||
],
|
],
|
||||||
scripts=SCRIPTS,
|
scripts=SCRIPTS,
|
||||||
data_files=[('share/man/man1', ["doc/scapy.1.gz"])],
|
data_files=[('share/man/man1', ["doc/scapy.1.gz"])],
|
||||||
|
package_data={
|
||||||
|
'scapy': ['VERSION'],
|
||||||
|
},
|
||||||
|
|
||||||
# Metadata
|
# Metadata
|
||||||
author='Philippe BIONDI',
|
author='Philippe BIONDI',
|
||||||
|
|
Loading…
Reference in New Issue