[ecj] 04/145: Import Debian changes 3.0.1-5
Emmanuel Bourg
ebourg-guest at moszumanska.debian.org
Tue Mar 27 23:11:21 BST 2018
This is an automated email from the git hooks/post-receive script.
ebourg-guest pushed a commit to branch master
in repository ecj.
commit 4e69bc0d56cbcdf834f951134e31cd090e785bd2
Author: Matthias Klose <doko at debian.org>
Date: Sat Jun 11 17:57:46 2005 +0000
Import Debian changes 3.0.1-5
ecj-bootstrap (3.0.1-5) unstable; urgency=low
* Add a /usr/bin/ecj binary.
---
com/sun/tools/javac/Config.java | 50 +++++++++++
com/sun/tools/javac/Main.java | 191 ++++++++++++++++++++++++++++++++++++++++
debian/changelog | 6 ++
debian/copyright | 47 +++++++++-
debian/ecj-bootstrap.dirs | 2 -
debian/ecj-bootstrap.install | 2 -
debian/ecj-bootstrap.postinst | 7 ++
debian/ecj-bootstrap.prerm | 5 ++
debian/rules | 17 +++-
ecj-bootstrap | 18 ++++
10 files changed, 339 insertions(+), 6 deletions(-)
diff --git a/com/sun/tools/javac/Config.java b/com/sun/tools/javac/Config.java
new file mode 100644
index 0000000..1f76f4e
--- /dev/null
+++ b/com/sun/tools/javac/Config.java
@@ -0,0 +1,50 @@
+/* Config.java.in -- configuration values for tools.jar
+ Copyright (C) 2004 Red Hat
+
+This file is part of java-gcj-compat.
+
+java-gcj-compat is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+java-gcj-compat is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with java-gcj-compat; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package com.sun.tools.javac;
+
+/*
+ * This class makes values calculated by configure available to the
+ * tools.jar implementation.
+ */
+public interface Config
+{
+ /**
+ * The directory where required jars are installed.
+ */
+ String JAR_INST_DIR = "/usr/share/java";
+}
diff --git a/com/sun/tools/javac/Main.java b/com/sun/tools/javac/Main.java
new file mode 100644
index 0000000..ea0af57
--- /dev/null
+++ b/com/sun/tools/javac/Main.java
@@ -0,0 +1,191 @@
+/* Main.java -- implement com.sun.tools.javac.Main
+ Copyright (C) 2004 Red Hat
+
+This file is part of java-gcj-compat.
+
+java-gcj-compat is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+java-gcj-compat is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with java-gcj-compat; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package com.sun.tools.javac;
+
+import java.io.*;
+import java.net.*;
+import java.lang.reflect.*;
+
+public class Main
+{
+ Constructor ecjConstructor = null;
+ Method ecjMethod = null;
+
+ public Main () throws Exception
+ {
+ String classname = "org.eclipse.jdt.internal.compiler.batch.Main";
+ Class klass = null;
+ try
+ {
+ klass = Class.forName (classname);
+ }
+ catch (ClassNotFoundException e)
+ {
+ File jar = new File (Config.JAR_INST_DIR + "/jdtcore.jar");
+ if (!jar.exists () || !jar.canRead ())
+ throw e;
+
+ ClassLoader loader = new URLClassLoader(new URL[] {jar.toURL ()});
+ try
+ {
+ klass = loader.loadClass (classname);
+ }
+ catch (ClassNotFoundException f)
+ {
+ throw e;
+ }
+ }
+
+ ecjConstructor = klass.getConstructor (new Class[] {
+ PrintWriter.class, PrintWriter.class, Boolean.TYPE});
+ ecjMethod = klass.getMethod ("compile", new Class[] {String[].class});
+ }
+
+ // Expand a extensions directory list into a classpath.
+ private String expandExtDirs (String extdirs)
+ {
+ StringBuffer paths = new StringBuffer("");
+ String[] dirs = extdirs.split (File.pathSeparator);
+ for (int i = 0; i < dirs.length; i++)
+ {
+ File dir = new File (dirs[i]);
+ if (dir.isDirectory ())
+ {
+ File[] files = dir.listFiles ();
+ for (int j = 0; j < files.length; j++)
+ {
+ paths.append (File.pathSeparator);
+ paths.append (files[j].getAbsolutePath());
+ }
+ }
+ }
+ return paths.toString ();
+ }
+
+ public int compile (String[] args) throws Exception
+ {
+ // FIXME: Remove arguments supported by javac but not by ecj. We
+ // should add support for these to ecj.
+ int removeCount = 0;
+
+ // We must manually add sourcepath to the classpath.
+ int classpathIndex = -1;
+ String sourcepath = null;
+
+ // We must set the bootclasspath if this isn't already done for us.
+ boolean hasBootclasspath = false;
+
+ // We add the extensions directory to the end of the bootclasspath.
+ // Default to the running JVM's extensions directory.
+ String extdirs = System.getProperty ("java.ext.dirs");
+
+ for (int i = 0; i < args.length; i++)
+ {
+ if (args[i].equals ("-bootclasspath"))
+ {
+ hasBootclasspath = true;
+ }
+ if (args[i].equals ("-classpath"))
+ {
+ classpathIndex = i+1;
+ }
+ if (args[i].equals ("-extdirs"))
+ {
+ extdirs = args[i+1];
+ args[i] = "-REMOVETHISARGUMENT";
+ args[i + 1] = "-REMOVETHISARGUMENT";
+ removeCount += 2;
+ }
+ else if (args[i].equals ("-sourcepath"))
+ {
+ sourcepath = args[i+1];
+ args[i] = "-REMOVETHISARGUMENT";
+ args[i + 1] = "-REMOVETHISARGUMENT";
+ removeCount += 2;
+ }
+ else if (args[i].equals ("-O"))
+ {
+ args[i] = "-REMOVETHISARGUMENT";
+ removeCount++;
+ }
+ }
+
+ // Append the sourcepath to the classpath.
+ if (sourcepath != null && classpathIndex != -1)
+ args[classpathIndex] += File.pathSeparator + sourcepath;
+
+ String[] strippedArgs = new String[args.length - removeCount
+ + (hasBootclasspath ? 0 : 2)];
+ int k = 0;
+ for (int i = 0; i < args.length; i++)
+ {
+ if (!args[i].equals ("-REMOVETHISARGUMENT"))
+ {
+ if (!args[i].equals ("-bootclasspath"))
+ strippedArgs[k++] = args[i];
+ else
+ {
+ strippedArgs[k++] = args[i++];
+ strippedArgs[k++] = args[i] + File.pathSeparator + expandExtDirs (extdirs);
+ }
+ }
+ }
+ if (! hasBootclasspath)
+ {
+ strippedArgs[k++] = "-bootclasspath";
+ strippedArgs[k++] = System.getProperty ("sun.boot.class.path")
+ + File.pathSeparator + expandExtDirs (extdirs);
+ }
+
+ Object ecjInstance = ecjConstructor.newInstance (new Object[] {
+ new PrintWriter (System.out),
+ new PrintWriter (System.err),
+ Boolean.FALSE});
+ return ((Boolean) ecjMethod.invoke (ecjInstance, new Object[] {
+ strippedArgs})).booleanValue() ? 0 : -1;
+ }
+
+ public static void main (String[] args) throws Exception
+ {
+ Main javac = new Main ();
+
+ int result = javac.compile (args);
+
+ Runtime.getRuntime ().exit (result);
+ }
+}
diff --git a/debian/changelog b/debian/changelog
index 6066240..2e13bf0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ecj-bootstrap (3.0.1-5) unstable; urgency=low
+
+ * Add a /usr/bin/ecj binary.
+
+ -- Matthias Klose <doko at debian.org> Sat, 11 Jun 2005 17:57:46 +0000
+
ecj-bootstrap (3.0.1-4) unstable; urgency=low
* Upload to unstable.
diff --git a/debian/copyright b/debian/copyright
index fc1fd2d..c898694 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -2,8 +2,13 @@ This package was debianized by Jerry Haltom <wasabi at larvalstage.net> on
Thu, 10 Feb 2005 14:47:15 -0600
It was downloaded from dev.eclipse.org cvs.
+The ecj script is taken from java-gcj-compat (ftp://sources.redhat.com/pub/rhug/)
-This software is copyright (c) 2000, 2004 IBM Corporation and others.
+This software is copyright (c) 2000, 2004 IBM Corporation and others,
+licensed under the Common Public License - v 1.0.
+
+The ecj script is Copyright (C) 2004 Red Hat, licensed under the GPL with
+a special exception.
Copyright:
@@ -235,3 +240,43 @@ intellectual property laws of the United States of America. No party to
this Agreement will bring a legal action under this Agreement more than
one year after the cause of action arose. Each party waives its rights
to a jury trial in any resulting litigation.
+
+
+Copyright ecj script:
+
+/* Main.java -- implement com.sun.tools.javac.Main
+ Copyright (C) 2004 Red Hat
+
+This file is part of java-gcj-compat.
+
+java-gcj-compat is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+java-gcj-compat is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with java-gcj-compat; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
diff --git a/debian/ecj-bootstrap.dirs b/debian/ecj-bootstrap.dirs
deleted file mode 100644
index b7aaa60..0000000
--- a/debian/ecj-bootstrap.dirs
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/share/java
-usr/share/ant/lib
diff --git a/debian/ecj-bootstrap.install b/debian/ecj-bootstrap.install
deleted file mode 100644
index 2571ecd..0000000
--- a/debian/ecj-bootstrap.install
+++ /dev/null
@@ -1,2 +0,0 @@
-build/dist/ecj.jar usr/share/java
-build/dist/ecj-adapter.jar usr/share/ant/lib
diff --git a/debian/ecj-bootstrap.postinst b/debian/ecj-bootstrap.postinst
new file mode 100644
index 0000000..3dbf24d
--- /dev/null
+++ b/debian/ecj-bootstrap.postinst
@@ -0,0 +1,7 @@
+#! /bin/sh -e
+
+update-alternatives --quiet --install /usr/bin/ecj ecj /usr/bin/ecj-bootstrap 3 \
+
+# --slave /usr/share/man/man1/ecj.1.gz ecj.1.gz /usr/share/man/man1/ecj-bootstrap.1.gz
+
+#DEBHELPER#
diff --git a/debian/ecj-bootstrap.prerm b/debian/ecj-bootstrap.prerm
new file mode 100644
index 0000000..f5e4bd8
--- /dev/null
+++ b/debian/ecj-bootstrap.prerm
@@ -0,0 +1,5 @@
+#! /bin/sh -e
+
+update-alternatives --quiet --remove ecj /usr/bin/ecj-bootstrap
+
+#DEBHELPER#
diff --git a/debian/rules b/debian/rules
index 4c39c6e..136bdaf 100755
--- a/debian/rules
+++ b/debian/rules
@@ -51,6 +51,9 @@ build/stamp:
/usr/bin/fastjar -c -C build/bin/antadapter . -f build/dist/ecj-adapter.jar
rm -rf build/bin
+ gcj-4.0 -C -d . -I . com/sun/tools/javac/Config.java
+ gcj-4.0 -C -d . -I . com/sun/tools/javac/Main.java
+ fastjar cMf ecj-bootstrap-tools.jar ./com/sun/tools/javac/Config.class com/sun/tools/javac/Main.class
#/usr/bin/gcj-$(gcc_version) \
# -Wl,-Bsymbolic -shared -fPIC -fjni -findirect-dispatch \
@@ -62,7 +65,19 @@ build/stamp:
# -o build/dist/ecj build/dist/ecj.jar
touch build/stamp
-
+
+install/ecj-bootstrap::
+ mkdir -p debian/ecj-bootstrap/usr/share/java
+ install -m 644 build/dist/ecj.jar debian/ecj-bootstrap/usr/share/java/
+
+ mkdir -p debian/ecj-bootstrap/usr/share/ant1.6/lib
+ install -m 644 build/dist/ecj-adapter.jar debian/ecj-bootstrap/usr/share/ant$(ant_version)/lib/
+ dh_link usr/share/ant$(ant_version)/lib/ecj-adapter.jar usr/share/ant/lib/ecj-adapter.jar
+
+ mkdir -p debian/ecj-bootstrap/usr/bin
+ install -m 644 ecj-bootstrap-tools.jar debian/ecj-bootstrap/usr/share/java/
+ install -m 755 ecj-bootstrap debian/ecj-bootstrap/usr/bin/
clean::
rm -rf build
+ rm -f com/sun/tools/javac/*.class ecj-bootstrap-tools.jar
diff --git a/ecj-bootstrap b/ecj-bootstrap
new file mode 100644
index 0000000..458d5b5
--- /dev/null
+++ b/ecj-bootstrap
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+case $CLASSPATH in
+*/usr/share/java/ecj-bootstrap-tools.jar*) ;;
+*) CLASSPATH=$CLASSPATH${CLASSPATH:+:}/usr/share/java/ecj-bootstrap-tools.jar
+esac
+
+case $CLASSPATH in
+*/usr/share/java/ecj.jar*) ;;
+*) CLASSPATH=$CLASSPATH:/usr/share/java/ecj.jar
+esac
+
+export CLASSPATH
+
+exec /usr/bin/gij-4.0 \
+ -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.0/classmap.db \
+ -Djava.ext.dirs=/usr/lib/java-ext:/usr/share/java-ext \
+ com.sun.tools.javac.Main ${1+"$@"}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/ecj.git
More information about the pkg-java-commits
mailing list