def update_EiffelStudio(): SystemLogger.info("Updating EiffelStudio") if v_force_es_version != None: SystemLogger.warning("Forcing EiffelStudio version " + v_force_es_version) name, filename, version, url = get_nightly_build(d_ise_platform, d_archive_extension) current_version, current_path = get_installed_version() if version > current_version or (v_force_es_version != None and current_version != v_force_es_version): target_file = os.path.join(v_dir_eiffelstudio_base, filename) download_file(url, target_file) eutils.extract(target_file) elocation.move(os.path.join('.', name), os.path.join(v_dir_eiffelstudio_base, name + '_' + str(version))) elocation.delete(target_file) update_environment_variables() current_version = version SystemLogger.success("EiffelStudio version " + str(version) + " installed") else: update_environment_variables() SystemLogger.success("EiffelStudio is up-to-date at version " + str(current_version)) return current_version
def install(): assert os.environ["ISE_EIFFEL"] != None, "ISE_EIFFEL is not set." assert os.environ["ISE_PLATFORM"] != None, "ISE_PLATFORM is not set." assert os.environ["ISE_LIBRARY"] != None, "ISE_LIBRARY is no set." assert os.environ["EWEASEL"] != None, "EWEASEL is not set." update() l_path = os.path.expandvars(os.path.join("$EWEASEL", "source", "eweasel.ecf")) l_project = ecompile.EiffelProject(l_path, "eweasel_mt", "eweasel-mt") if l_project.finalize(): l_target_dir = os.path.expandvars(os.path.join("$EWEASEL", "spec", "$ISE_PLATFORM", "bin")) if not os.path.exists(l_target_dir): os.makedirs(l_target_dir) elocation.copy(l_project.last_result(), l_target_dir) l_project.clean() SystemLogger.success("Eweasel installation successful.") SystemLogger.warning("Make sure that $EWEASEL/spec/$ISE_PLATFORM/bin is in your PATH variable!") else: SystemLogger.error("Installation of eweasel failed.")
def make_merge(): global v_dir_eve_source # set up parameters merge_path = os.path.realpath(v_dir_merge) v_dir_eve_source = os.path.join(merge_path, 'Src') os.environ['EIFFEL_SRC'] = v_dir_eve_source os.environ['ISE_LIBRARY'] = v_dir_eve_source # update dependencies update_EiffelStudio() # update repository try: elocation.delete(merge_path) esvn.update_repository(v_url_svn_eve, merge_path) except Exception as e1: SystemLogger.warning("Checkout failed. Trying one more time.") send_mail(v_email_merge_info, "[EVE] WARNING: checkout failed", "I will try again.") try: elocation.delete(merge_path) esvn.update_repository(v_url_svn_eve, merge_path) except Exception as e2: SystemLogger.error("Checkout failed, again...") send_mail(v_email_merge_info, "[EVE] ERROR: checkout failed again", "I give up...") sys.exit(0) # send email to block commits send_mail(v_email_merge_update, '[EVE] merge started', """Dear assistants, The eve branch is being synchronized with the trunk. Please do not commit to the eve branch until the synchronization is complete. Regards, EVE""") # merge trunk_revision = esvn.info_remote_revision_number(v_url_svn_trunk) last_merge_revision = esvn.last_merge_revision_number(v_url_svn_eve) esvn.merge(merge_path, v_url_svn_trunk, pysvn.Revision(pysvn.opt_revision_kind.number, last_merge_revision), pysvn.Revision(pysvn.opt_revision_kind.number, trunk_revision)) # wait for conflicts to be resolved success = not esvn.has_conflicts(merge_path) first = True while not success: if first: first = False SystemLogger.error("Merge has produced conflicts") send_mail(v_email_merge_info, "[EVE] WAITING: merge produced conflicts", "Resolve conflicts manually and then continue script.") else: SystemLogger.error("There are still conflits!") print ("---") print ("Press enter when conflicts are resolved.") input() success = not esvn.has_conflicts(merge_path) SystemLogger.success("Merge successful") # compile check_environment_variables() compile_runtime() compile_eve('bench') # wait for compilation to be successful success = is_eve_compilation_successful('bench') first = True while not success: if first: first = False SystemLogger.error("EVE compilation failed") send_mail(v_email_merge_info, "[EVE] WAITING: EVE compilation failed", "Solve compilation problems manually and then continue script.") else: SystemLogger.error("compilation still fails!") print ("---") print ("Press enter when compilation problems are resolved.") input() if not is_eve_compilation_successful('bench'): compile_runtime() compile_eve('bench') success = is_eve_compilation_successful('bench') SystemLogger.success("Compilation successful") # commit message = "<<Merged from trunk#" + str(trunk_revision) + ".>>" esvn.commit(merge_path, message) first = True esvn.update (merge_path, True) while esvn.info_local_revision_number(merge_path) <= trunk_revision and False: #??? if first: first = False SystemLogger.error("EVE commit failed") send_mail(v_email_merge_info, "[EVE] WAITING: commit failed", "Commit manually and then continue script.") else: SystemLogger.error("Local revision (" + str(esvn.info_local_revision_number(merge_path)) + ") still smaller than TRUNK (" + str(trunk_revision) + ")") print ("---") print ("Press enter when you have commited the repository manually.") print ("Commit message: " + message) input() esvn.update (merge_path, true) SystemLogger.success("Commit successful") # make delivery delivery_url = make_delivery() version, path = get_installed_version() # send email if delivery_url == None: send_mail(v_email_merge_update, "[EVE] merge completed with trunk#" + str(trunk_revision) + ".", """Dear assistants, The eve branch is now synchronized with trunk#""" + str(trunk_revision) + """ using EiffelStudio """ + str(version) + """. You can now update your checkout of eve and commit again. Regards, EVE""") send_mail(v_email_merge_info, "[EVE] Delivery creation failed", "See log for more information.") else: send_mail(v_email_merge_update, "[EVE] merge completed with trunk#" + str(trunk_revision) + " and new delivery available.", """Dear assistants, The eve branch is now synchronized with trunk#""" + str(trunk_revision) + """ using EiffelStudio """ + str(version) + """. You can now update your checkout of eve and commit again. A """ + d_ise_platform + """ delivery of EVE has been created and is available at """ + delivery_url + """ Regards, EVE""")