Index: head/www/py-cherrypy/Makefile =================================================================== --- head/www/py-cherrypy/Makefile (revision 537988) +++ head/www/py-cherrypy/Makefile (revision 537989) @@ -1,65 +1,65 @@ # Created by: Nicola Vitale # $FreeBSD$ PORTNAME= cherrypy PORTVERSION= 5.4.0 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= www python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DISTNAME= CherryPy-${PORTVERSION} MAINTAINER= nivit@FreeBSD.org COMMENT= Pythonic, object-oriented web development framework LICENSE= BSD3CLAUSE EXAMPLES_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}cheetah>=2.4.4:devel/py-cheetah@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}sqlobject>=1.5.1:databases/py-sqlobject@${PY_FLAVOR} EXAMPLESDIR= ${PREFIX}/share/examples/${PKGNAMEPREFIX}${PORTNAME} OPTIONS_DEFINE= EXAMPLES PORTEXAMPLES= * USES= python shebangfix USE_PYTHON= distutils autoplist concurrent SHEBANG_FILES= cherrypy/cherryd .include # handle tutorial separately, and remove cherrypy.process from data_files # otherwise it confuses build_py.get_outputs() and breaks PYDISTUTILS_AUTOPLIST post-patch: @${REINPLACE_CMD} -e '99,106d' -e '78s/"cherrypy.tutorial",//1' \ -e '88d' -i.bak ${WRKSRC}/${PYSETUP} .if ${PORT_OPTIONS:MEXAMPLES} post-install: @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} (cd ${WRKSRC}/cherrypy/tutorial && \ ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) (cd ${STAGEDIR}${PREFIX} && \ ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ -d ${EXAMPLESDIR} ${EXAMPLESDIR:S,${PREFIX}/,,}) .endif .include .if ${PYTHON_REL} >= 3000 # devel/py-cheetah doesn't yet build with Python 3 .undef EXAMPLES_RUN_DEPENDS .endif # The package cherrypy.wsgiserver includes both Python 2 and Python 3 modules, # so it breaks PYDISTUTILS_AUTOPLIST. # Instead of defining a cherrypy_build_py.get_outputs() method in setup.py # we simply remove unwanted modules (see cherrypy_build_py() in setup.py) post-extract: .if ${PYTHON_REL} >= 3000 @(cd ${WRKSRC}/cherrypy && ${RM} _cpcompat_subprocess.py && \ cd wsgiserver && ${RM} ssl_pyopenssl.py wsgiserver2.py) .else @${RM} ${WRKSRC}/cherrypy/wsgiserver/wsgiserver3.py .endif .include Index: head/www/py-cherrypy/files/patch-html =================================================================== --- head/www/py-cherrypy/files/patch-html (nonexistent) +++ head/www/py-cherrypy/files/patch-html (revision 537989) @@ -0,0 +1,60 @@ +https://github.com/cherrypy/cherrypy/commit/c65dc279d1d8 + +--- cherrypy/_cpcompat.py.orig 2016-05-11 00:35:35 UTC ++++ cherrypy/_cpcompat.py +@@ -357,3 +357,19 @@ class SetDaemonProperty: + + if sys.version_info < (2, 6): + daemon = property(__get_daemon, __set_daemon) ++ ++# html module come in 3.2 version ++try: ++ from html import escape ++except ImportError: ++ from cgi import escape ++ ++# html module needed the argument quote=False because in cgi the default ++# is False. With quote=True the results differ. ++ ++def escape_html(s, escape_quote=False): ++ """Replace special characters "&", "<" and ">" to HTML-safe sequences. ++ ++ When escape_quote=True, escape (') and (") chars. ++ """ ++ return escape(s, quote=escape_quote) +--- cherrypy/_cperror.py.orig 2016-05-11 00:35:35 UTC ++++ cherrypy/_cperror.py +@@ -115,9 +115,9 @@ Note that you have to explicitly set + and not simply return an error message as a result. + """ + +-from cgi import escape as _escape + from sys import exc_info as _exc_info + from traceback import format_exception as _format_exception ++from cherrypy._cpcompat import escape_html + from cherrypy._cpcompat import basestring, bytestr, iteritems, ntob + from cherrypy._cpcompat import tonative, urljoin as _urljoin + from cherrypy.lib import httputil as _httputil +@@ -489,7 +489,7 @@ def get_error_page(status, **kwargs): + if v is None: + kwargs[k] = "" + else: +- kwargs[k] = _escape(kwargs[k]) ++ kwargs[k] = escape_html(kwargs[k]) + + # Use a custom template or callable for the error page? + pages = cherrypy.serving.request.error_page +--- cherrypy/test/test_compat.py.orig 2016-05-11 00:35:35 UTC ++++ cherrypy/test/test_compat.py +@@ -17,3 +17,11 @@ class StringTester(unittest.TestCase): + if compat.py3k: + raise nose.SkipTest("Only useful on Python 2") + self.assertRaises(Exception, compat.ntob, unicode('fight')) ++ ++ ++class EscapeTester(unittest.TestCase): ++ """Class to test escape_html function from _cpcompat.""" ++ ++ def test_escape_quote(self): ++ """test_escape_quote - Verify the output for &<>"' chars.""" ++ self.assertEqual("""xx&<>"aa'""", compat.escape_html("""xx&<>"aa'""")) Property changes on: head/www/py-cherrypy/files/patch-html ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property