install.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import os
  2. from sys import argv
  3. from multiprocessing import Process, Queue
  4. import apt
  5. OUTPUT = ''
  6. LOLCAT = Queue()
  7. def check_lolcat(queue):
  8. if apt.Cache()['lolcat'].is_installed:
  9. queue.put(True)
  10. print('lolcat detected!')
  11. else: queue.put(False)
  12. def echo(text):
  13. global OUTPUT
  14. OUTPUT += text + '\n'
  15. def output_flush():
  16. global OUTPUT
  17. os.system(f"echo \"{OUTPUT[:-1]}\"{'| /usr/games/lolcat' if LOLCAT.get() else ''}")
  18. if os.getuid() != 0:
  19. print('root rights required\nrun \'sudo python install.py\'')
  20. exit(1)
  21. path = 'src/ompl_src/'
  22. check_lolcat_process = Process(target=check_lolcat, args=(LOLCAT,))
  23. check_lolcat_process.start()
  24. if 'r' in argv:
  25. os.system(f'rm {path}obj/ -rf')
  26. os.system(f'rm {path}lib/ -rf')
  27. echo('building .c files to .o files')
  28. if not os.path.exists(f'{path}obj/'): os.system(f'mkdir {path}obj/')
  29. if not os.path.exists(f'{path}lib/'): os.system(f'mkdir {path}lib/')
  30. name_ext = None
  31. for f in os.listdir(f'{path}c'):
  32. name_ext = os.path.splitext(f)
  33. if name_ext[1] == '.c':
  34. echo(f)
  35. os.system(f'gcc -fPIC -c {path}c/{name_ext[0]}.c -o {path}obj/{name_ext[0]}.o')
  36. echo('=' * 13)
  37. echo('building .o files to .so libs')
  38. for f in os.listdir(f'{path}obj'):
  39. name_ext = os.path.splitext(f)[0]
  40. echo(f)
  41. os.system(f'gcc -shared {path}obj/{name_ext}.o -o {path}lib/{name_ext}.so')
  42. echo('=' * 13)
  43. echo('installing')
  44. echo('copying src/main.py')
  45. os.system(f'cp src/main.py /usr/bin/ompl')
  46. os.system('chmod +x /usr/bin/ompl')
  47. echo('copying src/ompl_src/')
  48. os.system(f'cp src/ompl_src /usr/bin/ -r')
  49. echo('=' * 13)
  50. if 'c' in argv:
  51. echo('cleaning')
  52. echo('deleting lib/ and obj/ folders')
  53. os.system('rm src/ompl_src/lib/ -r | rm src/ompl_src/obj/ -r')
  54. echo('=' * 13)
  55. echo('done')
  56. check_lolcat_process.join()
  57. output_flush()