Add support for xulrunner 2.0 from trunk
This commit is contained in:
parent
608917bf89
commit
d4a685a545
307
libproxy-trunk.patch
Normal file
307
libproxy-trunk.patch
Normal file
@ -0,0 +1,307 @@
|
||||
diff -ur libproxy-0.4.6/libproxy/cmake/modules/pacrunner_mozjs.cmk libproxy-trunk/libproxy/cmake/modules/pacrunner_mozjs.cmk
|
||||
--- libproxy-0.4.6/libproxy/cmake/modules/pacrunner_mozjs.cmk 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/libproxy/cmake/modules/pacrunner_mozjs.cmk 2011-03-29 12:12:09.833395003 +0200
|
||||
@@ -7,16 +7,19 @@
|
||||
include_directories("${MOZJS_INCLUDE_DIR}")
|
||||
endif()
|
||||
elseif(NOT APPLE)
|
||||
- set(MOZJS_SEARCH_ORDER "xulrunner-js;firefox-js;mozilla-js;seamonkey-js" CACHE STRING "MozJS search order")
|
||||
+ set(MOZJS_SEARCH_ORDER "mozilla-js;xulrunner-js;firefox-js;seamonkey-js" CACHE STRING "MozJS search order")
|
||||
option(WITH_MOZJS "Search for MOZJS package" ON)
|
||||
if (WITH_MOZJS)
|
||||
- pkg_search_module(MOZJS ${MOZJS_SEARCH_ORDER})
|
||||
- if(MOZJS_FOUND)
|
||||
- include_directories(${MOZJS_INCLUDE_DIRS})
|
||||
- link_directories(${MOZJS_LIBRARY_DIRS})
|
||||
- else()
|
||||
- set(MOZJS_FOUND 0)
|
||||
- endif()
|
||||
+ foreach(MOZJSLIB ${MOZJS_SEARCH_ORDER})
|
||||
+ pkg_search_module(MOZJS ${MOZJSLIB}>=2.0)
|
||||
+ if(MOZJS_FOUND)
|
||||
+ include_directories(${MOZJS_INCLUDE_DIRS})
|
||||
+ link_directories(${MOZJS_LIBRARY_DIRS})
|
||||
+ break()
|
||||
+ else()
|
||||
+ set(MOZJS_FOUND 0)
|
||||
+ endif()
|
||||
+ endforeach()
|
||||
else()
|
||||
set(MOZJS_FOUND 0)
|
||||
endif()
|
||||
diff -ur libproxy-0.4.6/libproxy/cmake/modules.cmk libproxy-trunk/libproxy/cmake/modules.cmk
|
||||
--- libproxy-0.4.6/libproxy/cmake/modules.cmk 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/libproxy/cmake/modules.cmk 2011-03-29 12:12:09.856395005 +0200
|
||||
@@ -14,11 +14,12 @@
|
||||
include(cmake/modules/config_macosx.cmk)
|
||||
include(cmake/modules/network_networkmanager.cmk)
|
||||
include(cmake/modules/pacrunner_mozjs.cmk)
|
||||
+include(cmake/modules/pacrunner_natus.cmk)
|
||||
include(cmake/modules/pacrunner_webkit.cmk)
|
||||
|
||||
# Build the pacrunner into libproxy unless we are building for multiple engines
|
||||
set(BIPR 1)
|
||||
-if(MOZJS_FOUND AND WEBKIT_FOUND)
|
||||
+if((MOZJS_FOUND AND WEBKIT_FOUND) OR (MOZJS_FOUND AND NATUS_FOUND) OR (WEBKIT_FOUND AND NATUS_FOUND))
|
||||
set(BIPR 0)
|
||||
endif()
|
||||
|
||||
@@ -36,6 +37,7 @@
|
||||
px_module(ignore_ip 1 1)
|
||||
px_module(network_networkmanager "${NM_FOUND}" 0 ${NM_LIBRARIES})
|
||||
px_module(pacrunner_mozjs "${MOZJS_FOUND}" ${BIPR} ${MOZJS_LIBRARIES})
|
||||
+px_module(pacrunner_natus "${NATUS_FOUND}" ${BIPR} ${NATUS_LIBRARIES})
|
||||
px_module(pacrunner_webkit "${WEBKIT_FOUND}" ${BIPR} ${WEBKIT_LIBRARIES})
|
||||
px_module(wpad_dns_alias 1 1)
|
||||
message("")
|
||||
diff -ur libproxy-0.4.6/libproxy/libproxy-1.0.pc.in libproxy-trunk/libproxy/libproxy-1.0.pc.in
|
||||
--- libproxy-0.4.6/libproxy/libproxy-1.0.pc.in 2011-03-29 15:28:19.781395005 +0200
|
||||
+++ libproxy-trunk/libproxy/libproxy-1.0.pc.in 2011-03-29 12:12:11.029395005 +0200
|
||||
@@ -4,6 +4,6 @@
|
||||
|
||||
Name: libproxy-1.0
|
||||
Description: Proxy Configuration Library
|
||||
-Version: 0.4.6
|
||||
+Version: @PROJECT_VERSION@
|
||||
Libs: -L${libdir} -lproxy
|
||||
Cflags: -I${includedir}
|
||||
diff -ur libproxy-0.4.6/libproxy/modules/config_gnome.cpp libproxy-trunk/libproxy/modules/config_gnome.cpp
|
||||
--- libproxy-0.4.6/libproxy/modules/config_gnome.cpp 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/libproxy/modules/config_gnome.cpp 2011-03-29 12:12:10.920395004 +0200
|
||||
@@ -102,10 +102,8 @@
|
||||
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 @@
|
||||
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)
|
||||
diff -ur libproxy-0.4.6/libproxy/modules/pacrunner_mozjs.cpp libproxy-trunk/libproxy/modules/pacrunner_mozjs.cpp
|
||||
--- libproxy-0.4.6/libproxy/modules/pacrunner_mozjs.cpp 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/libproxy/modules/pacrunner_mozjs.cpp 2011-03-29 12:12:10.915395005 +0200
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -91,7 +96,7 @@
|
||||
// This MUST be a static global
|
||||
static JSClass cls = {
|
||||
"global", JSCLASS_GLOBAL_FLAGS,
|
||||
- JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub,
|
||||
+ JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
|
||||
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub,
|
||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
};
|
||||
@@ -111,7 +116,7 @@
|
||||
//JS_SetOptions(this->jsctx, JSOPTION_VAROBJFIX);
|
||||
//JS_SetVersion(this->jsctx, JSVERSION_LATEST);
|
||||
//JS_SetErrorReporter(cx, reportError);
|
||||
- if (!(this->jsglb = JS_NewObject(this->jsctx, &cls, NULL, NULL))) goto error;
|
||||
+ if (!(this->jsglb = JS_NewCompartmentAndGlobalObject(this->jsctx, &cls, NULL))) goto error;
|
||||
if (!JS_InitStandardClasses(this->jsctx, this->jsglb)) goto error;
|
||||
|
||||
// Define Javascript functions
|
||||
@@ -147,15 +152,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;
|
||||
}
|
||||
diff -ur libproxy-0.4.6/libproxy/url.cpp libproxy-trunk/libproxy/url.cpp
|
||||
--- libproxy-0.4.6/libproxy/url.cpp 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/libproxy/url.cpp 2011-03-29 12:12:11.023395004 +0200
|
||||
@@ -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 @@
|
||||
// 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 @@
|
||||
|
||||
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 @@
|
||||
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 @@
|
||||
/* 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 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
diff -ur libproxy-0.4.6/libproxy/url.hpp libproxy-trunk/libproxy/url.hpp
|
||||
--- libproxy-0.4.6/libproxy/url.hpp 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/libproxy/url.hpp 2011-03-29 12:12:11.024395005 +0200
|
||||
@@ -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 @@
|
||||
|
||||
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 = "");
|
||||
|
||||
diff -ur libproxy-0.4.6/NEWS libproxy-trunk/NEWS
|
||||
--- libproxy-0.4.6/NEWS 2010-09-01 22:23:34.000000000 +0200
|
||||
+++ libproxy-trunk/NEWS 2011-03-29 12:12:11.303395004 +0200
|
||||
@@ -1,3 +1,7 @@
|
||||
+New in version 0.4.7
|
||||
+==============================
|
||||
+* Support/require xulrunner 2.0+
|
||||
+
|
||||
New in version 0.4.6
|
||||
==============================
|
||||
* Fixed a crash in the URL parser
|
@ -3,10 +3,10 @@
|
||||
#0 to bootstrap libproxy circle dependencies - 1 normal case
|
||||
%if 1
|
||||
%if 0%{?fedora} < 15
|
||||
%global gecko_version 1.9.2
|
||||
%global _with_mozjs 1
|
||||
%global _with_webkit 1
|
||||
%endif
|
||||
%global gecko_version 2.0
|
||||
%global _with_mozjs 1
|
||||
%global _with_gnome 1
|
||||
%global _with_kde 1
|
||||
%global _with_networkmanager 1
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
Name: libproxy
|
||||
Version: 0.4.6
|
||||
Release: 3%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: A library handling all the details of proxy configuration
|
||||
|
||||
Group: System Environment/Libraries
|
||||
@ -23,10 +23,11 @@ License: LGPLv2+
|
||||
URL: http://code.google.com/p/libproxy/
|
||||
Source0: http://libproxy.googlecode.com/files/libproxy-%{version}.tar.gz
|
||||
Patch0: libproxy-0.4.6-python_noarch.patch
|
||||
Patch1: libproxy-trunk.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
%{?_with_python:BuildRequires: python-devel}
|
||||
BuildRequires: libmodman-devel >= 2.0.0
|
||||
BuildRequires: libmodman-devel >= 2.0.1
|
||||
BuildRequires: cmake >= 2.6.0
|
||||
|
||||
# gnome
|
||||
@ -35,7 +36,7 @@ BuildRequires: GConf2-devel
|
||||
BuildRequires: libXmu-devel
|
||||
}
|
||||
# mozjs
|
||||
%{?_with_mozjs:BuildRequires: gecko-devel}
|
||||
%{?_with_mozjs:BuildRequires: gecko-devel >= %{gecko_version}}
|
||||
# NetworkManager
|
||||
%{?_with_networkmanager:
|
||||
BuildRequires: NetworkManager-devel
|
||||
@ -161,9 +162,7 @@ developing applications that use %{name}.
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1 -b.pynoarch
|
||||
|
||||
#Fix version field in pkg-config
|
||||
sed -i -e 's|@PROJECT_VERSION@|%{version}|' libproxy/libproxy-1.0.pc.in
|
||||
%patch1 -p1 -b .trunk
|
||||
|
||||
|
||||
%build
|
||||
@ -252,6 +251,9 @@ rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Mar 29 2011 Nicolas Chauvet <kwizart@gmail.com> - 0.4.6-4
|
||||
- Add support for xulrunner 2.0 from trunk
|
||||
|
||||
* Wed Nov 24 2010 Nicolas Chauvet <kwizart@gmail.com> - 0.4.6-3
|
||||
- Fix mozjs/webkit obsoletion - rhbz#656849
|
||||
- Workaround unreliable Version field in pkg-config - rhbz#656484
|
||||
|
Loading…
Reference in New Issue
Block a user