aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog20
-rw-r--r--Makefile.am59
-rw-r--r--NEWS2
-rw-r--r--launcher/java_md.c30
-rw-r--r--plugin/icedteanp/IcedTeaNPPlugin.cc80
5 files changed, 101 insertions, 90 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c776dd..815861c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2011-02-22 Omair Majid <[email protected]>
+
+ Install icedtea-web into a FHS-compliant location
+ * Makefile.am: Add new vars JRE, LAUNCHER_BOOTCLASSPATH and
+ PLUGIN_BOOTCLASSPATH.
+ (install-exec-local): Install files to FHS-compliant location; do not
+ create links.
+ (install-data-local): Likewise.
+ (uninstall-local): Update file paths to delete.
+ ($(PLUGIN_DIR)/%.o): Pass PLUGIN_BOOTCLASSPATH and ICEDTEA_WEB_JRE.
+ ($(NETX_DIR)/launcher/%.o): Pass LAUNCHER_BOOTCLASSPATH and
+ ICEDTEA_WEB_JRE.
+ ($(NETX_DIR)/launcher/controlpanel/%.o): Likewise.
+ * launcher/java_md.c
+ (GetIcedTeaWebJREPath): New method.
+ (CreateExecutionEnvironment): Call GetIcedTeaWebJREPath.
+ * plugin/icedteanp/IcedTeaNPPlugin.cc
+ (plugin_start_appletviewer): Add PLUGIN_BOOTCLASSPATH to the command.
+ (NP_Initialize): Use ICEDTEA_WEB_JRE to initialize filename.
+
2011-02-18 Omair Majid <[email protected]>
Remove pluginappletviewer binary
diff --git a/Makefile.am b/Makefile.am
index f9f1555..b305de7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,6 +17,10 @@ IT_LANGUAGE_SOURCE_VERSION=6
IT_CLASS_TARGET_VERSION=6
IT_JAVACFLAGS=$(IT_JAVAC_SETTINGS) -source $(IT_LANGUAGE_SOURCE_VERSION) -target $(IT_CLASS_TARGET_VERSION)
+JRE='"$(SYSTEM_JDK_DIR)jre"'
+LAUNCHER_BOOTCLASSPATH="-J-Xbootclasspath/a:$(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar"
+PLUGIN_BOOTCLASSPATH='"-Xbootclasspath/a:$(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar:$(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar"'
+
# Fake update version to shut up the plugin detector hosted by Oracle.
# If Oracle ever release a JDK update greater than 50, this needs to be increased.
JDK_UPDATE_VERSION=50
@@ -94,36 +98,20 @@ clean-local: clean-netx clean-plugin clean-liveconnect clean-extra clean-bootstr
clean-bootstrap-directory clean-native-ecj clean-desktop-files clean-netx-docs clean-docs clean-plugin-docs
install-exec-local:
- ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)
+ ${mkinstalldirs} $(DESTDIR)$(bindir) $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/ $(DESTDIR)$(libdir)
if ENABLE_PLUGIN
- ${INSTALL_PROGRAM} $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/
- ${INSTALL_DATA} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/plugin.jar
+ ${INSTALL_PROGRAM} $(PLUGIN_DIR)/IcedTeaPlugin.so $(DESTDIR)$(libdir)
+ ${INSTALL_DATA} $(abs_top_builddir)/liveconnect/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar
endif
- ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(prefix)/jre/lib/netx.jar
+ ${INSTALL_DATA} $(NETX_DIR)/lib/classes.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/netx.jar
${INSTALL_PROGRAM} $(NETX_DIR)/launcher/javaws $(DESTDIR)$(bindir)
- if [ -d $(DESTDIR)$(prefix)/jre/bin ] ; then \
- if [ -L $(DESTDIR)$(prefix)/jre/bin/javaws ] ; then \
- rm -f $(DESTDIR)$(prefix)/jre/bin/javaws ; \
- fi ; \
- if [ ! -e $(prefix)/jre/bin/javaws ] ; then \
- ln -s $(DESTDIR)$(bindir)/javaws $(DESTDIR)$(prefix)/jre/bin ; \
- fi ; \
- fi
- ${INSTALL_DATA} extra-lib/about.jar $(DESTDIR)$(prefix)/jre/lib
+ ${INSTALL_DATA} extra-lib/about.jar $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/about.jar
${INSTALL_PROGRAM} $(NETX_DIR)/launcher/controlpanel/itweb-settings $(DESTDIR)$(bindir)
- if [ -d $(DESTDIR)$(prefix)/jre/bin ] ; then \
- if [ -L $(DESTDIR)$(prefix)/jre/bin/itweb-settings ] ; then \
- rm -f $(DESTDIR)$(prefix)/jre/bin/itweb-settings ; \
- fi ; \
- if [ ! -e $(prefix)/jre/bin/itweb-settings ] ; then \
- ln -s $(DESTDIR)$(bindir)/itweb-settings $(DESTDIR)$(prefix)/jre/bin ; \
- fi ; \
- fi
install-data-local:
${mkinstalldirs} -d $(DESTDIR)$(prefix)/man/man1
${INSTALL_DATA} $(NETX_SRCDIR)/javaws.1 $(DESTDIR)$(prefix)/man/man1
- ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(prefix)/jre/lib
+ ${INSTALL_DATA} $(NETX_RESOURCE_DIR)/about.jnlp $(DESTDIR)$(datarootdir)/$(PACKAGE_NAME)
if ENABLE_DOCS
${mkinstalldirs} $(DESTDIR)$(htmldir)
(cd ${abs_top_builddir}/docs/netx; \
@@ -141,21 +129,14 @@ endif
endif
uninstall-local:
- rm -f $(DESTDIR)$(prefix)/jre/lib/$(INSTALL_ARCH_DIR)/IcedTeaPlugin.so
- rm -f $(DESTDIR)$(prefix)/jre/lib/plugin.jar
- rm -f $(DESTDIR)$(prefix)/jre/lib/netx.jar
- rm -f $(DESTDIR)$(prefix)/jre/lib/about.jnlp
- rm -f $(DESTDIR)$(prefix)/jre/lib/about.jar
+ rm -f $(DESTDIR)$(libdir)/IcedTeaPlugin.so
+ rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/plugin.jar
+ rm -f $(DESTDIR)$(datadir)/$(PAKCAGE_NAME)/netx.jar
+ rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/about.jnlp
+ rm -f $(DESTDIR)$(datadir)/$(PACKAGE_NAME)/about.jar
rm -f $(DESTDIR)$(prefix)/man/man1/javaws.1
rm -f $(DESTDIR)$(bindir)/javaws
- if [ -L $(DESTDIR)$(prefix)/jre/bin/javaws ] ; then \
- rm -f $(DESTDIR)$(prefix)/jre/bin/javaws ; \
- fi
- rm -f $(DESTDIR)$(prefix)/jre/bin/javaws
rm -f $(DESTDIR)$(bindir)/itweb-settings
- if [ -L $(DESTDIR)$(prefix)/jre/bin/itweb-settings ] ; then \
- rm -f $(DESTDIR)$(prefix)/jre/bin/itweb-settings ; \
- fi
rm -rf $(DESTDIR)$(htmldir)
# Plugin
@@ -183,6 +164,8 @@ $(PLUGIN_DIR)/%.o: $(PLUGIN_SRCDIR)/%.cc
-DPLUGIN_VERSION="\"$(PLUGIN_VERSION)\"" \
-DPACKAGE_URL="\"$(PACKAGE_URL)\"" \
-DMOZILLA_VERSION_COLLAPSED="$(MOZILLA_VERSION_COLLAPSED)" \
+ -DICEDTEA_WEB_JRE=$(JRE) \
+ -DPLUGIN_BOOTCLASSPATH=$(PLUGIN_BOOTCLASSPATH) \
$(GLIB_CFLAGS) \
$(GTK_CFLAGS) \
$(MOZILLA_CFLAGS) \
@@ -328,14 +311,14 @@ extra-lib/about.jar: stamps/extra-class-files.stamp
$(NETX_DIR)/launcher/%.o: $(LAUNCHER_SRCDIR)/%.c
mkdir -p $(NETX_DIR)/launcher && \
$(CC) $(LAUNCHER_FLAGS) \
- -DJAVA_ARGS='{ "-J-ms8m", "-J-Djava.icedtea-web.bin=$(DESTDIR)$(bindir)/javaws", "net.sourceforge.jnlp.runtime.Boot", }' \
- -DPROGNAME='"javaws"' -c -o $@ $<
+ -DJAVA_ARGS='{ $(LAUNCHER_BOOTCLASSPATH), "-J-ms8m", "-J-Djava.icedtea-web.bin=$(DESTDIR)$(bindir)/javaws", "net.sourceforge.jnlp.runtime.Boot", }' \
+ -DICEDTEA_WEB_JRE=$(JRE) -DPROGNAME='"javaws"' -c -o $@ $<
$(NETX_DIR)/launcher/controlpanel/%.o: $(LAUNCHER_SRCDIR)/%.c
mkdir -p $(NETX_DIR)/launcher/controlpanel && \
$(CC) $(LAUNCHER_FLAGS) \
- -DJAVA_ARGS='{ "-J-ms8m", "-Dprogram.name=itweb-settings", "net.sourceforge.jnlp.controlpanel.CommandLine", }' \
- -DPROGNAME='"itweb-settings"' -c -o $@ $<
+ -DJAVA_ARGS='{ $(LAUNCHER_BOOTCLASSPATH), "-J-ms8m", "-Dprogram.name=itweb-settings", "net.sourceforge.jnlp.controlpanel.CommandLine", }' \
+ -DICEDTEA_WEB_JRE=$(JRE) -DPROGNAME='"itweb-settings"' -c -o $@ $<
$(NETX_DIR)/launcher/javaws: $(NETX_LAUNCHER_OBJECTS)
$(CC) $(NETX_LAUNCHER_OBJECTS) $(LAUNCHER_LINK)
diff --git a/NEWS b/NEWS
index 60f4625..395f90d 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,8 @@ New in release 1.1 (2011-XX-XX):
* Security updates
- S6983554, CVE-2010-4450: Launcher incorrect processing of empty library path entries
- RH677332, CVE-2011-0706: IcedTea multiple signers privilege escalation
+* New Features
+ - IcedTea-Web now installs to a FHS-compliant location
* NetX
- Use Firefox's proxy settings if possible
- RH669942: javaws fails to download version/packed files (missing support for jnlp.packEnabled and jnlp.versionEnabled)
diff --git a/launcher/java_md.c b/launcher/java_md.c
index 2e0e96b..b44114d 100644
--- a/launcher/java_md.c
+++ b/launcher/java_md.c
@@ -158,6 +158,7 @@ static char * GetExecname();
static jboolean GetJVMPath(const char *jrepath, const char *jvmtype,
char *jvmpath, jint jvmpathsize, char * arch);
static jboolean GetJREPath(char *path, jint pathsize, char * arch, jboolean speculative);
+static jboolean GetIcedTeaWebJREPath(char *path, jint pathsize, char * arch, jboolean speculative);
const char *
GetArch()
@@ -280,7 +281,7 @@ CreateExecutionEnvironment(int *_argcp,
jvmpath does not exist */
if (wanted == running) {
/* Find out where the JRE is that we will be using. */
- if (!GetJREPath(jrepath, so_jrepath, arch, JNI_FALSE) ) {
+ if (!GetIcedTeaWebJREPath(jrepath, so_jrepath, arch, JNI_FALSE) ) {
fprintf(stderr, "Error: could not find Java 2 Runtime Environment.\n");
exit(2);
}
@@ -606,6 +607,33 @@ GetJVMPath(const char *jrepath, const char *jvmtype,
}
/*
+ * Find path to the JRE based on the the compile flag ICEDTEA_WEB_JRE
+ */
+static jboolean
+GetIcedTeaWebJREPath(char* path, jint pathsize, char* arch, jboolean speculative)
+{
+ char libjava[MAXPATHLEN];
+ snprintf(libjava, MAXPATHLEN, ICEDTEA_WEB_JRE "/lib/%s/" JAVA_DLL, arch);
+
+ if (_launcher_debug) {
+ printf(ICEDTEA_WEB_JRE "/lib/%s/" JAVA_DLL "\n", arch);
+ printf("libjava is %s\n", libjava);
+ }
+
+ if (access(libjava, F_OK) == 0) {
+ strncpy(path, ICEDTEA_WEB_JRE, pathsize);
+ goto found;
+ }
+
+ return JNI_FALSE;
+
+ found:
+ if (_launcher_debug)
+ printf("JRE path is %s\n", path);
+ return JNI_TRUE;
+}
+
+/*
* Find path to JRE based on .exe's location or registry settings.
*/
static jboolean
diff --git a/plugin/icedteanp/IcedTeaNPPlugin.cc b/plugin/icedteanp/IcedTeaNPPlugin.cc
index 2650537..1cd15bb 100644
--- a/plugin/icedteanp/IcedTeaNPPlugin.cc
+++ b/plugin/icedteanp/IcedTeaNPPlugin.cc
@@ -1547,23 +1547,25 @@ plugin_start_appletviewer (ITNPPluginData* data)
if (plugin_debug)
{
- command_line = (gchar**) malloc(sizeof(gchar*)*8);
+ command_line = (gchar**) malloc(sizeof(gchar*)*9);
command_line[0] = g_strdup(appletviewer_executable);
- command_line[1] = g_strdup("-Xdebug");
- command_line[2] = g_strdup("-Xnoagent");
- command_line[3] = g_strdup("-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n");
- command_line[4] = g_strdup("sun.applet.PluginMain");
- command_line[5] = g_strdup(out_pipe_name);
- command_line[6] = g_strdup(in_pipe_name);
- command_line[7] = NULL;
+ command_line[1] = g_strdup(PLUGIN_BOOTCLASSPATH);
+ command_line[2] = g_strdup("-Xdebug");
+ command_line[3] = g_strdup("-Xnoagent");
+ command_line[4] = g_strdup("-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n");
+ command_line[5] = g_strdup("sun.applet.PluginMain");
+ command_line[6] = g_strdup(out_pipe_name);
+ command_line[7] = g_strdup(in_pipe_name);
+ command_line[8] = NULL;
} else
{
- command_line = (gchar**) malloc(sizeof(gchar*)*5);
+ command_line = (gchar**) malloc(sizeof(gchar*)*6);
command_line[0] = g_strdup(appletviewer_executable);
- command_line[1] = g_strdup("sun.applet.PluginMain");
- command_line[2] = g_strdup(out_pipe_name);
- command_line[3] = g_strdup(in_pipe_name);
- command_line[4] = NULL;
+ command_line[1] = g_strdup(PLUGIN_BOOTCLASSPATH);
+ command_line[2] = g_strdup("sun.applet.PluginMain");
+ command_line[3] = g_strdup(out_pipe_name);
+ command_line[4] = g_strdup(in_pipe_name);
+ command_line[5] = NULL;
}
environment = plugin_filter_environment();
@@ -1590,17 +1592,21 @@ plugin_start_appletviewer (ITNPPluginData* data)
command_line[0] = NULL;
g_free (command_line[1]);
command_line[1] = NULL;
+ g_free (command_line[2]);
+ command_line[2] = NULL;
+ g_free (command_line[3]);
+ command_line[3] = NULL;
+ g_free (command_line[4]);
+ command_line[4] = NULL;
if (plugin_debug)
{
- g_free (command_line[2]);
- command_line[2] = NULL;
- g_free (command_line[3]);
- command_line[3] = NULL;
- g_free (command_line[4]);
- command_line[4] = NULL;
g_free (command_line[5]);
command_line[5] = NULL;
+ g_free (command_line[6]);
+ command_line[6] = NULL;
+ g_free (command_line[7]);
+ command_line[7] = NULL;
}
g_free(command_line);
@@ -2173,38 +2179,10 @@ NP_Initialize (NPNetscapeFuncs* browserTable, NPPluginFuncs* pluginTable)
}
// Set appletviewer_executable.
- Dl_info info;
- int filename_size;
- if (dladdr ((const void*) ITNP_New, &info) == 0)
- {
- PLUGIN_ERROR_TWO ("Failed to determine plugin shared object filename",
- dlerror ());
- np_error = NPERR_GENERIC_ERROR;
- goto cleanup_data_directory;
- }
- filename = (gchar*) malloc(sizeof(gchar)*1024);
- filename_size = readlink(info.dli_fname, filename, 1023);
- if (filename_size >= 0)
- {
- filename[filename_size] = '\0';
- }
-
- if (!filename)
- {
- PLUGIN_ERROR ("Failed to create plugin shared object filename.");
- np_error = NPERR_OUT_OF_MEMORY_ERROR;
- goto cleanup_data_directory;
- }
-
- if (filename_size <= 0)
- {
- free(filename);
- filename = g_strdup(info.dli_fname);
- }
-
- appletviewer_executable = g_strdup_printf ("%s/../../bin/java",
- dirname (filename));
- PLUGIN_DEBUG(".so is located at: %s and the link points to: %s. Executing java from dir %s to run %s\n", info.dli_fname, filename, dirname (filename), appletviewer_executable);
+ filename = g_strdup(ICEDTEA_WEB_JRE);
+ appletviewer_executable = g_strdup_printf ("%s/bin/java",
+ filename);
+ PLUGIN_DEBUG("Executing java at %s\n", appletviewer_executable);
if (!appletviewer_executable)
{
PLUGIN_ERROR ("Failed to create appletviewer executable name.");