Procházet zdrojové kódy

install.py upgraded

Savtis před 2 roky
rodič
revize
98763a7e90
1 změnil soubory, kde provedl 39 přidání a 16 odebrání
  1. 39 16
      install.py

+ 39 - 16
install.py

@@ -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