예제 #1
0
 def _set_interpreter(self, file, interpreter):
     try:
         patchelf_command = PatchElf()
         patchelf_command.log_stderr = False
         bin_interpreter = patchelf_command.get_interpreter(file)
         if bin_interpreter:
             self.system_interpreter = bin_interpreter
             logging.info('Setting interpreter to: %s' % os.path.relpath(file, self.app_dir))
             patchelf_command.set_interpreter(file, interpreter)
     except PatchElfError:
         pass
예제 #2
0
    def _set_interpreter(self, file, uuid):
        try:
            patchelf_command = PatchElf()
            patchelf_command.log_stderr = False
            real_interpreter = patchelf_command.get_interpreter(file)
            if real_interpreter.startswith('/tmp/appimage-'):
                # skip, the binary has been patched already
                return

            apprun_interpreter = self._gen_interpreter_link_path(
                real_interpreter, uuid)
            if real_interpreter and real_interpreter != apprun_interpreter:
                self.interpreters[real_interpreter] = apprun_interpreter
                logging.info('Replacing PT_INTERP on: %s' %
                             os.path.relpath(file, self.app_dir))
                logging.info('\t"%s"  => "%s"' %
                             (real_interpreter, apprun_interpreter))
                patchelf_command.set_interpreter(file, apprun_interpreter)
        except PatchElfError:
            pass