This is an automated email from the ASF dual-hosted git repository. damjan pushed a commit to branch scons-build in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit da4a36174afd3333b1314b1de13499ae969eeef2 Author: Damjan Jovanovic <dam...@apache.org> AuthorDate: Mon Jun 29 18:20:29 2020 +0200 Cleanup and automate conversion to AllLangResTarget. Patch by: me --- .../openoffice/gotoSCons/SConsConverter.java | 49 ++++++++++++++++++++++ .../gotoSCons/targets/AllLangResTarget.java | 40 +++++++++++++++++- .../openoffice/gotoSCons/targets/SrsTarget.java | 8 ++++ main/site_scons/AllLangRes.py | 26 ++++++------ main/uui/SConscript | 8 ++-- 5 files changed, 115 insertions(+), 16 deletions(-) diff --git a/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/SConsConverter.java b/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/SConsConverter.java index db22e75..c57b54a 100644 --- a/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/SConsConverter.java +++ b/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/SConsConverter.java @@ -33,6 +33,7 @@ import org.apache.openoffice.gotoSCons.targets.Library; import org.apache.openoffice.gotoSCons.targets.Module; import org.apache.openoffice.gotoSCons.targets.Pkg; import org.apache.openoffice.gotoSCons.targets.Repository; +import org.apache.openoffice.gotoSCons.targets.SrsTarget; import org.apache.openoffice.gotoSCons.targets.StaticLibrary; public class SConsConverter { @@ -166,6 +167,54 @@ public class SConsConverter { } private void convertAllLangResTarget(AllLangResTarget allLangResTarget) throws Exception { + String srsVariableName = allLangResTarget.getName() + "Srs"; + if (allLangResTarget.getSrs().size() != 1) { + throw new Exception("AllLangResTarget needs exactly 1 SrsTarget"); + } + String srsName = allLangResTarget.getSrs().get(0); + SrsTarget srsTarget = allLangResTarget.getSrsTargets().get(srsName); + if (srsTarget == null) { + throw new Exception("No SrsTarget found for " + srsName); + } + out.println(String.format("%s = AOOSrsTarget('%s', [", srsVariableName, srsName)); + boolean first = true; + for (String file : srsTarget.getFiles()) { + if (!first) { + out.println(","); + } + out.print(" '" + file + "'"); + first = false; + } + out.println(); + out.println("])"); + + if (!srsTarget.getIncludes().isEmpty()) { + out.println(srsVariableName + ".AddInclude(["); + boolean firstInclude = true; + for (String include : srsTarget.getIncludes()) { + if (include.equals("$$(INCLUDE)")) { + continue; + } + if (include.startsWith("-I")) { + include = include.substring(2); + } + if (include.startsWith("$(SRCDIR)/")) { + int firstSlash = include.indexOf('/'); + include = include.substring(firstSlash + 1); + } + + if (!firstInclude) { + out.println(","); + } + out.print(" '" + include + "'"); + firstInclude = false; + } + out.println(); + out.println("])"); + } + + out.println(String.format("AOOAllLangResTarget('%s', %s)", allLangResTarget.getName(), srsVariableName)); + out.println(); } diff --git a/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/AllLangResTarget.java b/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/AllLangResTarget.java index cf3f16c..36e8e58 100644 --- a/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/AllLangResTarget.java +++ b/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/AllLangResTarget.java @@ -203,6 +203,7 @@ public class AllLangResTarget extends BaseTarget { private File filename; private String name; private String resLocation; + private Set<String> imageLocations = new TreeSet<>(); private ArrayList<String> srs = new ArrayList<>(); private Map<String,SrsTarget> srsTargets = new TreeMap<>(); @@ -231,6 +232,8 @@ public class AllLangResTarget extends BaseTarget { parseAllLangResTargetAllLangResTarget(args); } else if (function.equals("gb_AllLangResTarget_set_reslocation")) { parseSetResLocation(args); + } else if (function.equals("gb_AllLangResTarget_set_imagelocations")) { + parseSetImageLocations(args); } else if (function.equals("gb_AllLangResTarget_add_srs")) { parseAddSrs(args); } else if (function.equals("gb_SrsTarget_SrsTarget")) { @@ -265,6 +268,21 @@ public class AllLangResTarget extends BaseTarget { resLocation = args[1]; } + private void parseSetImageLocations(String[] args) throws Exception { + if (args.length != 2) { + throw new Exception("Expected 2 args, got " + Arrays.toString(args)); + } + if (!args[0].equals(name)) { + throw new Exception("Target name isn't " + name); + } + + for (String arg : Utils.spaceSeparatedTokens(args[1])) { + if (!imageLocations.add(arg)) { + throw new Exception("Duplicate image location " + arg); + } + } + } + private void parseAddSrs(String[] args) throws Exception { if (args.length != 2) { throw new Exception("Expected 2 args, got " + Arrays.toString(args)); @@ -273,7 +291,7 @@ public class AllLangResTarget extends BaseTarget { throw new Exception("Target name isn't " + name); } - srs.add(args[1]); + srs.add(args[1].trim()); } private void parseSrsTargetSrsTarget(String[] args) throws Exception { @@ -320,4 +338,24 @@ public class AllLangResTarget extends BaseTarget { } srsTarget.addFiles(files); } + + public String getName() { + return name; + } + + public Set<String> getImageLocations() { + return imageLocations; + } + + public String getResLocation() { + return resLocation; + } + + public ArrayList<String> getSrs() { + return srs; + } + + public Map<String, SrsTarget> getSrsTargets() { + return srsTargets; + } } diff --git a/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/SrsTarget.java b/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/SrsTarget.java index 7bc421b..9f3c52a 100644 --- a/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/SrsTarget.java +++ b/gotoSCons/src/main/java/org/apache/openoffice/gotoSCons/targets/SrsTarget.java @@ -32,4 +32,12 @@ public class SrsTarget { } } } + + public Set<String> getFiles() { + return files; + } + + public Set<String> getIncludes() { + return includes; + } } diff --git a/main/site_scons/AllLangRes.py b/main/site_scons/AllLangRes.py index 6ed9b78..1756a32 100644 --- a/main/site_scons/AllLangRes.py +++ b/main/site_scons/AllLangRes.py @@ -28,8 +28,8 @@ import os.path ResTarget_DEFIMAGESLOCATION='${SOLARSRC}/default_images/' -class AllLangResTarget: - def __init__(self, name, srsTargets): +class AOOAllLangResTarget: + def __init__(self, name, srsTarget): self.env = DefaultEnvironment().Clone() withLang = self.env.get('AOO_WITH_LANG') @@ -42,7 +42,7 @@ class AllLangResTarget: self.resTargets = [] for lang in langs: - self.resTargets.append(ResTarget(name, lang, srsTargets)) + self.resTargets.append(AOOResTarget(name, lang, srsTarget.target)) def SetResLocation(self, resLocation): for resTarget in self.resTargets: @@ -53,7 +53,7 @@ class AllLangResTarget: resTarget.SetImageLocations(imageLocations) -class ResTarget: +class AOOResTarget: def __init__(self, library, lang, srsTargets): self.env = DefaultEnvironment().Clone() self.env.Append(ENV=platform.getExecutableEnvironment(soenv)) @@ -111,7 +111,7 @@ class ResTarget: imageList.append('-lip=' + abspath) -class SrsTarget: +class AOOSrsTarget: def __init__(self, srsPath, srcFiles): self.env = DefaultEnvironment().Clone() self.env.Append(ENV=platform.getExecutableEnvironment(soenv)) @@ -125,16 +125,18 @@ class SrsTarget: self.parts = [] partTargets = [] for srcFile in srcFiles: - srsPartTarget = SrsPartTarget(self.env, srcFile) + srsPartTarget = AOOSrsPartTarget(self.env, srcFile) self.parts.append(srsPartTarget) partTargets.append(srsPartTarget.target) - self.objects = self.env.Command('Res/SrsTarget/' + self.srsPath + '.srs', partTargets, + self.target = self.env.Command( + 'Res/SrsTarget/' + self.srsPath + '.srs', + partTargets, Action(self.build_srs)) - def SetIncludes(self, includes): + def AddInclude(self, includes): for srsPart in self.parts: - srsPart.SetIncludes(includes) + srsPart.AddInclude(includes) @staticmethod def build_srs(target, source, env): @@ -147,7 +149,7 @@ class SrsTarget: shutil.copyfileobj(infd, outfd) return 0 -class SrsPartTarget: +class AOOSrsPartTarget: def __init__(self, env, file): srcFile = File(file) dstFile = File('Res/SrsPartTarget/' + file + '.part') @@ -184,6 +186,6 @@ class SrsPartTarget: '-fp=$TARGET', '$SOURCE'])) - def SetIncludes(self, includes): - self.env.Replace(CPPPATH=includes) + def AddInclude(self, includes): + self.env.Append(CPPPATH=includes) self.env['RSC_CPPPATH'] = '-I' + ' -I'.join(self.env['CPPPATH']) diff --git a/main/uui/SConscript b/main/uui/SConscript index b44e76d..4dd9289 100644 --- a/main/uui/SConscript +++ b/main/uui/SConscript @@ -1,7 +1,7 @@ #print("Dir(.)=" + Dir('.').path) #print("Dir(#.)=" + Dir('#.').path) -srsTarget = SrsTarget('uui/res', [ +srsTarget = AOOSrsTarget('uui/res', [ 'source/cookiedg.src', 'source/ids.src', 'source/logindlg.src', @@ -21,7 +21,9 @@ srsTarget = SrsTarget('uui/res', [ 'source/nameclashdlg.src', 'source/newerverwarn.src' ]) -srsTarget.SetIncludes(env['CPPPATH'] + ['uui/source']) +srsTarget.AddInclude([ + 'uui/source' +]) #ResTarget('uui', 'en-US', [srsTarget.objects]) -AllLangResTarget('uui', [srsTarget.objects]) +AOOAllLangResTarget('uui', srsTarget)