* mod_python 3.2.10. Removed the patch to get it to work with Apache 2.2.
svn path=/nixpkgs/trunk/; revision=6473
This commit is contained in:
parent
992a3da5e2
commit
827d2b180e
@ -1,16 +1,16 @@
|
|||||||
{stdenv, fetchurl, apacheHttpd, python}:
|
{stdenv, fetchurl, apacheHttpd, python}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "mod_python-3.2.8";
|
name = "mod_python-3.2.10";
|
||||||
|
|
||||||
builder = ./builder.sh;
|
builder = ./builder.sh;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = http://apache.nedmirror.nl/httpd/modpython/mod_python-3.2.8.tgz;
|
url = http://apache.surfnet.nl/httpd/modpython/mod_python-3.2.10.tgz;
|
||||||
md5 = "d03452979a6a334f73cc2b95b39db331";
|
md5 = "cc6439f546a6e70cfff7ca51b8c62541";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [./install.patch ./jg-20060204-1.patch];
|
patches = [./install.patch];
|
||||||
|
|
||||||
inherit apacheHttpd;
|
inherit apacheHttpd;
|
||||||
buildInputs = [apacheHttpd python];
|
buildInputs = [apacheHttpd python];
|
||||||
|
@ -1,265 +0,0 @@
|
|||||||
diff -rc mod_python-3.2.8-orig/src/connobject.c mod_python-3.2.8/src/connobject.c
|
|
||||||
*** mod_python-3.2.8-orig/src/connobject.c 2006-02-02 22:30:55.000000000 +0100
|
|
||||||
--- mod_python-3.2.8/src/connobject.c 2006-02-28 11:18:01.000000000 +0100
|
|
||||||
***************
|
|
||||||
*** 319,332 ****
|
|
||||||
{
|
|
||||||
PyObject *addrobj = makeipaddr(addr);
|
|
||||||
PyObject *ret = NULL;
|
|
||||||
if (addrobj) {
|
|
||||||
apr_port_t port;
|
|
||||||
! if(apr_sockaddr_port_get(&port, addr)==APR_SUCCESS) {
|
|
||||||
! ret = Py_BuildValue("Oi", addrobj, port );
|
|
||||||
! }
|
|
||||||
! else {
|
|
||||||
! PyErr_SetString(PyExc_SystemError,"apr_sockaddr_port_get failure");
|
|
||||||
! }
|
|
||||||
Py_DECREF(addrobj);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
--- 319,332 ----
|
|
||||||
{
|
|
||||||
PyObject *addrobj = makeipaddr(addr);
|
|
||||||
PyObject *ret = NULL;
|
|
||||||
+
|
|
||||||
+ /* apr_sockaddr_port_get was deprecated and removed in apr 1.x
|
|
||||||
+ * Access the port directly instead
|
|
||||||
+ */
|
|
||||||
if (addrobj) {
|
|
||||||
apr_port_t port;
|
|
||||||
! port = addr->port;
|
|
||||||
! ret = Py_BuildValue("Oi", addrobj, port );
|
|
||||||
Py_DECREF(addrobj);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
diff -rc mod_python-3.2.8-orig/src/include/mod_python.h.in mod_python-3.2.8/src/include/mod_python.h.in
|
|
||||||
*** mod_python-3.2.8-orig/src/include/mod_python.h.in 2005-09-19 19:51:03.000000000 +0200
|
|
||||||
--- mod_python-3.2.8/src/include/mod_python.h.in 2006-02-28 11:18:01.000000000 +0100
|
|
||||||
***************
|
|
||||||
*** 179,184 ****
|
|
||||||
--- 179,219 ----
|
|
||||||
|
|
||||||
#endif /* !Mp_MOD_PYTHON_H */
|
|
||||||
|
|
||||||
+ #ifndef APR_STATUS_IS_SUCCESS
|
|
||||||
+ /* APR_STATUS_IS_SUCCESS is defined in apr_errno.h for apr versions < 1.x.
|
|
||||||
+ * It was dropped in the current apr version 1.x, which causes a problem
|
|
||||||
+ * for mod_python connobject.c and filterobject.c in Apache 2.2.
|
|
||||||
+ * Occurrences of APR_STATUS_IS_SUCCESS in mod_python should be replaced
|
|
||||||
+ * with something like:
|
|
||||||
+ * if (s != APR_SUCCESS)
|
|
||||||
+ * //error handling code
|
|
||||||
+ *
|
|
||||||
+ * Their is some uncertainty if the APR_OS_START_SYSERR part of
|
|
||||||
+ * the test is significant in Win32 (it likely is not), but to be safe
|
|
||||||
+ * APR_STATUS_IS_SUCCESS is reproduced here for use with Apache 2.2.
|
|
||||||
+ * The APR_STATUS_IS_SUCCESS should be considered as deprecated.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ #if defined(OS2) && !defined(DOXYGEN)
|
|
||||||
+ #define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS \
|
|
||||||
+ || (s) == APR_OS_START_SYSERR + NO_ERROR)
|
|
||||||
+
|
|
||||||
+ #elif defined(WIN32) && !defined(DOXYGEN) /* !defined(OS2) */
|
|
||||||
+ #define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS \
|
|
||||||
+ || (s) == APR_OS_START_SYSERR + ERROR_SUCCESS)
|
|
||||||
+
|
|
||||||
+ #elif defined(NETWARE) && !defined(DOXYGEN) /* !defined(OS2) && !defined(WIN32) */
|
|
||||||
+ #define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS)
|
|
||||||
+
|
|
||||||
+ #else /* !defined(NETWARE) && !defined(OS2) && !defined(WIN32) */
|
|
||||||
+
|
|
||||||
+ /** no error */
|
|
||||||
+ #define APR_STATUS_IS_SUCCESS(s) ((s) == APR_SUCCESS)
|
|
||||||
+ #endif
|
|
||||||
+
|
|
||||||
+ #endif /* !APR_STATUS_IS_SUCCESS */
|
|
||||||
+
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
# makes emacs go into C mode
|
|
||||||
### Local Variables:
|
|
||||||
diff -rc mod_python-3.2.8-orig/test/httpdconf.py mod_python-3.2.8/test/httpdconf.py
|
|
||||||
*** mod_python-3.2.8-orig/test/httpdconf.py 2005-09-13 22:35:57.000000000 +0200
|
|
||||||
--- mod_python-3.2.8/test/httpdconf.py 2006-02-28 11:18:01.000000000 +0100
|
|
||||||
***************
|
|
||||||
*** 37,44 ****
|
|
||||||
class Container:
|
|
||||||
|
|
||||||
def __init__(self, *args):
|
|
||||||
! self.args = args
|
|
||||||
self.indent = 0
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
|
|
||||||
--- 37,47 ----
|
|
||||||
class Container:
|
|
||||||
|
|
||||||
def __init__(self, *args):
|
|
||||||
! self.args = list(args)
|
|
||||||
self.indent = 0
|
|
||||||
+
|
|
||||||
+ def append(self, value):
|
|
||||||
+ self.args.append(value)
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
|
|
||||||
***************
|
|
||||||
*** 80,85 ****
|
|
||||||
--- 83,98 ----
|
|
||||||
def __init__(self, val):
|
|
||||||
Directive.__init__(self, self.__class__.__name__, val)
|
|
||||||
|
|
||||||
+ class AuthBasicAuthoritative(Directive):
|
|
||||||
+ # New in Apache 2.2
|
|
||||||
+ def __init__(self, val):
|
|
||||||
+ Directive.__init__(self, self.__class__.__name__, val)
|
|
||||||
+
|
|
||||||
+ class AuthBasicProvider(Directive):
|
|
||||||
+ # New in Apache 2.2
|
|
||||||
+ def __init__(self, val):
|
|
||||||
+ Directive.__init__(self, self.__class__.__name__, val)
|
|
||||||
+
|
|
||||||
class AuthType(Directive):
|
|
||||||
def __init__(self, val):
|
|
||||||
Directive.__init__(self, self.__class__.__name__, val)
|
|
||||||
***************
|
|
||||||
*** 112,117 ****
|
|
||||||
--- 125,134 ----
|
|
||||||
def __init__(self, dir, *args):
|
|
||||||
ContainerTag.__init__(self, self.__class__.__name__, dir, args)
|
|
||||||
|
|
||||||
+ class KeepAliveTimeout(Directive):
|
|
||||||
+ def __init__(self, val):
|
|
||||||
+ Directive.__init__(self, self.__class__.__name__, val)
|
|
||||||
+
|
|
||||||
class Listen(Directive):
|
|
||||||
def __init__(self, val):
|
|
||||||
Directive.__init__(self, self.__class__.__name__, val)
|
|
||||||
diff -rc mod_python-3.2.8-orig/test/test.py mod_python-3.2.8/test/test.py
|
|
||||||
*** mod_python-3.2.8-orig/test/test.py 2006-02-19 20:51:17.000000000 +0100
|
|
||||||
--- mod_python-3.2.8/test/test.py 2006-02-28 11:18:01.000000000 +0100
|
|
||||||
***************
|
|
||||||
*** 220,225 ****
|
|
||||||
--- 220,251 ----
|
|
||||||
s = '"%s"' % s
|
|
||||||
return s
|
|
||||||
|
|
||||||
+ def get_apache_version():
|
|
||||||
+
|
|
||||||
+ print "Checking Apache version...."
|
|
||||||
+ httpd = quoteIfSpace(HTTPD)
|
|
||||||
+ cmd = '%s -v' % (httpd)
|
|
||||||
+ (stdin,stdout) = os.popen2(cmd)
|
|
||||||
+
|
|
||||||
+ version_str = None
|
|
||||||
+ for line in stdout:
|
|
||||||
+ if line.startswith('Server version'):
|
|
||||||
+ version_str = line.strip()
|
|
||||||
+ break
|
|
||||||
+
|
|
||||||
+ if version_str:
|
|
||||||
+ version_str = version_str.split('/')[1]
|
|
||||||
+ major,minor,patch = version_str.split('.',3)
|
|
||||||
+ version = '%s.%s' % (major,minor)
|
|
||||||
+ else:
|
|
||||||
+
|
|
||||||
+ print "Can't determine Apache version. Assuming 2.0"
|
|
||||||
+ version = '2.0'
|
|
||||||
+ print version
|
|
||||||
+ return version
|
|
||||||
+
|
|
||||||
+ APACHE_VERSION = get_apache_version()
|
|
||||||
+
|
|
||||||
class HttpdCtrl:
|
|
||||||
# a mixin providing ways to control httpd
|
|
||||||
|
|
||||||
***************
|
|
||||||
*** 289,302 ****
|
|
||||||
Listen(PORT),
|
|
||||||
PythonOption('PythonOptionTest sample_value'),
|
|
||||||
DocumentRoot(DOCUMENT_ROOT),
|
|
||||||
! LoadModule("python_module %s" % quoteIfSpace(MOD_PYTHON_SO)),
|
|
||||||
! IfModule("!mod_auth.c",
|
|
||||||
LoadModule("auth_module %s" %
|
|
||||||
quoteIfSpace(os.path.join(modpath, "mod_auth.so")))))
|
|
||||||
|
|
||||||
f = open(CONFIG, "w")
|
|
||||||
f.write(str(s))
|
|
||||||
- f.write("\n# --APPENDED-- \n\n"+append)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
def startHttpd(self,extra=''):
|
|
||||||
--- 315,340 ----
|
|
||||||
Listen(PORT),
|
|
||||||
PythonOption('PythonOptionTest sample_value'),
|
|
||||||
DocumentRoot(DOCUMENT_ROOT),
|
|
||||||
! LoadModule("python_module %s" % quoteIfSpace(MOD_PYTHON_SO)))
|
|
||||||
!
|
|
||||||
! if APACHE_VERSION == '2.2':
|
|
||||||
! # mod_auth has been split into mod_auth_basic and some other modules
|
|
||||||
! s.append(IfModule("!mod_auth_basic.c",
|
|
||||||
! LoadModule("auth_basic_module %s" %
|
|
||||||
! quoteIfSpace(os.path.join(modpath, "mod_auth_basic.so")))))
|
|
||||||
!
|
|
||||||
! # Default KeepAliveTimeout is 5 for apache 2.2, but 15 in apache 2.0
|
|
||||||
! # Explicitly set the value so it's the same as 2.0
|
|
||||||
! s.append(KeepAliveTimeout("15"))
|
|
||||||
! else:
|
|
||||||
! s.append(IfModule("!mod_auth.c",
|
|
||||||
LoadModule("auth_module %s" %
|
|
||||||
quoteIfSpace(os.path.join(modpath, "mod_auth.so")))))
|
|
||||||
|
|
||||||
+ s.append("\n# --APPENDED-- \n\n"+append)
|
|
||||||
+
|
|
||||||
f = open(CONFIG, "w")
|
|
||||||
f.write(str(s))
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
def startHttpd(self,extra=''):
|
|
||||||
***************
|
|
||||||
*** 595,601 ****
|
|
||||||
|
|
||||||
def test_req_requires_conf(self):
|
|
||||||
|
|
||||||
! c = VirtualHost("*",
|
|
||||||
ServerName("test_req_requires"),
|
|
||||||
DocumentRoot(DOCUMENT_ROOT),
|
|
||||||
Directory(DOCUMENT_ROOT,
|
|
||||||
--- 633,658 ----
|
|
||||||
|
|
||||||
def test_req_requires_conf(self):
|
|
||||||
|
|
||||||
! if APACHE_VERSION == '2.2':
|
|
||||||
! # Apache 2.2 needs AuthBasicAuthoritative Off
|
|
||||||
! # This is necessary when combining mod_auth_basic with third-party
|
|
||||||
! # modules that are not configured with the AuthBasicProvider
|
|
||||||
! # directive.
|
|
||||||
! c = VirtualHost("*",
|
|
||||||
! ServerName("test_req_requires"),
|
|
||||||
! DocumentRoot(DOCUMENT_ROOT),
|
|
||||||
! Directory(DOCUMENT_ROOT,
|
|
||||||
! SetHandler("mod_python"),
|
|
||||||
! AuthName("blah"),
|
|
||||||
! AuthType("basic"),
|
|
||||||
! Require("valid-user"),
|
|
||||||
! AuthBasicAuthoritative("Off"),
|
|
||||||
! PythonAuthenHandler("tests::req_requires"),
|
|
||||||
! PythonDebug("On")))
|
|
||||||
!
|
|
||||||
! else:
|
|
||||||
! # This configuration is suitable for Apache 2.0
|
|
||||||
! c = VirtualHost("*",
|
|
||||||
ServerName("test_req_requires"),
|
|
||||||
DocumentRoot(DOCUMENT_ROOT),
|
|
||||||
Directory(DOCUMENT_ROOT,
|
|
||||||
***************
|
|
||||||
*** 605,610 ****
|
|
||||||
--- 662,668 ----
|
|
||||||
Require("valid-user"),
|
|
||||||
PythonAuthenHandler("tests::req_requires"),
|
|
||||||
PythonDebug("On")))
|
|
||||||
+
|
|
||||||
return str(c)
|
|
||||||
|
|
||||||
def test_req_requires(self):
|
|
Loading…
Reference in New Issue
Block a user