Skip to contentSkip to conversation

libecj-bootstrap-native: simplify build

PATCH In review André Draszik 2 participants 3 messages Apr 25, 2018 – Jun 19, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 libecj-bootstrap-native: simplify build

From: André Draszik <[email protected]>

Piping 'find' output into multiple files to re-read them seems inelegant and is error prone - just use a pipe with appropriate options instead.

This avoids potential problems with funny file names, and now also makes use of BB_NUMBER_THREADS to speed up compilation.

This is a better example to copy from now...

---
 recipes-core/ecj/libecj-bootstrap.inc | 25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)
recipes-core/ecj/libecj-bootstrap.inc +7 -18
index 9350550..04425f4 100644
@@ -17,13 +17,8 @@ JAR = "ecj-bootstrap-${PV}.jar"
 
 do_unpackpost[dirs] = "${B}"
 do_unpackpost() {
-  if [ ! -d source ]; then
-    mkdir source
-  fi
-
-  if [ ! -d build ]; then
-    mkdir build
-  fi
+  mkdir -p source
+  mkdir -p build
 
   # Remove crap.
   rm -f about.html build.xml
@@ -44,24 +39,18 @@ do_unpackpost() {
   cp -R source/org build/
 
   # Remove source code and other stuff.
-  find build -name '*.java' -exec rm -f {} \;
-  find build -name '*.html' -exec rm -f {} \;
+  find build -depth \( -name '*.java' -o -name '*.html' \) -delete
 }
 
 addtask unpackpost after do_unpack before do_patch
 
 do_compile() {
-  find source -name '*.java' | LC_ALL=C sort > sourcefiles
-  split -l 25 sourcefiles ecj-sources.
-
   # Compiling in place is done because the sources contain
   # property files which need to be available at runtime.
-  for list in `find . -name 'ecj-sources.*'`; do
-      echo "building files in $list ...";
-      echo jikes-initial -d build -source 1.4 -sourcepath source `cat $list`;
-      jikes-initial \
-				-d build -source 1.4 -sourcepath source `cat $list`;
-  done
+  find source -name '*.java' -print0 \
+    | LC_ALL=C sort -z \
+    | xargs -0 -n25 -P ${BB_NUMBER_THREADS} \
+        jikes-initial -d build -source 1.4 -sourcepath source
 
   fastjar -c -C build . -f ${JAR}
 }
Signature · 1 line
2.16.2
Tested-by on v1 1/1
#1 lore raw
Quoted 6 lines · André Draszik

From: André Draszik <[email protected]>

Piping 'find' output into multiple files to re-read them seems inelegant and is error prone - just use a pipe with appropriate options instead.

Quoted 7 lines

This avoids potential problems with funny file names, and now also makes use of BB_NUMBER_THREADS to speed up compilation.

This is a better example to copy from now...

Quoted 55 lines
---
  recipes-core/ecj/libecj-bootstrap.inc | 25 +++++++------------------
  1 file changed, 7 insertions(+), 18 deletions(-)
recipes-core/ecj/libecj-bootstrap.inc +7 -18
index 9350550..04425f4 100644
@@ -17,13 +17,8 @@ JAR = "ecj-bootstrap-${PV}.jar"
 
  do_unpackpost[dirs] = "${B}"
  do_unpackpost() {
-  if [ ! -d source ]; then
-    mkdir source
-  fi
-
-  if [ ! -d build ]; then
-    mkdir build
-  fi
+  mkdir -p source
+  mkdir -p build
 
    # Remove crap.
    rm -f about.html build.xml
@@ -44,24 +39,18 @@ do_unpackpost() {
    cp -R source/org build/
 
    # Remove source code and other stuff.
-  find build -name '*.java' -exec rm -f {} \;
-  find build -name '*.html' -exec rm -f {} \;
+  find build -depth \( -name '*.java' -o -name '*.html' \) -delete
  }
 
  addtask unpackpost after do_unpack before do_patch
 
  do_compile() {
-  find source -name '*.java' | LC_ALL=C sort > sourcefiles
-  split -l 25 sourcefiles ecj-sources.
-
    # Compiling in place is done because the sources contain
    # property files which need to be available at runtime.
-  for list in `find . -name 'ecj-sources.*'`; do
-      echo "building files in $list ...";
-      echo jikes-initial -d build -source 1.4 -sourcepath source `cat $list`;
-      jikes-initial \
-				-d build -source 1.4 -sourcepath source `cat $list`;
-  done
+  find source -name '*.java' -print0 \
+    | LC_ALL=C sort -z \
+    | xargs -0 -n25 -P ${BB_NUMBER_THREADS} \
+        jikes-initial -d build -source 1.4 -sourcepath source
 
    fastjar -c -C build . -f ${JAR}
  }
#2 lore raw
In reply to André Draszik

Hi,
this is a note to let you know that I've just added this patch to the master-next branch of the meta-java repository at
git://git.yoctoproject.org/meta-java

As soon as it has gone through some more testing it will likely be merged to the master branch.

If you have any questions, please let me know.

regards;Richard.L

Quoted 68 lines · André Draszik

From: André Draszik <[email protected]>

Piping 'find' output into multiple files to re-read them seems inelegant and is error prone - just use a pipe with appropriate options instead.

This avoids potential problems with funny file names, and now also makes use of BB_NUMBER_THREADS to speed up compilation.

This is a better example to copy from now...

---
  recipes-core/ecj/libecj-bootstrap.inc | 25 +++++++------------------
  1 file changed, 7 insertions(+), 18 deletions(-)
recipes-core/ecj/libecj-bootstrap.inc +7 -18
index 9350550..04425f4 100644
@@ -17,13 +17,8 @@ JAR = "ecj-bootstrap-${PV}.jar"
 
  do_unpackpost[dirs] = "${B}"
  do_unpackpost() {
-  if [ ! -d source ]; then
-    mkdir source
-  fi
-
-  if [ ! -d build ]; then
-    mkdir build
-  fi
+  mkdir -p source
+  mkdir -p build
 
    # Remove crap.
    rm -f about.html build.xml
@@ -44,24 +39,18 @@ do_unpackpost() {
    cp -R source/org build/
 
    # Remove source code and other stuff.
-  find build -name '*.java' -exec rm -f {} \;
-  find build -name '*.html' -exec rm -f {} \;
+  find build -depth \( -name '*.java' -o -name '*.html' \) -delete
  }
 
  addtask unpackpost after do_unpack before do_patch
 
  do_compile() {
-  find source -name '*.java' | LC_ALL=C sort > sourcefiles
-  split -l 25 sourcefiles ecj-sources.
-
    # Compiling in place is done because the sources contain
    # property files which need to be available at runtime.
-  for list in `find . -name 'ecj-sources.*'`; do
-      echo "building files in $list ...";
-      echo jikes-initial -d build -source 1.4 -sourcepath source `cat $list`;
-      jikes-initial \
-				-d build -source 1.4 -sourcepath source `cat $list`;
-  done
+  find source -name '*.java' -print0 \
+    | LC_ALL=C sort -z \
+    | xargs -0 -n25 -P ${BB_NUMBER_THREADS} \
+        jikes-initial -d build -source 1.4 -sourcepath source
 
    fastjar -c -C build . -f ${JAR}
  }