This is an automated email from the git hooks/post-receive script. ebourg-guest pushed a commit to branch master in repository ecj.
commit 47a418fe45fcd9855d6845d1ba722815598a37c2 Merge: 77d682e e9edad9 Author: Matthias Klose <[email protected]> Date: Sat Mar 3 19:37:46 2007 +0100 Import Debian changes 3.2.2-0 ecj (3.2.2-0) experimental; urgency=low * New upstream version. - Update patches. * (Build-)depend on gcj generics backport. * Build-Conflicts with ecj-bootstrap-gcj (<< 3.2.2). * Merge from Ubuntu: - Split out patches. - Add ecj-square-bracket-classpath.diff. - ecj-bootstrap: Add compatibilty script ecj-bootstrap. - Install the jar as eclipse-ecj.jar, provide an ecj.jar symlink. - Rename source and binary package to ecj. - Pass gcj and gcj-dbtool versions to aot-compile. debian/changelog | 16 + debian/control | 46 +- debian/ecj-bootstrap-gcj.install | 3 - debian/ecj-bootstrap-gcj.prerm | 6 - debian/ecj-bootstrap.install | 2 - debian/ecj-bootstrap.manpages | 1 - debian/ecj-bootstrap.postinst | 9 - debian/ecj-bootstrap.prerm | 6 - debian/ecj-gcj.install | 3 + ...ecj-bootstrap-gcj.postinst => ecj-gcj.postinst} | 0 .../{ecj-bootstrap-gcj.postrm => ecj-gcj.postrm} | 0 debian/{ecj-bootstrap.1 => ecj.1} | 0 debian/ecj.install | 2 + debian/ecj.links | 1 + debian/ecj.manpages | 1 + debian/ecj.postinst | 6 + debian/ecj.prerm | 5 + debian/patches/ecj-gccmain.diff | 511 ++++++ debian/patches/ecj-square-bracket-classpath.diff | 103 ++ debian/rules | 85 +- ecj-bootstrap => ecj | 4 +- ecj-bootstrap | 4 +- .../eclipse/jdt/internal/compiler/ClassFile.java | 4 +- .../eclipse/jdt/internal/compiler/Compiler.java | 10 +- .../jdt/internal/compiler/IProblemFactory.java | 3 +- .../eclipse/jdt/internal/compiler/ast/ASTNode.java | 8 +- .../internal/compiler/ast/ArrayInitializer.java | 1 + .../compiler/ast/ArrayQualifiedTypeReference.java | 4 + .../jdt/internal/compiler/ast/CastExpression.java | 35 +- .../internal/compiler/ast/ClassLiteralAccess.java | 9 +- .../eclipse/jdt/internal/compiler/ast/Clinit.java | 32 +- .../jdt/internal/compiler/ast/Expression.java | 19 +- .../jdt/internal/compiler/ast/FieldReference.java | 122 +- .../internal/compiler/ast/LocalDeclaration.java | 74 +- .../jdt/internal/compiler/ast/MemberValuePair.java | 60 +- .../internal/compiler/ast/MethodDeclaration.java | 17 +- .../ast/ParameterizedQualifiedTypeReference.java | 2 +- .../compiler/ast/QualifiedNameReference.java | 20 +- .../compiler/ast/QualifiedTypeReference.java | 4 + .../internal/compiler/ast/SingleNameReference.java | 95 +- .../jdt/internal/compiler/ast/TypeReference.java | 10 +- .../jdt/internal/compiler/batch/FileFinder.java | 29 +- .../jdt/internal/compiler/batch/FileSystem.java | 4 +- .../jdt/internal/compiler/batch/GCCMain.java | 495 ------ .../eclipse/jdt/internal/compiler/batch/Main.java | 1714 +++++++++----------- .../internal/compiler/batch/messages.properties | 93 +- .../jdt/internal/compiler/codegen/CodeStream.java | 59 +- .../compiler/codegen/FieldNameAndTypeCache.java | 167 -- .../compiler/codegen/MethodNameAndTypeCache.java | 168 -- .../compiler/codegen/StackMapFrameCodeStream.java | 73 +- .../compiler/flow/UnconditionalFlowInfo.java | 5 +- .../compiler/lookup/BinaryTypeBinding.java | 52 +- .../jdt/internal/compiler/lookup/ClassScope.java | 62 +- .../compiler/lookup/CompilationUnitScope.java | 7 +- .../internal/compiler/lookup/ElementValuePair.java | 5 + .../compiler/lookup/LookupEnvironment.java | 41 +- .../internal/compiler/lookup/MethodVerifier15.java | 8 +- .../compiler/lookup/MissingBinaryTypeBinding.java | 58 + .../compiler/lookup/ParameterizedTypeBinding.java | 2 +- .../jdt/internal/compiler/lookup/Scope.java | 30 +- .../compiler/lookup/SourceTypeBinding.java | 15 +- .../compiler/lookup/SyntheticMethodBinding.java | 2 +- .../lookup/UnresolvedAnnotationBinding.java | 34 +- .../lookup/UnresolvedReferenceBinding.java | 9 +- .../jdt/internal/compiler/parser/Parser.java | 8 +- .../compiler/problem/AbortCompilation.java | 5 +- .../internal/compiler/problem/DefaultProblem.java | 14 +- .../compiler/problem/DefaultProblemFactory.java | 6 +- .../internal/compiler/problem/ProblemHandler.java | 47 +- .../internal/compiler/problem/ProblemReporter.java | 304 ++-- .../internal/compiler/util/GenericXMLWriter.java | 117 ++ .../eclipse/jdt/internal/compiler/util/Util.java | 41 + 72 files changed, 2618 insertions(+), 2399 deletions(-) diff --cc debian/changelog index bf985ae,0000000..313a9e0 mode 100644,000000..100644 --- a/debian/changelog +++ b/debian/changelog @@@ -1,287 -1,0 +1,303 @@@ ++ecj (3.2.2-0) experimental; urgency=low ++ ++ * New upstream version. ++ - Update patches. ++ * (Build-)depend on gcj generics backport. ++ * Build-Conflicts with ecj-bootstrap-gcj (<< 3.2.2). ++ * Merge from Ubuntu: ++ - Split out patches. ++ - Add ecj-square-bracket-classpath.diff. ++ - ecj-bootstrap: Add compatibilty script ecj-bootstrap. ++ - Install the jar as eclipse-ecj.jar, provide an ecj.jar symlink. ++ - Rename source and binary package to ecj. ++ - Pass gcj and gcj-dbtool versions to aot-compile. ++ ++ -- Matthias Klose <[email protected]> Sat, 3 Mar 2007 19:37:46 +0100 ++ +ecj-bootstrap (3.2.1-6) unstable; urgency=low + + * Fix PR java/30585 (-Werror and -Wall not working). Taken from the rhug + repository. + + -- Matthias Klose <[email protected]> Sat, 3 Feb 2007 14:16:47 +0100 + +ecj-bootstrap (3.2.1-5) unstable; urgency=low + + * debian/control: Call it a "standalone" version, not a "bootstrap" + version. The package is used as the compiler in java-gcj-compat-dev + as well. See also #396170. + + -- Matthias Klose <[email protected]> Thu, 11 Jan 2007 20:44:40 +0100 + +ecj-bootstrap (3.2.1-4) unstable; urgency=medium + + * Refactor batch/org/eclipse/jdt/internal/compiler/batch/Main.java, + add batch/org/eclipse/jdt/internal/compiler/batch/GCCMain.java, + needed to bootstrap GCC-4.3. + + -- Matthias Klose <[email protected]> Tue, 9 Jan 2007 00:09:22 +0100 + +ecj-bootstrap (3.2.1-3) unstable; urgency=low + + * Add missing build dependency. + + -- Matthias Klose <[email protected]> Sun, 8 Oct 2006 01:40:00 +0200 + +ecj-bootstrap (3.2.1-2) unstable; urgency=low + + * Add 1.6 compatibility in package description. + * Use own copy of aot-compile to build with less memory resources + on arm and m68k. + * Build the standalone binary without -fjni -findirect-dispatch. + + -- Matthias Klose <[email protected]> Sat, 7 Oct 2006 23:38:47 +0200 + +ecj-bootstrap (3.2.1-1) unstable; urgency=medium + + * New upstream version. + * ecj-bootstrap-gcj: Add postrm script. + + -- Matthias Klose <[email protected]> Tue, 3 Oct 2006 09:35:39 +0200 + +ecj-bootstrap (3.2-3) unstable; urgency=low + + * Install classmap db in /usr/share/gcj/classmap.db, install jar.so + in /usr/lib/gcj. + * ecj-bootstrap-gcj.postinst: Use rebuild-gcj-db. + * Build depend on gcj-4.1 (>= 4.1.1-13). + + -- Matthias Klose <[email protected]> Sat, 2 Sep 2006 13:55:21 +0000 + + ecj-bootstrap (3.2-2) experimental; urgency=low + + * Build using the gcj backport from experimental. + * Do not build the binary ecj. + + -- Matthias Klose <[email protected]> Sun, 13 Aug 2006 13:01:45 +0200 + +ecj-bootstrap (3.2-1) unstable; urgency=low + + * New upstream version. + + -- Matthias Klose <[email protected]> Mon, 31 Jul 2006 18:16:52 +0000 + +ecj-bootstrap (3.1.2-6) unstable; urgency=low + + * ecj-bootstrap-gcj: Do not register an alternative for ecj. + * ecj-bootstrap: Use ecj-bootstrap-gcj, if available. + * The above changes set the bootclasspath to /usr/share/java/libgcj-4.1.jar, + if no bootclasspath is set. Closes: #361608, #361806. + * Do not try to rebuild the jar file using the gij on arm and m68k. + + -- Matthias Klose <[email protected]> Thu, 1 Jun 2006 22:55:00 +0200 + +ecj-bootstrap (3.1.2-5) unstable; urgency=low + + * Updated Standards-Version to 3.7.2. No changes needed. + + -- Michael Koch <[email protected]> Sat, 6 May 2006 16:25:40 +0000 + +ecj-bootstrap (3.1.2-4) unstable; urgency=low + + * Build using gij-4.1/gcj-4.1. + * Rebuild using ecj on all architectures. + * Remove conflict on virtual package ecj. + + -- Matthias Klose <[email protected]> Sat, 1 Apr 2006 11:29:03 +0000 + +ecj-bootstrap (3.1.2-3) experimental; urgency=low + + * Build using gcj-4.1, upload to experimental. + + -- Matthias Klose <[email protected]> Sat, 28 Jan 2006 08:35:09 +0000 + +ecj-bootstrap (3.1.2-2ubuntu3) dapper; urgency=low + + * Use gij-4.1 in the package scripts. + + -- Matthias Klose <[email protected]> Sun, 26 Feb 2006 21:00:44 +0000 + +ecj-bootstrap (3.1.2-2ubuntu2) dapper; urgency=low + + * Build using gcj-4.1. + + -- Matthias Klose <[email protected]> Sun, 19 Feb 2006 01:07:40 +0000 + +ecj-bootstrap (3.1.2-2build1) dapper; urgency=low + + * Require gcj-4.0.2-9 to build. + + -- Matthias Klose <[email protected]> Thu, 16 Feb 2006 03:18:22 +0000 + +ecj-bootstrap (3.1.2-2) unstable; urgency=low + + * Set the bootclasspath to /usr/share/java/libgcj-4.0.jar, if not called + with the -bootclasspath and /usr/lib/jvm/java-gcj/jre/lib/rt.jar does + not exist (java-gcj-compat not installed). Closes: #350542. + + -- Matthias Klose <[email protected]> Thu, 9 Feb 2006 16:33:45 +0000 + +ecj-bootstrap (3.1.2-1) unstable; urgency=low + + * New upstream version. + + -- Matthias Klose <[email protected]> Sat, 28 Jan 2006 08:09:25 +0000 + +ecj-bootstrap (3.1.1-4) unstable; urgency=low + + * Depend on libgcj6-jar instead of libgcj6-common. + + -- Matthias Klose <[email protected]> Thu, 5 Jan 2006 19:14:49 +0000 + +ecj-bootstrap (3.1.1-3.1) unstable; urgency=low + + [ Arnaud Fontaine ] + * NMU: added a backslash at the end of the first line of + 'debian/ecj-bootstrap-gcj.postinst'. Closes: #335031. + + -- Christoph Berg <[email protected]> Sat, 29 Oct 2005 12:09:06 +0200 + +ecj-bootstrap (3.1.1-3) unstable; urgency=low + + * On arm and hppa, don't rebuild ecj using gij. + + -- Matthias Klose <[email protected]> Thu, 20 Oct 2005 19:08:20 +0000 + +ecj-bootstrap (3.1.1-2) unstable; urgency=low + + * Add a javac alternative (priority higher than gcj). + * ecj-bootstrap-gcj: Add slave alternative for the man page. + Addresses #328743. + + -- Matthias Klose <[email protected]> Thu, 20 Oct 2005 00:11:27 +0200 + +ecj-bootstrap (3.1.1-1) unstable; urgency=low + + * New upstream version. + * Remove bootstrap workaround, tighten build dependency to gcj-4.0.2. + * Fix symlink to manpage (closes: #330080). + + -- Matthias Klose <[email protected]> Sat, 1 Oct 2005 18:32:05 +0200 + +ecj-bootstrap (3.0.93-1) unstable; urgency=low + + * New upstream version (3.1rc3). Taken from the eclipse-3.1 package, + file ecj.zip. + + -- Matthias Klose <[email protected]> Wed, 14 Sep 2005 12:54:56 +0000 + +ecj-bootstrap (3.0.1-4ubuntu6) breezy; urgency=low + + * Only build one java file per gcj call, ignore errors on first + build. Closes: #327161, Ubuntu 14938. + * Add more error checking in debian/rules. + * Install manual page for ecj alternative as well. + + -- Matthias Klose <[email protected]> Wed, 14 Sep 2005 14:19:57 +0200 + +ecj-bootstrap (3.0.1-4ubuntu5) breezy; urgency=low + + * Reenable ecj-bootstrap-gcj. (Build-)depend on fixed gcj-4.0. + + -- Matthias Klose <[email protected]> Sat, 2 Jul 2005 08:25:02 +0000 + +ecj-bootstrap (3.0.1-4ubuntu4) breezy; urgency=low + + * Temporarily disable building ecj-bootstrap-gcj. FTBFS on amd64. Unbreak + ant's dependency on ecj (>= 3.0.1-4ubuntu2). + + -- Matthias Klose <[email protected]> Thu, 30 Jun 2005 09:59:20 +0000 + +ecj-bootstrap (3.0.1-4ubuntu3) breezy; urgency=low + + * Include manpages for ecj-bootstrap and ecj-bootstrap-gcj (closes: #316641). + + -- Jeff Bailey <[email protected]> Wed, 29 Jun 2005 14:52:57 +0000 + +ecj-bootstrap (3.0.1-4ubuntu2) breezy; urgency=low + + * Merged ecj-adapter.jar into ecj.jar in preparation for Eclipse 3.1 + upgrade. Upstream has laid out ecj in this fashion. + * Removed java-gcj-compat bits which were unneccassary. + * Added native versions of the ecj binary and ecj.jar in a new package + named ecj-bootstrap-gcj. This increases the compilation speed of + packages built with this copy of ecj. + * Added new alternatives for /usr/bin/ecj for the native version. + * First package successfully creating a classmap.db. + + -- Jerry Haltom <[email protected]> Tue, 14 Jun 2005 21:38:29 -0500 + +ecj-bootstrap (3.0.1-4ubuntu1) breezy; urgency=low + + * Add a /usr/bin/ecj binary. + + -- Matthias Klose <[email protected]> Sat, 11 Jun 2005 16:57:27 +0000 + +ecj-bootstrap (3.0.1-3) experimental; urgency=low + + * Synchronize. + + -- Matthias Klose <[email protected]> Wed, 1 Jun 2005 23:24:48 +0200 + +ecj-bootstrap (3.0.1-1ubuntu6) breezy; urgency=low + + * Now provides 'ecj' which will also be provided by the future + eclipse-ecj package built from full Eclipse source. + * Removed universe/ from Section. + * Now refering to libgcj-4.0.jar instead of 4.0.0.jar to handle + changing versions better. + + -- Jerry Haltom <[email protected]> Wed, 1 Jun 2005 14:12:16 -0500 + +ecj-bootstrap (3.0.1-2) experimental; urgency=low + + * Upload to experimental, set maintainer to Debian Java Matainers, + request by Michael Koch. + + -- Matthias Klose <[email protected]> Sun, 22 May 2005 15:53:07 +0000 + +ecj-bootstrap (3.0.1-1ubuntu5) hoary; urgency=low + + * Fixed path to ant.jar. + + -- Jerry Haltom <[email protected]> Mon, 28 Mar 2005 20:17:03 -0600 + +ecj-bootstrap (3.0.1-1ubuntu4) hoary; urgency=low + + * Added build of Ant adapter. This introduces a circular dependency + on ecj-bootstrap and Ant. + + -- Jerry Haltom <[email protected]> Sun, 27 Mar 2005 22:51:13 -0600 + +ecj-bootstrap (3.0.1-1ubuntu3) hoary; urgency=low + + * Added missing dependency on libgcj6-common. + + -- Jerry Haltom <[email protected]> Wed, 23 Feb 2005 22:45:00 -0600 + +ecj-bootstrap (3.0.1-1ubuntu2) hoary; urgency=low + + * Removed argument modification from ecj and moved it to ecj-wrapper in the + style of gcj-wrapper. + * Jeff Bailey corrected the Posix-compliant argument expansion in + ecj-wrapper with the help of David Weinehall. + * ecj now rebuilds with itself as a sanity test. + + -- Jerry Haltom <[email protected]> Mon, 14 Feb 2005 20:34:25 -0600 + +ecj-bootstrap (3.0.1-1ubuntu1) hoary; urgency=low + + * First upload to Ubuntu. + + * Tighten build deps. Use "ecj" instead of "ecj-bootstrap" to + allow ant to depend on ecj | ecj-bootstrap. + + * Posixify wrapper + + -- Jeff Bailey <[email protected]> Fri, 11 Feb 2005 20:37:21 +0000 + +ecj-bootstrap (3.0.1-0) unstable; urgency=low + + * Initial release. + + -- Jerry Haltom <[email protected]> Wed, 09 Feb 2005 19:36:07 -0600 diff --cc debian/control index c85bbfa,0000000..726a0f3 mode 100644,000000..100644 --- a/debian/control +++ b/debian/control @@@ -1,29 -1,0 +1,45 @@@ - Source: ecj-bootstrap ++Source: ecj +Section: devel +Priority: optional +Maintainer: Debian Java Maintainers <[email protected]> +Uploaders: Jerry Haltom <[email protected]>, Michael Koch <[email protected]>, Matthias Klose <[email protected]> - Build-Depends: cdbs (>= 0.4.26), debhelper (>= 4.1.0), gcj-4.1 (>= 4.1.1-13), fastjar, ant, zip, dpkg (>= 1.13.19), python, time ++Build-Depends: cdbs (>= 0.4.26), debhelper (>= 5), gcj-4.1 (>= 4.1.2-1), libgcj-bc (>= 4.1.2-1), fastjar, ant, zip, dpkg (>= 1.13.19), python, time ++Build-Conflicts: ecj-bootstrap-gcj (<< 3.2.2) +Standards-Version: 3.7.2 + - Package: ecj-bootstrap ++Package: ecj +Architecture: all - Depends: gij-4.1 (>= 4.1.1-13), libgcj7-jar (>= 4.1.1), java-common (>= 0.23) - Recommends: ecj-bootstrap-gcj ++Depends: gij-4.1 (>= 4.1.2-1), libgcj7-jar (>= 4.1.2-1), java-common (>= 0.23) ++Recommends: ecj-gcj ++Conflicts: ecj-bootstrap (<< 3.2.2) ++Replaces: ecj-bootstrap (<< 3.2.2) +Suggests: ant - Provides: ecj +Description: standalone version of the Eclipse Java compiler - This package provides a standalone version of the Eclipse JDT compiler which is - distributed as part of Eclipse. It passes the JCK (Java Compatibility Kit) and - is compatible with Java 1.3, 1.4, 1.5 and 1.6. ++ This package provides a standalone version of the Eclipse JDT compiler which ++ is distributed as part of Eclipse. It passes the JCK (Java Compatibility Kit) ++ and is compatible with Java 1.3, 1.4, 1.5 and 1.6. + - Package: ecj-bootstrap-gcj ++Package: ecj-gcj +Architecture: any - Depends: ecj-bootstrap (>= ${source:Version}), ${shlibs:Depends} - Recommends: java-gcj-compat (>= 1.0.63) ++Depends: ecj (>= ${source:Version}), ${shlibs:Depends} ++Recommends: java-gcj-compat (>= 1.0.69) ++Replaces: ecj-bootstrap-gcj (<< 3.2.2) +Description: standalone version of the Eclipse Java compiler (native version) - This package provides a standalone version of the Eclipse JDT compiler which is - distributed as part of Eclipse. It passes the JCK (Java Compatibility Kit) and - is compatible with Java 1.3, 1.4, 1.5 and 1.6. ++ This package provides a standalone version of the Eclipse JDT compiler which ++ is distributed as part of Eclipse. It passes the JCK (Java Compatibility Kit) ++ and is compatible with Java 1.3, 1.4, 1.5 and 1.6. + . + This package contains a native version of ecj built using gcj. ++ ++Package: ecj-bootstrap ++Architecture: all ++Depends: ecj ++Recommends: ecj-bootstrap-gcj ++Description: standalone version of the Eclipse Java compiler (transitional package) ++ This is a transitional package; it can safely be removed. ++ ++Package: ecj-bootstrap-gcj ++Architecture: all ++Depends: ecj-bootstrap (>= ${source:Version}), ecj-gcj (>= ${source:Version}) ++Description: standalone version of the Eclipse Java compiler (transitional package) ++ This is a transitional package; it can safely be removed. diff --cc debian/ecj-gcj.install index 0000000,0000000..5ba8567 new file mode 100644 --- /dev/null +++ b/debian/ecj-gcj.install @@@ -1,0 -1,0 +1,3 @@@ ++debian/tmp/usr/bin/ecj-gcj ++debian/tmp/usr/lib/gcj/eclipse-ecj.jar.so ++debian/tmp/usr/share/gcj diff --cc debian/ecj-gcj.postinst index 6901eaa,0000000..6901eaa mode 100644,000000..100644 --- a/debian/ecj-gcj.postinst +++ b/debian/ecj-gcj.postinst diff --cc debian/ecj-gcj.postrm index e6c5b04,0000000..e6c5b04 mode 100644,000000..100644 --- a/debian/ecj-gcj.postrm +++ b/debian/ecj-gcj.postrm diff --cc debian/ecj.1 index 68d6c57,0000000..68d6c57 mode 100644,000000..100644 --- a/debian/ecj.1 +++ b/debian/ecj.1 diff --cc debian/ecj.install index 0000000,0000000..5c694a7 new file mode 100644 --- /dev/null +++ b/debian/ecj.install @@@ -1,0 -1,0 +1,2 @@@ ++debian/tmp/usr/bin/ecj ++debian/tmp/usr/share/java/eclipse-ecj.jar diff --cc debian/ecj.links index 0000000,0000000..f6a8ada new file mode 100644 --- /dev/null +++ b/debian/ecj.links @@@ -1,0 -1,0 +1,1 @@@ ++/usr/share/java/eclipse-ecj.jar /usr/share/java/ecj.jar diff --cc debian/ecj.manpages index 0000000,0000000..bd1e496 new file mode 100644 --- /dev/null +++ b/debian/ecj.manpages @@@ -1,0 -1,0 +1,1 @@@ ++debian/ecj.1 diff --cc debian/ecj.postinst index 0000000,0000000..b2f1b68 new file mode 100644 --- /dev/null +++ b/debian/ecj.postinst @@@ -1,0 -1,0 +1,6 @@@ ++#! /bin/sh -e ++ ++update-alternatives --quiet --install /usr/bin/javac javac /usr/bin/ecj 143 \ ++ --slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/share/man/man1/ecj.1.gz ++ ++#DEBHELPER# diff --cc debian/ecj.prerm index 0000000,0000000..b7920e1 new file mode 100644 --- /dev/null +++ b/debian/ecj.prerm @@@ -1,0 -1,0 +1,5 @@@ ++#! /bin/sh -e ++ ++update-alternatives --quiet --remove javac /usr/bin/ecj ++ ++#DEBHELPER# diff --cc debian/patches/ecj-gccmain.diff index 0000000,0000000..f4efeea new file mode 100644 --- /dev/null +++ b/debian/patches/ecj-gccmain.diff @@@ -1,0 -1,0 +1,511 @@@ ++diff -urN ./src~/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java ./src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java ++--- ./src~/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java 1970-01-01 01:00:00.000000000 +0100 +++++ ./src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/GCCMain.java 2007-03-03 19:55:20.000000000 +0100 ++@@ -0,0 +1,495 @@ +++/** +++ * +++ */ +++package org.eclipse.jdt.internal.compiler.batch; +++ +++import java.io.BufferedOutputStream; +++import java.io.BufferedReader; +++import java.io.ByteArrayInputStream; +++import java.io.File; +++import java.io.FileOutputStream; +++import java.io.FileReader; +++import java.io.IOException; +++import java.io.InputStreamReader; +++import java.io.OutputStream; +++import java.io.PrintWriter; +++import java.io.UnsupportedEncodingException; +++import java.util.ArrayList; +++import java.util.HashSet; +++import java.util.Iterator; +++import java.util.Map; +++import java.util.StringTokenizer; +++import java.util.zip.CRC32; +++import java.util.zip.ZipEntry; +++import java.util.zip.ZipOutputStream; +++ +++import org.eclipse.jdt.core.compiler.InvalidInputException; +++import org.eclipse.jdt.internal.compiler.ClassFile; +++import org.eclipse.jdt.internal.compiler.CompilationResult; +++import org.eclipse.jdt.internal.compiler.env.AccessRule; +++import org.eclipse.jdt.internal.compiler.env.AccessRuleSet; +++import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; +++import org.eclipse.jdt.internal.compiler.util.Messages; +++import org.eclipse.jdt.internal.compiler.util.SuffixConstants; +++ +++/** +++ * This is an alternate entry point for the command-line compiler which +++ * is simpler to integrate into GCC. In particular the option processing +++ * is more GNU-like and the recognized options are similar to those supported +++ * by other GCC front ends. +++ */ +++public class GCCMain extends Main { +++ +++ // All the compilation units specified on the command line. +++ private HashSet commandLineCompilationUnits = new HashSet(); +++ // True if we are only checking syntax. +++ private boolean syntaxOnly; +++ // If not null, the name of the output zip file. +++ // If null, we are generating class files in the file system, +++ // not a zip file. +++ private String zipDestination; +++ // The zip stream to which we're writing, or null if it hasn't been opened. +++ private ZipOutputStream zipStream; +++ +++ // If not null, the name of the zip file to which dependency class files +++ // should be written. +++ private String zipDependencyDestination; +++ // The zip stream to which dependency files should be written. +++ private ZipOutputStream zipDependencyStream; +++ +++ public GCCMain(PrintWriter outWriter, PrintWriter errWriter, +++ boolean systemExitWhenFinished) { +++ super(outWriter, errWriter, systemExitWhenFinished); +++ this.logger.setEmacs(); +++ } +++ +++ public GCCMain(PrintWriter outWriter, PrintWriter errWriter, +++ boolean systemExitWhenFinished, Map customDefaultOptions) { +++ super(outWriter, errWriter, systemExitWhenFinished, +++ customDefaultOptions); +++ this.logger.setEmacs(); +++ } +++ +++ private void fail(Exception t) { +++ this.logger.logException(t); +++ System.exit(1); +++ } +++ +++ public CompilationUnit[] getCompilationUnits() throws InvalidInputException { +++ CompilationUnit[] units = super.getCompilationUnits(); +++ for (int i = 0; i < units.length; ++i) +++ this.commandLineCompilationUnits.add(units[i]); +++ return units; +++ } +++ +++ private String combine(char[] one, char[] two) { +++ StringBuffer b = new StringBuffer(); +++ b.append(one); +++ b.append(two); +++ return b.toString(); +++ } +++ +++ private ZipOutputStream getZipOutput() throws IOException { +++ if (this.zipDestination != null && this.zipStream == null) { +++ OutputStream os; +++ if ("-".equals(this.zipDestination)) { //$NON-NLS-1$ +++ os = System.out; +++ } else { +++ os = new FileOutputStream(this.zipDestination); +++ } +++ zipStream = new ZipOutputStream(new BufferedOutputStream(os)); +++ zipStream.setMethod(ZipOutputStream.STORED); +++ } +++ return zipStream; +++ } +++ +++ private ZipOutputStream getDependencyOutput() throws IOException { +++ if (this.zipDependencyDestination != null && this.zipDependencyStream == null) { +++ OutputStream os = new FileOutputStream(zipDependencyDestination); +++ zipDependencyStream = new ZipOutputStream(new BufferedOutputStream(os)); +++ zipDependencyStream.setMethod(ZipOutputStream.STORED); +++ } +++ return zipDependencyStream; +++ } +++ +++ public void outputClassFiles(CompilationResult unitResult) { +++ if (this.syntaxOnly) { +++ return; +++ } +++ if (this.zipDestination == null) { +++ // Nothing special to do here. +++ super.outputClassFiles(unitResult); +++ return; +++ } +++ if (unitResult == null || unitResult.hasErrors()) { +++ return; +++ } +++ +++ // If we are compiling with indirect dispatch, we don't need +++ // any dependent classes. If we are using the C++ ABI, then we +++ // do need the dependencies in order to do proper layout. +++ boolean gcjCompile = this.commandLineCompilationUnits.contains(unitResult.getCompilationUnit()); +++ if (this.zipDependencyDestination == null && !gcjCompile) { +++ return; +++ } +++ +++ try { +++ ZipOutputStream dest = gcjCompile ? getZipOutput() : getDependencyOutput(); +++ ClassFile[] classFiles = unitResult.getClassFiles(); +++ for (int i = 0; i < classFiles.length; ++i) { +++ ClassFile classFile = classFiles[i]; +++ String filename = combine(classFile.fileName(), SuffixConstants.SUFFIX_class); +++ if (this.verbose) +++ this.out.println( +++ Messages.bind( +++ Messages.compilation_write, +++ new String[] { +++ String.valueOf(this.exportedClassFilesCounter+1), +++ filename +++ })); +++ ZipEntry entry = new ZipEntry(filename); +++ byte[] contents = classFile.getBytes(); +++ CRC32 crc = new CRC32(); +++ crc.update(contents); +++ entry.setSize(contents.length); +++ entry.setCrc(crc.getValue()); +++ dest.putNextEntry(entry); +++ dest.write(contents); +++ dest.closeEntry(); +++ } +++ } catch (IOException err) { +++ fail(err); +++ } +++ } +++ +++ private String getArgument(String option) { +++ int index = option.indexOf('='); +++ return option.substring(index + 1); +++ } +++ +++ private void addPath(ArrayList result, String currentClasspathName) { +++ String customEncoding = null; +++ AccessRule[] accessRules = new AccessRule[0]; +++ String templates[] = new String[AccessRuleSet.MESSAGE_TEMPLATES_LENGTH]; +++ templates[0] = this.bind( +++ "template.restrictedAccess.type", //$NON-NLS-1$ +++ new String[] {"{0}", currentClasspathName}); //$NON-NLS-1$ +++ templates[1] = this.bind( +++ "template.restrictedAccess.constructor", //$NON-NLS-1$ +++ new String[] {"{0}", currentClasspathName}); //$NON-NLS-1$ +++ templates[2] = this.bind( +++ "template.restrictedAccess.method", //$NON-NLS-1$ +++ new String[] {"{0}", "{1}", currentClasspathName}); //$NON-NLS-1$ //$NON-NLS-2$ +++ templates[3] = this.bind( +++ "template.restrictedAccess.field", //$NON-NLS-1$ +++ new String[] {"{0}", "{1}", currentClasspathName}); //$NON-NLS-1$ //$NON-NLS-2$ +++ AccessRuleSet accessRuleSet = new AccessRuleSet(accessRules, templates); +++ FileSystem.Classpath currentClasspath = FileSystem +++ .getClasspath(currentClasspathName, +++ customEncoding, accessRuleSet); +++ if (currentClasspath != null) { +++ result.add(currentClasspath); +++ } +++ } +++ +++ private void parsePath(ArrayList result, String path) { +++ StringTokenizer iter = new StringTokenizer(path, File.pathSeparator); +++ while (iter.hasMoreTokens()) { +++ addPath(result, iter.nextToken()); +++ } +++ } +++ +++ protected void handleWarningToken(String token, boolean isEnabling, +++ boolean useEnableJavadoc) throws InvalidInputException { +++ // Recognize this for compatibility with older versions of gcj. +++ if ("deprecated".equals(token)) //$NON-NLS-1$ +++ token = "deprecation"; //$NON-NLS-1$ +++ else if ("static-access".equals(token) //$NON-NLS-1$ +++ || "dep-ann".equals(token) //$NON-NLS-1$ +++ || "over-ann".equals(token)) { //$NON-NLS-1$ +++ // Some exceptions to the warning naming rule. +++ } else if ("extraneous-semicolon".equals(token)) { //$NON-NLS-1$ +++ // Compatibility with earlier versions of gcj. +++ token = "semicolon"; //$NON-NLS-1$ +++ } else { +++ // Turn "foo-bar-baz" into eclipse-style "fooBarBaz". +++ StringBuffer newToken = new StringBuffer(token.length()); +++ StringTokenizer t = new StringTokenizer(token, "-"); //$NON-NLS-1$ +++ boolean first = true; +++ while (t.hasMoreTokens()) { +++ String next = t.nextToken(); +++ if (first) { +++ newToken.append(next); +++ first = false; +++ } else { +++ newToken.append(Character.toUpperCase(next.charAt(0))); +++ newToken.append(next.substring(1)); +++ } +++ } +++ token = newToken.toString(); +++ } +++ super.handleWarningToken(token, isEnabling, useEnableJavadoc); +++ } +++ +++ private void turnWarningsToErrors() { +++ Object[] entries = this.options.entrySet().toArray(); +++ for (int i = 0, max = entries.length; i < max; i++) { +++ Map.Entry entry = (Map.Entry) entries[i]; +++ if (!(entry.getKey() instanceof String)) +++ continue; +++ if (!(entry.getValue() instanceof String)) +++ continue; +++ if (((String) entry.getValue()).equals(CompilerOptions.WARNING)) { +++ this.options.put(entry.getKey(), CompilerOptions.ERROR); +++ } +++ } +++ } +++ +++ /** +++ * Set the debug level to the indicated value. The level should be +++ * between 0 and 2, inclusive, but this is not checked. +++ * @param level the debug level +++ */ +++ private void setDebugLevel(int level) { +++ this.options.put( +++ CompilerOptions.OPTION_LocalVariableAttribute, +++ level > 1 ? CompilerOptions.GENERATE : CompilerOptions.DO_NOT_GENERATE); +++ this.options.put( +++ CompilerOptions.OPTION_LineNumberAttribute, +++ level > 0 ? CompilerOptions.GENERATE : CompilerOptions.DO_NOT_GENERATE); +++ this.options.put( +++ CompilerOptions.OPTION_SourceFileAttribute, +++ CompilerOptions.GENERATE); +++ } +++ +++ private void readFileList(String file, ArrayList result) { +++ try { +++ BufferedReader b = new BufferedReader(new FileReader(file)); +++ String line; +++ while ((line = b.readLine()) != null) { +++ if (line.endsWith(SUFFIX_STRING_java)) +++ result.add(line); +++ } +++ b.close(); +++ } catch (IOException err) { +++ fail(err); +++ } +++ } +++ +++ private void readAllFileListFiles(ArrayList fileList, ArrayList result) { +++ Iterator it = fileList.iterator(); +++ while (it.hasNext()) { +++ readFileList((String) it.next(), result); +++ } +++ } +++ +++ private void handleWall(boolean enable) throws InvalidInputException { +++ // A somewhat arbitrary list. We use the GCC names +++ // here, and the local handleWarningToken translates +++ // for us. +++ handleWarningToken("constructor-name", enable, false); +++ handleWarningToken("pkg-default-method", enable, false); +++ handleWarningToken("masked-catch-block", enable, false); +++ handleWarningToken("all-deprecation", enable, false); +++ handleWarningToken("unused-local", enable, false); +++ handleWarningToken("unused-label", enable, false); +++ handleWarningToken("static-receiver", enable, false); +++ handleWarningToken("indirect-static", enable, false); +++ handleWarningToken("no-effect-assign", enable, false); +++ handleWarningToken("char-concat", enable, false); +++ handleWarningToken("useless-type-check", enable, false); +++ handleWarningToken("final-bound", enable, false); +++ handleWarningToken("assert-identifier", enable, false); +++ handleWarningToken("enum-identifier", enable, false); +++ handleWarningToken("finally", enable, false); +++ handleWarningToken("varargs-cast", enable, false); +++ handleWarningToken("unused", enable, false); +++ handleWarningToken("forbidden", enable, false); +++ } +++ +++ public void configure(String[] argv) throws InvalidInputException { +++ if ((argv == null) || (argv.length == 0)) { +++ // This is a "can't happen". +++ System.exit(1); +++ } +++ +++ ArrayList files = new ArrayList(); +++ ArrayList otherFiles = new ArrayList(); +++ String classpath = null; +++ boolean haveFileList = false; +++ boolean inhibitAllWarnings = false; +++ boolean treatWarningsAsErrors = false; +++ +++ for (int i = 0; i < argv.length; ++i) { +++ String currentArg = argv[i]; +++ +++ if (currentArg.startsWith("-fencoding=")) { //$NON-NLS-1$ +++ // Simply accept the last one. +++ String encoding = getArgument(currentArg); +++ try { // ensure encoding is supported +++ new InputStreamReader(new ByteArrayInputStream(new byte[0]), encoding); +++ } catch (UnsupportedEncodingException e) { +++ throw new InvalidInputException( +++ this.bind("configure.unsupportedEncoding", encoding)); //$NON-NLS-1$ +++ } +++ this.options.put(CompilerOptions.OPTION_Encoding, encoding); +++ } else if (currentArg.startsWith("-foutput-class-dir=")) { //$NON-NLS-1$ +++ String arg = getArgument(currentArg); +++ if (this.destinationPath != null) { +++ StringBuffer errorMessage = new StringBuffer(); +++ errorMessage.append("-d"); //$NON-NLS-1$ +++ errorMessage.append(' '); +++ errorMessage.append(arg); +++ throw new InvalidInputException( +++ this.bind("configure.duplicateOutputPath", errorMessage.toString())); //$NON-NLS-1$ +++ } +++ this.destinationPath = arg; +++ this.generatePackagesStructure = true; +++ } else if (currentArg.startsWith("-fbootclasspath=")) { //$NON-NLS-1$ +++ classpath = getArgument(currentArg); +++ } else if (currentArg.equals("-fzip-target")) { //$NON-NLS-1$ +++ ++i; +++ if (i >= argv.length) +++ throw new InvalidInputException(this.bind("gcc.zipArg")); //$NON-NLS-1$ +++ this.zipDestination = argv[i]; +++ } else if (currentArg.equals("-fzip-dependency")) { //$NON-NLS-1$ +++ ++i; +++ if (i >= argv.length) +++ throw new InvalidInputException(this.bind("gcc.zipDepArg")); //$NON-NLS-1$ +++ this.zipDependencyDestination = argv[i]; +++ } else if (currentArg.startsWith("-g")) { //$NON-NLS-1$ +++ if (currentArg.equals("-g0")) { //$NON-NLS-1$ +++ setDebugLevel(0); +++ } else if (currentArg.equals("-g2") || currentArg.equals("-g3") //$NON-NLS-1$ //$NON-NLS-2$ +++ || currentArg.equals("-g")) { //$NON-NLS-1$ +++ setDebugLevel(2); +++ } else { +++ // Handle -g1 but also things like -gstabs. +++ setDebugLevel(1); +++ } +++ } else if (currentArg.equals("-Werror")) { //$NON-NLS-1$ +++ treatWarningsAsErrors = true; +++ } else if (currentArg.equals("-Wno-error")) { //$NON-NLS-1$ +++ treatWarningsAsErrors = false; +++ } else if (currentArg.equals("-Wall")) { //$NON-NLS-1$ +++ handleWall(true); +++ } else if (currentArg.equals("-Wno-all")) { //$NON-NLS-1$ +++ handleWall(false); +++ } else if (currentArg.startsWith("-Wno-")) { //$NON-NLS-1$ +++ handleWarningToken(currentArg.substring(5), false, false); +++ } else if (currentArg.startsWith("-W")) { //$NON-NLS-1$ +++ handleWarningToken(currentArg.substring(2), true, false); +++ } else if (currentArg.equals("-w")) { //$NON-NLS-1$ +++ inhibitAllWarnings = true; +++ } else if (currentArg.startsWith("-O")) { //$NON-NLS-1$ +++ // Ignore. +++ } else if (currentArg.equals("-v")) { //$NON-NLS-1$ +++ this.verbose = true; +++ } else if (currentArg.equals("-fsyntax-only")) { //$NON-NLS-1$ +++ this.syntaxOnly = true; +++ } else if (currentArg.startsWith("-fsource=")) { //$NON-NLS-1$ +++ currentArg = getArgument(currentArg); +++ if (currentArg.equals("1.3")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3); +++ } else if (currentArg.equals("1.4")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_4); +++ } else if (currentArg.equals("1.5") || currentArg.equals("5") || currentArg.equals("5.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ +++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); +++ } else if (currentArg.equals("1.6") || currentArg.equals("6") || currentArg.equals("6.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ +++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6); +++ } else { +++ throw new InvalidInputException(this.bind("configure.source", currentArg)); //$NON-NLS-1$ +++ } +++ } else if (currentArg.startsWith("-ftarget=")) { //$NON-NLS-1$ +++ currentArg = getArgument(currentArg); +++ if (currentArg.equals("1.1")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1); +++ } else if (currentArg.equals("1.2")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2); +++ } else if (currentArg.equals("1.3")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_3); +++ } else if (currentArg.equals("1.4")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); +++ } else if (currentArg.equals("1.5") || currentArg.equals("5") || currentArg.equals("5.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); +++ } else if (currentArg.equals("1.6") || currentArg.equals("6") || currentArg.equals("6.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); +++ } else if (currentArg.equals("jsr14")) { //$NON-NLS-1$ +++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_JSR14); +++ } else { +++ throw new InvalidInputException(this.bind("configure.targetJDK", currentArg)); //$NON-NLS-1$ +++ } +++ } else if (currentArg.equals("-ffilelist-file")) { //$NON-NLS-1$ +++ haveFileList = true; +++ } else if (currentArg.endsWith(SuffixConstants.SUFFIX_STRING_java)) { +++ files.add(currentArg); +++ } else if (currentArg.charAt(0) == '-'){ +++ // FIXME: error if not a file? +++ } else { +++ otherFiles.add(currentArg); +++ } +++ } +++ +++ // Read the file list file. We read them all, but really there +++ // will only be one. +++ if (haveFileList) +++ readAllFileListFiles(otherFiles, files); +++ +++ this.filenames = (String[]) files.toArray(new String[0]); +++ this.encodings = new String[this.filenames.length]; +++ this.destinationPaths = new String[this.filenames.length]; +++ for (int i = 0; i < this.filenames.length; ++i) +++ this.destinationPaths[i] = this.destinationPath; +++ +++ // Classpath processing. +++ ArrayList result = new ArrayList(); +++ if (classpath == null) +++ throw new InvalidInputException(this.bind("gcc.noClasspath")); //$NON-NLS-1$ +++ parsePath(result, classpath); +++ +++ // We must always create both output files, even if one is not used. +++ // That way we will always pass valid zip file on to jc1. +++ try { +++ getZipOutput(); +++ getDependencyOutput(); +++ } catch (IOException err) { +++ fail(err); +++ } +++ +++ if (inhibitAllWarnings) +++ disableWarnings(); +++ if (treatWarningsAsErrors) +++ turnWarningsToErrors(); +++ +++ this.checkedClasspaths = new FileSystem.Classpath[result.size()]; +++ result.toArray(this.checkedClasspaths); +++ +++ this.logger.logCommandLineArguments(argv); +++ this.logger.logOptions(this.options); +++ this.logger.logClasspath(this.checkedClasspaths); +++ +++ this.repetitions = 1; +++ } +++ +++ public boolean compile(String[] argv) { +++ boolean result = super.compile(argv); +++ try { +++ if (zipStream != null) { +++ zipStream.finish(); +++ zipStream.close(); +++ } +++ if (zipDependencyStream != null) { +++ zipDependencyStream.finish(); +++ zipDependencyStream.close(); +++ } +++ } catch (IOException err) { +++ fail(err); +++ } +++ return result; +++ } +++ +++ public static void main(String[] argv) { +++ boolean result = new GCCMain(new PrintWriter(System.out), new PrintWriter(System.err), false).compile(argv); +++ System.exit(result ? 0 : 1); +++ } +++} ++diff -urN ./src~/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/messages.properties ./src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/messages.properties ++--- ./src~/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/messages.properties 2007-02-12 19:46:33.000000000 +0100 +++++ ./src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/messages.properties 2007-03-03 19:55:20.000000000 +0100 ++@@ -249,3 +249,8 @@ ++ template.restrictedAccess.constructor = The constructor {0} is not accessible due to restriction on classpath entry {1} ++ template.restrictedAccess.field = The field {0} from the type {1} is not accessible due to restriction on classpath entry {2} ++ template.restrictedAccess.method = The method {0} from the type {1} is not accessible due to restriction on classpath entry {2} +++ +++# GCCMain messages. +++gcc.zipArg=-fzip-target requires argument +++gcc.zipDepArg=-fzip-dependency requires argument +++gcc.noClasspath=no classpath specified diff --cc debian/patches/ecj-square-bracket-classpath.diff index 0000000,0000000..8f92877 new file mode 100644 --- /dev/null +++ b/debian/patches/ecj-square-bracket-classpath.diff @@@ -1,0 -1,0 +1,103 @@@ ++diff -urN ./src~/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/Main.java ./src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/Main.java ++--- ./src~/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/Main.java 2007-02-12 19:46:45.000000000 +0100 +++++ ./src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/batch/Main.java 2007-03-03 19:56:45.000000000 +0100 ++@@ -2723,6 +2723,10 @@ ++ ArrayList currentRuleSpecs = new ArrayList(defaultSize); ++ StringTokenizer tokenizer = new StringTokenizer(currentPath, ++ File.pathSeparator + "[]", true); //$NON-NLS-1$ +++ ArrayList tokens = new ArrayList(); +++ while (tokenizer.hasMoreTokens()) { +++ tokens.add(tokenizer.nextToken()); +++ } ++ // state machine ++ final int start = 0; ++ final int readyToClose = 1; ++@@ -2737,14 +2741,20 @@ ++ // 'path[' 'path1;path2[' ++ final int rulesReadyToClose = 6; ++ // 'path[rule' 'path[rule1;rule2' +++ final int bracketOpened = 7; +++ // '.*[.*' +++ final int bracketClosed = 8; +++ // '.*([.*])+' ++ final int error = 99; ++ int state = start; ++ String token = null; ++- while (tokenizer.hasMoreTokens() && state != error) { ++- token = tokenizer.nextToken(); +++ int cursor = 0, tokensNb = tokens.size(), bracket = -1; +++ while (cursor < tokensNb && state != error) { +++ token = (String) tokens.get(cursor++); ++ if (token.equals(File.pathSeparator)) { ++ switch (state) { ++ case start: +++ case bracketOpened: ++ break; ++ case readyToClose: ++ case readyToCloseEndingWithRules: ++@@ -2757,14 +2767,21 @@ ++ case rulesReadyToClose: ++ state = rulesNeedAnotherRule; ++ break; +++ case bracketClosed: +++ cursor = bracket + 1; +++ state = rulesStart; +++ break; ++ default: ++ state = error; ++ } ++ } else if (token.equals("[")) { //$NON-NLS-1$ ++ switch (state) { ++ case readyToClose: ++- state = rulesStart; +++ bracket = cursor - 1; +++ case bracketClosed: +++ state = bracketOpened; ++ break; +++ case bracketOpened: ++ default: ++ state = error; ++ } ++@@ -2773,6 +2790,10 @@ ++ case rulesReadyToClose: ++ state = readyToCloseEndingWithRules; ++ break; +++ case bracketOpened: +++ state = bracketClosed; +++ break; +++ case bracketClosed: ++ default: ++ state = error; ++ } ++@@ -2789,10 +2810,22 @@ ++ state = rulesReadyToClose; ++ currentRuleSpecs.add(token); ++ break; +++ case bracketClosed: +++ for (int i = bracket; i < cursor ; i++) { +++ currentClasspathName += (String) tokens.get(i); +++ } +++ state = readyToClose; +++ break; +++ case bracketOpened: +++ break; ++ default: ++ state = error; ++ } ++ } +++ if (state == bracketClosed && cursor == tokensNb) { +++ cursor = bracket + 1; +++ state = rulesStart; +++ } ++ } ++ switch(state) { ++ case readyToClose: ++@@ -2801,6 +2834,8 @@ ++ addNewEntry(paths, currentClasspathName, currentRuleSpecs, ++ customEncoding, isSourceOnly); ++ break; +++ case bracketOpened: +++ case bracketClosed: ++ default : ++ // we go on anyway ++ this.logger.logIncorrectClasspath(currentPath); diff --cc debian/rules index b78f2ac,0000000..cdcd821 mode 100755,000000..100755 --- a/debian/rules +++ b/debian/rules @@@ -1,148 -1,0 +1,177 @@@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk + +gcc_version = 4.1 +ant_version = 1.6 +ant_version = +GCJ = gcj-$(gcc_version) +GIJ = gij-$(gcc_version) +GCJDBTOOL = gcj-dbtool-$(gcc_version) + +DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) + +with_native := yes +with_rebuild := yes + +ifneq (,$(findstring $(DEB_HOST_ARCH), arm)) + with_rebuild := no +endif + ++JAR = eclipse-ecj.jar ++ +default: build + - eclipse_root = ../eclipse-3.1.2/source-tree ++eclipse_root = ../eclipse-3.2.2/source-tree + +get-source: + test -d $(eclipse_root) + rm -rf src + mkdir -p src/org.eclipse.jdt.core + cp -a $(eclipse_root)/plugins/org.eclipse.jdt.core/compiler/org \ + src/org.eclipse.jdt.core/ + cp -a $(eclipse_root)/plugins/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch \ + src/org.eclipse.jdt.core/org/eclipse/jdt/internal/compiler/ + + cp -a $(eclipse_root)/plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/core/JDTCompilerAdapter.java \ + src/org.eclipse.jdt.core/org/eclipse/jdt/core/ + cp -a $(eclipse_root)/plugins/org.eclipse.jdt.core/antadapter/org/eclipse/jdt/internal/antadapter \ + src/org.eclipse.jdt.core/org/eclipse/jdt/internal/ + + - build/ecj-bootstrap:: build/stamp-bytecode build/stamp-nativecode ++build/ecj:: build/stamp-bytecode build/stamp-nativecode + +build/stamp-bytecode: + rm -rf build/bin + mkdir -p build/bin + + cp -r src/org.eclipse.jdt.core/org build/bin/ + find build/bin -name '*.java' > build/sourcefiles + split -l 25 build/sourcefiles ecj-sources. ++ ls -l + mv ecj-sources.* build/bin - ++ ls -l . build/bin ++ifeq (0,1) + set -e; \ + for list in $$(find build/bin -name 'ecj-sources.*'); do \ + echo "building files in $$list ..."; \ - $(GCJ) -d build/bin -C -g \ ++ echo $(GCJ) -d build/bin -C -g \ ++ -I/usr/share/ant$(ant_version)/lib/ant.jar \ ++ -Ibuild/bin \ ++ @$$list; \ ++ $(GCJ) -v -d build/bin -C -g \ + -I/usr/share/ant$(ant_version)/lib/ant.jar \ + -Ibuild/bin \ + @$$list; \ + done - ++else ++ set -e; \ ++ for list in $$(find build/bin -name 'ecj-sources.*'); do \ ++ echo "building files in $$list ..."; \ ++ echo $(GCJ) -d build/bin -C -g \ ++ -I/usr/share/ant$(ant_version)/lib/ant.jar \ ++ -Ibuild/bin \ ++ $$(cat $$list); \ ++ $(GCJ) -v -d build/bin -C -g \ ++ -I/usr/share/ant$(ant_version)/lib/ant.jar \ ++ -Ibuild/bin \ ++ $$(cat $$list); \ ++ done ++endif + find build/bin -name 'sources.list' -exec rm -f {} \; + find build/bin -name '*.java' -exec rm -f {} \; + find build/bin -name '*.html' -exec rm -f {} \; + + mkdir -p build/bootstrap - fastjar -c -C build/bin . -f build/bootstrap/ecj.jar ++ fastjar -c -C build/bin . -f build/bootstrap/$(JAR) + +ifeq ($(with_rebuild),yes) + rm -rf build/bin + mkdir -p build/bin + cp -r src/org.eclipse.jdt.core/org build/bin/ + + time $(GIJ) \ - -classpath build/bootstrap/ecj.jar:/usr/share/ant$(ant_version)/lib/ant.jar \ ++ -classpath build/bootstrap/$(JAR):/usr/share/ant$(ant_version)/lib/ant.jar \ + org.eclipse.jdt.internal.compiler.batch.Main \ + -bootclasspath /usr/share/java/libgcj-$(gcc_version).jar \ + build/bin + + find build/bin -name '*.java' -exec rm -f {} \; + find build/bin -name '*.html' -exec rm -f {} \; + + mkdir -p build/dist - fastjar -c -C build/bin . -f build/dist/ecj.jar ++ fastjar -c -C build/bin . -f build/dist/$(JAR) +else + mkdir -p build/dist - cp -p build/bootstrap/ecj.jar build/dist/ecj.jar ++ cp -p build/bootstrap/$(JAR) build/dist/$(JAR) +endif + mkdir -p build/exe - cp build/dist/ecj.jar build/exe/ecj-standalone.jar ++ cp build/dist/$(JAR) build/exe/ecj-standalone.jar + zip -d build/exe/ecj-standalone.jar \ + 'org/eclipse/jdt/core/JDTCompilerAdapter*' + + touch build/stamp-bytecode + +build/stamp-nativecode: build/stamp-bytecode + find build/dist -name '*.jar.*.jar' | xargs -r rm -f +ifeq ($(with_native),yes) - : # ecj.jar.so ++ : # $(JAR).so + ifneq (,$(filter $(DEB_HOST_ARCH), hppa)) + $(GCJ) \ + -O2 -g -Wl,-Bsymbolic,-O1 -shared -fPIC -fjni -findirect-dispatch \ - -o build/dist/ecj.jar.so build/dist/ecj.jar - $(GCJDBTOOL) -f build/dist/ecj-bootstrap.db \ - build/dist/ecj.jar.so /usr/lib/gcj/ecj.jar.so \ - || touch build/dist/ecj-bootstrap.db ++ -o build/dist/$(JAR).so build/dist/$(JAR) ++ $(GCJDBTOOL) -f build/dist/eclipse-ecj.db \ ++ build/dist/$(JAR).so /usr/lib/gcj/$(JAR).so \ ++ || touch build/dist/eclipse-ecj.db + else + PYTHONPATH=$(CURDIR)/debian time python debian/aot-compile \ ++ --gcj=$(GCJ) --dbtool=$(GCJDBTOOL) \ + -L /usr/lib/gcj build/dist build/dist - mv build/dist/ecj.jar.db build/dist/ecj-bootstrap.db ++ mv build/dist/$(JAR).db build/dist/eclipse-ecj.db + endif + - : # ecj-bootstrap-gcj ++ : # ecj-gcj + time $(GCJ) \ + -O2 -g -Wl,-O1 \ + --main=org.eclipse.jdt.internal.compiler.batch.Main \ - -o build/exe/ecj-bootstrap-gcj build/exe/ecj-standalone.jar ++ -o build/exe/ecj-gcj build/exe/ecj-standalone.jar +endif + + touch build/stamp-nativecode + + - install/ecj-bootstrap:: ++install/ecj:: + mkdir -p debian/tmp/usr/share/java - install -m 644 build/dist/ecj.jar debian/tmp/usr/share/java/ ++ install -m 644 build/dist/$(JAR) debian/tmp/usr/share/java/ + + mkdir -p debian/tmp/usr/bin - install -m 755 ecj-bootstrap debian/tmp/usr/bin/ ++ install -m 755 ecj debian/tmp/usr/bin/ + - install/ecj-bootstrap-gcj:: ++install/ecj-gcj:: +ifeq ($(with_native),yes) + mkdir -p debian/tmp/usr/lib/gcj - install -m 644 build/dist/ecj.jar.so debian/tmp/usr/lib/gcj ++ install -m 644 build/dist/$(JAR).so debian/tmp/usr/lib/gcj + + mkdir -p debian/tmp/usr/share/gcj/classmap.d - install -m 644 build/dist/ecj-bootstrap.db \ ++ install -m 644 build/dist/eclipse-ecj.db \ + debian/tmp/usr/share/gcj/classmap.d/ + + mkdir -p debian/tmp/usr/bin - install -m 755 build/exe/ecj-bootstrap-gcj debian/tmp/usr/bin/ ++ install -m 755 build/exe/ecj-gcj debian/tmp/usr/bin/ +endif - mkdir -p debian/ecj-bootstrap-gcj/usr/share/man/man1 - ln -sf ecj-bootstrap.1.gz \ - debian/ecj-bootstrap-gcj/usr/share/man/man1/ecj-bootstrap-gcj.1.gz ++ mkdir -p debian/ecj-gcj/usr/share/man/man1 ++ ln -sf ecj.1.gz \ ++ debian/ecj-gcj/usr/share/man/man1/ecj-gcj.1.gz ++ ++install/ecj-bootstrap:: ++ mkdir -p debian/ecj-bootstrap/usr/bin ++ install -m 755 ecj-bootstrap debian/ecj-bootstrap/usr/bin/ + ++ mkdir -p debian/ecj-bootstrap/usr/share/man/man1 ++ ln -sf ecj.1.gz \ ++ debian/ecj-bootstrap/usr/share/man/man1/ecj-bootstrap.1.gz + +clean:: + rm -rf build + rm -f debian/*.pyc diff --cc ecj index 9ce7750,0000000..2076605 mode 100644,000000..100644 --- a/ecj +++ b/ecj @@@ -1,31 -1,0 +1,31 @@@ +#! /bin/sh + +ver=4.1 + +case "$*" in + *-bootclasspath*) ;; + *) + if [ ! -f /usr/lib/jvm/java-gcj/jre/lib/rt.jar ]; then + bcoption="-bootclasspath /usr/share/java/libgcj-$ver.jar" + fi +esac + - if [ -x /usr/bin/ecj-bootstrap-gcj ]; then ++if [ -x /usr/bin/ecj-gcj ]; then + - exec /usr/bin/ecj-bootstrap-gcj \ ++ exec /usr/bin/ecj-gcj \ + $bcoption ${1+"$@"} + +else + + case $CLASSPATH in + */usr/share/java/ecj.jar*) ;; + *) CLASSPATH=${CLASSPATH:+$CLASSPATH:}/usr/share/java/ecj.jar + esac + export CLASSPATH + + exec /usr/bin/gij-$ver \ + -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-$ver/classmap.db \ + -Djava.ext.dirs=/usr/lib/java-ext:/usr/share/java-ext \ + org.eclipse.jdt.internal.compiler.batch.Main $bcoption ${1+"$@"} + +fi diff --cc ecj-bootstrap index 9ce7750,0000000..2076605 mode 100644,000000..100644 --- a/ecj-bootstrap +++ b/ecj-bootstrap @@@ -1,31 -1,0 +1,31 @@@ +#! /bin/sh + +ver=4.1 + +case "$*" in + *-bootclasspath*) ;; + *) + if [ ! -f /usr/lib/jvm/java-gcj/jre/lib/rt.jar ]; then + bcoption="-bootclasspath /usr/share/java/libgcj-$ver.jar" + fi +esac + - if [ -x /usr/bin/ecj-bootstrap-gcj ]; then ++if [ -x /usr/bin/ecj-gcj ]; then + - exec /usr/bin/ecj-bootstrap-gcj \ ++ exec /usr/bin/ecj-gcj \ + $bcoption ${1+"$@"} + +else + + case $CLASSPATH in + */usr/share/java/ecj.jar*) ;; + *) CLASSPATH=${CLASSPATH:+$CLASSPATH:}/usr/share/java/ecj.jar + esac + export CLASSPATH + + exec /usr/bin/gij-$ver \ + -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-$ver/classmap.db \ + -Djava.ext.dirs=/usr/lib/java-ext:/usr/share/java-ext \ + org.eclipse.jdt.internal.compiler.batch.Main $bcoption ${1+"$@"} + +fi -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/ecj.git _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

