1. 10 Aug, 2016 1 commit
  2. 25 May, 2015 1 commit
    • Josh Smith's avatar
      Refactored project such that top level hdlmake directory is now a package. Added… · 089b2af4
      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