diff --git a/.gitignore b/.gitignore
index d2d6f360..49bac9bd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,4 @@ nosetests.xml
.mr.developer.cfg
.project
.pydevproject
+.settings
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..972b3545
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,24 @@
+language: python
+
+python:
+ - "2.7"
+ - "3.3"
+
+install:
+ - "pip install -r requirements.txt --use-mirrors"
+ - "pip install tox"
+
+script: "python setup.py test"
+
+branches:
+ only:
+ - master
+
+notifications:
+ email: false
+ irc:
+ channels:
+ - "chat.freenode.net#gns3"
+ on_success: change
+ on_failure: always
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 00000000..608cba37
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Jeremy Grossmann
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index c3ef6844..94a9ed02 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
-GNU GENERAL PUBLIC LICENSE
+ GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
- Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/}
+ Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
- {one line to give the program's name and a brief idea of what it does.}
- Copyright (C) {year} {name of author}
+
+ Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see {http://www.gnu.org/licenses/}.
+ along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
- GNS3-GUI Copyright (C) 2013 GNS3
+ Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
-{http://www.gnu.org/licenses/}.
+.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-{http://www.gnu.org/philosophy/why-not-lgpl.html}.
+.
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 00000000..a2cc6ce3
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,11 @@
+include README.rst
+include AUTHORS
+include INSTALL
+include LICENSE
+include MANIFEST.in
+include tox.ini
+recursive-include tests *
+recursive-include docs *
+recursive-include gns3 *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
diff --git a/README.md b/README.md
deleted file mode 100644
index 601fbef7..00000000
--- a/README.md
+++ /dev/null
@@ -1,4 +0,0 @@
-GNS3-GUI
-========
-
-GNS3 Graphical User Interface
diff --git a/README.rst b/README.rst
new file mode 100644
index 00000000..30711909
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,4 @@
+GNS3-gui
+========
+
+GNS3 graphical interface for GNS3 server.
\ No newline at end of file
diff --git a/dev-requirements.txt b/dev-requirements.txt
new file mode 100644
index 00000000..efb4e7a0
--- /dev/null
+++ b/dev-requirements.txt
@@ -0,0 +1,4 @@
+-rrequirements.txt
+
+pytest
+ws4py
diff --git a/gns3/__init__.py b/gns3/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/gns3/main.py b/gns3/main.py
new file mode 100644
index 00000000..246379a8
--- /dev/null
+++ b/gns3/main.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2013 GNS3 Technologies Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+import datetime
+import sys
+import logging
+
+
+def main():
+ """
+ Entry point for GNS3 server
+ """
+
+ current_year = datetime.date.today().year
+ #print("GNS3 server version {}".format(gns3server.__version__))
+ print("Copyright (c) 2007-{} GNS3 Technologies Inc.".format(current_year))
+
+ # we only support Python 2 version >= 2.7 and Python 3 version >= 3.3
+ if sys.version_info < (2, 7):
+ raise RuntimeError("Python 2.7 or higher is required")
+ elif sys.version_info[0] == 3 and sys.version_info < (3, 3):
+ raise RuntimeError("Python 3.3 or higher is required")
+
+if __name__ == '__main__':
+ main()
diff --git a/gns3/version.py b/gns3/version.py
new file mode 100644
index 00000000..cd882e72
--- /dev/null
+++ b/gns3/version.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2013 GNS3 Technologies Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# __version__ is a human-readable version number.
+
+# __version_info__ is a four-tuple for programmatic comparison. The first
+# three numbers are the components of the version number. The fourth
+# is zero for an official release, positive for a development branch,
+# or negative for a release candidate or beta (after the base version
+# number has been incremented)
+
+__version__ = "0.1.dev"
+__version_info__ = (0, 1, 0, -99)
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/setup.py b/setup.py
new file mode 100644
index 00000000..eba4e154
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2013 GNS3 Technologies Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+import sys
+from setuptools import setup, find_packages
+from setuptools.command.test import test as TestCommand
+
+
+class Tox(TestCommand):
+
+ def finalize_options(self):
+ TestCommand.finalize_options(self)
+ self.test_args = []
+ self.test_suite = True
+
+ def run_tests(self):
+ #import here, cause outside the eggs aren't loaded
+ import tox
+ errcode = tox.cmdline(self.test_args)
+ sys.exit(errcode)
+
+setup(
+ name="gns3-gui",
+ version=__import__("gns3server").__version__,
+ url="http://github.com/GNS3/gns3-gui",
+ license="GNU General Public License v3 (GPLv3)",
+ tests_require=["tox"],
+ cmdclass={"test": Tox},
+ author="Jeremy Grossmann",
+ author_email="package-maintainer@gns3.net",
+ description="GNS3 graphical interface for the GNS3 server.",
+ long_description=open("README.rst", "r").read(),
+ install_requires=[
+ ],
+ entry_points={
+ "console_scripts": [
+ "gns3 = gns3.main:main",
+ ]
+ },
+ packages=find_packages(),
+ include_package_data=True,
+ platforms="any",
+ classifiers=[
+ "Development Status :: 1 - Planning",
+ "Environment :: X11 Applications :: Qt",
+ "Intended Audience :: Information Technology",
+ "Topic :: System :: Networking",
+ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+ 'Natural Language :: English',
+ "Operating System :: OS Independent",
+ "Programming Language :: Python",
+ "Programming Language :: Python :: 2",
+ "Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.3",
+ "Programming Language :: Python :: Implementation :: CPython",
+ "Programming Language :: Python :: Implementation :: PyPy",
+ ],
+)
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 00000000..8bfea5a7
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,7 @@
+[tox]
+envlist = py27, py33
+
+[testenv]
+commands = py.test [] -s tests
+deps = -rdev-requirements.txt
+