Mercurial > hg > release > icedtea6-1.7
changeset 1039:f2a1e7f88c53
Fix the issue with Spp.java and allow multiple ECJ patches.
2008-09-12 Andrew John Hughes <gnu_andrew@member.fsf.org>
* Makefile.am:
Turn ICEDTEA_ECJ_PATCH into
ICEDTEA_ECJ_PATCHES and add an equivalent
rule to that for PATCHES and FSG_PATCHES.
* patches/icedtea-ecj-spp.patch:
New patch to fix the use of java.util.Scanner
and avoid the use of reset() in Spp.java.
author | andrew |
---|---|
date | Fri, 12 Sep 2008 23:30:45 +0100 |
parents | a26c5e78d8f4 |
children | c46e727121a8 |
files | ChangeLog Makefile.am patches/icedtea-ecj-spp.patch |
diffstat | 3 files changed, 118 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Fri Sep 12 23:25:49 2008 +0200 +++ b/ChangeLog Fri Sep 12 23:30:45 2008 +0100 @@ -1,3 +1,13 @@ +2008-09-12 Andrew John Hughes <gnu_andrew@member.fsf.org> + + * Makefile.am: + Turn ICEDTEA_ECJ_PATCH into + ICEDTEA_ECJ_PATCHES and add an equivalent + rule to that for PATCHES and FSG_PATCHES. + * patches/icedtea-ecj-spp.patch: + New patch to fix the use of java.util.Scanner + and avoid the use of reset() in Spp.java. + 2008-09-12 Matthias Klose <doko@ubuntu.com> * fsg.sh: Update for b12 code drop.
--- a/Makefile.am Fri Sep 12 23:25:49 2008 +0200 +++ b/Makefile.am Fri Sep 12 23:30:45 2008 +0100 @@ -694,29 +694,56 @@ touch stamps/ports-ecj.stamp # Patch OpenJDK for plug replacements and ecj. -ICEDTEA_ECJ_PATCH = $(srcdir)/patches/icedtea-ecj.patch +ICEDTEA_ECJ_PATCHES = patches/icedtea-ecj.patch \ + patches/icedtea-ecj-spp.patch stamps/patch-ecj.stamp: stamps/extract-ecj.stamp - echo Checking $(ICEDTEA_ECJ_PATCH) ; \ - if $(PATCH) -p0 -l --dry-run -s -t -f < $(ICEDTEA_ECJ_PATCH) ; \ - then \ - echo Applying $(ICEDTEA_ECJ_PATCH) ; \ - $(PATCH) -p0 -l < $(ICEDTEA_ECJ_PATCH) ; \ - mkdir -p stamps; \ - touch stamps/patch-ecj.stamp; \ - else \ + mkdir -p stamps; \ + rm -f stamps/patch-ecj.stamp.tmp ; \ + touch stamps/patch-ecj.stamp.tmp ; \ + all_patches_ok=yes; \ + for p in $(ICEDTEA_ECJ_PATCHES) ; \ + do \ + if test x$${all_patches_ok} = "xyes" \ + && echo Checking $$p \ + && $(PATCH) -l -p0 --dry-run -s -t -f \ + -F 0 < $(abs_top_srcdir)/$$p ; \ + then \ + echo Applying $$p ; \ + $(PATCH) -l -p0 < $(abs_top_srcdir)/$$p ; \ + if ! grep "^\* $$(basename $$p)" $(abs_top_srcdir)/HACKING \ + >> stamps/patch-ecj.stamp.tmp ; \ + then \ + echo "* $$(basename $$p): UNDOCUMENTED" \ + >> stamps/patch-ecj.stamp.tmp ; \ + fi ; \ + else \ + test x$${all_patches_ok} = "xyes" && all_patches_ok=$$p ; \ + fi ; \ + done ; \ + mv stamps/patch-ecj.stamp.tmp stamps/patch-ecj.stamp ; \ + if ! test x$${all_patches_ok} = "xyes"; then \ + echo ERROR patch $${all_patches_ok} FAILED! ; \ + echo WARNING make clean-patch before retrying a fix ; \ false; \ fi clean-patch-ecj: rm -f stamps/patch-ecj.stamp - echo Checking $(ICEDTEA_ECJ_PATCH) ; \ - if $(PATCH) -l -p0 -R --dry-run -s -t -f < $(ICEDTEA_ECJ_PATCH) ; \ - then \ - echo Reverting $(ICEDTEA_ECJ_PATCH) ; \ - $(PATCH) -p0 -l -R < $(ICEDTEA_ECJ_PATCH) ; \ - else \ - false; \ + all_patches_ok=yes; \ + for p in $(ICEDTEA_ECJ_PATCHES) ; \ + do \ + echo Checking $$p ; \ + if $(PATCH) -l -p0 -R --dry-run -s -t -f < $(abs_top_srcdir)/$$p ; \ + then \ + echo Reverting $$p ; \ + $(PATCH) -l -p0 -R < $(abs_top_srcdir)/$$p ; \ + else \ + all_patches_ok=no ; \ + fi ; \ + done ; \ + if ! test x$${all_patches_ok} = "xyes" ; then \ + echo "WARNING Not all patches reverted cleanly" ; \ fi # Bootstrap Directory Targets
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/icedtea-ecj-spp.patch Fri Sep 12 23:30:45 2008 +0100 @@ -0,0 +1,65 @@ +diff -Nru openjdk-ecj.orig/jdk/make/tools/src/build/tools/spp/Spp.java openjdk-ecj/jdk/make/tools/src/build/tools/spp/Spp.java +--- openjdk-ecj.orig/jdk/make/tools/src/build/tools/spp/Spp.java 2008-09-11 08:44:09.000000000 +0100 ++++ openjdk-ecj/jdk/make/tools/src/build/tools/spp/Spp.java 2008-09-12 21:34:38.000000000 +0100 +@@ -25,6 +25,10 @@ + + package build.tools.spp; + ++import java.io.BufferedReader; ++import java.io.InputStreamReader; ++import java.io.IOException; ++ + import java.util.*; + import java.util.regex.*; + +@@ -83,7 +87,7 @@ + } + + StringBuffer out = new StringBuffer(); +- new Spp().spp(new Scanner(System.in), ++ new Spp().spp(new BufferedReader(new InputStreamReader(System.in)), + out, "", + keys, vars, be, + false); +@@ -104,12 +108,12 @@ + Matcher ifkey = Pattern.compile("^#if\\[(!)?" + KEY + "\\]").matcher(""); + Matcher elsekey = Pattern.compile("^#else\\[(!)?" + KEY + "\\]").matcher(""); + Matcher endkey = Pattern.compile("^#end\\[(!)?" + KEY + "\\]").matcher(""); +- Matcher vardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:"+ TEXT + ")?\\}|\\$" + VAR + "\\$").matcher(""); ++ Pattern pvardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:"+ TEXT + ")?\\}|\\$" + VAR + "\\$"); + Matcher vardef2 = Pattern.compile("\\$" + VAR + "\\$").matcher(""); + + void append(StringBuffer buf, String ln, + Set<String> keys, Map<String, String> vars) { +- vardef.reset(ln); ++ Matcher vardef = pvardef.matcher(ln); + while (vardef.find()) { + String repl = ""; + if (vardef.group(GN_VAR) != null) +@@ -133,19 +137,20 @@ + } + + // return true if #end[key], #end or EOF reached +- boolean spp(Scanner in, StringBuffer buf, String key, ++ boolean spp(BufferedReader in, StringBuffer buf, String key, + Set<String> keys, Map<String, String> vars, +- boolean be, boolean skip) { +- while (in.hasNextLine()) { +- String ln = in.nextLine(); ++ boolean be, boolean skip) throws IOException { ++ while (true) { ++ String ln = in.readLine(); ++ if (ln == null) ++ break; + if (be) { + if (ln.startsWith("#begin")) { + buf.setLength(0); //clean up to this line + continue; + } + if (ln.equals("#end")) { +- while (in.hasNextLine()) +- in.nextLine(); ++ do { } while (in.readLine() != null); + return true; //discard the rest to EOF + } + }