Accepting request 72832 from home:dimstar:branches:GNOME:Factory

Update to 0.4.7... with full gnome3 support.. yay

OBS-URL: https://build.opensuse.org/request/show/72832
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/libproxy?expand=0&rev=62
This commit is contained in:
Vincent Untz 2011-06-07 10:47:11 +00:00 committed by Git OBS Bridge
parent ea09416b67
commit 60d08a653e
10 changed files with 155 additions and 492 deletions

View File

@ -1,11 +1,13 @@
libproxy1 libproxy1
libproxy1-config-gnome libproxy1-config-gnome
supplements "packageand(libproxy1-<targettype>:libproxy1-gnome)" supplements "packageand(libproxy1-<targettype>:libproxy1-config-gnome)"
libproxy1-config-gnome3
supplements "packageand(libproxy1-<targettype>:libproxy1-config-gnome3)"
libproxy1-config-kde4 libproxy1-config-kde4
supplements "packageand(libproxy1-<targettype>:libproxy1-kde)" supplements "packageand(libproxy1-<targettype>:libproxy1-config-kde)"
libproxy1-pacrunner-mozjs libproxy1-pacrunner-mozjs
supplements "packageand(libproxy1-<targettype>:libproxy1-mozjs)" supplements "packageand(libproxy1-<targettype>:libproxy1-config-mozjs)"
libproxy1-networkmanager libproxy1-networkmanager
supplements "packageand(libproxy1-<targettype>:libproxy1-networkmanager)" supplements "packageand(libproxy1-<targettype>:libproxy1-config-networkmanager)"
libproxy1-pacrunner-webkit libproxy1-pacrunner-webkit
supplements "packageand(libproxy1-<targettype>:libproxy1-webkit)" supplements "packageand(libproxy1-<targettype>:libproxy1-config-webkit)"

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9be19e35cec7de2159ad68b620665f02c25938d186697176125e9ad89220fb85
size 71816

3
libproxy-0.4.7.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:76ab598e64cde209734191dc9efd631bbbe7c161f617e420dff1896497bc0f02
size 77714

View File

@ -1,151 +0,0 @@
Index: libproxy/url.cpp
===================================================================
--- libproxy/url.cpp.orig
+++ libproxy/url.cpp
@@ -36,12 +36,9 @@
#ifdef WIN32
#include <io.h>
-#define pfsize(st) (st.st_size)
#define close _close
#define read _read
#define SHUT_RDWR SD_BOTH
-#else
-#define pfsize(st) (st.st_blksize * st.st_blocks)
#endif
#include "url.hpp"
@@ -56,13 +53,6 @@ using namespace std;
// This is the maximum pac size (to avoid memory attacks)
#define PAC_MAX_SIZE 102400
-const string url::GENERIC_DELIMITERS(":/?#[]@");
-const string url::SUBCOMPONENT_DELIMITERS("!$&'()*+,;=");
-const string url::ALLOWED_IN_USERINFO_ELEMENT(url::SUBCOMPONENT_DELIMITERS);
-const string url::ALLOWED_IN_USERINFO(url::ALLOWED_IN_USERINFO_ELEMENT + ":");
-const string url::ALLOWED_IN_PATH_ELEMENT(url::SUBCOMPONENT_DELIMITERS + ":@");
-const string url::ALLOWED_IN_PATH(url::ALLOWED_IN_PATH_ELEMENT + "/");
-
static inline int get_default_port(string scheme) {
struct servent *serv;
size_t plus = scheme.find('+');
@@ -109,8 +99,8 @@ bool url::is_valid(const string url_) {
string url::encode(const string &data, const string &valid_reserved) {
ostringstream encoded;
- for (int i=0; data[i]; i++) {
- if (isalnum(data[i])
+ for (unsigned int i=0; i < data.size(); i++) {
+ if (isalnum((unsigned char)data[i])
|| valid_reserved.find(data[i]) != string::npos
|| string("-._~").find(data[i]) != string::npos)
encoded << data[i];
@@ -211,7 +201,8 @@ url::url(const string &url) throw(parse_
host_start = userinfo_end + 1;
/* Check for IPv6 IP */
- if (hier_part[host_start] == '[') {
+ if (host_start < hier_part.size()
+ && hier_part[host_start] == '[') {
host_end = hier_part.find(']', host_start);
if (host_end == string::npos)
throw parse_error("Invalid URL: " + url);
@@ -232,7 +223,7 @@ url::url(const string &url) throw(parse_
/* Get port */
m_port = get_default_port(m_scheme);
- if (host_end != hier_part.size()
+ if (host_end < hier_part.size()
&& hier_part[host_end] == ':') {
size_t port_start = host_end + 1;
m_port = atoi(hier_part.c_str() + port_start);
@@ -400,10 +391,12 @@ char* url::get_pac() {
struct stat st;
if ((sock = ::open(m_path.c_str(), O_RDONLY)) < 0)
return NULL;
- if (!fstat(sock, &st) && pfsize(st) < PAC_MAX_SIZE) {
- buffer = new char[pfsize(st)+1];
- if (read(sock, buffer, pfsize(st)) == 0) {
- delete buffer;
+
+ if (!fstat(sock, &st) && st.st_size < PAC_MAX_SIZE) {
+ buffer = new char[st.st_size+1];
+ memset(buffer, 0, st.st_size+1);
+ if (read(sock, buffer, st.st_size) == 0) {
+ delete[] buffer;
buffer = NULL;
}
}
Index: libproxy/modules/config_gnome.cpp
===================================================================
--- libproxy/modules/config_gnome.cpp.orig
+++ libproxy/modules/config_gnome.cpp
@@ -102,10 +102,8 @@ static int popen2(const char *program, F
if (dup2(rpipe[1], STDOUT_FILENO) != STDOUT_FILENO) _exit(2);
// Close unneeded fds
- close(rpipe[0]);
- close(rpipe[1]);
- close(wpipe[0]);
- close(wpipe[1]);
+ for (int i = 3; i < sysconf(_SC_OPEN_MAX); i++)
+ close(i);
// Exec
execl("/bin/sh", "sh", "-c", program, (char*) NULL);
@@ -194,8 +192,8 @@ public:
else if (this->data[PROXY_MODE] == "manual") {
string type, host, port;
bool auth = this->data[PROXY_USE_AUTHENTICATION] == "true";
- string username = url::encode(this->data[PROXY_AUTH_USER], url::ALLOWED_IN_USERINFO_ELEMENT);
- string password = url::encode(this->data[PROXY_AUTH_PASSWORD], url::ALLOWED_IN_USERINFO_ELEMENT);
+ string username = url::encode(this->data[PROXY_AUTH_USER], URL_ALLOWED_IN_USERINFO_ELEMENT);
+ string password = url::encode(this->data[PROXY_AUTH_PASSWORD], URL_ALLOWED_IN_USERINFO_ELEMENT);
bool same_proxy = this->data[PROXY_SAME_FOR_ALL] == "true";
// If socks is set use it (except when same_proxy is set)
Index: libproxy/proxy.cpp
===================================================================
--- libproxy/proxy.cpp.orig
+++ libproxy/proxy.cpp
@@ -164,7 +164,7 @@ proxy_factory::proxy_factory() {
proxy_factory::~proxy_factory() {
lock();
- if (this->pac) delete this->pac;
+ if (this->pac) delete[] this->pac;
if (this->pacurl) delete this->pacurl;
unlock();
Index: libproxy/url.hpp
===================================================================
--- libproxy/url.hpp.orig
+++ libproxy/url.hpp
@@ -27,6 +27,13 @@
#include "config.hpp"
+#define URL_GENERIC_DELIMITERS ":/?#[]@"
+#define URL_SUBCOMPONENT_DELIMITERS "!$&'()*+,;="
+#define URL_ALLOWED_IN_USERINFO_ELEMENT URL_SUBCOMPONENT_DELIMITERS
+#define URL_ALLOWED_IN_USERINFO URL_ALLOWED_IN_USERINFO_ELEMENT ":"
+#define URL_ALLOWED_IN_PATH_ELEMENT URL_SUBCOMPONENT_DELIMITERS ":@"
+#define URL_ALLOWED_IN_PATH URL_ALLOWED_IN_PATH_ELEMENT "/"
+
namespace libproxy {
using namespace std;
@@ -38,13 +45,6 @@ public:
class DLL_PUBLIC url {
public:
- static const string ALLOWED_IN_PATH;
- static const string ALLOWED_IN_PATH_ELEMENT;
- static const string ALLOWED_IN_USERINFO;
- static const string ALLOWED_IN_USERINFO_ELEMENT;
- static const string GENERIC_DELIMITERS;
- static const string SUBCOMPONENT_DELIMITERS;
-
static bool is_valid(const string url);
static string encode(const string &data, const string &valid_reserved = "");

View File

@ -1,3 +1,38 @@
-------------------------------------------------------------------
Mon Jun 6 21:51:45 UTC 2011 - dimstar@opensuse.org
- Update to version 0.4.7:
+ Support/require xulrunner 2.0+
+ Support linking againgst libwebkit-gtk3 (-DWITH_WEBKIT3=ON)
+ Port to gsettings for gnome3. (-DWITH_GNOME3=ON[default])
+ Issues closed:
- #149: always test for the right python noarch module path
- #155: Cannot compile with Firefox 4
- #156: libproxy should build against webkitgtk-3.0
- #158: Won't compile w/ xulrunner 2.0 final
- #159: libproxy fails with autoconfiguration
"http://proxy.domain.com"
- #131: GSettings-based GNOME plugin
- #150: SUSE sysconfig/proxy config support
- Drop upstream included patches:
+ libproxy-sysconfig-support.patch
+ libproxy-xul2.patch
+ libproxy-backports.patch
- Package gnome3 module if favor_gtk2 is not set (project metadata)
- Add gnome3 module to baselibs.conf and fixup the various
supplements in baselibs.conf (pointed to the pre -config names).
- When building for gnome3 (favor_gtk2 = 0), add BuildRequires:
pkgconfig(gio-2.0) >= 2.26, pkgconfig(gobject-2.0) and
pkgconfig(webkitgtk-3.0)
- When building for gnome2, add BuildRequires:
pkgconfig(gconf-2.0), pkgconfig(gobject-2.0) and replace
libwebkit-devel with pkgconfig(webkit-1.0).
-------------------------------------------------------------------
Tue Apr 19 00:10:03 CEST 2011 - ro@suse.de
- Update baselibs.conf.
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Feb 15 19:16:02 UTC 2011 - dimstar@opensuse.org Tue Feb 15 19:16:02 UTC 2011 - dimstar@opensuse.org

View File

@ -1,5 +1,5 @@
# #
# spec file for package libproxy-plugins # spec file for package libproxy
# #
# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
@ -42,8 +42,8 @@ Url: http://code.google.com/p/libproxy/
Name: libproxy-plugins Name: libproxy-plugins
Group: System/Libraries Group: System/Libraries
Summary: Libproxy provides consistent proxy configuration to applications Summary: Libproxy provides consistent proxy configuration to applications
Version: 0.4.6 Version: 0.4.7
Release: 4 Release: 1
%if 0%{?build_snapshot} %if 0%{?build_snapshot}
%define _sourcename %{_name} %define _sourcename %{_name}
%else %else
@ -53,12 +53,6 @@ Source: http://libproxy.googlecode.com/files/%{_sourcename}.tar.bz2
# Script used for automatic snapshot updates # Script used for automatic snapshot updates
Source98: update-from-svn.sh Source98: update-from-svn.sh
Source99: baselibs.conf Source99: baselibs.conf
# PATCH-FEATURE-UPSTREAM libproxy-sysconfig-support.patch bnc#655483 dmacvicar@novell.com -- Add /etc/sysconfig support. Also tracked at http://code.google.com/p/libproxy/issues/detail?id=150
Patch0: libproxy-sysconfig-support.patch
# PATCH-FEATURE-UPSTREAM libproxy-xul2.patch dimstar@opensuse.org -- Add compatibility to build against xulrunner 2.0
Patch1: libproxy-xul2.patch
# PATCH-FIX-UPSTREAM libproxy-backports.patch dimstar@opensuse.org -- Backport from upstream source: svn revs: 769,771,776,777,778,780,781,782
Patch2: libproxy-backports.patch
License: GPLv2+ ; LGPLv2.1+ License: GPLv2+ ; LGPLv2.1+
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake BuildRequires: cmake
@ -73,7 +67,15 @@ BuildRequires: gconf2-devel
# For directory ownership, but also because we want to rebuild the modules if # For directory ownership, but also because we want to rebuild the modules if
# the library changed # the library changed
BuildRequires: libproxy1 BuildRequires: libproxy1
BuildRequires: libwebkit-devel %if 0%{?favor_gtk2}
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(webkit-1.0)
%else
BuildRequires: pkgconfig(gio-2.0) >= 2.26
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(webkitgtk-3.0)
%endif
%if 0%{?suse_version} %if 0%{?suse_version}
BuildRequires: mozilla-xulrunner%{xulrunner_ver}-devel BuildRequires: mozilla-xulrunner%{xulrunner_ver}-devel
%else %else
@ -212,21 +214,34 @@ libproxy offers the following features: * extremely small core
%else %else
%if 0%{?favor_gtk2}
%package -n libproxy1-config-gnome %package -n libproxy1-config-gnome
License: GPLv2+ ; LGPLv2.1+
Summary: Libproxy module for GNOME configuration Summary: Libproxy module for GNOME configuration
%else
%package -n libproxy1-config-gnome3
Summary: Libproxy module for GNOME3 configuration
%endif
License: GPLv2+ ; LGPLv2.1+
Group: System/Libraries Group: System/Libraries
Requires: libproxy1 = %{version} Requires: libproxy1 = %{version}
%if 0%{?suse_version} %if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version} Recommends: libproxy1-pacrunner = %{version}
%if 0%{?favor_gtk2}
Supplements: packageand(libproxy1:gconf2) Supplements: packageand(libproxy1:gconf2)
%else %else
Supplements: packageand(libproxy1:libgio-2_0-0)
%endif
%else
Requires: libproxy1-pacrunner = %{version} Requires: libproxy1-pacrunner = %{version}
%endif %endif
Provides: libproxy-gnome = %{version} Provides: libproxy-gnome = %{version}
Obsoletes: libproxy-gnome < %{version} Obsoletes: libproxy-gnome < %{version}
%if 0%{?favor_gtk2}
%description -n libproxy1-config-gnome %description -n libproxy1-config-gnome
%else
%description -n libproxy1-config-gnome3
%endif
A module to extend libproxy with capabilities to query GNOME about A module to extend libproxy with capabilities to query GNOME about
proxy settings. proxy settings.
@ -299,9 +314,6 @@ about network configuration changes.
%prep %prep
%setup -q -n %{_sourcename} %setup -q -n %{_sourcename}
mkdir build mkdir build
%patch0 -p0
%patch1 -p0
%patch2 -p0
%build %build
cd build cd build
@ -342,6 +354,13 @@ cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_CONFIG_NAME=RelWithDebInfo \ -DCMAKE_INSTALL_CONFIG_NAME=RelWithDebInfo \
%endif %endif
%if 0%{?favor_gtk2}
-DWITH_WEBKIT3=OFF \
-DWITH_GNOME3=OFF \
%else
-DWITH_WEBKIT3=ON \
-DWITH_GNOME3=ON \
%endif
.. ..
%{__make} VERBOSE=1 %{__make} VERBOSE=1
@ -445,10 +464,17 @@ make test
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_kde4.so %{_libdir}/libproxy-%{version}/modules/config_kde4.so
%if 0%{?favor_gtk2}
%files -n libproxy1-config-gnome %files -n libproxy1-config-gnome
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_gnome.so %{_libdir}/libproxy-%{version}/modules/config_gnome.so
%{_libexecdir}/libproxy-%{version}/pxgconf %{_libexecdir}/libproxy-%{version}/pxgconf
%else
%files -n libproxy1-config-gnome3
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_gnome3.so
%{_libexecdir}/libproxy-%{version}/pxgsettings
%endif
%files -n libproxy1-networkmanager %files -n libproxy1-networkmanager
%defattr(-, root, root) %defattr(-, root, root)

View File

@ -1,201 +0,0 @@
Index: libproxy/cmake/modules.cmk
===================================================================
--- libproxy/cmake/modules.cmk (revision 775)
+++ libproxy/cmake/modules.cmk (working copy)
@@ -9,6 +9,7 @@
include(cmake/pxmodule.cmk)
include(cmake/pkgconfig.cmk)
include(cmake/modules/config_envvar.cmk)
+include(cmake/modules/config_sysconfig.cmk)
include(cmake/modules/config_gnome.cmk)
include(cmake/modules/config_kde4.cmk)
include(cmake/modules/config_macosx.cmk)
@@ -27,6 +28,7 @@
#
message("MODULES TO BUILD:")
px_module(config_envvar "${ENVVAR_FOUND}" 1)
+px_module(config_sysconfig "${SYSCONFIG_FOUND}" 1)
px_module(config_gnome "${GNOME_FOUND}" 0)
px_module(config_kde4 "${KDE4_FOUND}" 0 ${KDE4_LIBRARIES})
px_module(config_macosx "${SC_FOUND}" 1 ${SC_LIBRARIES} ${CF_LIBRARIES})
Index: libproxy/cmake/modules/config_sysconfig.cmk
===================================================================
--- libproxy/cmake/modules/config_sysconfig.cmk (revision 0)
+++ libproxy/cmake/modules/config_sysconfig.cmk (revision 0)
@@ -0,0 +1,5 @@
+if (NOT WIN32 AND NOT APPLE)
+ if (EXISTS "/etc/sysconfig" AND IS_DIRECTORY "/etc/sysconfig")
+ set(SYSCONFIG_FOUND 1)
+ endif()
+endif()
\ No newline at end of file
Index: libproxy/modules/config_sysconfig.cpp
===================================================================
--- libproxy/modules/config_sysconfig.cpp (revision 0)
+++ libproxy/modules/config_sysconfig.cpp (revision 0)
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * libproxy sysconfig module
+ * Copyright (C) 2010 Novell Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ ******************************************************************************/
+
+#include <sys/stat.h>
+#include <cstdlib>
+#include <map>
+#include <fstream>
+
+#include "../extension_config.hpp"
+using namespace libproxy;
+using std::map;
+
+enum Trim {
+ NO_TRIM = 0x00,
+ L_TRIM = 0x01,
+ R_TRIM = 0x02,
+ TRIM = (L_TRIM|R_TRIM)
+};
+
+static std::string trim( const std::string & s, const Trim trim_r = TRIM ) {
+
+ if (s.empty() || trim_r == NO_TRIM)
+ return s;
+
+ std::string ret(s);
+
+ if (trim_r & L_TRIM) {
+ std::string::size_type p = ret.find_first_not_of(" \t\n");
+ if (p == std::string::npos)
+ return std::string();
+
+ ret = ret.substr(p);
+ }
+
+ if (trim_r & R_TRIM) {
+ std::string::size_type p = ret.find_last_not_of(" \t\n");
+ if (p == std::string::npos)
+ return std::string();
+
+ ret = ret.substr(0, p+1);
+ }
+
+ return ret;
+}
+
+static map<string,string> sysconfig_read(const string &_path) {
+
+ map<string,string> ret;
+ string line;
+
+ ifstream in(_path.c_str());
+ if (in.fail()) {
+ return ret;
+ }
+
+ while(getline( in, line)) {
+
+ if (*line.begin() != '#') {
+
+ string::size_type pos = line.find('=', 0);
+
+ if (pos != string::npos) {
+
+ string key = trim(line.substr(0, pos));
+ string value = trim(line.substr(pos + 1, line.length() - pos - 1));
+
+ if (value.length() >= 2
+ && *(value.begin()) == '"'
+ && *(value.rbegin()) == '"') {
+ value = value.substr( 1, value.length() - 2 );
+ }
+
+ if (value.length() >= 2
+ && *(value.begin()) == '\''
+ && *(value.rbegin()) == '\'' ) {
+ value = value.substr( 1, value.length() - 2 );
+ }
+ ret[key] = value;
+ } // '=' found
+
+ } // not comment
+
+ } // while getline
+ return ret;
+}
+
+static bool should_use_sysconfig()
+{
+ struct stat st;
+ if (stat("/etc/sysconfig", &st) == 0)
+ return (getuid() == 0);
+ return false;
+}
+
+class sysconfig_config_extension : public config_extension {
+
+ map<string,string> _data;
+
+public:
+ sysconfig_config_extension()
+ : _data(sysconfig_read("/etc/sysconfig/proxy")) {
+
+ }
+
+ ~sysconfig_config_extension() {
+ }
+
+ url get_config(url url) throw (runtime_error) {
+ map<string,string>::const_iterator it = _data.find("PROXY_ENABLED");
+ if (it != _data.end() && it->second == "no")
+ return libproxy::url("direct://");
+
+ string key;
+ string proxy;
+
+ // If the URL is an ftp url, try to read the ftp proxy
+ if (url.get_scheme() == "ftp")
+ key = "FTP_PROXY";
+ else if (url.get_scheme() == "http")
+ key = "HTTP_PROXY";
+ else if (url.get_scheme() == "https")
+ key = "HTTPS_PROXY";
+
+ it = _data.find(key);
+ if (it != _data.end())
+ proxy = it->second;
+
+ if (proxy.empty())
+ throw runtime_error("Unable to read configuration");
+
+ return libproxy::url(proxy);
+ }
+
+ string get_ignore(url) {
+ map<string,string>::const_iterator it = _data.find("NO_PROXY");
+ if (it != _data.end())
+ return it->second;
+ return "";
+ }
+
+ // if we are running as root, and the module is used, then
+ // make sure this is the first method tried
+ virtual bool operator<(const base_extension&) const {
+ return true;
+ }
+};
+
+MM_MODULE_INIT_EZ(sysconfig_config_extension, should_use_sysconfig(), NULL, NULL);
+

View File

@ -1,104 +0,0 @@
Index: libproxy/cmake/modules/pacrunner_mozjs.cmk
===================================================================
--- libproxy/cmake/modules/pacrunner_mozjs.cmk (revision 783)
+++ libproxy/cmake/modules/pacrunner_mozjs.cmk (working copy)
@@ -14,6 +14,10 @@
if(MOZJS_FOUND)
include_directories(${MOZJS_INCLUDE_DIRS})
link_directories(${MOZJS_LIBRARY_DIRS})
+ pkg_search_module(MOZJS2 mozilla-js>=2.0b10)
+ if(MOZJS2_FOUND)
+ add_definitions(-DHAVE_MOZJS_2)
+ endif(MOZJS2_FOUND)
else()
set(MOZJS_FOUND 0)
endif()
Index: libproxy/modules/pacrunner_mozjs.cpp
===================================================================
--- libproxy/modules/pacrunner_mozjs.cpp (revision 783)
+++ libproxy/modules/pacrunner_mozjs.cpp (working copy)
@@ -42,12 +42,12 @@
#define INET6_ADDRSTRLEN 46
#endif
-static JSBool dnsResolve(JSContext *cx, JSObject * /*obj*/, uintN /*argc*/, jsval *argv, jsval *rval) {
+static JSBool dnsResolve_(JSContext *cx, jsval hostname, jsval *vp) {
// Get hostname argument
- char *tmp = JS_strdup(cx, JS_GetStringBytes(JS_ValueToString(cx, argv[0])));
+ char *tmp = JS_EncodeString(cx, JS_ValueToString(cx, hostname));
// Set the default return value
- *rval = JSVAL_NULL;
+ JS_SET_RVAL(cx, vp, JSVAL_NULL);
// Look it up
struct addrinfo *info = NULL;
@@ -66,7 +66,7 @@
NI_NUMERICHOST)) goto out;
// We succeeded
- *rval = STRING_TO_JSVAL(JS_NewString(cx, tmp, strlen(tmp)));
+ JS_SET_RVAL(cx, vp, STRING_TO_JSVAL(JS_NewStringCopyN(cx, tmp, strlen(tmp))));
tmp = NULL;
out:
@@ -75,15 +75,20 @@
return true;
}
-static JSBool myIpAddress(JSContext *cx, JSObject *obj, uintN /*argc*/, jsval * /*argv*/, jsval *rval) {
+static JSBool dnsResolve(JSContext *cx, uintN /*argc*/, jsval *vp) {
+ jsval *argv = JS_ARGV(cx, vp);
+ return dnsResolve_(cx, argv[0], vp);
+}
+
+static JSBool myIpAddress(JSContext *cx, uintN /*argc*/, jsval *vp) {
char *hostname = (char *) JS_malloc(cx, 1024);
if (!gethostname(hostname, 1023)) {
- JSString *myhost = JS_NewString(cx, hostname, strlen(hostname));
+ JSString *myhost = JS_NewStringCopyN(cx, hostname, strlen(hostname));
jsval arg = STRING_TO_JSVAL(myhost);
- return dnsResolve(cx, obj, 1, &arg, rval);
+ return dnsResolve_(cx, 1, &arg);
}
JS_free(cx, hostname);
- *rval = JSVAL_NULL;
+ JS_SET_RVAL(cx, vp, JSVAL_NULL);
return true;
}
@@ -111,7 +116,11 @@
//JS_SetOptions(this->jsctx, JSOPTION_VAROBJFIX);
//JS_SetVersion(this->jsctx, JSVERSION_LATEST);
//JS_SetErrorReporter(cx, reportError);
+ #ifdef HAVE_MOZJS_2
+ if (!(this->jsglb = JS_NewCompartmentAndGlobalObject(this->jsctx, &cls, NULL))) goto error;
+ #else
if (!(this->jsglb = JS_NewObject(this->jsctx, &cls, NULL, NULL))) goto error;
+ #endif
if (!JS_InitStandardClasses(this->jsctx, this->jsglb)) goto error;
// Define Javascript functions
@@ -147,15 +156,19 @@
throw bad_alloc();
}
jsval args[2] = {
- STRING_TO_JSVAL(JS_NewString(this->jsctx, tmpurl, strlen(tmpurl))),
- STRING_TO_JSVAL(JS_NewString(this->jsctx, tmphost, strlen(tmphost)))
+ STRING_TO_JSVAL(JS_NewStringCopyN(this->jsctx, tmpurl, strlen(tmpurl))),
+ STRING_TO_JSVAL(JS_NewStringCopyN(this->jsctx, tmphost, strlen(tmphost)))
};
// Find the proxy (call FindProxyForURL())
jsval rval;
JSBool result = JS_CallFunctionName(this->jsctx, this->jsglb, "FindProxyForURL", 2, args, &rval);
if (!result) return "";
- string answer = string(JS_GetStringBytes(JS_ValueToString(this->jsctx, rval)));
+
+ char * tmpanswer = JS_EncodeString(this->jsctx, JS_ValueToString(this->jsctx, rval));
+ string answer = string(tmpanswer);
+ JS_free(this->jsctx, tmpanswer);
+
if (answer == "undefined") return "";
return answer;
}

View File

@ -1,7 +1,37 @@
-------------------------------------------------------------------
Mon Jun 6 21:51:45 UTC 2011 - dimstar@opensuse.org
- Update to version 0.4.7:
+ Support/require xulrunner 2.0+
+ Support linking againgst libwebkit-gtk3 (-DWITH_WEBKIT3=ON)
+ Port to gsettings for gnome3. (-DWITH_GNOME3=ON[default])
+ Issues closed:
- #149: always test for the right python noarch module path
- #155: Cannot compile with Firefox 4
- #156: libproxy should build against webkitgtk-3.0
- #158: Won't compile w/ xulrunner 2.0 final
- #159: libproxy fails with autoconfiguration
"http://proxy.domain.com"
- #131: GSettings-based GNOME plugin
- #150: SUSE sysconfig/proxy config support
- Drop upstream included patches:
+ libproxy-sysconfig-support.patch
+ libproxy-xul2.patch
+ libproxy-backports.patch
- Package gnome3 module if favor_gtk2 is not set (project metadata)
- Add gnome3 module to baselibs.conf and fixup the various
supplements in baselibs.conf (pointed to the pre -config names).
- When building for gnome3 (favor_gtk2 = 0), add BuildRequires:
pkgconfig(gio-2.0) >= 2.26, pkgconfig(gobject-2.0) and
pkgconfig(webkitgtk-3.0)
- When building for gnome2, add BuildRequires:
pkgconfig(gconf-2.0), pkgconfig(gobject-2.0) and replace
libwebkit-devel with pkgconfig(webkit-1.0).
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Apr 19 00:10:03 CEST 2011 - ro@suse.de Tue Apr 19 00:10:03 CEST 2011 - ro@suse.de
- update baselibs.conf - Update baselibs.conf.
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Feb 15 19:16:02 UTC 2011 - dimstar@opensuse.org Tue Feb 15 19:16:02 UTC 2011 - dimstar@opensuse.org

View File

@ -42,8 +42,8 @@ Url: http://code.google.com/p/libproxy/
Name: libproxy Name: libproxy
Group: System/Libraries Group: System/Libraries
Summary: Libproxy provides consistent proxy configuration to applications Summary: Libproxy provides consistent proxy configuration to applications
Version: 0.4.6 Version: 0.4.7
Release: 9 Release: 1
%if 0%{?build_snapshot} %if 0%{?build_snapshot}
%define _sourcename %{_name} %define _sourcename %{_name}
%else %else
@ -53,12 +53,6 @@ Source: http://libproxy.googlecode.com/files/%{_sourcename}.tar.bz2
# Script used for automatic snapshot updates # Script used for automatic snapshot updates
Source98: update-from-svn.sh Source98: update-from-svn.sh
Source99: baselibs.conf Source99: baselibs.conf
# PATCH-FEATURE-UPSTREAM libproxy-sysconfig-support.patch bnc#655483 dmacvicar@novell.com -- Add /etc/sysconfig support. Also tracked at http://code.google.com/p/libproxy/issues/detail?id=150
Patch0: libproxy-sysconfig-support.patch
# PATCH-FEATURE-UPSTREAM libproxy-xul2.patch dimstar@opensuse.org -- Add compatibility to build against xulrunner 2.0
Patch1: libproxy-xul2.patch
# PATCH-FIX-UPSTREAM libproxy-backports.patch dimstar@opensuse.org -- Backport from upstream source: svn revs: 769,771,776,777,778,780,781,782
Patch2: libproxy-backports.patch
License: GPLv2+ ; LGPLv2.1+ License: GPLv2+ ; LGPLv2.1+
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: cmake BuildRequires: cmake
@ -73,7 +67,15 @@ BuildRequires: gconf2-devel
# For directory ownership, but also because we want to rebuild the modules if # For directory ownership, but also because we want to rebuild the modules if
# the library changed # the library changed
BuildRequires: libproxy1 BuildRequires: libproxy1
BuildRequires: libwebkit-devel %if 0%{?favor_gtk2}
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(webkit-1.0)
%else
BuildRequires: pkgconfig(gio-2.0) >= 2.26
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(webkitgtk-3.0)
%endif
%if 0%{?suse_version} %if 0%{?suse_version}
BuildRequires: mozilla-xulrunner%{xulrunner_ver}-devel BuildRequires: mozilla-xulrunner%{xulrunner_ver}-devel
%else %else
@ -212,21 +214,34 @@ libproxy offers the following features: * extremely small core
%else %else
%if 0%{?favor_gtk2}
%package -n libproxy1-config-gnome %package -n libproxy1-config-gnome
License: GPLv2+ ; LGPLv2.1+
Summary: Libproxy module for GNOME configuration Summary: Libproxy module for GNOME configuration
%else
%package -n libproxy1-config-gnome3
Summary: Libproxy module for GNOME3 configuration
%endif
License: GPLv2+ ; LGPLv2.1+
Group: System/Libraries Group: System/Libraries
Requires: libproxy1 = %{version} Requires: libproxy1 = %{version}
%if 0%{?suse_version} %if 0%{?suse_version}
Recommends: libproxy1-pacrunner = %{version} Recommends: libproxy1-pacrunner = %{version}
%if 0%{?favor_gtk2}
Supplements: packageand(libproxy1:gconf2) Supplements: packageand(libproxy1:gconf2)
%else %else
Supplements: packageand(libproxy1:libgio-2_0-0)
%endif
%else
Requires: libproxy1-pacrunner = %{version} Requires: libproxy1-pacrunner = %{version}
%endif %endif
Provides: libproxy-gnome = %{version} Provides: libproxy-gnome = %{version}
Obsoletes: libproxy-gnome < %{version} Obsoletes: libproxy-gnome < %{version}
%if 0%{?favor_gtk2}
%description -n libproxy1-config-gnome %description -n libproxy1-config-gnome
%else
%description -n libproxy1-config-gnome3
%endif
A module to extend libproxy with capabilities to query GNOME about A module to extend libproxy with capabilities to query GNOME about
proxy settings. proxy settings.
@ -299,9 +314,6 @@ about network configuration changes.
%prep %prep
%setup -q -n %{_sourcename} %setup -q -n %{_sourcename}
mkdir build mkdir build
%patch0 -p0
%patch1 -p0
%patch2 -p0
%build %build
cd build cd build
@ -342,6 +354,13 @@ cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_CONFIG_NAME=RelWithDebInfo \ -DCMAKE_INSTALL_CONFIG_NAME=RelWithDebInfo \
%endif %endif
%if 0%{?favor_gtk2}
-DWITH_WEBKIT3=OFF \
-DWITH_GNOME3=OFF \
%else
-DWITH_WEBKIT3=ON \
-DWITH_GNOME3=ON \
%endif
.. ..
%{__make} VERBOSE=1 %{__make} VERBOSE=1
@ -445,10 +464,17 @@ make test
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_kde4.so %{_libdir}/libproxy-%{version}/modules/config_kde4.so
%if 0%{?favor_gtk2}
%files -n libproxy1-config-gnome %files -n libproxy1-config-gnome
%defattr(-, root, root) %defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_gnome.so %{_libdir}/libproxy-%{version}/modules/config_gnome.so
%{_libexecdir}/libproxy-%{version}/pxgconf %{_libexecdir}/libproxy-%{version}/pxgconf
%else
%files -n libproxy1-config-gnome3
%defattr(-, root, root)
%{_libdir}/libproxy-%{version}/modules/config_gnome3.so
%{_libexecdir}/libproxy-%{version}/pxgsettings
%endif
%files -n libproxy1-networkmanager %files -n libproxy1-networkmanager
%defattr(-, root, root) %defattr(-, root, root)