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