-
Josh Smith authored
Refactored project such that top level hdlmake directory is now a package. Added setup.py for easy packaging of project with setuptools. Note that installation instructions (and how to run hdlmake) has changed! Related changes: - hdlmake/_version.py file now exists as a single location to manage the version of hdlmake. This is used by Sphinx docs, setup.py, and hdlmake itself. - Cleaned up some circular dependencies in hdlmake.fetch package. This changed the design of backend_factory such that it no longer depends on importing git/svn fetchers. - Added tests/run_tests.py. Right now it has one test which iterates through all of the top level sim and syn Manifest files and attempts to run hdlmake against them. This acts as a crude regression test. - Added ez_setup.py. This installs setuptools if it is not available in the python environment. This guarantees that setup.py will work. - Added Manifest.in. This lists non-hdlmake application data that should be included in a source distribution (documentation, test files, etc) - Updated Sphinx docs to agree with the new package/module structure (with hdlmake as a top level package). Note that the installation instructions have changed. Stealth changes: - hdlmake now will return a non-zero exit code when an exception is caught at the top level. Previously the exception was caught and hdlmake exited with 0 exit code. This was confusing because it actually was a failure. - Fixed a small bug in synthesis_project.py where version_key may not exist in env dictionary, causing an exception, instead of printing the helpful error message. Rationale: - Packages are the means of sharing Python code. The whole application should be bundled in a package. - Easier distribution of project via setuptools - Installation via setup.py / setuptools automatically creates executable hdlmake script - Utilizing setuptools allows for possibility of distributing releases via PyPI. - Possible to import from any module in hdlmake for purposes of unit testing without sys.path hacking.
089b2af4