[SCM] eclipse - Powerful IDE written in java - Debian package. branch, master-3.8, updated. debian/3.8.0_rc3-4-5-g44b898b

Jakub Adam jakub.adam at ktknet.cz
Sun Jun 24 21:08:27 UTC 2012


The following commit has been merged in the master-3.8 branch:
commit 44b898b676b0dfee7ac7080557375f09526a6adb
Author: Jakub Adam <jakub.adam at ktknet.cz>
Date:   Sun Jun 24 00:14:57 2012 +0200

    Build fixes for GNU Hurd

diff --git a/debian/patches/fix-gnu-kfreebsd-build.patch b/debian/patches/fix-gnu-kfreebsd-build.patch
index e5a35ec..f033967 100644
--- a/debian/patches/fix-gnu-kfreebsd-build.patch
+++ b/debian/patches/fix-gnu-kfreebsd-build.patch
@@ -2,16 +2,24 @@ From: Jakub Adam <jakub.adam at ktknet.cz>
 Date: Sun, 17 Jun 2012 21:23:14 +0200
 Subject: fix-gnu-kfreebsd-build
 
+- don't test for valid env.JAVA_HOME (not supported on kFreeBSD and Hurd)
+- make org.eclipse.equinox.executable/library/gtk/build.sh aware of
+  BSD and Hurd kernels
+- don't use PATH_MAX macro (not defined on GNU Hurd)
 ---
- build.xml                                                    |   10 +++++++---
- .../org.eclipse.equinox.executable/library/gtk/build.sh      |    2 +-
- 2 files changed, 8 insertions(+), 4 deletions(-)
+ build.xml                                          |   11 ++++++---
+ .../library/eclipseCommon.c                        |    7 ++----
+ .../library/gtk/build.sh                           |    2 +-
+ .../natives/unix/unixfile.c                        |   13 +++-------
+ .../filesystem/local/unix/UnixFileFlags.java       |    6 -----
+ .../filesystem/local/unix/UnixFileNatives.java     |   26 +++++++++++++++-----
+ 6 files changed, 34 insertions(+), 31 deletions(-)
 
 diff --git a/build.xml b/build.xml
-index 1d65b7b..cf74f62 100644
+index 1d65b7b..0197193 100644
 --- a/build.xml
 +++ b/build.xml
-@@ -8,9 +8,13 @@
+@@ -8,9 +8,14 @@
  	<property environment="env"/>
  	<property name="jhome" value="${env.JAVA_HOME}"/>
  	<condition property="javaHomeExists">
@@ -22,14 +30,37 @@ index 1d65b7b..cf74f62 100644
 +			<resourceexists>
 +				<file file="${jhome}"/>
 +			</resourceexists>
-+			<!-- env.JAVA_HOME doesn't work on kFreeBSD -->
++			<!-- env.JAVA_HOME doesn't work on kFreeBSD and GNU Hurd -->
 +			<os name="GNU/kFreeBSD"/>
++			<os name="GNU"/>
 +		</or>
  	</condition>
  	<fail unless="javaHomeExists" message="JAVA_HOME is not set properly"/>
  
+diff --git a/eclipse/features/org.eclipse.equinox.executable/library/eclipseCommon.c b/eclipse/features/org.eclipse.equinox.executable/library/eclipseCommon.c
+index 923b3c2..9d8caaa 100644
+--- a/eclipse/features/org.eclipse.equinox.executable/library/eclipseCommon.c
++++ b/eclipse/features/org.eclipse.equinox.executable/library/eclipseCommon.c
+@@ -331,15 +331,12 @@ _TCHAR* findSymlinkCommand( _TCHAR* command, int resolve )
+ 
+ #if !defined(_WIN32) && !defined(MACOSX)
+ char * resolveSymlinks( char * path ) {
+-	char * ch, *buffer;
++	char * ch;
+ 	if(path == NULL)
+ 		return path;
+ 	/* resolve symlinks */
+ 	ch = path;
+-	buffer = malloc(PATH_MAX);
+-    path = realpath(path, buffer);
+-    if (path != buffer)
+-    	free(buffer);
++    path = realpath(path, NULL);
+     if (path == NULL)
+     	return ch; /* failed to resolve the links, return original path */
+     return path;
 diff --git a/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh b/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
-index 894ce4a..0d63039 100755
+index 894ce4a..c43f7b9 100755
 --- a/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
 +++ b/eclipse/features/org.eclipse.equinox.executable/library/gtk/build.sh
 @@ -51,7 +51,7 @@ if [ "${CC}" = "" ]; then
@@ -37,7 +68,109 @@ index 894ce4a..0d63039 100755
  
  case $OS in
 -	"Linux")
-+	"Linux"|"GNU/kFreeBSD")
++	"Linux"|"GNU/kFreeBSD"|"GNU")
  		makefile="make_linux.mak"
  		defaultOS="linux"
  		case $MODEL in
+diff --git a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/unixfile.c b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/unixfile.c
+index 43d6aa5..0dbee16 100644
+--- a/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/unixfile.c
++++ b/eclipse/plugins/org.eclipse.core.filesystem/natives/unix/unixfile.c
+@@ -165,20 +165,15 @@ JNIEXPORT jint JNICALL Java_org_eclipse_core_internal_filesystem_local_unix_Unix
+ 	jint code;
+  	jbyte *name;
+  	int len;
+-	char temp[PATH_MAX+1];
++	char temp[bufsiz];
+ 	jstring linkTarget = NULL;
+ 
+ 	name = getByteArray(env, path);
+-  	len = readlink((const char*)name, temp, PATH_MAX);
++  	len = readlink((const char*)name, temp, bufsiz);
+   	free(name);
+ 	if (len > 0) {
+-		temp[len] = 0;
+ 		(*env)->SetByteArrayRegion(env, buf, 0, len, (jbyte*) temp);
+ 	}
+-	else {
+-		temp[0] = 0;
+-		(*env)->SetByteArrayRegion(env, buf, 0, 0, (jbyte*) temp);
+-	}
+ 	return len;
+ }
+ 
+@@ -255,9 +250,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_core_internal_filesystem_local_unix_Unix
+ 	jint ret = -1;
+ 
+ 	flag = (char*) getByteArray(env, buf);
+-	if (strcmp(flag, "PATH_MAX") == 0)
+-		ret = PATH_MAX;
+-	else if (strcmp(flag, "S_IFMT") == 0)
++	if (strcmp(flag, "S_IFMT") == 0)
+ 		ret = S_IFMT;
+ 	else if (strcmp(flag, "S_IFLNK") == 0)
+ 		ret = S_IFLNK;
+diff --git a/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileFlags.java b/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileFlags.java
+index 43d1112..cbc7c95 100644
+--- a/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileFlags.java
++++ b/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileFlags.java
+@@ -13,7 +13,6 @@ package org.eclipse.core.internal.filesystem.local.unix;
+ public class UnixFileFlags {
+ 
+ 	static {
+-		PATH_MAX = UnixFileNatives.getFlag("PATH_MAX"); //$NON-NLS-1$
+ 		S_IFMT = UnixFileNatives.getFlag("S_IFMT"); //$NON-NLS-1$
+ 		S_IFLNK = UnixFileNatives.getFlag("S_IFLNK"); //$NON-NLS-1$
+ 		S_IFDIR = UnixFileNatives.getFlag("S_IFDIR"); //$NON-NLS-1$
+@@ -31,11 +30,6 @@ public class UnixFileFlags {
+ 	}
+ 
+ 	/**
+-	 * chars in a path name including nul
+-	 */
+-	public static final int PATH_MAX;
+-
+-	/**
+ 	 * bitmask for the file type bitfields
+ 	 */
+ 	public static final int S_IFMT;
+diff --git a/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileNatives.java b/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileNatives.java
+index e0d52bf..a3d8539 100644
+--- a/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileNatives.java
++++ b/eclipse/plugins/org.eclipse.core.filesystem/src/org/eclipse/core/internal/filesystem/local/unix/UnixFileNatives.java
+@@ -72,15 +72,29 @@ public abstract class UnixFileNatives {
+ 		StructStat stat = new StructStat();
+ 		if (lstat(name, stat) == 0) {
+ 			if ((stat.st_mode & UnixFileFlags.S_IFMT) == UnixFileFlags.S_IFLNK) {
+-				if (stat(name, stat) == 0)
+-					info = stat.toFileInfo();
++
++				StructStat targetStat = new StructStat();
++				if (stat(name, targetStat) == 0)
++					info = targetStat.toFileInfo();
+ 				else
+ 					info = new FileInfo();
+ 				info.setAttribute(EFS.ATTRIBUTE_SYMLINK, true);
+-				byte target[] = new byte[UnixFileFlags.PATH_MAX];
+-				int length = readlink(name, target, target.length);
+-				if (length > 0)
+-					info.setStringAttribute(EFS.ATTRIBUTE_LINK_TARGET, bytesToFileName(target, length));
++
++				do {
++					byte target[] = new byte[(int) stat.st_size + 1];
++					int length = readlink(name, target, target.length);
++					if (length <= 0) {
++						break;
++					} else if (length > stat.st_size) {
++						// Symlink increased in size between lstat() and readlink()
++						if (lstat(name, stat) != 0) {
++							break;
++						}
++					} else {
++						info.setStringAttribute(EFS.ATTRIBUTE_LINK_TARGET, bytesToFileName(target, length));
++						break;
++					}
++				} while (true);
+ 			} else
+ 				info = stat.toFileInfo();
+ 		} else

-- 
eclipse - Powerful IDE written in java - Debian package.



More information about the pkg-java-commits mailing list