mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-01 22:25:25 +02:00
This commit was manufactured by cvs2svn to create tag 'CDT_1_2_RC0'.
Sprout from master 2003-10-02 02:56:46 UTC Doug Schaefer <doug.schaefer@windriver.com> 'Patch for Sean Evoy:' Delete: core/org.eclipse.cdt.core.aix/.classpath core/org.eclipse.cdt.core.aix/.cvsignore core/org.eclipse.cdt.core.aix/.project core/org.eclipse.cdt.core.aix/.template core/org.eclipse.cdt.core.aix/build.properties core/org.eclipse.cdt.core.aix/fragment.properties core/org.eclipse.cdt.core.aix/fragment.xml core/org.eclipse.cdt.core.aix/library/.cvsignore core/org.eclipse.cdt.core.aix/library/Makefile core/org.eclipse.cdt.core.aix/library/PTY.h core/org.eclipse.cdt.core.aix/library/PTYInputStream.h core/org.eclipse.cdt.core.aix/library/PTYOutputStream.h core/org.eclipse.cdt.core.aix/library/Spawner.h core/org.eclipse.cdt.core.aix/library/SpawnerInputStream.h core/org.eclipse.cdt.core.aix/library/SpawnerOutputStream.h core/org.eclipse.cdt.core.aix/library/exec0.h core/org.eclipse.cdt.core.aix/library/exec_unix.c core/org.eclipse.cdt.core.aix/library/io.c core/org.eclipse.cdt.core.aix/library/openpty.c core/org.eclipse.cdt.core.aix/library/openpty.h core/org.eclipse.cdt.core.aix/library/pfind.c core/org.eclipse.cdt.core.aix/library/pty.c core/org.eclipse.cdt.core.aix/library/ptyio.c core/org.eclipse.cdt.core.aix/library/spawner.c core/org.eclipse.cdt.core.aix/src/org/eclipse/cdt/internal/core/aix/ProcessInfo.java core/org.eclipse.cdt.core.aix/src/org/eclipse/cdt/internal/core/aix/ProcessList.java releng/org.eclipse.cdt.releng/.cvsignore releng/org.eclipse.cdt.releng/.project releng/org.eclipse.cdt.releng/build.sh releng/org.eclipse.cdt.releng/build.xml releng/org.eclipse.cdt.releng/genscripts.xsl releng/org.eclipse.cdt.releng/index.xsl releng/org.eclipse.cdt.releng/junit.xsl releng/org.eclipse.cdt.releng/main.xsl releng/org.eclipse.cdt.releng/manifest.xml releng/org.eclipse.cdt.releng/plugin.xsl releng/org.eclipse.cdt.releng/site.xsl
This commit is contained in:
parent
0e11088e84
commit
7bda679ef0
37 changed files with 0 additions and 2279 deletions
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src/"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.cdt.core"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.core.resources"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.core.runtime"/>
|
||||
<classpathentry kind="src" path="/org.apache.xerces"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.search"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.compare"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.debug.core"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.team.core"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.ui"/>
|
||||
<classpathentry kind="src" path="/org.eclipse.core.boot"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
|
@ -1 +0,0 @@
|
|||
bin
|
|
@ -1,38 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.cdt.core.aix</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
<project>org.apache.xerces</project>
|
||||
<project>org.eclipse.cdt.core</project>
|
||||
<project>org.eclipse.compare</project>
|
||||
<project>org.eclipse.core.boot</project>
|
||||
<project>org.eclipse.core.resources</project>
|
||||
<project>org.eclipse.core.runtime</project>
|
||||
<project>org.eclipse.debug.core</project>
|
||||
<project>org.eclipse.search</project>
|
||||
<project>org.eclipse.team.core</project>
|
||||
<project>org.eclipse.ui</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.ManifestBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.pde.SchemaBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.pde.PluginNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form>
|
||||
<p/><p><b>Tips on working with this plug-in project</b></p><li>For the view of the new plug-in at a glance, go to the <img href="pageImage"/><a href="OverviewPage">Overview</a>.</li><li>You can test the contributions of this plug-in by launching another instance of the workbench. On the <b>Run</b> menu, click <b>Run As</b> and choose <img href="runTimeWorkbenchImage"/><a href="action.run">Run-time Workbench</a> from the available choices.</li><li>You can add more functionality to this plug-in by adding extensions using the <a href="action.newExtension">New Extension Wizard</a>.</li><li>The plug-in project contains Java code that you can debug. Place breakpoints in Java classes. On the <b>Run</b> menu, select <b>Debug As</b> and choose <img href="runTimeWorkbenchImage"/><a href="action.debug">Run-time Workbench</a> from the available choices.</li>
|
||||
</form>
|
|
@ -1,4 +0,0 @@
|
|||
source.cdtaix.jar = src/
|
||||
bin.includes = fragment.xml,\
|
||||
*.jar,\
|
||||
cdtaix.jar
|
|
@ -1,2 +0,0 @@
|
|||
fragmentName=C/C++ Development Tools Core AIX Fragment
|
||||
providerName=Eclipse.org
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<fragment
|
||||
id="org.eclipse.cdt.core.aix"
|
||||
name="%fragmentName"
|
||||
version="1.1.0"
|
||||
provider-name="%providerName"
|
||||
plugin-id="org.eclipse.cdt.core"
|
||||
plugin-version="1.1.0">
|
||||
|
||||
<runtime>
|
||||
<library name="cdtaix.jar"/>
|
||||
</runtime>
|
||||
|
||||
<requires>
|
||||
<import plugin="org.eclipse.core.resources"/>
|
||||
<import plugin="org.eclipse.ui"/>
|
||||
</requires>
|
||||
|
||||
|
||||
</fragment>
|
|
@ -1 +0,0 @@
|
|||
*.o
|
|
@ -1,29 +0,0 @@
|
|||
# makefile for libspawner.so
|
||||
|
||||
#set JDK_INCLUDES
|
||||
JDK_INCLUDES=/usr/java131/include
|
||||
|
||||
CC=xlc
|
||||
CFLAGS = -I. -I$(JDK_INCLUDES)
|
||||
#CFLAGS +=-fpic -D_REENTRANT
|
||||
|
||||
LIB_NAME_SPAWNER = libspawner.so
|
||||
LIB_NAME_FULL_SPAWNER = ../os/aix/ppc/libspawner.so
|
||||
OBJS_SPAWNER=spawner.o io.o exec_unix.o pfind.o
|
||||
|
||||
LIB_NAME_PTY = libpty.so
|
||||
LIB_NAME_FULL_PTY = ../os/aix/ppc/libpty.so
|
||||
OBJS_PTY=openpty.o pty.o ptyio.o
|
||||
|
||||
all: $(LIB_NAME_FULL_SPAWNER) $(LIB_NAME_FULL_PTY)
|
||||
|
||||
$(LIB_NAME_FULL_SPAWNER): $(OBJS_SPAWNER)
|
||||
mkdir -p ../os/aix/ppc
|
||||
$(CC) -G -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER) -lc
|
||||
|
||||
$(LIB_NAME_FULL_PTY): $(OBJS_PTY)
|
||||
$(CC) -G -o $(LIB_NAME_FULL_PTY) $(OBJS_PTY)
|
||||
|
||||
clean :
|
||||
$(RM) $(OBJS_SPAWNER) $(LIB_NAME_FULL_SPAWNER)
|
||||
$(RM) $(OBJS_PTY) $(LIB_NAME_FULL_PTY)
|
|
@ -1,21 +0,0 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class org_eclipse_cdt_utils_pty_PTY */
|
||||
|
||||
#ifndef _Included_org_eclipse_cdt_utils_pty_PTY
|
||||
#define _Included_org_eclipse_cdt_utils_pty_PTY
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTY
|
||||
* Method: forkpty
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL Java_org_eclipse_cdt_utils_pty_PTY_forkpty
|
||||
(JNIEnv *, jobject);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,32 +0,0 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class org_eclipse_cdt_utils_pty_PTYInputStream */
|
||||
|
||||
#ifndef _Included_org_eclipse_cdt_utils_pty_PTYInputStream
|
||||
#define _Included_org_eclipse_cdt_utils_pty_PTYInputStream
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#undef org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE
|
||||
#define org_eclipse_cdt_utils_pty_PTYInputStream_SKIP_BUFFER_SIZE 2048L
|
||||
/* Inaccessible static: skipBuffer */
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYInputStream
|
||||
* Method: read0
|
||||
* Signature: (I[BI)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0
|
||||
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYInputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0
|
||||
(JNIEnv *, jobject, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,29 +0,0 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class org_eclipse_cdt_utils_pty_PTYOutputStream */
|
||||
|
||||
#ifndef _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
|
||||
#define _Included_org_eclipse_cdt_utils_pty_PTYOutputStream
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYOutputStream
|
||||
* Method: write0
|
||||
* Signature: (I[BI)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0
|
||||
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYOutputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0
|
||||
(JNIEnv *, jobject, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,45 +0,0 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class com_qnx_tools_utils_spawner_Spawner */
|
||||
|
||||
#ifndef _Included_com_qnx_tools_utils_spawner_Spawner
|
||||
#define _Included_com_qnx_tools_utils_spawner_Spawner
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: exec0
|
||||
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0
|
||||
(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring, jintArray);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: exec0
|
||||
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1
|
||||
(JNIEnv *, jobject, jobjectArray, jobjectArray, jstring);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: raise
|
||||
* Signature: (II)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_raise
|
||||
(JNIEnv *, jobject, jint, jint);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: waitFor
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor
|
||||
(JNIEnv *, jobject, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,32 +0,0 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class com_qnx_tools_utils_spawner_SpawnerInputStream */
|
||||
|
||||
#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
|
||||
#define _Included_com_qnx_tools_utils_spawner_SpawnerInputStream
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#undef com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE
|
||||
#define com_qnx_tools_utils_spawner_SpawnerInputStream_SKIP_BUFFER_SIZE 2048L
|
||||
/* Inaccessible static: skipBuffer */
|
||||
/*
|
||||
* Class: org_elipse_cdt_utils_spawner_SpawnerInputStream
|
||||
* Method: read0
|
||||
* Signature: (I[BI)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0
|
||||
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0
|
||||
(JNIEnv *, jobject, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,29 +0,0 @@
|
|||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
#include <jni.h>
|
||||
/* Header for class com_qnx_tools_utils_spawner_SpawnerOutputStream */
|
||||
|
||||
#ifndef _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
|
||||
#define _Included_com_qnx_tools_utils_spawner_SpawnerOutputStream
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
|
||||
* Method: write0
|
||||
* Signature: (I[BI)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0
|
||||
(JNIEnv *, jobject, jint, jbyteArray, jint);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0
|
||||
(JNIEnv *, jobject, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
|
@ -1,11 +0,0 @@
|
|||
#include <unistd.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
|
||||
extern pid_t exec0(const char *path, char *const argv[],
|
||||
char *const envp[], const char *dirpath,
|
||||
int channels[3] );
|
||||
|
||||
extern int wait0(pid_t pid);
|
|
@ -1,135 +0,0 @@
|
|||
#include "exec0.h"
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <libgen.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/* from pfind.c */
|
||||
extern char *pfind(const char *name);
|
||||
|
||||
pid_t
|
||||
exec0(const char *path, char *const argv[], char *const envp[],
|
||||
const char *dirpath, int channels[3])
|
||||
{
|
||||
int pipe0[2], pipe1[2], pipe2[2];
|
||||
pid_t childpid;
|
||||
char *full_path;
|
||||
|
||||
/*
|
||||
* We use pfind() to check that the program exists and is an executable.
|
||||
* If not pass the error up. Also execve() wants a full path.
|
||||
*/
|
||||
full_path = pfind(path);
|
||||
if (full_path == NULL) {
|
||||
fprintf(stderr, "Unable to find full path for \"%s\"\n", (path) ? path : "");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Make sure we can create our pipes before forking.
|
||||
*/
|
||||
if (channels != NULL) {
|
||||
if (pipe(pipe0) < 0 || pipe(pipe1) < 0 || pipe(pipe2) < 0) {
|
||||
fprintf(stderr, "%s(%d): returning due to error.\n",
|
||||
__FUNCTION__, __LINE__);
|
||||
free(full_path);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
childpid = fork();
|
||||
|
||||
if (childpid < 0) {
|
||||
fprintf(stderr, "%s(%d): returning due to error: %s\n",
|
||||
__FUNCTION__, __LINE__, strerror(errno));
|
||||
free(full_path);
|
||||
return -1;
|
||||
} else if (childpid == 0) { /* child */
|
||||
char *ptr;
|
||||
|
||||
chdir(dirpath);
|
||||
|
||||
if (channels != NULL) {
|
||||
/* Close the write end of pipe0 */
|
||||
if (close(pipe0[1]) == -1)
|
||||
perror("close(pipe0[1])");
|
||||
|
||||
/* Close the read end of pipe1 */
|
||||
if (close(pipe1[0]) == -1)
|
||||
perror("close(pipe1[0])");
|
||||
|
||||
/* Close the read end of pipe2 */
|
||||
if (close(pipe2[0]) == -1)
|
||||
perror("close(pipe2[0]))");
|
||||
|
||||
/* redirections */
|
||||
dup2(pipe0[0], STDIN_FILENO); /* dup stdin */
|
||||
dup2(pipe1[1], STDOUT_FILENO); /* dup stdout */
|
||||
dup2(pipe2[1], STDERR_FILENO); /* dup stderr */
|
||||
}
|
||||
|
||||
/* Close all the fd's in the child */
|
||||
{
|
||||
int fdlimit = sysconf(_SC_OPEN_MAX);
|
||||
int fd = 3;
|
||||
|
||||
while (fd < fdlimit)
|
||||
close(fd++);
|
||||
}
|
||||
|
||||
if (envp[0] == NULL) {
|
||||
execv(full_path, argv);
|
||||
} else {
|
||||
execve(full_path, argv, envp);
|
||||
}
|
||||
|
||||
_exit(127);
|
||||
|
||||
} else if (childpid != 0) { /* parent */
|
||||
|
||||
char b;
|
||||
|
||||
if (channels != NULL) {
|
||||
/* close the read end of pipe1 */
|
||||
if (close(pipe0[0]) == -1)
|
||||
perror("close(pipe0[0])");
|
||||
|
||||
/* close the write end of pipe2 */
|
||||
if (close(pipe1[1]) == -1)
|
||||
perror("close(pipe1[1])");
|
||||
|
||||
/* close the write end of pipe2 */
|
||||
if (close(pipe2[1]) == -1)
|
||||
perror("close(pipe2[1])");
|
||||
|
||||
channels[0] = pipe0[1]; /* Output Stream. */
|
||||
channels[1] = pipe1[0]; /* Input Stream. */
|
||||
channels[2] = pipe2[0]; /* Input Stream. */
|
||||
}
|
||||
|
||||
free(full_path);
|
||||
return childpid;
|
||||
}
|
||||
|
||||
free(full_path);
|
||||
return -1; /*NOT REACHED */
|
||||
}
|
||||
|
||||
|
||||
int wait0(pid_t pid)
|
||||
{
|
||||
int status;
|
||||
int val = -1;
|
||||
|
||||
if (pid < 0 || waitpid(pid, &status, 0) < 0)
|
||||
return -1;
|
||||
|
||||
if (WIFEXITED(status)) {
|
||||
val = WEXITSTATUS(status);
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <SpawnerInputStream.h>
|
||||
#include <SpawnerOutputStream.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerInputStream */
|
||||
/* Header for class _org_eclipse_cdt_utils_spawner_SpawnerOutputStream */
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
|
||||
* Method: read0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_read0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint jfd,
|
||||
jbyteArray buf,
|
||||
jint buf_len)
|
||||
{
|
||||
int fd;
|
||||
int status;
|
||||
jbyte *data;
|
||||
int data_len;
|
||||
|
||||
data = (*env)->GetByteArrayElements(env, buf, 0);
|
||||
data_len = buf_len;
|
||||
fd = jfd;
|
||||
|
||||
status = read( fd, data, data_len );
|
||||
(*env)->ReleaseByteArrayElements(env, buf, data, 0);
|
||||
|
||||
if (status == 0) {
|
||||
/* EOF. */
|
||||
status = -1;
|
||||
} else if (status == -1) {
|
||||
/* Error, toss an exception */
|
||||
jclass exception = (*env)->FindClass(env, "java/io/IOException");
|
||||
if (exception == NULL) {
|
||||
/* Give up. */
|
||||
return -1;
|
||||
}
|
||||
(*env)->ThrowNew(env, exception, "read error");
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerInputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_close0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint fd)
|
||||
{
|
||||
return close(fd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
|
||||
* Method: write0
|
||||
* Signature: (II)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_write0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint jfd,
|
||||
jbyteArray buf,
|
||||
jint buf_len)
|
||||
{
|
||||
int status;
|
||||
int fd;
|
||||
jbyte *data;
|
||||
int data_len;
|
||||
|
||||
data = (*env)->GetByteArrayElements(env, buf, 0);
|
||||
data_len = buf_len;
|
||||
fd = jfd;
|
||||
|
||||
status = write(fd, data, data_len);
|
||||
(*env)->ReleaseByteArrayElements(env, buf, data, 0);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_SpawnerOutputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_close0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint fd)
|
||||
{
|
||||
return close(fd);
|
||||
}
|
|
@ -1,105 +0,0 @@
|
|||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <fcntl.h>
|
||||
#include <termios.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <grp.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stropts.h>
|
||||
|
||||
/**
|
||||
* This is taken from R. W. Stevens book.
|
||||
* Alain Magloire.
|
||||
*/
|
||||
|
||||
int ptym_open (char *pts_name);
|
||||
int ptys_open (int fdm, char * pts_name);
|
||||
|
||||
int
|
||||
openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp)
|
||||
{
|
||||
char line[20];
|
||||
line[0]=0;
|
||||
*amaster = ptym_open(line);
|
||||
if (*amaster < 0)
|
||||
return -1;
|
||||
*aslave = ptys_open(*amaster, line);
|
||||
if (*aslave < 0) {
|
||||
close(*amaster);
|
||||
return -1;
|
||||
}
|
||||
if (name)
|
||||
strcpy(name, line);
|
||||
#ifndef TCSAFLUSH
|
||||
#define TCSAFLUSH TCSETAF
|
||||
#endif
|
||||
if (termp)
|
||||
(void) tcsetattr(*aslave, TCSAFLUSH, termp);
|
||||
#ifdef TIOCSWINSZ
|
||||
if (winp)
|
||||
(void) ioctl(*aslave, TIOCSWINSZ, (char *)winp);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
ptym_open(char * pts_name)
|
||||
{
|
||||
int fdm;
|
||||
char *ptr;
|
||||
|
||||
strcpy(pts_name, "/dev/ptmx");
|
||||
fdm = getpt();
|
||||
if (fdm < 0)
|
||||
return -1;
|
||||
if (grantpt(fdm) < 0) { /* grant access to slave */
|
||||
close(fdm);
|
||||
return -2;
|
||||
}
|
||||
if (unlockpt(fdm) < 0) { /* clear slave's lock flag */
|
||||
close(fdm);
|
||||
return -3;
|
||||
}
|
||||
ptr = ptsname(fdm);
|
||||
if (ptr == NULL) { /* get slave's name */
|
||||
close (fdm);
|
||||
return -4;
|
||||
}
|
||||
strcpy(pts_name, ptr); /* return name of slave */
|
||||
return fdm; /* return fd of master */
|
||||
}
|
||||
|
||||
int
|
||||
ptys_open(int fdm, char * pts_name)
|
||||
{
|
||||
int fds;
|
||||
/* following should allocate controlling terminal */
|
||||
fds = open(pts_name, O_RDWR);
|
||||
if (fds < 0) {
|
||||
close(fdm);
|
||||
return -5;
|
||||
}
|
||||
if (ioctl(fds, I_PUSH, "ptem") < 0) {
|
||||
printf("pterm:%s\n", strerror(errno));
|
||||
close(fdm);
|
||||
close(fds);
|
||||
return -6;
|
||||
}
|
||||
if (ioctl(fds, I_PUSH, "ldterm") < 0) {
|
||||
printf("ldterm %s\n", strerror(errno));
|
||||
close(fdm);
|
||||
close(fds);
|
||||
return -7;
|
||||
}
|
||||
return fds;
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
/*
|
||||
* (c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
#ifndef _OPENPTY_H
|
||||
#define _OPENPTY_H
|
||||
int ptym_open (char *pts_name);
|
||||
int ptys_open (int fdm, char * pts_name);
|
||||
#endif
|
|
@ -1,78 +0,0 @@
|
|||
/*
|
||||
* pfind.c - Search for a binary in $PATH.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifndef PATH_MAX
|
||||
#define PATH_MAX 1024
|
||||
#endif
|
||||
|
||||
|
||||
char * pfind(const char *name)
|
||||
{
|
||||
char *tok;
|
||||
char *sp;
|
||||
char *path;
|
||||
char fullpath[PATH_MAX+1];
|
||||
|
||||
/* Sanity check. */
|
||||
if (name == NULL) {
|
||||
fprintf(stderr, "pfind(): Null argument.\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* For absolute name or name with a path, check if it is an executable. */
|
||||
if (name[0] == '/' || name[0] == '.') {
|
||||
if (access(name, X_OK | R_OK) == 0) {
|
||||
return strdup(name);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Search in the PATH environment. */
|
||||
path = getenv("PATH" );
|
||||
|
||||
if (path == NULL || strlen(path) <= 0) {
|
||||
fprintf(stderr, "Unable to get $PATH.\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* The value return by getenv() is readonly */
|
||||
path = strdup(path);
|
||||
|
||||
tok = strtok_r(path, ":", &sp);
|
||||
while (tok != NULL) {
|
||||
snprintf(fullpath, sizeof(fullpath) - 1, "%s/%s", tok, name);
|
||||
|
||||
if (access(fullpath, X_OK | R_OK) == 0) {
|
||||
free(path);
|
||||
return strdup(fullpath);
|
||||
}
|
||||
|
||||
tok = strtok_r( NULL, ":", &sp );
|
||||
}
|
||||
|
||||
free(path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef BUILD_WITH_MAIN
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
char *fullpath;
|
||||
|
||||
for (i=1; i<argc; i++) {
|
||||
fullpath = pfind(argv[i]);
|
||||
if (fullpath == NULL)
|
||||
printf("Unable to find %s in $PATH.\n", argv[i]);
|
||||
else
|
||||
printf("Found %s @ %s.\n", argv[i], fullpath);
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,35 +0,0 @@
|
|||
#include "PTY.h"
|
||||
#include "openpty.h"
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTY
|
||||
* Method: forkpty
|
||||
* Signature: ()I
|
||||
*/
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_org_eclipse_cdt_utils_pty_PTY_forkpty (JNIEnv *env, jobject jobj) {
|
||||
jfieldID fid; /* Store the field ID */
|
||||
jstring jstr = NULL;
|
||||
int master = -1;
|
||||
char line[1024]; /* FIXME: Should be enough */
|
||||
jclass cls;
|
||||
|
||||
line[0] = '\0';
|
||||
|
||||
master = ptym_open(line);
|
||||
if (master >= 0) {
|
||||
/* Get a reference to the obj's class */
|
||||
cls = (*env)->GetObjectClass(env, jobj);
|
||||
|
||||
/* Set the master fd. */
|
||||
fid = (*env)->GetFieldID(env, cls, "master", "I");
|
||||
if (fid == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
(*env)->SetIntField(env, jobj, fid, (jint)master);
|
||||
|
||||
/* Create a new String for the slave. */
|
||||
jstr = (*env)->NewStringUTF(env, line);
|
||||
}
|
||||
return jstr;
|
||||
}
|
|
@ -1,107 +0,0 @@
|
|||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <PTYInputStream.h>
|
||||
#include <PTYOutputStream.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/* Header for class _org_eclipse_cdt_utils_pty_PTYInputStream */
|
||||
/* Header for class _org_eclipse_cdt_utils_pty_PTYOutputStream */
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYInputStream
|
||||
* Method: read0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_pty_PTYInputStream_read0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint jfd,
|
||||
jbyteArray buf,
|
||||
jint buf_len)
|
||||
{
|
||||
int fd;
|
||||
int status;
|
||||
jbyte *data;
|
||||
int data_len;
|
||||
|
||||
data = (*env)->GetByteArrayElements(env, buf, 0);
|
||||
data_len = buf_len;
|
||||
fd = jfd;
|
||||
|
||||
status = read( fd, data, data_len );
|
||||
(*env)->ReleaseByteArrayElements(env, buf, data, 0);
|
||||
|
||||
if (status == 0) {
|
||||
/* EOF. */
|
||||
status = -1;
|
||||
} else if (status == -1) {
|
||||
/* Error, toss an exception */
|
||||
/* Ignore the error for now, the debugger will attempt
|
||||
* to close this multiple time. */
|
||||
#if 0
|
||||
jclass exception = (*env)->FindClass(env, "java/io/IOException");
|
||||
if (exception == NULL) {
|
||||
/* Give up. */
|
||||
return -1;
|
||||
}
|
||||
(*env)->ThrowNew(env, exception, "read error");
|
||||
#endif
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYInputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_pty_PTYInputStream_close0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint fd)
|
||||
{
|
||||
return close(fd);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYOutputStream
|
||||
* Method: write0
|
||||
* Signature: (II)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_pty_PTYOutputStream_write0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint jfd,
|
||||
jbyteArray buf,
|
||||
jint buf_len)
|
||||
{
|
||||
int status;
|
||||
int fd;
|
||||
jbyte *data;
|
||||
int data_len;
|
||||
|
||||
data = (*env)->GetByteArrayElements(env, buf, 0);
|
||||
data_len = buf_len;
|
||||
fd = jfd;
|
||||
|
||||
status = write(fd, data, data_len);
|
||||
(*env)->ReleaseByteArrayElements(env, buf, data, 0);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_pty_PTYOutputStream
|
||||
* Method: close0
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_pty_PTYOutputStream_close0(JNIEnv * env,
|
||||
jobject jobj,
|
||||
jint fd)
|
||||
{
|
||||
return close(fd);
|
||||
}
|
|
@ -1,218 +0,0 @@
|
|||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
#include <jni.h>
|
||||
|
||||
#include "exec0.h"
|
||||
#include <Spawner.h>
|
||||
|
||||
|
||||
#define DEBUGIT 0
|
||||
|
||||
|
||||
/*
|
||||
* Header for class org_eclipse_cdt_utils_spawner_Spawner
|
||||
*/
|
||||
|
||||
|
||||
#if DEBUGIT
|
||||
static void print_array(char **c_array)
|
||||
{
|
||||
if (c_array) {
|
||||
char **p = c_array;
|
||||
for (; *p; p++) {
|
||||
if (*p) {
|
||||
fprintf(stderr, " %s", *p);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "null");
|
||||
}
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static char **alloc_c_array(JNIEnv * env, jobjectArray j_array)
|
||||
{
|
||||
int i;
|
||||
jint c_array_size = (*env)->GetArrayLength(env, j_array);
|
||||
char **c_array = calloc(c_array_size + 1, sizeof(*c_array));
|
||||
|
||||
if (c_array == NULL)
|
||||
return NULL;
|
||||
|
||||
for (i = 0; i < c_array_size; i++) {
|
||||
jstring j_str =
|
||||
(jstring) (*env)->GetObjectArrayElement(env, j_array, i);
|
||||
const char *c_str = (*env)->GetStringUTFChars(env, j_str, NULL);
|
||||
c_array[i] = (char *) strdup(c_str);
|
||||
(*env)->ReleaseStringUTFChars(env, j_str, c_str);
|
||||
(*env)->DeleteLocalRef(env, j_str);
|
||||
}
|
||||
|
||||
return c_array;
|
||||
}
|
||||
|
||||
|
||||
static void free_c_array(char **c_array)
|
||||
{
|
||||
if (c_array) {
|
||||
char **p = c_array;
|
||||
for (; *p; p++) {
|
||||
if (*p) {
|
||||
free(*p);
|
||||
}
|
||||
}
|
||||
free(c_array);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_Spawner_exec1(JNIEnv * env, jobject jobj,
|
||||
jobjectArray jcmd,
|
||||
jobjectArray jenv,
|
||||
jstring jdir)
|
||||
{
|
||||
const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
|
||||
char **cmd;
|
||||
char **envp;
|
||||
pid_t pid = -1;
|
||||
|
||||
cmd = alloc_c_array(env, jcmd);
|
||||
if (cmd == NULL)
|
||||
goto bail_out;
|
||||
|
||||
envp = alloc_c_array(env, jenv);
|
||||
if (envp == NULL)
|
||||
goto bail_out;
|
||||
|
||||
#if DEBUGIT
|
||||
fprintf(stderr, "command:");
|
||||
print_array(cmd);
|
||||
fprintf(stderr, "Envp:");
|
||||
print_array(envp);
|
||||
fprintf(stderr, "dirpath: %s\n", dirpath);
|
||||
#endif
|
||||
|
||||
pid = exec0(cmd[0], cmd, envp, dirpath, NULL);
|
||||
if (pid < 0)
|
||||
goto bail_out;
|
||||
|
||||
bail_out:
|
||||
(*env)->ReleaseStringUTFChars(env, jdir, dirpath);
|
||||
if (cmd)
|
||||
free_c_array(cmd);
|
||||
if (envp)
|
||||
free_c_array(envp);
|
||||
return pid;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: exec0
|
||||
* Signature: ([Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_Spawner_exec0(JNIEnv * env, jobject jobj,
|
||||
jobjectArray jcmd,
|
||||
jobjectArray jenv,
|
||||
jstring jdir,
|
||||
jintArray jchannels)
|
||||
{
|
||||
jint *channels = (*env)->GetIntArrayElements(env, jchannels, 0);
|
||||
const char *dirpath = (*env)->GetStringUTFChars(env, jdir, NULL);
|
||||
char **cmd;
|
||||
char **envp;
|
||||
int fd[3];
|
||||
pid_t pid = -1;
|
||||
|
||||
if (channels == NULL)
|
||||
goto bail_out;
|
||||
|
||||
cmd = alloc_c_array(env, jcmd);
|
||||
if (cmd == NULL)
|
||||
goto bail_out;
|
||||
|
||||
envp = alloc_c_array(env, jenv);
|
||||
if (envp == NULL)
|
||||
goto bail_out;
|
||||
|
||||
#if DEBUGIT
|
||||
fprintf(stderr, "command:");
|
||||
print_array(cmd);
|
||||
fprintf(stderr, "Envp:");
|
||||
print_array(envp);
|
||||
fprintf(stderr, "dirpath: %s\n", dirpath);
|
||||
#endif
|
||||
|
||||
pid = exec0(cmd[0], cmd, envp, dirpath, fd);
|
||||
if (pid < 0)
|
||||
goto bail_out;
|
||||
|
||||
channels[0] = fd[0];
|
||||
channels[1] = fd[1];
|
||||
channels[2] = fd[2];
|
||||
|
||||
bail_out:
|
||||
(*env)->ReleaseIntArrayElements(env, jchannels, channels, 0);
|
||||
(*env)->ReleaseStringUTFChars(env, jdir, dirpath);
|
||||
if (cmd)
|
||||
free_c_array(cmd);
|
||||
if (envp)
|
||||
free_c_array(envp);
|
||||
return pid;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: raise
|
||||
* Signature: (II)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_Spawner_raise(JNIEnv * env, jobject jobj,
|
||||
jint pid, jint sig)
|
||||
{
|
||||
int status = -1;
|
||||
|
||||
switch (sig) {
|
||||
case 0: /* NOOP */
|
||||
status = kill(pid, 0);
|
||||
break;
|
||||
|
||||
case 2: /* INTERRUPT */
|
||||
status = kill(pid, SIGINT);
|
||||
break;
|
||||
|
||||
case 9: /* KILL */
|
||||
status = kill(pid, SIGKILL);
|
||||
break;
|
||||
|
||||
case 15: /* TERM */
|
||||
status = kill(pid, SIGTERM);
|
||||
break;
|
||||
|
||||
default:
|
||||
status = kill(pid, sig); /* WHAT ?? */
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_cdt_utils_spawner_Spawner
|
||||
* Method: waitFor
|
||||
* Signature: (I)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_org_eclipse_cdt_utils_spawner_Spawner_waitFor(JNIEnv * env,
|
||||
jobject jobj, jint pid)
|
||||
{
|
||||
return wait0(pid);
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
package org.eclipse.cdt.internal.core.aix;
|
||||
|
||||
import org.eclipse.cdt.core.IProcessInfo;
|
||||
|
||||
/**
|
||||
* @author alain
|
||||
*
|
||||
* To change this generated comment edit the template variable "typecomment":
|
||||
* Window>Preferences>Java>Templates.
|
||||
* To enable and disable the creation of type comments go to
|
||||
* Window>Preferences>Java>Code Generation.
|
||||
*/
|
||||
public class ProcessInfo implements IProcessInfo {
|
||||
|
||||
int pid;
|
||||
String name;
|
||||
|
||||
public ProcessInfo(String pidString, String name) {
|
||||
try {
|
||||
pid = Integer.parseInt(pidString);
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public ProcessInfo(int pid, String name) {
|
||||
this.pid = pid;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.cdt.core.IProcessInfo#getName()
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.cdt.core.IProcessInfo#getPid()
|
||||
*/
|
||||
public int getPid() {
|
||||
return pid;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
package org.eclipse.cdt.internal.core.aix;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.eclipse.cdt.core.IProcessInfo;
|
||||
import org.eclipse.cdt.core.IProcessList;
|
||||
|
||||
/**
|
||||
* Insert the type's description here.
|
||||
* @see IProcessList
|
||||
*/
|
||||
public class ProcessList implements IProcessList {
|
||||
|
||||
ProcessInfo[] empty = new ProcessInfo[0];
|
||||
|
||||
public ProcessList() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert the method's description here.
|
||||
* @see IProcessList#getProcessList
|
||||
*/
|
||||
public IProcessInfo [] getProcessList() {
|
||||
File proc = new File("/proc");
|
||||
File[] pidFiles = null;
|
||||
|
||||
// We are only interrested in the pid so filter the rest out.
|
||||
try {
|
||||
FilenameFilter filter = new FilenameFilter() {
|
||||
public boolean accept(File dir, String name) {
|
||||
boolean isPID = false;
|
||||
try {
|
||||
Integer.parseInt(name);
|
||||
isPID = true;
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
return isPID;
|
||||
}
|
||||
};
|
||||
pidFiles = proc.listFiles(filter);
|
||||
} catch (SecurityException e) {
|
||||
}
|
||||
|
||||
ProcessInfo[] processInfo = empty;
|
||||
if (pidFiles != null) {
|
||||
processInfo = new ProcessInfo[pidFiles.length];
|
||||
for (int i = 0; i < pidFiles.length; i++) {
|
||||
File cmdLine = new File(pidFiles[i], "cmdline");
|
||||
StringBuffer line = new StringBuffer();
|
||||
try {
|
||||
FileReader reader = new FileReader(cmdLine);
|
||||
int c;
|
||||
while ((c = reader.read()) > 0) {
|
||||
line.append((char)c);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
}
|
||||
String name = line.toString();
|
||||
if (name.length() == 0) {
|
||||
name = "Unknown";
|
||||
}
|
||||
processInfo[i] = new ProcessInfo(pidFiles[i].getName(), name);
|
||||
}
|
||||
} else {
|
||||
pidFiles = new File[0];
|
||||
}
|
||||
return processInfo;
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
build
|
||||
features
|
||||
jars
|
||||
logs
|
||||
plugins
|
||||
test
|
||||
zips
|
||||
build.log
|
||||
build.number
|
||||
index.html
|
||||
main.xml
|
||||
site.xml
|
||||
dist
|
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>org.eclipse.cdt.releng</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -1 +0,0 @@
|
|||
java -classpath $JAVA_HOME/lib/tools.jar:jars/ant.jar:jars/optional.jar:jars/xalan.jar:jars/xml-apis.jar:jars/xercesImpl.jar:jars/NetComponents.jar:jars/activation.jar:jars/mail.jar org.apache.tools.ant.Main $* 2>&1 | tee build.log
|
|
@ -1,30 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<project name="CDT Build Bootstrap" default="main">
|
||||
|
||||
<property name="build.version" value="1.2.0"/>
|
||||
<property name="build.server" value="update.eclipse.org"/>
|
||||
<property name="build.remotedir" value="/home/www/tools/cdt/updates/builds/1.2"/>
|
||||
<!--property name="build.userid" value="userid on server"/-->
|
||||
<!--property name="build.password" value="password on server"/-->
|
||||
|
||||
<target name="bootstrap">
|
||||
<xslt in="manifest.xml" out="main.xml" style="main.xsl"/>
|
||||
</target>
|
||||
|
||||
<target name="main" depends="bootstrap">
|
||||
<ant antfile="main.xml"/>
|
||||
</target>
|
||||
|
||||
<target name="build" depends="bootstrap">
|
||||
<ant antfile="main.xml" target="build"/>
|
||||
</target>
|
||||
|
||||
<target name="upload" depends="bootstrap">
|
||||
<ant antfile="main.xml" target="upload"/>
|
||||
</target>
|
||||
|
||||
<target name="mail" depends="bootstrap">
|
||||
<ant antfile="main.xml" target="mail"/>
|
||||
</target>
|
||||
|
||||
</project>
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:template match="/">
|
||||
<project name="CDT Build Generate Scripts" default="all">
|
||||
<target name="all">
|
||||
<xsl:for-each select="projects/feature">
|
||||
<eclipse.buildScript install="build">
|
||||
<xsl:attribute name="elements">
|
||||
<xsl:text>feature@</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
</eclipse.buildScript>
|
||||
</xsl:for-each>
|
||||
</target>
|
||||
</project>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:transform>
|
|
@ -1,68 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output method="html" indent="yes"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<html>
|
||||
<head>
|
||||
<title>CDT 1.2 Build Page</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>CDT 1.2 Build Page</h2>
|
||||
<p>
|
||||
The nightly builds are currently run every weeknight,
|
||||
Monday to Friday at 3:00 a.m. EDT/EST.
|
||||
|
||||
To get download and install the builds, add the following
|
||||
as a site bookmark in Eclipse's Update Manager perspective:
|
||||
</p>
|
||||
<p>
|
||||
http://update.eclipse.org/tools/cdt/updates/builds/1.2
|
||||
</p>
|
||||
<p>
|
||||
There is one category for each build. Expanding the
|
||||
category will reveal the installable features.
|
||||
Currently the following features are available:
|
||||
<ul>
|
||||
<li>
|
||||
the main CDT feature for the currently running platform
|
||||
</li>
|
||||
<li>
|
||||
the CDT Source feature which supplies the source to allow
|
||||
debugging of the CDT plugins.
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
<h3>Builds</h3>
|
||||
<p>
|
||||
The builds are currently being run every weeknight. The
|
||||
reports from the automated build verification test suites
|
||||
are linked below.
|
||||
</p>
|
||||
<ul>
|
||||
<xsl:apply-templates select="site/category-def"/>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="category-def">
|
||||
<li>
|
||||
<xsl:value-of select="@label"/>
|
||||
<ul>
|
||||
<li>
|
||||
<a>
|
||||
<xsl:attribute name="href">
|
||||
<xsl:text>logs/</xsl:text>
|
||||
<xsl:value-of select="substring-after(@name,'CDT Build ')"/>
|
||||
<xsl:text>/org.eclipse.cdt.core.tests.html</xsl:text>
|
||||
</xsl:attribute>
|
||||
org.eclipse.cdt.core.tests
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:transform>
|
|
@ -1,455 +0,0 @@
|
|||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
||||
<xsl:output method="html" indent="yes"/>
|
||||
<xsl:decimal-format decimal-separator="." grouping-separator="," />
|
||||
|
||||
<xsl:template match="testsuites">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<style type="text/css">
|
||||
body {
|
||||
font:normal 68% verdana,arial,helvetica;
|
||||
color:#000000;
|
||||
}
|
||||
table tr td, table tr th {
|
||||
font-size: 68%;
|
||||
}
|
||||
table.details tr th{
|
||||
font-weight: bold;
|
||||
text-align:left;
|
||||
background:#a6caf0;
|
||||
}
|
||||
table.details tr td{
|
||||
background:#eeeee0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height:1.5em;
|
||||
margin-top:0.5em; margin-bottom:1.0em;
|
||||
}
|
||||
h1 {
|
||||
margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
|
||||
}
|
||||
h2 {
|
||||
margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
|
||||
}
|
||||
h3 {
|
||||
margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
|
||||
}
|
||||
h4 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h5 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
h6 {
|
||||
margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
|
||||
}
|
||||
.Error {
|
||||
font-weight:bold; color:red;
|
||||
}
|
||||
.Failure {
|
||||
font-weight:bold; color:purple;
|
||||
}
|
||||
.Properties {
|
||||
text-align:right;
|
||||
}
|
||||
</style>
|
||||
<script language="JavaScript">
|
||||
var TestCases = new Array();
|
||||
var cur;
|
||||
<xsl:for-each select="./testsuite">
|
||||
<xsl:apply-templates select="properties"/>
|
||||
</xsl:for-each>
|
||||
|
||||
</script>
|
||||
<script language="JavaScript"><![CDATA[
|
||||
function displayProperties (name) {
|
||||
var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
|
||||
var doc = win.document.open();
|
||||
doc.write("<html><head><title>Properties of " + name + "</title>");
|
||||
doc.write("<style>")
|
||||
doc.write("body {font:normal 68% verdana,arial,helvetica; color:#000000; }");
|
||||
doc.write("table tr td, table tr th { font-size: 68%; }");
|
||||
doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
|
||||
doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
|
||||
doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
|
||||
doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
|
||||
doc.write("</style>");
|
||||
doc.write("</head><body>");
|
||||
doc.write("<h3>Properties of " + name + "</h3>");
|
||||
doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
|
||||
doc.write("<table class='properties'>");
|
||||
doc.write("<tr><th>Name</th><th>Value</th></tr>");
|
||||
for (prop in TestCases[name]) {
|
||||
doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
|
||||
}
|
||||
doc.write("</table>");
|
||||
doc.write("</body></html>");
|
||||
doc.close();
|
||||
win.focus();
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
</HEAD>
|
||||
<body>
|
||||
<a name="#top"></a>
|
||||
<xsl:call-template name="pageHeader"/>
|
||||
|
||||
<!-- Summary part -->
|
||||
<xsl:call-template name="summary"/>
|
||||
<hr size="1" width="95%" align="left"/>
|
||||
|
||||
<!-- Package List part -->
|
||||
<xsl:call-template name="packagelist"/>
|
||||
<hr size="1" width="95%" align="left"/>
|
||||
|
||||
<!-- For each package create its part -->
|
||||
<xsl:call-template name="packages"/>
|
||||
<hr size="1" width="95%" align="left"/>
|
||||
|
||||
<!-- For each class create the part -->
|
||||
<xsl:call-template name="classes"/>
|
||||
|
||||
</body>
|
||||
</HTML>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- Write a list of all packages with an hyperlink to the anchor of -->
|
||||
<!-- of the package name. -->
|
||||
<!-- ================================================================== -->
|
||||
<xsl:template name="packagelist">
|
||||
<h2>Packages</h2>
|
||||
Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
<!-- list all packages recursively -->
|
||||
<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:sort select="@package"/>
|
||||
<xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
|
||||
<xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
|
||||
<xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
|
||||
<xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
|
||||
<xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
|
||||
|
||||
<!-- write a summary for the package -->
|
||||
<tr valign="top">
|
||||
<!-- set a nice color depending if there is an error/failure -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
|
||||
<td><xsl:value-of select="$testCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
<td><xsl:value-of select="$failureCount"/></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="$timeCount"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ================================================================== -->
|
||||
<!-- Write a package level report -->
|
||||
<!-- It creates a table with values from the document: -->
|
||||
<!-- Name | Tests | Errors | Failures | Time -->
|
||||
<!-- ================================================================== -->
|
||||
<xsl:template name="packages">
|
||||
<!-- create an anchor to this package name -->
|
||||
<xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
|
||||
<xsl:sort select="@package"/>
|
||||
<a name="#{@package}"></a>
|
||||
<h3>Package <xsl:value-of select="@package"/></h3>
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testsuite.test.header"/>
|
||||
|
||||
<!-- match the testsuites of this package -->
|
||||
<xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
|
||||
</table>
|
||||
<a href="#top">Back to top</a>
|
||||
<p/>
|
||||
<p/>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="classes">
|
||||
<xsl:for-each select="testsuite">
|
||||
<xsl:sort select="@name"/>
|
||||
<!-- create an anchor to this class name -->
|
||||
<a name="#{@name}"></a>
|
||||
<h3>TestCase <xsl:value-of select="@name"/></h3>
|
||||
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<xsl:call-template name="testcase.test.header"/>
|
||||
<!--
|
||||
test can even not be started at all (failure to load the class)
|
||||
so report the error directly
|
||||
-->
|
||||
<xsl:if test="./error">
|
||||
<tr class="Error">
|
||||
<td colspan="4"><xsl:apply-templates select="./error"/></td>
|
||||
</tr>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="./testcase" mode="print.test"/>
|
||||
</table>
|
||||
<div class="Properties">
|
||||
<a>
|
||||
<xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
|
||||
Properties >>
|
||||
</a>
|
||||
</div>
|
||||
<p/>
|
||||
|
||||
<a href="#top">Back to top</a>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="summary">
|
||||
<h2>Summary</h2>
|
||||
<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
|
||||
<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
|
||||
<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
|
||||
<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
|
||||
<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
|
||||
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
|
||||
<tr valign="top">
|
||||
<th>Tests</th>
|
||||
<th>Failures</th>
|
||||
<th>Errors</th>
|
||||
<th>Success rate</th>
|
||||
<th>Time</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$failureCount > 0">Failure</xsl:when>
|
||||
<xsl:when test="$errorCount > 0">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><xsl:value-of select="$testCount"/></td>
|
||||
<td><xsl:value-of select="$failureCount"/></td>
|
||||
<td><xsl:value-of select="$errorCount"/></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-percent">
|
||||
<xsl:with-param name="value" select="$successRate"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="$timeCount"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
<table border="0" width="95%">
|
||||
<tr>
|
||||
<td style="text-align: justify;">
|
||||
Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
Write properties into a JavaScript data structure.
|
||||
This is based on the original idea by Erik Hatcher (erik@hatcher.net)
|
||||
-->
|
||||
<xsl:template match="properties">
|
||||
cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
|
||||
<xsl:for-each select="property">
|
||||
<xsl:sort select="@name"/>
|
||||
cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Page HEADER -->
|
||||
<xsl:template name="pageHeader">
|
||||
<h1>Unit Test Results</h1>
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://jakarta.apache.org/ant'>Ant</a>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr size="1"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testsuite" mode="header">
|
||||
<tr valign="top">
|
||||
<th width="80%">Name</th>
|
||||
<th>Tests</th>
|
||||
<th>Errors</th>
|
||||
<th>Failures</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- class header -->
|
||||
<xsl:template name="testsuite.test.header">
|
||||
<tr valign="top">
|
||||
<th width="80%">Name</th>
|
||||
<th>Tests</th>
|
||||
<th>Errors</th>
|
||||
<th>Failures</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<!-- method header -->
|
||||
<xsl:template name="testcase.test.header">
|
||||
<tr valign="top">
|
||||
<th>Name</th>
|
||||
<th>Status</th>
|
||||
<th width="80%">Type</th>
|
||||
<th nowrap="nowrap">Time(s)</th>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- class information -->
|
||||
<xsl:template match="testsuite" mode="print.test">
|
||||
<tr valign="top">
|
||||
<!-- set a nice color depending if there is an error/failure -->
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@failures[.> 0]">Failure</xsl:when>
|
||||
<xsl:when test="@errors[.> 0]">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
|
||||
<!-- print testsuite information -->
|
||||
<td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
|
||||
<td><xsl:value-of select="@tests"/></td>
|
||||
<td><xsl:value-of select="@errors"/></td>
|
||||
<td><xsl:value-of select="@failures"/></td>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="testcase" mode="print.test">
|
||||
<tr valign="top">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="failure | error">Error</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<td><xsl:value-of select="@name"/></td>
|
||||
<xsl:choose>
|
||||
<xsl:when test="failure">
|
||||
<td>Failure</td>
|
||||
<td><xsl:apply-templates select="failure"/></td>
|
||||
</xsl:when>
|
||||
<xsl:when test="error">
|
||||
<td>Error</td>
|
||||
<td><xsl:apply-templates select="error"/></td>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<td>Success</td>
|
||||
<td></td>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<td>
|
||||
<xsl:call-template name="display-time">
|
||||
<xsl:with-param name="value" select="@time"/>
|
||||
</xsl:call-template>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="failure">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="error">
|
||||
<xsl:call-template name="display-failures"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Style for the error and failure in the tescase template -->
|
||||
<xsl:template name="display-failures">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(@message)">N/A</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@message"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<!-- display the stacktrace -->
|
||||
<code>
|
||||
<p/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="."/>
|
||||
</xsl:call-template>
|
||||
</code>
|
||||
<!-- the later is better but might be problematic for non-21" monitors... -->
|
||||
<!--pre><xsl:value-of select="."/></pre-->
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="JS-escape">
|
||||
<xsl:param name="string"/>
|
||||
<xsl:choose><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
|
||||
<xsl:when test="contains($string,''')">
|
||||
<xsl:value-of select="substring-before($string,''')"/>
|
||||
\'
|
||||
<xsl:call-template name="JS-escape">
|
||||
<xsl:with-param name="string" select="substring-after($string,''')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when> -->
|
||||
<xsl:when test="contains($string,'\')">
|
||||
<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape">
|
||||
<xsl:with-param name="string" select="substring-after($string,'\')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$string"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!--
|
||||
template that will convert a carriage return into a br tag
|
||||
@param word the text from which to convert CR to BR tag
|
||||
-->
|
||||
<xsl:template name="br-replace">
|
||||
<xsl:param name="word"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($word,'
')">
|
||||
<xsl:value-of select="substring-before($word,'
')"/>
|
||||
<br/>
|
||||
<xsl:call-template name="br-replace">
|
||||
<xsl:with-param name="word" select="substring-after($word,'
')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$word"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-time">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.000')"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="display-percent">
|
||||
<xsl:param name="value"/>
|
||||
<xsl:value-of select="format-number($value,'0.00%')"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
|
@ -1,287 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output indent="yes"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<project name="CDT Build Main" default="all">
|
||||
|
||||
<target name="build">
|
||||
|
||||
<!-- Set up build environment -->
|
||||
<ftp server="${{build.server}}"
|
||||
userid="${{build.userid}}" password="${{build.password}}"
|
||||
remotedir="${{build.remotedir}}" action="get" passive="no">
|
||||
<fileset dir=".">
|
||||
<include name="site.xml"/>
|
||||
<include name="build.number"/>
|
||||
</fileset>
|
||||
</ftp>
|
||||
<buildnumber/>
|
||||
<echo message="Build number: ${{build.version}}.${{build.number}}"/>
|
||||
<delete dir="build"/>
|
||||
<unzip src="zips/eclipse-SDK-2.1.1-linux-gtk.zip" dest="."/>
|
||||
<move todir="build">
|
||||
<fileset dir="eclipse"/>
|
||||
</move>
|
||||
|
||||
<!-- Download source from CVS -->
|
||||
<xsl:for-each select="projects/plugin">
|
||||
<cvs
|
||||
cvsroot=":pserver:anonymous@dev.eclipse.org:/home/tools"
|
||||
dest="build/plugins" quiet="true">
|
||||
<xsl:attribute name="package">
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
</cvs>
|
||||
</xsl:for-each>
|
||||
|
||||
<xsl:for-each select="projects/feature">
|
||||
<cvs
|
||||
cvsroot=":pserver:anonymous@dev.eclipse.org:/home/tools"
|
||||
dest="build/features" quiet="true">
|
||||
<xsl:attribute name="package">
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>-feature</xsl:text>
|
||||
</xsl:attribute>
|
||||
</cvs>
|
||||
<move>
|
||||
<xsl:attribute name="todir">
|
||||
<xsl:text>build/features/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<fileset defaultexcludes="no">
|
||||
<xsl:attribute name="dir">
|
||||
<xsl:text>build/features/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>-feature</xsl:text>
|
||||
</xsl:attribute>
|
||||
</fileset>
|
||||
</move>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Fix up the versions to match build number -->
|
||||
<xsl:for-each select="projects/plugin|projects/feature">
|
||||
<xslt out="x" style="plugin.xsl">
|
||||
<xsl:attribute name="in">
|
||||
<xsl:text>build/</xsl:text>
|
||||
<xsl:value-of select="name()"/>
|
||||
<xsl:text>s/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>/</xsl:text>
|
||||
<xsl:value-of select="@type"/>
|
||||
<xsl:text>.xml</xsl:text>
|
||||
</xsl:attribute>
|
||||
<param name="version" expression="${{build.version}}.${{build.number}}"/>
|
||||
</xslt>
|
||||
<move file="x">
|
||||
<xsl:attribute name="tofile">
|
||||
<xsl:text>build/</xsl:text>
|
||||
<xsl:value-of select="name()"/>
|
||||
<xsl:text>s/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>/</xsl:text>
|
||||
<xsl:value-of select="@type"/>
|
||||
<xsl:text>.xml</xsl:text>
|
||||
</xsl:attribute>
|
||||
</move>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Prepare the source plugin -->
|
||||
<property name="source.plugin" value="org.eclipse.cdt.source"/>
|
||||
<replace
|
||||
file="build/plugins/${{source.plugin}}/build.properties"
|
||||
token="plugin.properties"
|
||||
value="plugin.properties,src/"/>
|
||||
|
||||
<!-- Generate build.xml files for projects -->
|
||||
<xslt in="manifest.xml" out="build/genscripts.xml" style="genscripts.xsl"/>
|
||||
<chmod perm="+x" file="build/eclipse"/>
|
||||
<exec executable="${{basedir}}/build/eclipse">
|
||||
<arg line="-nosplash -data build/workspace"/>
|
||||
<arg line="-application org.eclipse.ant.core.antRunner"/>
|
||||
<arg line="-buildfile build/genscripts.xml"/>
|
||||
</exec>
|
||||
|
||||
<!-- Run the build.xml scripts -->
|
||||
<xsl:for-each select="projects/plugin">
|
||||
<!-- Build the source jars -->
|
||||
<ant target="build.sources">
|
||||
<xsl:attribute name="dir">
|
||||
<xsl:text>build/plugins/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<property name="javacFailOnError" value="true"/>
|
||||
<property name="ws" value="gtk"/>
|
||||
<property name="os" value="linux"/>
|
||||
</ant>
|
||||
<ant target="gather.sources">
|
||||
<xsl:attribute name="dir">
|
||||
<xsl:text>build/plugins/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<property name="javacFailOnError" value="true"/>
|
||||
<property name="ws" value="gtk"/>
|
||||
<property name="os" value="linux"/>
|
||||
<property name="destination.temp.folder" value="../${{source.plugin}}/src"/>
|
||||
</ant>
|
||||
</xsl:for-each>
|
||||
|
||||
<xsl:for-each select="projects/feature">
|
||||
<!-- The default to build the update jars -->
|
||||
<ant>
|
||||
<xsl:attribute name="dir">
|
||||
<xsl:text>build/features/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<property name="javacFailOnError" value="true"/>
|
||||
<property name="ws" value="gtk"/>
|
||||
<property name="os" value="linux"/>
|
||||
</ant>
|
||||
<!-- The old style zips -->
|
||||
<ant target="zip.distribution">
|
||||
<xsl:attribute name="dir">
|
||||
<xsl:text>build/features/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<property name="javacFailOnError" value="true"/>
|
||||
<property name="ws" value="gtk"/>
|
||||
<property name="os" value="linux"/>
|
||||
</ant>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Move jars and zips to the update site format -->
|
||||
<delete dir="plugins"/>
|
||||
<copy todir="plugins" flatten="true">
|
||||
<fileset dir="build/plugins">
|
||||
<xsl:for-each select="projects/plugin">
|
||||
<include>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>_${build.version}.${build.number}.jar</xsl:text>
|
||||
</xsl:attribute>
|
||||
</include>
|
||||
</xsl:for-each>
|
||||
</fileset>
|
||||
</copy>
|
||||
<delete dir="features"/>
|
||||
<copy todir="features" flatten="true">
|
||||
<fileset dir="build/features">
|
||||
<xsl:for-each select="projects/feature">
|
||||
<include>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>_${build.version}.${build.number}.jar</xsl:text>
|
||||
</xsl:attribute>
|
||||
</include>
|
||||
</xsl:for-each>
|
||||
</fileset>
|
||||
</copy>
|
||||
<delete dir="dist"/>
|
||||
<copy todir="dist" flatten="true">
|
||||
<fileset dir="build/features">
|
||||
<xsl:for-each select="projects/feature">
|
||||
<include>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>_${build.version}.${build.number}.bin.dist.zip</xsl:text>
|
||||
</xsl:attribute>
|
||||
</include>
|
||||
</xsl:for-each>
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<!-- Set up the test environment -->
|
||||
<delete dir="test"/>
|
||||
<unzip src="zips/eclipse-SDK-2.1.1-linux-gtk.zip" dest="."/>
|
||||
<move todir="test">
|
||||
<fileset dir="eclipse"/>
|
||||
</move>
|
||||
<unzip src="zips/org.eclipse.test_2.1.0.zip" dest="test/plugins"/>
|
||||
<unzip src="zips/org.eclipse.ant.optional.junit_2.1.0.zip" dest="test/plugins"/>
|
||||
|
||||
<xsl:for-each select="projects/plugin|projects/feature">
|
||||
<unjar>
|
||||
<xsl:attribute name="src">
|
||||
<xsl:value-of select="name()"/>
|
||||
<xsl:text>s/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>_${build.version}.${build.number}.jar</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="dest">
|
||||
<xsl:text>test/</xsl:text>
|
||||
<xsl:value-of select="name()"/>
|
||||
<xsl:text>s/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>_${build.version}.${build.number}</xsl:text>
|
||||
</xsl:attribute>
|
||||
</unjar>
|
||||
</xsl:for-each>
|
||||
|
||||
<!-- Run the tests -->
|
||||
<chmod perm="+x" file="test/eclipse"/>
|
||||
<exec executable="${{basedir}}/test/eclipse" dir="test">
|
||||
<arg line="-nosplash"/>
|
||||
<arg line="-application org.eclipse.ant.core.antRunner"/>
|
||||
<arg line="-buildfile plugins/org.eclipse.cdt.core.tests_${{build.version}}.${{build.number}}/test.xml"/>
|
||||
<arg line="-Dorg.eclipse.test=org.eclipse.test_2.1.0"/>
|
||||
<arg line="-Declipse-home=${{basedir}}/test"/>
|
||||
<arg line="-Dos=linux -Dws=gtk -Darch=x86"/>
|
||||
</exec>
|
||||
|
||||
<!-- Create the reports -->
|
||||
<delete dir="logs"/>
|
||||
<xslt in="test/org.eclipse.cdt.core.tests.xml"
|
||||
out="logs/${{build.version}}.${{build.number}}/org.eclipse.cdt.core.tests.html"
|
||||
style="junit.xsl"/>
|
||||
|
||||
<!-- Add our version to site.xml -->
|
||||
<tstamp>
|
||||
<format property="build.date" pattern="EEE MMM d HH:mm:ss z yyyy"/>
|
||||
</tstamp>
|
||||
<xslt in="site.xml" out="s" style="site.xsl">
|
||||
<param name="version" expression="${{build.version}}.${{build.number}}"/>
|
||||
<param name="date" expression="${{build.date}}"/>
|
||||
</xslt>
|
||||
<move file="s" tofile="site.xml"/>
|
||||
|
||||
<!-- Generate the site home page -->
|
||||
<xslt in="site.xml" out="index.html" style="index.xsl"/>
|
||||
|
||||
</target>
|
||||
|
||||
<target name="upload">
|
||||
<!-- Upload the update site -->
|
||||
<ftp server="${{build.server}}"
|
||||
userid="${{build.userid}}" password="${{build.password}}"
|
||||
remotedir="${{build.remotedir}}" action="put" passive="no">
|
||||
<fileset dir=".">
|
||||
<include name="plugins/*.jar"/>
|
||||
<include name="features/*.jar"/>
|
||||
<include name="dist/*.zip"/>
|
||||
<include name="logs/**/*.html"/>
|
||||
<include name="build.number"/>
|
||||
<include name="index.html"/>
|
||||
<include name="site.xml"/>
|
||||
</fileset>
|
||||
</ftp>
|
||||
</target>
|
||||
|
||||
<target name="mail">
|
||||
<mail from="dschaefe@ca.ibm.com"
|
||||
tolist="cdt-test-dev@eclipse.org"
|
||||
subject="CDT Build ${{build.version}}.${{build.number}} completed"
|
||||
message="This has been an automated message"/>
|
||||
</target>
|
||||
|
||||
<target name="all" depends="build,upload,mail"/>
|
||||
</project>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:transform>
|
|
@ -1,40 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projects>
|
||||
<plugin name="org.eclipse.cdt" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.core" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.core.linux" type="fragment"/>
|
||||
<plugin name="org.eclipse.cdt.core.qnx" type="fragment"/>
|
||||
<plugin name="org.eclipse.cdt.core.solaris" type="fragment"/>
|
||||
<plugin name="org.eclipse.cdt.core.win32" type="fragment"/>
|
||||
<plugin name="org.eclipse.cdt.core.tests" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.debug.core" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.debug.mi.core" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.debug.mi.ui" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.debug.ui" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.debug.ui.tests" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.doc.user" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.launch" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.linux.gtk" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.linux.motif" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.make.core" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.make.ui" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.managedbuilder.core" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.managedbuilder.ui" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.qnx.photon" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.solaris.motif" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.source" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.testing" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.ui" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.ui.tests" type="plugin"/>
|
||||
<plugin name="org.eclipse.cdt.win32" type="plugin"/>
|
||||
<feature name="org.eclipse.cdt" suffix="-feature" type="feature" visible="false"/>
|
||||
<feature name="org.eclipse.cdt.linux.gtk" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.linux.motif" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.make" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.managedbuilder" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.qnx.photon" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.solaris.motif" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.source" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.testing" suffix="-feature" type="feature"/>
|
||||
<feature name="org.eclipse.cdt.win32" suffix="-feature" type="feature"/>
|
||||
</projects>
|
|
@ -1,77 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output indent="yes"/>
|
||||
|
||||
<xsl:param name="version"/>
|
||||
|
||||
<xsl:template match="/plugin">
|
||||
<plugin>
|
||||
<xsl:attribute name="version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:copy-of select="*|@*[not(name()='version')]"/>
|
||||
</plugin>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/fragment">
|
||||
<fragment>
|
||||
<xsl:attribute name="version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="plugin-version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:copy-of select="*|@*[not(name()='version' or name()='plugin-version')]"/>
|
||||
</fragment>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/feature">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:apply-templates mode="feature" select="@*[not(name()='version')]|*|text()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="feature" match="includes|plugin">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:copy-of select="*|@*[not(name()='version')]"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="feature" match="import[starts-with(@plugin,'org.eclipse.cdt')]|import[starts-with(@feature,'org.eclipse.cdt')]">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:copy-of select="*|@*[not(name()='version')]"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="feature" match="url/update">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="url">
|
||||
<xsl:text>http://update.eclipse.org/tools/cdt/updates/builds/1.2</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:copy-of select="*|@*[not(name()='url')]"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@*|*|text()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|*|text()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="feature" match="@*|*|text()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates mode="feature" select="@*|*|text()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:transform>
|
|
@ -1,56 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<xsl:output indent="yes"/>
|
||||
|
||||
<xsl:param name="version"/>
|
||||
<xsl:param name="date"/>
|
||||
|
||||
<xsl:template match="/site">
|
||||
<site>
|
||||
<xsl:copy-of select="*|@*"/>
|
||||
<category-def>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:text>CDT Build </xsl:text>
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="label">
|
||||
<xsl:text>CDT Build </xsl:text>
|
||||
<xsl:value-of select="$version"/>
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:value-of select="$date"/>
|
||||
</xsl:attribute>
|
||||
</category-def>
|
||||
<xsl:apply-templates mode="features" select="document('manifest.xml')"/>
|
||||
</site>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="features" match="/projects/feature[not(@visible='false')]">
|
||||
<feature>
|
||||
<xsl:attribute name="url">
|
||||
<xsl:text>features/</xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>_</xsl:text>
|
||||
<xsl:value-of select="$version"/>
|
||||
<xsl:text>.jar</xsl:text>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="id">
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="version">
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
<category>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:text>CDT Build </xsl:text>
|
||||
<xsl:value-of select="$version"/>
|
||||
</xsl:attribute>
|
||||
</category>
|
||||
</feature>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template mode="features" match="/projects">
|
||||
<xsl:apply-templates mode="features" select="*"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:transform>
|
Loading…
Add table
Reference in a new issue