From 5a81b37bcfcf4a3780e7ddee9f96fc16fa032128 Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 23 Apr 2013 22:43:51 -0400 Subject: [PATCH] Fix when an old scalac is present on the system to not fail the build --- fml/commands.patch | 53 +++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/fml/commands.patch b/fml/commands.patch index 9691634045..81d777278d 100644 --- a/fml/commands.patch +++ b/fml/commands.patch @@ -44,7 +44,7 @@ self.cmdstartsrv = self.config.get('COMMANDS', 'CmdStartSrv', raw=1) % self.cmdjava self.cmdstartclt = self.config.get('COMMANDS', 'CmdStartClt', raw=1) % self.cmdjava -@@ -751,6 +760,28 @@ +@@ -751,6 +760,36 @@ self.cmdjavac = '"%s"' % os.path.join(results[0], 'javac') self.cmdjava = '"%s"' % os.path.join(results[0], 'java') @@ -56,7 +56,7 @@ + self.runcmd('scalac -version', quiet=True) + results.append('') + except (CalledProcessError, OSError): -+ pass ++ pass + if not results: # Stupid windows... + try: + # TODO: Verify at least version 2.10 @@ -64,16 +64,24 @@ + results.append('') + except (CalledProcessError, OSError): + pass -+ if not results: -+ self.logger.warning('"scalac"" is not found on the PATH. Scala files will not be recompiled') -+ self.cmdscalac = None ++ try: ++ self.runcmd('scala -target:jvm-1.6', quiet=True) ++ results.append('') ++ except (CalledProcessError, OSError): ++ self.logger.info('"scala" does not support jvm-1.6 target, it is out of date. Ignoring') ++ results = [] ++ self.cmdscalac = None + else: -+ self.cmdscalac = '"%s"' % os.path.join(results[0], 'scalac') ++ if not results: ++ self.logger.warning('"scalac" is not found on the PATH. Scala files will not be recompiled') ++ self.cmdscalac = None ++ else: ++ self.cmdscalac = '"%s"' % os.path.join(results[0], 'scalac') + def checkjars(self, side): jarlk = {CLIENT: self.jarclient, SERVER: self.jarserver} md5jarlk = {CLIENT: self.md5jarclt, SERVER: self.md5jarsrv} -@@ -796,6 +827,8 @@ +@@ -796,6 +835,8 @@ binlk = {CLIENT: self.binclient, SERVER: self.binserver} testlk = {CLIENT: self.testclient, SERVER: self.testserver} @@ -82,7 +90,7 @@ if not os.path.exists(os.path.join(binlk[side], os.path.normpath(testlk[side] + '.class'))): return False return True -@@ -1036,6 +1069,9 @@ +@@ -1036,6 +1077,9 @@ pathbinlk = {CLIENT: self.binclient, SERVER: self.binserver} pathsrclk = {CLIENT: self.srcclient, SERVER: self.srcserver} pathlog = {CLIENT: self.clientrecomplog, SERVER: self.serverrecomplog} @@ -92,7 +100,7 @@ if not os.path.exists(pathbinlk[side]): os.makedirs(pathbinlk[side]) -@@ -1049,6 +1085,29 @@ +@@ -1049,6 +1093,29 @@ all_files = True append_pattern = False pkglist = filterdirs(pathsrclk[side], '*.java', append_pattern=append_pattern, all_files=all_files) @@ -122,7 +130,7 @@ dirs = ' '.join(pkglist) classpath = os.pathsep.join(cplk[side]) forkcmd = self.cmdrecomp.format(classpath=classpath, sourcepath=pathsrclk[side], outpath=pathbinlk[side], -@@ -1057,7 +1116,7 @@ +@@ -1057,7 +1124,7 @@ self.runcmd(forkcmd, log_file=pathlog[side]) except CalledProcessError as ex: self.logger.error('') @@ -131,7 +139,7 @@ self.logger.error('') for line in ex.output.splitlines(): if line.strip(): -@@ -1070,7 +1129,7 @@ +@@ -1070,7 +1137,7 @@ raise def startserver(self): @@ -140,7 +148,7 @@ classpath = [os.path.join('..', p) for p in classpath] classpath = os.pathsep.join(classpath) os.chdir(self.dirjars) -@@ -1078,7 +1137,7 @@ +@@ -1078,7 +1145,7 @@ self.runmc(forkcmd) def startclient(self): @@ -149,7 +157,7 @@ classpath = [os.path.join('..', p) for p in classpath] classpath = os.pathsep.join(classpath) natives = os.path.join('..', self.dirnatives) -@@ -1205,20 +1264,20 @@ +@@ -1205,20 +1272,20 @@ with open(self.csvmethods, 'rb') as fh: methodsreader = csv.DictReader(fh) for row in methodsreader: @@ -173,7 +181,7 @@ names['params'][row['param']] = row['name'] regexps = { -@@ -1352,13 +1411,13 @@ +@@ -1352,13 +1419,13 @@ methods = {} for row in methodsreader: #HINT: Only include methods that have a non-empty description @@ -189,7 +197,7 @@ fields[row['searge']] = row['desc'].replace('*/', '* /') regexps = { -@@ -1435,7 +1494,7 @@ +@@ -1435,7 +1502,7 @@ self.runcmd(forkcmd) return True @@ -198,7 +206,7 @@ if not reobf: md5lk = {CLIENT: self.md5client, SERVER: self.md5server} else: -@@ -1450,6 +1509,9 @@ +@@ -1450,6 +1517,9 @@ class_path = '' else: class_path += '/' @@ -208,7 +216,7 @@ for class_file in fnmatch.filter(filelist, '*.class'): class_name = class_path + os.path.splitext(class_file)[0] bin_file = os.path.normpath(os.path.join(path, class_file)) -@@ -1546,6 +1608,8 @@ +@@ -1546,6 +1616,8 @@ if not os.path.exists(outpathlk[side]): os.makedirs(outpathlk[side]) @@ -217,7 +225,7 @@ # HINT: We extract the modified class files with closing(zipfile.ZipFile(jarlk[side])) as zipjar: for in_class in trgclasses: -@@ -1559,6 +1623,23 @@ +@@ -1559,6 +1631,23 @@ out_class = out_class.replace(self.nullpkg, '') if out_class[0] == '/': out_class = out_class[1:] @@ -241,7 +249,7 @@ try: zipjar.extract(out_class, outpathlk[side]) self.logger.info('> Outputted %s to %s as %s', in_class.ljust(35), outpathlk[side], out_class) -@@ -1605,6 +1686,9 @@ +@@ -1605,6 +1694,9 @@ sys.exit(1) for entry in newfiles: @@ -251,7 +259,7 @@ if entry[3] == 'U': self.logger.info('Retrieving file from server : %s', entry[0]) cur_file = os.path.normpath(entry[0]) -@@ -1625,6 +1709,9 @@ +@@ -1625,6 +1717,9 @@ md5reoblk = {CLIENT: self.md5reobfclient, SERVER: self.md5reobfserver} outpathlk = {CLIENT: self.srcmodclient, SERVER: self.srcmodserver} src = {CLIENT: self.srcclient, SERVER: self.srcserver} @@ -261,3 +269,8 @@ # HINT: We need a table for the old md5 and the new ones md5table = {} +@@ -1713,4 +1808,4 @@ + if reverse: + for type,map in srg.items(): + srg[type] = dict([[v,k] for k,v in map.items()]) +- return srg+ return srg