Add patch to use gsettings instead of gconf
This commit is contained in:
parent
c7f2d1eaf9
commit
9b062d799a
|
@ -0,0 +1,490 @@
|
|||
From 010ef698fc87044d3f105fa4db68d85b8632940b Mon Sep 17 00:00:00 2001
|
||||
From: Eric Williams
|
||||
Date: Wed, 23 May 2018 10:51:43 -0400
|
||||
Subject: Bug 394087: [Net] Migration from GConf to GSettings.
|
||||
|
||||
Use GSettings instead of GConf2 to fetch proxy settings from GNOME.
|
||||
Instead it now uses the following GSettings schemas for proxies:
|
||||
|
||||
org.gnome.system.proxy
|
||||
org.gnome.system.proxy.http
|
||||
org.gnome.system.proxy.https
|
||||
org.gnome.system.proxy.socks
|
||||
org.gnome.system.proxy.ftp
|
||||
|
||||
You can get/set values for the keys in each of these schemas by running
|
||||
gsettings [get/set] schema key value.
|
||||
|
||||
For example, to set the SOCKS proxy host, run: gsettings set
|
||||
org.gnome.system.proxy.socks host <value>
|
||||
|
||||
To test in Eclipse, import the org.eclipse.core.net and
|
||||
org.eclipse.core.net.linux.x86_64 projects into your workspace. Launch a
|
||||
child Eclipse that depends on these two workspace plugins, and make sure
|
||||
the child Eclipse launches with the argument:
|
||||
-Dorg.eclipse.core.net.enableGnome
|
||||
|
||||
as this enables the GNOME proxy functionality. In the child Eclipse, go
|
||||
to Window -> Preferences -> General -> Network connections. Selecting
|
||||
the "native" combo option will pull in proxy/network settings as set via
|
||||
GNOME.
|
||||
|
||||
Change-Id: I0f620275aa15205245ae4156d9ed63ebf20c3568
|
||||
Signed-off-by: Eric Williams <ericwill@redhat.com>---
|
||||
.../BUILD_INFO.txt | 12 +-
|
||||
.../libgnomeproxy-1.0.0.so | Bin 90809 -> 259848 bytes
|
||||
.../org.eclipse.core.net/natives/unix/gnomeproxy.c | 129 ++++++++++-----------
|
||||
.../org.eclipse.core.net/natives/unix/gnomeproxy.h | 12 +-
|
||||
.../natives/unix/linux/makefile | 11 +-
|
||||
.../internal/net/proxy/unix/UnixProxyProvider.java | 30 ++---
|
||||
6 files changed, 90 insertions(+), 104 deletions(-)
|
||||
|
||||
diff --git a/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt b/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt
|
||||
index 8d7c5cd..a312cc7 100644
|
||||
--- a/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt
|
||||
+++ b/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt
|
||||
@@ -2,9 +2,9 @@ Native Build Info:
|
||||
------------------
|
||||
|
||||
platform: linux.gtk.x86_64
|
||||
-built by: Tristan Tarrant, tristan.tarrant@gmail.com
|
||||
-build date: 05-November-2009
|
||||
-OS Name: CentOS 3.9
|
||||
-OS Version: Linux 2.4.21-50.EL
|
||||
-Compiler version: gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-59)
|
||||
-Java version: Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.4.2_03) 64-Bit Server VM
|
||||
\ No newline at end of file
|
||||
+built by: Eric Williams, ericwill@redhat.com
|
||||
+build date: 24-May-2018
|
||||
+OS Name: RHEL Workstation 7.5
|
||||
+OS Version: Linux 3.10.0
|
||||
+Compiler version: gcc (GCC) 4.8.5
|
||||
+Java version: Java(TM) 8 Runtime Environment, Standard Edition (1.8.0.171)
|
||||
\ No newline at end of file
|
||||
diff --git a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c
|
||||
index 2417b4e..f96d15c 100644
|
||||
--- a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c
|
||||
+++ b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c
|
||||
@@ -1,21 +1,21 @@
|
||||
/*
|
||||
- * Copyright 2008, 2012 Oakland Software Incorporated and others
|
||||
- * All rights reserved. This program and the accompanying materials
|
||||
+ * Copyright 2008, 2018 Oakland Software Incorporated and others
|
||||
+ * All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
- *
|
||||
+ *
|
||||
* Contributors:
|
||||
* Oakland Software Incorporated - initial API and implementation
|
||||
- * IBM Corporation - enabling JNI calls for gconfInit method (bug 232495)
|
||||
+ * IBM Corporation - enabling JNI calls for gconfInit method (bug 232495)
|
||||
* IBM Corporation - gnomeproxy cannot be built with latest versions of glib (bug 385047)
|
||||
+ * Red Hat - GSettings implementation and code clean up (bug 394087)
|
||||
*/
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#include <glib.h>
|
||||
-#include <gconf/gconf-value.h>
|
||||
-#include <gconf/gconf-client.h>
|
||||
+#include <gio/gio.h>
|
||||
|
||||
#ifdef __linux__
|
||||
#include <string.h>
|
||||
@@ -23,9 +23,11 @@
|
||||
#include <strings.h>
|
||||
#endif
|
||||
|
||||
-#include "gnomeproxy.h"
|
||||
-
|
||||
-static GConfClient *client= NULL;
|
||||
+static GSettings *proxySettings = NULL;
|
||||
+static GSettings *httpProxySettings = NULL;
|
||||
+static GSettings *httpsProxySettings = NULL;
|
||||
+static GSettings *socksProxySettings = NULL;
|
||||
+static GSettings *ftpProxySettings = NULL;
|
||||
|
||||
static jclass proxyInfoClass;
|
||||
static jclass stringClass;
|
||||
@@ -37,18 +39,21 @@ static jmethodID portMethod;
|
||||
static jmethodID userMethod;
|
||||
static jmethodID passwordMethod;
|
||||
|
||||
-#define CHECK_NULL(X) { if ((X) == NULL) fprintf (stderr,"JNI error at line %d\n", __LINE__); }
|
||||
+#define CHECK_NULL(X) { if ((X) == NULL) fprintf (stderr,"JNI error at line %d\n", __LINE__); }
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
||||
- * Method: gconfInit
|
||||
+ * Method: gsettingsInit
|
||||
* Signature: ()V
|
||||
*/
|
||||
-JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit(
|
||||
+JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit(
|
||||
JNIEnv *env, jclass clazz) {
|
||||
|
||||
- g_type_init();
|
||||
- client = gconf_client_get_default();
|
||||
+ proxySettings = g_settings_new ("org.gnome.system.proxy");
|
||||
+ httpProxySettings = g_settings_new ("org.gnome.system.proxy.http");
|
||||
+ httpsProxySettings = g_settings_new ("org.gnome.system.proxy.https");
|
||||
+ socksProxySettings = g_settings_new ("org.gnome.system.proxy.socks");
|
||||
+ ftpProxySettings = g_settings_new ("org.gnome.system.proxy.ftp");
|
||||
jclass cls= NULL;
|
||||
CHECK_NULL(cls = (*env)->FindClass(env, "org/eclipse/core/internal/net/ProxyData"));
|
||||
proxyInfoClass = (*env)->NewGlobalRef(env, cls);
|
||||
@@ -72,10 +77,10 @@ JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyPr
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_core_internal_net_UnixProxyProvider
|
||||
- * Method: getGConfProxyInfo
|
||||
+ * Method: getGSettingsProxyInfo
|
||||
* Signature: ([Ljava/lang/String);
|
||||
*/
|
||||
-JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfProxyInfo(
|
||||
+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsProxyInfo(
|
||||
JNIEnv *env, jclass clazz, jstring protocol) {
|
||||
|
||||
jboolean isCopy;
|
||||
@@ -83,8 +88,8 @@ JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProx
|
||||
|
||||
jobject proxyInfo= NULL;
|
||||
|
||||
- if (client == NULL) {
|
||||
- Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit(env, clazz);
|
||||
+ if (proxySettings == NULL) {
|
||||
+ Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit(env, clazz);
|
||||
}
|
||||
|
||||
CHECK_NULL(proxyInfo = (*env)->NewObject(env, proxyInfoClass, proxyInfoConstructor, protocol));
|
||||
@@ -93,78 +98,73 @@ JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProx
|
||||
if (cprotocol == NULL)
|
||||
return NULL;
|
||||
|
||||
- //printf("cprotocol: %s\n", cprotocol);
|
||||
-
|
||||
- // use_same_proxy means we use the http value for everything
|
||||
- gboolean useSame = gconf_client_get_bool(client,
|
||||
- "/system/http_proxy/use_same_proxy", NULL);
|
||||
+ gboolean useSame = g_settings_get_boolean(proxySettings,
|
||||
+ "use-same-proxy");
|
||||
|
||||
if (strcasecmp(cprotocol, "http") == 0 || useSame) {
|
||||
- gboolean useProxy = gconf_client_get_bool(client,
|
||||
- "/system/http_proxy/use_http_proxy", NULL);
|
||||
+ gboolean useProxy = g_settings_get_boolean(httpProxySettings,
|
||||
+ "enabled");
|
||||
if (!useProxy) {
|
||||
proxyInfo = NULL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
- gchar *host = gconf_client_get_string(client,
|
||||
- "/system/http_proxy/host", NULL);
|
||||
+ gchar *host = g_settings_get_string(httpProxySettings,
|
||||
+ "host");
|
||||
jobject jhost = (*env)->NewStringUTF(env, host);
|
||||
(*env)->CallVoidMethod(env, proxyInfo, hostMethod, jhost);
|
||||
+ g_free(host);
|
||||
|
||||
- gint port = gconf_client_get_int(client, "/system/http_proxy/port",
|
||||
- NULL);
|
||||
+ gint port = g_settings_get_int(httpProxySettings, "port");
|
||||
(*env)->CallVoidMethod(env, proxyInfo, portMethod, port);
|
||||
|
||||
- gboolean reqAuth = gconf_client_get_bool(client,
|
||||
- "/system/http_proxy/use_authentication", NULL);
|
||||
+ gboolean reqAuth = g_settings_get_boolean(httpProxySettings,
|
||||
+ "use-authentication");
|
||||
if (reqAuth) {
|
||||
-
|
||||
- gchar *user = gconf_client_get_string(client,
|
||||
- "/system/http_proxy/authentication_user", NULL);
|
||||
+ gchar *user = g_settings_get_string(httpProxySettings,
|
||||
+ "authentication-user");
|
||||
jobject juser = (*env)->NewStringUTF(env, user);
|
||||
(*env)->CallVoidMethod(env, proxyInfo, userMethod, juser);
|
||||
|
||||
- gchar *password = gconf_client_get_string(client,
|
||||
- "/system/http_proxy/authentication_password", NULL);
|
||||
+ gchar *password = g_settings_get_string(httpProxySettings,
|
||||
+ "authentication-password");
|
||||
jobject jpassword = (*env)->NewStringUTF(env, password);
|
||||
(*env)->CallVoidMethod(env, proxyInfo, passwordMethod,
|
||||
jpassword);
|
||||
+ g_free(user);
|
||||
+ g_free(password);
|
||||
}
|
||||
goto exit;
|
||||
}
|
||||
|
||||
// Everything else applies only if the system proxy mode is manual
|
||||
- gchar *mode = gconf_client_get_string(client, "/system/proxy/mode", NULL);
|
||||
+ gchar *mode = g_settings_get_string(proxySettings, "mode");
|
||||
if (strcasecmp(mode, "manual") != 0) {
|
||||
proxyInfo = NULL;
|
||||
goto exit;
|
||||
}
|
||||
+ g_free(mode);
|
||||
|
||||
- char selector[100];
|
||||
-
|
||||
+ gchar *host;
|
||||
+ gint port;
|
||||
if (strcasecmp(cprotocol, "https") == 0) {
|
||||
- strcpy(selector, "/system/proxy/secure_");
|
||||
+ host = g_settings_get_string(httpsProxySettings, "host");
|
||||
+ port = g_settings_get_int(httpsProxySettings, "port");
|
||||
} else if (strcasecmp(cprotocol, "socks") == 0) {
|
||||
- strcpy(selector, "/system/proxy/socks_");
|
||||
+ host = g_settings_get_string(socksProxySettings, "host");
|
||||
+ port = g_settings_get_int(socksProxySettings, "port");
|
||||
} else if (strcasecmp(cprotocol, "ftp") == 0) {
|
||||
- strcpy(selector, "/system/proxy/ftp_");
|
||||
+ host = g_settings_get_string(ftpProxySettings, "host");
|
||||
+ port = g_settings_get_int(ftpProxySettings, "port");
|
||||
} else {
|
||||
proxyInfo = NULL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
- char useSelector[100];
|
||||
- strcpy(useSelector, selector);
|
||||
-
|
||||
- gchar *host = gconf_client_get_string(client, strcat(useSelector, "host"),
|
||||
- NULL);
|
||||
jobject jhost = (*env)->NewStringUTF(env, host);
|
||||
(*env)->CallVoidMethod(env, proxyInfo, hostMethod, jhost);
|
||||
-
|
||||
- strcpy(useSelector, selector);
|
||||
- gint port = gconf_client_get_int(client, strcat(useSelector, "port"), NULL);
|
||||
(*env)->CallVoidMethod(env, proxyInfo, portMethod, port);
|
||||
+ g_free(host);
|
||||
|
||||
exit: if (isCopy == JNI_TRUE)
|
||||
(*env)->ReleaseStringUTFChars(env, protocol, cprotocol);
|
||||
@@ -187,31 +187,28 @@ void listProc(gpointer data, gpointer user_data) {
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_core_internal_net_UnixProxyProvider
|
||||
- * Method: getGConfNonProxyHosts
|
||||
+ * Method: getGSettingsNonProxyHosts
|
||||
* Signature: ()[Ljava/lang/String;
|
||||
*/
|
||||
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfNonProxyHosts(
|
||||
+JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsNonProxyHosts(
|
||||
JNIEnv *env, jclass clazz) {
|
||||
|
||||
- if (client == NULL) {
|
||||
- Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit(env, clazz);
|
||||
+ if (proxySettings == NULL) {
|
||||
+ Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit(env, clazz);
|
||||
}
|
||||
|
||||
- GSList *npHosts;
|
||||
- int size;
|
||||
+ gchar **npfHostsArray;
|
||||
+ GSList *npHosts = NULL;
|
||||
+ gint size, i;
|
||||
|
||||
- npHosts = gconf_client_get_list(client, "/system/http_proxy/ignore_hosts",
|
||||
- GCONF_VALUE_STRING, NULL);
|
||||
- size = g_slist_length(npHosts);
|
||||
+ npfHostsArray = g_settings_get_strv(proxySettings, "ignore-hosts");
|
||||
|
||||
- // TODO - I'm not sure this is really valid, it's from the JVM implementation
|
||||
- // of ProxySelector
|
||||
- if (size == 0) {
|
||||
- npHosts = gconf_client_get_list(client, "/system/proxy/no_proxy_for",
|
||||
- GCONF_VALUE_STRING, NULL);
|
||||
+ for (i = 0; npfHostsArray[i] != NULL; i++) {
|
||||
+ npHosts = g_slist_prepend(npHosts, npfHostsArray[i]);
|
||||
}
|
||||
- size = g_slist_length(npHosts);
|
||||
|
||||
+ npHosts = g_slist_reverse(npHosts);
|
||||
+ size = g_slist_length(npHosts);
|
||||
jobjectArray ret = (*env)->NewObjectArray(env, size, stringClass, NULL);
|
||||
|
||||
ListProcContext lpc;
|
||||
@@ -220,6 +217,8 @@ JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_Uni
|
||||
lpc.index = 0;
|
||||
|
||||
g_slist_foreach(npHosts, listProc, &lpc);
|
||||
+ g_strfreev(npfHostsArray);
|
||||
+ g_slist_free(npHosts);
|
||||
return ret;
|
||||
}
|
||||
|
||||
diff --git a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h
|
||||
index cf0e8d7..8dab51c 100644
|
||||
--- a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h
|
||||
+++ b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h
|
||||
@@ -10,26 +10,26 @@ extern "C" {
|
||||
/* Inaccessible static: isGnomeLibLoaded */
|
||||
/*
|
||||
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
||||
- * Method: gconfInit
|
||||
+ * Method: gsettingsInit
|
||||
* Signature: ()V
|
||||
*/
|
||||
-JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit
|
||||
+JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit
|
||||
(JNIEnv *, jclass);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
||||
- * Method: getGConfProxyInfo
|
||||
+ * Method: getGSettingsProxyInfo
|
||||
* Signature: (Ljava/lang/String;)Lorg/eclipse/core/internal/net/ProxyData;
|
||||
*/
|
||||
-JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfProxyInfo
|
||||
+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsProxyInfo
|
||||
(JNIEnv *, jclass, jstring);
|
||||
|
||||
/*
|
||||
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
||||
- * Method: getGConfNonProxyHosts
|
||||
+ * Method: getGSettingsNonProxyHosts
|
||||
* Signature: ()[Ljava/lang/String;
|
||||
*/
|
||||
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfNonProxyHosts
|
||||
+JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsNonProxyHosts
|
||||
(JNIEnv *, jclass);
|
||||
|
||||
#ifdef __cplusplus
|
||||
diff --git a/bundles/org.eclipse.core.net/natives/unix/linux/makefile b/bundles/org.eclipse.core.net/natives/unix/linux/makefile
|
||||
index b0e5519..65f6820 100644
|
||||
--- a/bundles/org.eclipse.core.net/natives/unix/linux/makefile
|
||||
+++ b/bundles/org.eclipse.core.net/natives/unix/linux/makefile
|
||||
@@ -1,6 +1,6 @@
|
||||
#**********************************************************************
|
||||
-# Copyright (c) 2008, 2012 Oakland Software Incorporated and others.
|
||||
-# All rights reserved. This program and the accompanying materials
|
||||
+# Copyright (c) 2008, 2018 Oakland Software Incorporated and others.
|
||||
+# All rights reserved. This program and the accompanying materials
|
||||
# are made available under the terms of the Eclipse Public License v1.0
|
||||
# which accompanies this distribution, and is available at
|
||||
# http://www.eclipse.org/legal/epl-v10.html
|
||||
@@ -8,8 +8,9 @@
|
||||
# Contributors:
|
||||
# Oakland Software Incorporated - initial submission
|
||||
# IBM Corporation - refactoring, bug 245849
|
||||
+# Red Hat - GSettings implementation and code clean up (bug 394087)
|
||||
#
|
||||
-#**********************************************************************
|
||||
+#**********************************************************************
|
||||
#
|
||||
# makefile for libgnomeproxy-1.0.0.so
|
||||
|
||||
@@ -20,10 +21,10 @@ LIB_NAME_FULL = libgnomeproxy-1.0.0.so
|
||||
|
||||
OS_TYPE = linux
|
||||
JDK_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OS_TYPE}
|
||||
-INCLUDE = `pkg-config --cflags gconf-2.0`
|
||||
+INCLUDE = `pkg-config --cflags gio-2.0`
|
||||
COMPILER_FLAGS = -O0 -fPIC -g3 -Wall -c -fmessage-length=0 ${TARGET_ENVIRONMENT}
|
||||
|
||||
-LIBS := `pkg-config --libs gconf-2.0`
|
||||
+LIBS := `pkg-config --libs gio-2.0`
|
||||
LINKER_FLAGS= ${TARGET_ENVIRONMENT}
|
||||
|
||||
all: link
|
||||
diff --git a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java b/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java
|
||||
index 1f13abd..c430217 100644
|
||||
--- a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java
|
||||
+++ b/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java
|
||||
@@ -1,5 +1,5 @@
|
||||
/*******************************************************************************
|
||||
- * Copyright (c) 2008, 2017 Oakland Software Incorporated and others
|
||||
+ * Copyright (c) 2008, 2018 Oakland Software Incorporated and others
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
@@ -8,6 +8,7 @@
|
||||
* Contributors:
|
||||
* Oakland Software Incorporated - initial API and implementation
|
||||
* IBM Corporation - implementation
|
||||
+ * Red Hat - GSettings implementation and code clean up (bug 394087)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.core.internal.net.proxy.unix;
|
||||
|
||||
@@ -28,8 +29,6 @@ import org.eclipse.core.net.proxy.IProxyData;
|
||||
|
||||
public class UnixProxyProvider extends AbstractProxyProvider {
|
||||
|
||||
- private static final String LIBRARY_GCONF2 = "gconf-2"; //$NON-NLS-1$
|
||||
-
|
||||
private static final String LIBRARY_NAME = "gnomeproxy-1.0.0"; //$NON-NLS-1$
|
||||
|
||||
private static final String ENABLE_GNOME = Activator.ID + ".enableGnome"; //$NON-NLS-1$
|
||||
@@ -37,9 +36,7 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
||||
private static boolean isGnomeLibLoaded = false;
|
||||
|
||||
static {
|
||||
- // We have to load this here otherwise gconf seems to have problems
|
||||
- // causing hangs and various other bad behavior,
|
||||
- // please don't move this to be initialized on another thread.
|
||||
+ // Load the GSettings JNI library if org.eclipse.core.net.enableGnome is specified
|
||||
String value = System.getProperty(ENABLE_GNOME);
|
||||
if ("".equals(value) || "true".equals(value)) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
loadGnomeLib();
|
||||
@@ -117,7 +114,7 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
||||
|
||||
if (isGnomeLibLoaded) {
|
||||
try {
|
||||
- npHosts = getGConfNonProxyHosts();
|
||||
+ npHosts = getGSettingsNonProxyHosts();
|
||||
if (npHosts != null && npHosts.length > 0) {
|
||||
if (Policy.DEBUG_SYSTEM_PROVIDERS) {
|
||||
Policy.debug("Got Gnome no_proxy"); //$NON-NLS-1$
|
||||
@@ -193,7 +190,7 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
||||
if (isGnomeLibLoaded) {
|
||||
try {
|
||||
// Then ask Gnome
|
||||
- pd = getGConfProxyInfo(protocol);
|
||||
+ pd = getGSettingsProxyInfo(protocol);
|
||||
if (pd != null) {
|
||||
if (Policy.DEBUG_SYSTEM_PROVIDERS)
|
||||
Policy.debug("Got Gnome proxy: " + pd); //$NON-NLS-1$
|
||||
@@ -243,16 +240,6 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
||||
|
||||
private static void loadGnomeLib() {
|
||||
try {
|
||||
- System.loadLibrary(LIBRARY_GCONF2);
|
||||
- } catch (final UnsatisfiedLinkError e) {
|
||||
- // Expected on systems that are missing Gnome
|
||||
- if (Policy.DEBUG_SYSTEM_PROVIDERS)
|
||||
- Policy.debug("Could not load library: " //$NON-NLS-1$
|
||||
- + System.mapLibraryName(LIBRARY_GCONF2));
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- try {
|
||||
System.loadLibrary(LIBRARY_NAME);
|
||||
isGnomeLibLoaded = true;
|
||||
if (Policy.DEBUG_SYSTEM_PROVIDERS)
|
||||
@@ -266,15 +253,14 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
||||
}
|
||||
}
|
||||
|
||||
-
|
||||
private void debugPrint(String[] strs) {
|
||||
for (int i = 0; i < strs.length; i++)
|
||||
System.out.println(i + ": " + strs[i]); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
- protected static native void gconfInit();
|
||||
+ protected static native void gsettingsInit();
|
||||
|
||||
- protected static native ProxyData getGConfProxyInfo(String protocol);
|
||||
+ protected static native ProxyData getGSettingsProxyInfo(String protocol);
|
||||
|
||||
- protected static native String[] getGConfNonProxyHosts();
|
||||
+ protected static native String[] getGSettingsNonProxyHosts();
|
||||
}
|
||||
--
|
||||
cgit v1.1
|
||||
|
13
eclipse.spec
13
eclipse.spec
|
@ -40,7 +40,7 @@ Epoch: 1
|
|||
Summary: An open, extensible IDE
|
||||
Name: eclipse
|
||||
Version: 4.8.0
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
License: EPL
|
||||
URL: http://www.eclipse.org/
|
||||
|
||||
|
@ -126,6 +126,9 @@ Patch29: fix_ant_build.patch
|
|||
# Hide the p2 Droplets from cluttering Install Wizard Combo
|
||||
Patch30: eclipse-hide-droplets-from-install-wizard.patch
|
||||
|
||||
# Use gsettings instead of gconf
|
||||
Patch31: eclipse-bug-394087.patch
|
||||
|
||||
# Use the jit on 32bit arm to speed up the build
|
||||
%ifarch %{arm}
|
||||
BuildRequires: java-1.8.0-openjdk-aarch32-devel
|
||||
|
@ -148,7 +151,7 @@ BuildRequires: make, gcc
|
|||
BuildRequires: zip, unzip
|
||||
BuildRequires: desktop-file-utils
|
||||
BuildRequires: pkgconfig(glib-2.0)
|
||||
BuildRequires: pkgconfig(gconf-2.0)
|
||||
BuildRequires: pkgconfig(gio-2.0)
|
||||
BuildRequires: pkgconfig(nspr)
|
||||
BuildRequires: pkgconfig(glu)
|
||||
BuildRequires: pkgconfig(gl)
|
||||
|
@ -403,6 +406,9 @@ rm -rf rt.equinox.binaries/org.eclipse.equinox.executable/{bin,contributed}/
|
|||
%endif
|
||||
%patch29
|
||||
%patch30 -p1
|
||||
pushd eclipse.platform.team
|
||||
%patch31 -p1
|
||||
popd
|
||||
|
||||
# Use ecj when bootstrapping
|
||||
%if %{bootstrap}
|
||||
|
@ -1084,6 +1090,9 @@ fi
|
|||
%{_eclipsedir}/plugins/org.eclipse.osgi.util_*
|
||||
|
||||
%changelog
|
||||
* Mon Jun 25 2018 Mat Booth <mat.booth@redhat.com> - 1:4.8.0-3
|
||||
- Add patch to use gsettings instead of gconf
|
||||
|
||||
* Wed Jun 13 2018 Mat Booth <mat.booth@redhat.com> - 1:4.8.0-2
|
||||
- Backport patches for ebz#533655 and ebz#535392
|
||||
|
||||
|
|
Loading…
Reference in New Issue