You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by da...@apache.org on 2020/07/04 18:44:08 UTC
[openoffice] 05/11: Cleanup and automate conversion to
AllLangResTarget.
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 <da...@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)