|
@@ -6,25 +6,50 @@ LOLCAT = False
|
|
|
ERROR = False
|
|
|
path = 'src/ompl_src/'
|
|
|
|
|
|
-def echo(text):
|
|
|
+def echo(text): # вывод, цветной или нет
|
|
|
global OUTPUT, LOLCAT
|
|
|
if LOLCAT: OUTPUT += text + '\n'
|
|
|
else: print(text)
|
|
|
-def output_flush():
|
|
|
+def output_flush(): # вывод цветного буффера
|
|
|
global OUTPUT, LOLCAT
|
|
|
if LOLCAT: os.system(f'echo \"{OUTPUT[:-1]}\"| /usr/games/lolcat')
|
|
|
|
|
|
-if os.getuid() != 0:
|
|
|
+def exec_build_list(): # сборка по билд листу
|
|
|
+ global ERROR
|
|
|
+ try:
|
|
|
+ file = open('build_list.txt', 'r')
|
|
|
+ except FileNotFoundError:
|
|
|
+ echo('file \"build_list.txt\" not found')
|
|
|
+ ERROR = True
|
|
|
+ return
|
|
|
+ lines = file.readlines()
|
|
|
+ file.close()
|
|
|
+ build_names = []
|
|
|
+ for line in lines:
|
|
|
+ line = line.strip()
|
|
|
+ if line != '': build_names.append(line.split(' '))
|
|
|
+ build_command = build_log = ''
|
|
|
+ for line in build_names:
|
|
|
+ build_command = f'gcc -shared -o {path}lib/{line[0]}.so {path}/obj/{line[0]}.o'
|
|
|
+ build_log = line[0] + '.o'
|
|
|
+ for i in range(1, len(line)):
|
|
|
+ build_log += (' < ' if i < len(line) else '') + line[i]
|
|
|
+ build_command += f' {path}/obj/{line[i]}.o'
|
|
|
+ os.system(build_command)
|
|
|
+ echo(build_log)
|
|
|
+
|
|
|
+if os.getuid() != 0: # проверка прав админа
|
|
|
print('root rights required\nrun \'sudo python install.py\'')
|
|
|
exit(1)
|
|
|
-os.chdir(os.path.dirname(__file__))
|
|
|
-if os.path.exists('/usr/games/lolcat') and not 'i' in argv:
|
|
|
+os.chdir(os.path.dirname(__file__)) # смена рабочей директории на директорию, в которой был запущен скрипт
|
|
|
+ # позволяет запускать скрипт из других директорий
|
|
|
+if os.path.exists('/usr/games/lolcat') and not 'i' in argv: # если лолкат установлен, то норм
|
|
|
LOLCAT = True
|
|
|
print('lolcat detected!')
|
|
|
-if 'r' in argv:
|
|
|
+if 'r' in argv: # если есть аргумент r, то скомплированные папки удаляются
|
|
|
os.system(f'rm {path}obj/ -rf')
|
|
|
os.system(f'rm {path}lib/ -rf')
|
|
|
-echo('building .c files to .o files')
|
|
|
+echo('building .c files to .o files') # компилится .c файлы в объектники
|
|
|
if not os.path.exists(f'{path}obj/'): os.system(f'mkdir {path}obj/')
|
|
|
if not os.path.exists(f'{path}lib/'): os.system(f'mkdir {path}lib/')
|
|
|
name_ext = None
|
|
@@ -38,23 +63,21 @@ if ERROR:
|
|
|
echo('error occured while building .o files')
|
|
|
output_flush()
|
|
|
exit(1)
|
|
|
-echo('building .o files to .so libs')
|
|
|
-for f in os.listdir(f'{path}obj'):
|
|
|
- name_ext = os.path.splitext(f)[0]
|
|
|
- echo(f)
|
|
|
- os.system(f'gcc -shared {path}obj/{name_ext}.o -o {path}lib/{name_ext}.so')
|
|
|
+echo('building .o files to .so libs') # компиляция объектников в общие библиотеки
|
|
|
+exec_build_list()
|
|
|
echo('=' * 13)
|
|
|
-echo('installing')
|
|
|
-echo('copying src/main.py')
|
|
|
+echo('installing') # копирование папок и файлов в /usr/bin
|
|
|
+ # main.py переименовывается в ompl
|
|
|
+echo('copying src/main.py')
|
|
|
os.system(f'cp src/main.py /usr/bin/ompl')
|
|
|
os.system('chmod +x /usr/bin/ompl')
|
|
|
echo('copying src/ompl_src/')
|
|
|
os.system(f'cp src/ompl_src /usr/bin/ -r')
|
|
|
echo('=' * 13)
|
|
|
-if 'c' in argv:
|
|
|
+if 'c' in argv: # если есть аргумент c, то скомпилированные папки удаляются
|
|
|
echo('cleaning')
|
|
|
echo('deleting lib/ and obj/ folders')
|
|
|
os.system('rm src/ompl_src/lib/ -r | rm src/ompl_src/obj/ -r')
|
|
|
echo('=' * 13)
|
|
|
echo('done')
|
|
|
-output_flush()
|
|
|
+output_flush() # вывод с помощью lolcat
|