text: #!/usr/bin/env python3
  
  import os.path
  import time
  from setuptools import setup
  from setuptools.command.build_py import build_py
  from subprocess import call
  import re
  
  with open("pyboof/version.txt", "r") as myfile:
      pyboof_version = myfile.read()
  
  
  def check_for_command(command):
      try:
          call([command], stdout=open(os.devnull, 'w'), stderr=open(os.devnull, 'w'))
          return True
      except:
          return False
  
  
  class MyBuild(build_py):
      def run(self):
          try:
              if os.path.exists('pyboof/PyBoof-all.jar'):
                  print("*** Skipping java build since 'pyboof/PyBoof-all.jar' already exists ***")
                  print("   'rm pyboof/PyBoof-all.jar' if this is not desired")
              else:
                  # Create build date file.  This is used to determine if the java jar and python code are
                  # compatible with each other
                  f = open('pyboof/build_date.txt', 'w')
                  f.write(str(int(round(time.time() * 1000))))
                  f.close()
                  # See if javac is available for compiling the java code
                  if check_for_command("javac"):
                      if call(["bash", "gradlew", "allJar"]) != 0:
                          print("Gradle build failed.  ")
                          exit(1)
                  else:
                      print("javac cannot be found. Please install it or correct your path.")
                      if os.path.isfile('pyboof/PyBoof-all.jar'):
                          print("     Found a precompiled jar.  Using that")
                      else:
                          exit(1)
          except Exception as e:
              print("Exception message:")
              print(str(e))
              print(e.message)
              print()
              if not os.path.isfile('pyboof/PyBoof-all.jar'):
                  print("Gradle build failed AND there is no PyBoof-all.jar")
                  print("")
                  print("Did you run build as a regular user first?")
                  print("    ./setup.py build")
                  print("Is Gradle and Java installed?  Test by typing the following:")
                  print("    gradle allJar")
                  exit(1)
          build_py.run(self)
  
  
  setup(name='PyBoof',
        cmdclass={'build_py': MyBuild},
        version=pyboof_version,
        description='Py4J Python wrapper for BoofCV',
        long_description=open('README.md', 'r').read(),
        long_description_content_type="text/markdown",
        url='https://github.com/lessthanoptimal/PyBoof',
        author="Peter Abeles",
        author_email="peter.abeles@gmail.com",
        license="Apache 2.0",
        classifiers=['Intended Audience :: Developers',
                     'Programming Language :: Python :: 3.5'],
        python_requires='>=3',
        eager_resources=['java'],
        packages=['pyboof'],
        package_data={'pyboof': ['PyBoof-all.jar', 'build_date.txt', 'version.txt']},
        install_requires=['py4j>=0.10.9.2', 'numpy>=1.14.0', 'six>=1.11.0', 'transforms3d>=0.3.1'],
        )
  