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)