From bc629c0c4f4e8c5151ea1daef5b41255d80c77ce Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Tue, 6 Jan 2015 13:15:09 -0800 Subject: [PATCH 1/7] src: zlib: revert concatenated-stream changes Revert "src: fix windows build error" and "zlib: support concatenated gzip files". This reverts commits be413ac732f59ffe621f264239e5e22b77d32025 and 1183ba47dfc2bc8b39f0c10d8dc9e9299a4470bf. Treating subsequent bytes as a concatenated zlib stream breaks npm install. Conflicts: test/parallel/test-zlib-from-multiple-gzip-with-garbage.js test/parallel/test-zlib-from-multiple-gzip.js test/parallel/test-zlib-from-multiple-huge-gzip.js Fixes: https://github.com/joyent/node/issues/8962 PR-URL: https://github.com/iojs/io.js/pull/240 Reviewed-By: Ben Noordhuis --- lib/zlib.js | 9 +- src/node_zlib.cc | 31 ++----- ...st-zlib-from-multiple-gzip-with-garbage.js | 83 ----------------- test/parallel/test-zlib-from-multiple-gzip.js | 74 --------------- .../test-zlib-from-multiple-huge-gzip.js | 93 ------------------- 5 files changed, 8 insertions(+), 282 deletions(-) delete mode 100644 test/parallel/test-zlib-from-multiple-gzip-with-garbage.js delete mode 100644 test/parallel/test-zlib-from-multiple-gzip.js delete mode 100644 test/parallel/test-zlib-from-multiple-huge-gzip.js diff --git a/lib/zlib.js b/lib/zlib.js index 724f9a37b6895e..7c0e47f614cb50 100644 --- a/lib/zlib.js +++ b/lib/zlib.js @@ -582,7 +582,7 @@ Zlib.prototype._processChunk = function(chunk, flushFlag, cb) { self._buffer = new Buffer(self._chunkSize); } - if (availOutAfter === 0 || availInAfter > 0) { + if (availOutAfter === 0) { // Not actually done. Need to reprocess. // Also, update the availInBefore to the availInAfter value, // so that if we have to hit it a third (fourth, etc.) time, @@ -590,13 +590,6 @@ Zlib.prototype._processChunk = function(chunk, flushFlag, cb) { inOff += (availInBefore - availInAfter); availInBefore = availInAfter; - if (availOutAfter !== 0) { - // There is still some data available for reading. - // This is usually a concatenated stream, so, reset and restart. - self.reset(); - self._offset = 0; - } - if (!async) return true; diff --git a/src/node_zlib.cc b/src/node_zlib.cc index f59e60015a4915..81fab800aabc03 100644 --- a/src/node_zlib.cc +++ b/src/node_zlib.cc @@ -63,11 +63,6 @@ enum node_zlib_mode { UNZIP }; -enum node_zlib_error { - kNoError, - kFailed, - kWritePending -}; void InitZlib(v8::Handle target); @@ -208,7 +203,7 @@ class ZCtx : public AsyncWrap { if (!async) { // sync version Process(work_req); - if (CheckError(ctx) == kNoError) + if (CheckError(ctx)) AfterSync(ctx, args); return; } @@ -292,7 +287,7 @@ class ZCtx : public AsyncWrap { } - static node_zlib_error CheckError(ZCtx* ctx) { + static bool CheckError(ZCtx* ctx) { // Acceptable error states depend on the type of zlib stream. switch (ctx->err_) { case Z_OK: @@ -305,18 +300,14 @@ class ZCtx : public AsyncWrap { ZCtx::Error(ctx, "Missing dictionary"); else ZCtx::Error(ctx, "Bad dictionary"); - return kFailed; + return false; default: // something else. - if (ctx->strm_.total_out == 0) { - ZCtx::Error(ctx, "Zlib error"); - return kFailed; - } else { - return kWritePending; - } + ZCtx::Error(ctx, "Zlib error"); + return false; } - return kNoError; + return true; } @@ -330,8 +321,7 @@ class ZCtx : public AsyncWrap { HandleScope handle_scope(env->isolate()); Context::Scope context_scope(env->context()); - node_zlib_error error = CheckError(ctx); - if (error == kFailed) + if (!CheckError(ctx)) return; Local avail_out = Integer::New(env->isolate(), @@ -345,11 +335,6 @@ class ZCtx : public AsyncWrap { Local args[2] = { avail_in, avail_out }; ctx->MakeCallback(env->callback_string(), ARRAY_SIZE(args), args); - if (error == kWritePending) { - ZCtx::Error(ctx, "Zlib error"); - return; - } - ctx->Unref(); if (ctx->pending_close_) ctx->Close(); @@ -554,12 +539,10 @@ class ZCtx : public AsyncWrap { switch (ctx->mode_) { case DEFLATE: case DEFLATERAW: - case GZIP: ctx->err_ = deflateReset(&ctx->strm_); break; case INFLATE: case INFLATERAW: - case GUNZIP: ctx->err_ = inflateReset(&ctx->strm_); break; default: diff --git a/test/parallel/test-zlib-from-multiple-gzip-with-garbage.js b/test/parallel/test-zlib-from-multiple-gzip-with-garbage.js deleted file mode 100644 index f6a0185e0119d6..00000000000000 --- a/test/parallel/test-zlib-from-multiple-gzip-with-garbage.js +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// test unzipping a file that was created by concatenating multiple gzip -// streams. - -var common = require('../common'); -var assert = require('assert'); -var zlib = require('zlib'); - -var util = require('util'); - -var gzipBuffer = new Buffer(128); -var gzipOffset = 0; - -var stream1 = '123\n'; -var stream2 = '456\n'; -var stream3 = '789\n'; - -function gzipAppend(data) { - data.copy(gzipBuffer, gzipOffset); - gzipOffset += data.length; -} - -function writeGzipStream(text, cb) { - var gzip = zlib.createGzip(); - gzip.on('data', gzipAppend); - gzip.write(text, function() { - gzip.flush(function() { - gzip.end(function() { - cb(); - }); - }); - }); -} - -function writeGarbageStream(text, cb) { - gzipAppend(new Buffer(text)); - cb(); -} - -writeGzipStream(stream1, function() { - writeGzipStream(stream2, function() { - writeGarbageStream(stream3, function() { - var gunzip = zlib.createGunzip(); - var gunzippedData = new Buffer(2 * 1024); - var gunzippedOffset = 0; - gunzip.on('data', function (data) { - data.copy(gunzippedData, gunzippedOffset); - gunzippedOffset += data.length; - }); - gunzip.on('error', function() { - assert.equal(gunzippedData.toString('utf8', 0, gunzippedOffset), - stream1 + stream2); - }); - gunzip.on('end', function() { - assert.fail('end event not expected'); - }); - - gunzip.write(gzipBuffer.slice(0, gzipOffset), 'binary', function() { - gunzip.end(); - }); - }); - }); -}); diff --git a/test/parallel/test-zlib-from-multiple-gzip.js b/test/parallel/test-zlib-from-multiple-gzip.js deleted file mode 100644 index 6f4127a4d304c5..00000000000000 --- a/test/parallel/test-zlib-from-multiple-gzip.js +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// test unzipping a file that was created by concatenating multiple gzip -// streams. - -var common = require('../common'); -var assert = require('assert'); -var zlib = require('zlib'); - -var util = require('util'); - -var gzipBuffer = new Buffer(128); -var gzipOffset = 0; - -var stream1 = '123\n'; -var stream2 = '456\n'; -var stream3 = '789\n'; - -function gzipAppend(data) { - data.copy(gzipBuffer, gzipOffset); - gzipOffset += data.length; -} - -function writeGzipStream(text, cb) { - var gzip = zlib.createGzip(); - gzip.on('data', gzipAppend); - gzip.write(text, function() { - gzip.flush(function() { - gzip.end(function() { - cb(); - }); - }); - }); -} - -writeGzipStream(stream1, function() { - writeGzipStream(stream2, function() { - writeGzipStream(stream3, function() { - var gunzip = zlib.createGunzip(); - var gunzippedData = new Buffer(2 * 1024); - var gunzippedOffset = 0; - gunzip.on('data', function (data) { - data.copy(gunzippedData, gunzippedOffset); - gunzippedOffset += data.length; - }); - gunzip.on('end', function() { - assert.equal(gunzippedData.toString('utf8', 0, gunzippedOffset), stream1 + stream2 + stream3); - }); - - gunzip.write(gzipBuffer.slice(0, gzipOffset), 'binary', function() { - gunzip.end(); - }); - }); - }); -}); diff --git a/test/parallel/test-zlib-from-multiple-huge-gzip.js b/test/parallel/test-zlib-from-multiple-huge-gzip.js deleted file mode 100644 index 5533aafeb72f9a..00000000000000 --- a/test/parallel/test-zlib-from-multiple-huge-gzip.js +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// test unzipping a file that was created by concatenating multiple gzip -// streams. - -var common = require('../common'); -var assert = require('assert'); -var zlib = require('zlib'); - -var util = require('util'); - -var HUGE = 64 * 1024; - -var originalBuffer = new Buffer(3 * HUGE); -var originalOffset = 0; - -var gzipBuffer = new Buffer(3 * HUGE); -var gzipOffset = 0; - -function getRandomLetter() { - return (Math.random() * (122 - 97)) + 97; -} - -function generateHugeStream() { - var buffer = new Buffer(HUGE); - for (var i = 0; i < HUGE; i++) - buffer.writeUInt8(getRandomLetter(), i); - - buffer.copy(originalBuffer, originalOffset); - originalOffset += HUGE; - - return buffer; -} - -function gzipAppend(data) { - data.copy(gzipBuffer, gzipOffset); - gzipOffset += data.length; -} - -function writeGzipStream(text, cb) { - var gzip = zlib.createGzip(); - gzip.on('data', gzipAppend); - gzip.write(text, function() { - gzip.flush(function() { - gzip.end(function() { - cb(); - }); - }); - }); -} - -writeGzipStream(generateHugeStream(), function() { - writeGzipStream(generateHugeStream(), function() { - writeGzipStream(generateHugeStream(), function() { - var gunzip = zlib.createGunzip(); - var gunzippedData = new Buffer(3 * HUGE); - var gunzippedOffset = 0; - gunzip.on('data', function (data) { - data.copy(gunzippedData, gunzippedOffset); - gunzippedOffset += data.length; - }); - gunzip.on('end', function() { - var gunzippedStr = gunzippedData.toString('utf8', 0, gunzippedOffset); - var originalStr = originalBuffer.toString('utf8', 0, 3 * HUGE); - - assert.equal(gunzippedStr, originalStr); - }); - - gunzip.write(gzipBuffer.slice(0, gzipOffset), 'binary', function() { - gunzip.end(); - }); - }); - }); -}); From a2751e3e1e70ecc9147f6dd6a58dbe9dc0d6b3be Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 9 Jan 2015 02:39:46 +0100 Subject: [PATCH 2/7] src: disable harmony classes The V8 development branch has unshipped ES6 classes pending resolution of a number of inheritance edge cases. Disable classes in io.js for the sake of feature parity. See https://github.com/iojs/io.js/issues/251 for background and discussion. PR-URL: https://github.com/iojs/io.js/pull/272 Reviewed-By: Colin Ihrig Reviewed-By: Domenic Denicola --- src/node.cc | 6 ++++++ test/parallel/test-v8-features.js | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 test/parallel/test-v8-features.js diff --git a/src/node.cc b/src/node.cc index 9ffaab895a16bd..0ff8aa21b157b4 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3355,6 +3355,12 @@ void Init(int* argc, DispatchDebugMessagesAsyncCallback); uv_unref(reinterpret_cast(&dispatch_debug_messages_async)); + // TODO(bnoordhuis) V8 3.32 is unshipping Harmony classes for the moment. + // We're currently at 3.31, disable classes for feature parity. Remove + // again when we upgrade. + V8::SetFlagsFromString("--noharmony_classes", + sizeof("--noharmony_classes") - 1); + #if defined(NODE_V8_OPTIONS) // Should come before the call to V8::SetFlagsFromCommandLine() // so the user can disable a flag --foo at run-time by passing diff --git a/test/parallel/test-v8-features.js b/test/parallel/test-v8-features.js new file mode 100644 index 00000000000000..50757264ae39cc --- /dev/null +++ b/test/parallel/test-v8-features.js @@ -0,0 +1,21 @@ +var common = require('../common'); +var assert = require('assert'); +var spawnSync = require('child_process').spawnSync; +var v8 = require('v8'); + +// --harmony_classes implies --harmony_scoping; ensure that scoping still works +// when classes are disabled. +assert.throws(function() { eval('"use strict"; class C {}'); }, SyntaxError); +eval('"use strict"; let x = 42'); // Should not throw. +eval('"use strict"; const y = 42'); // Should not throw. + +v8.setFlagsFromString('--harmony_classes'); +eval('"use strict"; class C {}'); // Should not throw. +eval('"use strict"; let x = 42'); // Should not throw. +eval('"use strict"; const y = 42'); // Should not throw. + +// Verify that the --harmony_classes flag unlocks classes again. +var args = ['--harmony_classes', '--use_strict', '-p', 'class C {}']; +var cp = spawnSync(process.execPath, args); +assert.equal(cp.status, 0); +assert.equal(cp.stdout.toString('utf8').trim(), '[Function: C]'); From 4e58211bb7f638b689e5e8e407b70b3c29be952f Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 9 Jan 2015 17:03:21 +0100 Subject: [PATCH 3/7] src: disable harmony object literals Per the discussion in https://github.com/iojs/io.js/pull/272, upstream V8 has disabled Harmony object literals for the time being. Do the same for feature parity. PR-URL: https://github.com/iojs/io.js/pull/272 Reviewed-By: Colin Ihrig Reviewed-By: Domenic Denicola --- src/node.cc | 2 ++ test/parallel/test-v8-features.js | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/node.cc b/src/node.cc index 0ff8aa21b157b4..e390058567d33f 100644 --- a/src/node.cc +++ b/src/node.cc @@ -3360,6 +3360,8 @@ void Init(int* argc, // again when we upgrade. V8::SetFlagsFromString("--noharmony_classes", sizeof("--noharmony_classes") - 1); + V8::SetFlagsFromString("--noharmony_object_literals", + sizeof("--noharmony_object_literals") - 1); #if defined(NODE_V8_OPTIONS) // Should come before the call to V8::SetFlagsFromCommandLine() diff --git a/test/parallel/test-v8-features.js b/test/parallel/test-v8-features.js index 50757264ae39cc..aac9de4a29c2fc 100644 --- a/test/parallel/test-v8-features.js +++ b/test/parallel/test-v8-features.js @@ -19,3 +19,13 @@ var args = ['--harmony_classes', '--use_strict', '-p', 'class C {}']; var cp = spawnSync(process.execPath, args); assert.equal(cp.status, 0); assert.equal(cp.stdout.toString('utf8').trim(), '[Function: C]'); + +// Now do the same for --harmony_object_literals. +assert.throws(function() { eval('({ f() {} })'); }, SyntaxError); +v8.setFlagsFromString('--harmony_object_literals'); +eval('({ f() {} })'); + +var args = ['--harmony_object_literals', '-p', '({ f() {} })']; +var cp = spawnSync(process.execPath, args); +assert.equal(cp.status, 0); +assert.equal(cp.stdout.toString('utf8').trim(), '{ f: [Function: f] }'); From 12912c6b3074371d9860e4b4eb28453493db83a1 Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Fri, 9 Jan 2015 14:15:29 -0800 Subject: [PATCH 4/7] tools: enable ctrl-c for parallel tests use a threading.Event instead of a boolean attribute. PR-URL: https://github.com/iojs/io.js/pull/277 Fixes: https://github.com/iojs/io.js/issues/260 Reviewed-By: Ben Noordhuis --- tools/test.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/test.py b/tools/test.py index 563555ed95a59f..3414425a106385 100755 --- a/tools/test.py +++ b/tools/test.py @@ -71,8 +71,8 @@ def __init__(self, cases, flaky_tests_mode): self.total = len(cases) self.failed = [ ] self.crashed = 0 - self.terminate = False self.lock = threading.Lock() + self.shutdown_event = threading.Event() def PrintFailureHeader(self, test): if test.IsNegative(): @@ -101,17 +101,19 @@ def Run(self, tasks): for thread in threads: # Use a timeout so that signals (ctrl-c) will be processed. thread.join(timeout=10000000) + except (KeyboardInterrupt, SystemExit), e: + self.shutdown_event.set() except Exception, e: # If there's an exception we schedule an interruption for any # remaining threads. - self.terminate = True + self.shutdown_event.set() # ...and then reraise the exception to bail out raise self.Done() return not self.failed def RunSingle(self, parallel, thread_id): - while not self.terminate: + while not self.shutdown_event.is_set(): try: test = self.parallel_queue.get_nowait() except Empty: @@ -131,9 +133,8 @@ def RunSingle(self, parallel, thread_id): output = case.Run() case.duration = (datetime.now() - start) except IOError, e: - assert self.terminate return - if self.terminate: + if self.shutdown_event.is_set(): return self.lock.acquire() if output.UnexpectedOutput(): From 59ad4b0432ca81ad8477dc0e40ff621b6e7b5778 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 9 Jan 2015 17:14:57 +0100 Subject: [PATCH 5/7] deps: fix zlib -Wimplicit-function-declaration Build the bundled zlib with -DZ_HAVE_UNISTD_H to make the definition of close(), read() and other unistd.h functions available to gzread.c and gzwrite.c. It's kind of silly that we have to jump through hoops here because we never call any of the functions that do I/O directly, but at least it squelches the -Wimplicit-function-declaration warnings. PR-URL: https://github.com/iojs/io.js/pull/273 Reviewed-by: Bert Belder --- deps/zlib/zlib.gyp | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/zlib/zlib.gyp b/deps/zlib/zlib.gyp index fac801c7cbf362..fad1c94c1691ad 100644 --- a/deps/zlib/zlib.gyp +++ b/deps/zlib/zlib.gyp @@ -62,6 +62,7 @@ ['OS!="win"', { 'product_name': 'chrome_zlib', 'cflags!': [ '-ansi' ], + 'defines': [ 'Z_HAVE_UNISTD_H' ], 'sources!': [ 'contrib/minizip/iowin32.c' ], From ad37509c0bb02bf6e86ae6b7e1290f8463a4a7b3 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Sat, 10 Jan 2015 02:36:17 +0100 Subject: [PATCH 6/7] deps: don't set zlib's product_name PR-URL: https://github.com/iojs/io.js/pull/276 Reviewed-by: Ben Noordhuis --- deps/zlib/zlib.gyp | 1 - 1 file changed, 1 deletion(-) diff --git a/deps/zlib/zlib.gyp b/deps/zlib/zlib.gyp index fad1c94c1691ad..afcebb4c02fa2f 100644 --- a/deps/zlib/zlib.gyp +++ b/deps/zlib/zlib.gyp @@ -60,7 +60,6 @@ }, 'conditions': [ ['OS!="win"', { - 'product_name': 'chrome_zlib', 'cflags!': [ '-ansi' ], 'defines': [ 'Z_HAVE_UNISTD_H' ], 'sources!': [ From a80b9777f262a79705954a95e23d15bcd3718d96 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Sat, 10 Jan 2015 02:37:22 +0100 Subject: [PATCH 7/7] deps: don't build minizip into zlib It's an optional extension that node/iojs doesn't use. PR-URL: https://github.com/iojs/io.js/pull/276 Reviewed-by: Ben Noordhuis --- deps/zlib/zlib.gyp | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/deps/zlib/zlib.gyp b/deps/zlib/zlib.gyp index afcebb4c02fa2f..cf0b090d9ef0c4 100644 --- a/deps/zlib/zlib.gyp +++ b/deps/zlib/zlib.gyp @@ -13,14 +13,6 @@ 'target_name': 'zlib', 'type': 'static_library', 'sources': [ - 'contrib/minizip/ioapi.c', - 'contrib/minizip/ioapi.h', - 'contrib/minizip/iowin32.c', - 'contrib/minizip/iowin32.h', - 'contrib/minizip/unzip.c', - 'contrib/minizip/unzip.h', - 'contrib/minizip/zip.c', - 'contrib/minizip/zip.h', 'adler32.c', 'compress.c', 'crc32.c', @@ -50,8 +42,6 @@ ], 'include_dirs': [ '.', - # For contrib/minizip - './contrib/minizip', ], 'direct_dependent_settings': { 'include_dirs': [ @@ -62,9 +52,6 @@ ['OS!="win"', { 'cflags!': [ '-ansi' ], 'defines': [ 'Z_HAVE_UNISTD_H' ], - 'sources!': [ - 'contrib/minizip/iowin32.c' - ], }], ['OS=="mac" or OS=="ios" or OS=="freebsd" or OS=="android"', { # Mac, Android and the BSDs don't have fopen64, ftello64, or @@ -90,14 +77,6 @@ 'defines': [ 'USE_SYSTEM_ZLIB', ], - 'sources': [ - 'contrib/minizip/ioapi.c', - 'contrib/minizip/ioapi.h', - 'contrib/minizip/unzip.c', - 'contrib/minizip/unzip.h', - 'contrib/minizip/zip.c', - 'contrib/minizip/zip.h', - ], 'link_settings': { 'libraries': [ '-lz',