[packages/minify] - add patch to be able increse yuicompressor stack size, PR47; rel 9

glen glen at pld-linux.org
Tue Jan 15 14:16:57 CET 2013


commit 5018c983a155064f2057041f23e5b71c5787b300
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Tue Jan 15 15:15:50 2013 +0200

    - add patch to be able increse yuicompressor stack size, PR47; rel 9

 8c54519b32b2230293be60c5f9a8f514401171fc.patch | 120 +++++++++++++++++++++++++
 minify.spec                                    |   5 +-
 2 files changed, 124 insertions(+), 1 deletion(-)
---
diff --git a/minify.spec b/minify.spec
index 16c110f..479178d 100644
--- a/minify.spec
+++ b/minify.spec
@@ -3,7 +3,7 @@
 Summary:	Combines, minifies, and caches JavaScript and CSS files on demand to speed up page loads
 Name:		minify
 Version:	2.1.5
-Release:	8
+Release:	9
 License:	New BSD License
 Group:		Applications/WWW
 #Source0:	https://minify.googlecode.com/files/%{name}-%{version}.zip
@@ -17,6 +17,8 @@ Patch2:		yui-path.patch
 Patch3:		https://github.com/glensc/minify/commit/a82d70b0baaa85c8ca234e39918d678e2b4bea76.patch
 # https://github.com/mrclay/minify/pull/43
 Patch4:		https://github.com/glensc/minify/commit/32abbfa328dcccf785452dd9cd032f224e378645.patch
+# https://github.com/mrclay/minify/pull/47
+Patch5:		https://github.com/glensc/minify/commit/8c54519b32b2230293be60c5f9a8f514401171fc.patch
 Source1:	apache.conf
 Source2:	lighttpd.conf
 URL:		http://code.google.com/p/minify/
@@ -88,6 +90,7 @@ mv *-minify-*/* .
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
 %undos UPGRADING.txt
 
 find -type f | xargs chmod a-x
diff --git a/8c54519b32b2230293be60c5f9a8f514401171fc.patch b/8c54519b32b2230293be60c5f9a8f514401171fc.patch
new file mode 100644
index 0000000..17ae9ea
--- /dev/null
+++ b/8c54519b32b2230293be60c5f9a8f514401171fc.patch
@@ -0,0 +1,120 @@
+From 8c54519b32b2230293be60c5f9a8f514401171fc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= <glen at delfi.ee>
+Date: Tue, 15 Jan 2013 14:53:45 +0200
+Subject: [PATCH] Minify_YUICompressor: add support for increasing stack size
+
+---
+ min/lib/Minify/YUICompressor.php      |   14 +++++++---
+ min_unit_tests/test_Minify_YuiCSS.php |   46 +++++++++++++++++++++++++++++++++
+ min_unit_tests/test_all.php           |    1 +
+ 3 files changed, 58 insertions(+), 3 deletions(-)
+ create mode 100644 min_unit_tests/test_Minify_YuiCSS.php
+
+diff --git a/min/lib/Minify/YUICompressor.php b/min/lib/Minify/YUICompressor.php
+index ef44629..8e6bfcb 100644
+--- a/min/lib/Minify/YUICompressor.php
++++ b/min/lib/Minify/YUICompressor.php
+@@ -13,14 +13,17 @@
+  * Java environment.
+  * 
+  * <code>
+- * Minify_YUICompressor::$jarFile = '/path/to/yuicompressor-2.3.5.jar';
++ * Minify_YUICompressor::$jarFile = '/path/to/yuicompressor-2.4.6.jar';
+  * Minify_YUICompressor::$tempDir = '/tmp';
+  * $code = Minify_YUICompressor::minifyJs(
+  *   $code
+  *   ,array('nomunge' => true, 'line-break' => 1000)
+  * );
+  * </code>
+- * 
++ *
++ * Note: In case you run out stack (default is 512k), you may increase stack size in $options:
++ *   array('stack-size' => '2048k')
++ *
+  * @todo unit tests, $options docs
+  * 
+  * @package Minify
+@@ -108,10 +111,15 @@ private static function _getCmd($userOptions, $type, $tmpFile)
+                 ,'nomunge' => false
+                 ,'preserve-semi' => false
+                 ,'disable-optimizations' => false
++	            ,'stack-size' => ''
+             )
+             ,$userOptions
+         );
+-        $cmd = self::$javaExecutable . ' -jar ' . escapeshellarg(self::$jarFile)
++        $cmd = self::$javaExecutable
++	         . (!empty($o['stack-size'])
++	            ? ' -Xss' . $o['stack-size']
++	            : '')
++	         . ' -jar ' . escapeshellarg(self::$jarFile)
+              . " --type {$type}"
+              . (preg_match('/^[\\da-zA-Z0-9\\-]+$/', $o['charset'])
+                 ? " --charset {$o['charset']}" 
+diff --git a/min_unit_tests/test_Minify_YuiCSS.php b/min_unit_tests/test_Minify_YuiCSS.php
+new file mode 100644
+index 0000000..b0f33d0
+--- /dev/null
++++ b/min_unit_tests/test_Minify_YuiCSS.php
+@@ -0,0 +1,46 @@
++<?php
++require_once '_inc.php';
++
++function test_Minify_YuiCSS()
++{
++    // XXX this may need customizing
++    Minify_YUICompressor::$jarFile = '/usr/share/java/yuicompressor.jar';
++    Minify_YUICompressor::$tempDir = sys_get_temp_dir();
++
++    $src = "/* stack overflow test */
++    div.image {
++      width:            100px;
++      height:           100px;
++      background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAALCAYAAABGbhwYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg4RDYwQzU2N0ExMUUyOUNCMEY5NzdDNzlGNzg3MSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg4RDYwRDU2N0ExMUUyOUNCMEY5NzdDNzlGNzg3MSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0RjRBMkZGNTY3NzExRTI5Q0IwRjk3N0M3OUY3ODcxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0RjRBMzAwNTY3NzExRTI5Q0IwRjk3N0M3OUY3ODcxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2Di36AAAALBJREFUeNpi+P//PwMQ60NpdMwIxAYgNogTBsQHgNgGi0IVIN4CxH4whSDwAk2xLBCvh8odhgmuRlNsCMSboWLHgDgE2Zp5SIrXQNlXgNgI5kZkh9+AKvgGpZWAmAUkz8SAADxAfAfK5oTS7ED8B8yCmqYOxOuA+AcQXwDiJVATn8I8CFIUCA0CmMNNoZqXILnZHiQQjeRwU7RwhCk+xAB17A4gdgFiNiyBDlKcBBBgAG/qVav+VuC1AAAAAElFTkSuQmCC');
++    }
++    ";
++    $minExpected = "div.image{width:100px;height:100px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAALCAYAAABGbhwYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1RDg4RDYwQzU2N0ExMUUyOUNCMEY5NzdDNzlGNzg3MSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1RDg4RDYwRDU2N0ExMUUyOUNCMEY5NzdDNzlGNzg3MSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0RjRBMkZGNTY3NzExRTI5Q0IwRjk3N0M3OUY3ODcxIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0RjRBMzAwNTY3NzExRTI5Q0IwRjk3N0M3OUY3ODcxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2Di36AAAALBJREFUeNpi+P//PwMQ60NpdMwIxAYgNogTBsQHgNgGi0IVIN4CxH4whSDwAk2xLBCvh8odhgmuRlNsCMSboWLHgDgE2Zp5SIrXQNlXgNgI5kZkh9+AKvgGpZWAmAUkz8SAADxAfAfK5oTS7ED8B8yCmqYOxOuA+AcQXwDiJVATn8I8CFIUCA0CmMNNoZqXILnZHiQQjeRwU7RwhCk+xAB17A4gdgFiNiyBDlKcBBBgAG/qVav+VuC1AAAAAElFTkSuQmCC')}";
++
++    // fails with java.lang.StackOverflowError as of Yui 2.4.6
++    // unfortunately error output is not caught from yui, so have to guess
++    try {
++        $minOutput = Minify_YUICompressor::minifyCss($src);
++        assertTrue(false, "Expected exception Not thrown");
++    } catch (Exception $e) {
++        assertTrue($e->getMessage() == 'Minify_YUICompressor : YUI compressor execution failed.', 'got expected Exception');
++    }
++
++    try {
++        $options = array(
++            'stack-size' => '2m',
++        );
++        $minOutput = Minify_YUICompressor::minifyCss($src, $options);
++    } catch (Exception $e) {
++        assertTrue(false, $e->getMessage());;
++        $minOutput = false;
++    }
++
++    $passed = assertTrue($minExpected == $minOutput, 'Minify_YUICompressor : Overall');
++    if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
++        echo "\n---Output: " .countBytes($minOutput). " bytes\n\n{$minOutput}\n\n";
++        echo "---Expected: " .countBytes($minExpected). " bytes\n\n{$minExpected}\n\n";
++        echo "---Source: " .countBytes($src). " bytes\n\n{$src}\n\n\n";
++    }
++}
++
++test_Minify_YuiCSS();
+diff --git a/min_unit_tests/test_all.php b/min_unit_tests/test_all.php
+index ff26b51..caba028 100644
+--- a/min_unit_tests/test_all.php
++++ b/min_unit_tests/test_all.php
+@@ -10,6 +10,7 @@
+ require 'test_Minify_CSS.php';
+ require 'test_Minify_CSS_UriRewriter.php';
+ require 'test_Minify_JS_ClosureCompiler.php';
++require 'test_Minify_YuiCSS.php';
+ require 'test_Minify_CommentPreserver.php';
+ require 'test_Minify_HTML.php';
+ require 'test_Minify_ImportProcessor.php';
+-- 
+1.7.10
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/minify.git/commitdiff/5018c983a155064f2057041f23e5b71c5787b300



More information about the pld-cvs-commit mailing list