[SCM] groovebasin/master: add patches for bundled modules
andrewrk-guest at users.alioth.debian.org
andrewrk-guest at users.alioth.debian.org
Sat Oct 4 00:38:55 UTC 2014
The following commit has been merged in the master branch:
commit 399e36786a018f288bf16e677b487da8c82547c9
Author: Andrew Kelley <superjoe30 at gmail.com>
Date: Fri Oct 3 20:55:57 2014 +0000
add patches for bundled modules
diff --git a/debian/copyright b/debian/copyright
index bc5cf72..2d5dd15 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -7,6 +7,18 @@ Files: *
Copyright: 2014 Andrew Kelley <superjoe30 at gmail.com>
License: Expat
+Files: node_modules/mv/*
+Copyright: 2014 Andrew Kelley <superjoe30 at gmail.com>
+License: Expat
+
+Files: node_modules/curlydiff/*
+Copyright: 2014 Josh Wolfe <thejoshwolfe at gmail.com>
+License: Expat
+
+Files: node_modules/connect-static/*
+Copyright: 2014 Andrew Kelley <superjoe30 at gmail.com>
+License: Expat
+
Files: debian/*
Copyright: 2014 Andrew Kelley <superjoe30 at gmail.com>
License: Expat
diff --git a/debian/patches/bundle-connect-static-module.patch b/debian/patches/bundle-connect-static-module.patch
new file mode 100644
index 0000000..d14c8d6
--- /dev/null
+++ b/debian/patches/bundle-connect-static-module.patch
@@ -0,0 +1,161 @@
+Description: bundle connect-static module
+ FTP masters rejected node-connect-static on the account of it being too small,
+ so we bundle the module here.
+Author: Andrew Kelley <superjoe30 at gmail.com>
+Forwarded: not-needed
+
+--- /dev/null
++++ groovebasin-1.3.0/node_modules/connect-static/index.js
+@@ -0,0 +1,101 @@
++var zlib = require('zlib');
++var fs = require('fs');
++var stream = require('stream');
++var util = require('util');
++var path = require('path');
++var Pend = require('pend');
++var findit = require('findit');
++var mime = require('mime');
++var url = require('url');
++var BufferList = require('bl');
++var crypto = require('crypto');
++
++module.exports = createGzipStaticMiddleware;
++
++function createGzipStaticMiddleware(options, cb) {
++ options = options || {};
++ var dir = options.dir || "public";
++ var ignoreFile = options.ignoreFile || defaultIgnoreFile;
++ var aliases = options.aliases || [['/', '/index.html']];
++
++ var cache = {};
++ var pend = new Pend();
++ var walker = findit(dir);
++ walker.on('error', function(err) {
++ walker.stop();
++ cb(err);
++ });
++ walker.on('file', function(file, stat) {
++ if (ignoreFile(file)) return;
++ var relName = '/' + path.relative(dir, file);
++ var bl = new BufferList();
++ var inStream = fs.createReadStream(file);
++ inStream.on('error', function(err) {
++ if (err.code === 'EISDIR') {
++ delete cache[relName];
++ return;
++ } else {
++ throw err;
++ }
++ });
++ var cacheObj;
++ cache[relName] = cacheObj = {
++ bl: bl,
++ mime: mime.lookup(relName),
++ mtime: stat.mtime,
++ hash: null,
++ };
++ pend.go(function(cb) {
++ inStream.pipe(zlib.createGzip()).pipe(bl);
++ bl.once('finish', cb);
++ });
++ pend.go(function(cb) {
++ var hashBl = new BufferList();
++ inStream.pipe(crypto.createHash('sha1')).pipe(hashBl);
++ hashBl.once('finish', function() {
++ cacheObj.hash = hashBl.toString('base64');
++ cb();
++ });
++ });
++ });
++ walker.on('end', function() {
++ pend.wait(function(err) {
++ if (err) return cb(err);
++ aliases.forEach(function(alias) {
++ cache[alias[0]] = cache[alias[1]];
++ });
++ cb(null, middleware);
++ });
++ function middleware(req, resp, next) {
++ var parsedUrl = url.parse(req.url);
++ var c = cache[parsedUrl.pathname];
++ if (!c) return next();
++ if (req.headers['if-none-match'] === c.hash) {
++ resp.statusCode = 304;
++ resp.end();
++ return;
++ }
++ var ifModifiedSince = new Date(req.headers['if-modified-since']);
++ if (!isNaN(ifModifiedSince) && c.mtime <= ifModifiedSince) {
++ resp.statusCode = 304;
++ resp.end();
++ return;
++ }
++
++ var bl = c.bl;
++ resp.setHeader('Content-Type', c.mime);
++ resp.setHeader('ETag', c.hash);
++ if (req.headers['accept-encoding'] == null) {
++ bl.duplicate().pipe(zlib.createGunzip()).pipe(resp);
++ } else {
++ resp.setHeader('Content-Encoding', 'gzip');
++ bl.duplicate().pipe(resp);
++ }
++ }
++ });
++}
++
++function defaultIgnoreFile(file) {
++ var basename = path.basename(file);
++ return /^\./.test(basename) || /~$/.test(basename);
++}
+--- /dev/null
++++ groovebasin-1.3.0/node_modules/connect-static/package.json
+@@ -0,0 +1,48 @@
++{
++ "name": "connect-static",
++ "version": "1.2.3",
++ "description": "static file server middleware for connect. loads files once at startup and saves gzipped versions in memory",
++ "main": "index.js",
++ "scripts": {
++ "test": "node test/test.js"
++ },
++ "repository": {
++ "type": "git",
++ "url": "git://github.com/andrewrk/connect-static.git"
++ },
++ "author": {
++ "name": "Andrew Kelley",
++ "email": "superjoe30 at gmail.com"
++ },
++ "license": "MIT",
++ "bugs": {
++ "url": "https://github.com/andrewrk/connect-static/issues"
++ },
++ "homepage": "https://github.com/andrewrk/connect-static",
++ "dependencies": {
++ "bl": "~0.9.3",
++ "findit": "~2.0.0",
++ "mime": "~1.2.11",
++ "pend": "~1.1.3"
++ },
++ "_id": "connect-static at 1.2.3",
++ "dist": {
++ "shasum": "aaa741483d491ea7e7ef7b277deb9f3ffef46620",
++ "tarball": "http://registry.npmjs.org/connect-static/-/connect-static-1.2.3.tgz"
++ },
++ "_from": "connect-static@~1.2.2",
++ "_npmVersion": "1.3.10",
++ "_npmUser": {
++ "name": "superjoe",
++ "email": "superjoe30 at gmail.com"
++ },
++ "maintainers": [
++ {
++ "name": "superjoe",
++ "email": "superjoe30 at gmail.com"
++ }
++ ],
++ "directories": {},
++ "_shasum": "aaa741483d491ea7e7ef7b277deb9f3ffef46620",
++ "_resolved": "https://registry.npmjs.org/connect-static/-/connect-static-1.2.3.tgz"
++}
diff --git a/debian/patches/bundle-curlydiff-module.patch b/debian/patches/bundle-curlydiff-module.patch
new file mode 100644
index 0000000..9df77ad
--- /dev/null
+++ b/debian/patches/bundle-curlydiff-module.patch
@@ -0,0 +1,120 @@
+Description: bundle curlydiff module
+ FTP masters would reject node-curlydiff on the account of it being too small,
+ so we bundle the module here.
+Author: Andrew Kelley <superjoe30 at gmail.com>
+Forwarded: not-needed
+
+--- /dev/null
++++ groovebasin-1.3.0/node_modules/curlydiff/index.js
+@@ -0,0 +1,62 @@
++module.exports.diff = diff;
++module.exports.apply = apply;
++module.exports.isObject = isObject;
++
++function diff(from, to) {
++ if (!isObject(from) || !isObject(to)) {
++ // not both objects
++ if (from === to) return undefined;
++ if (from instanceof Date && to instanceof Date && from.getTime() === to.getTime()) return undefined;
++ // there's a difference
++ return to;
++ }
++ // both are objects
++ var result = {};
++ var anythingChanged = false;
++ for (var key in from) {
++ var childDiff;
++ if (key in to) {
++ childDiff = diff(from[key], to[key]);
++ if (childDiff === undefined) continue;
++ } else {
++ // deleted
++ childDiff = null;
++ }
++ // there's a difference
++ result[key] = childDiff;
++ anythingChanged = true;
++ }
++ for (var key in to) {
++ if (key in from) continue; // handled above
++ result[key] = to[key];
++ anythingChanged = true;
++ }
++ if (anythingChanged) return result;
++ // no change
++ return undefined;
++}
++
++function apply(object, patch) {
++ if (patch === undefined) return object;
++ if (!isObject(object) || !isObject(patch)) return patch;
++ // both are objects
++ for (var key in patch) {
++ var patchChild = patch[key];
++ if (patchChild == null) {
++ // removed
++ delete object[key];
++ } else {
++ // either this assignment or this function call will have side effects
++ object[key] = apply(object[key], patchChild);
++ }
++ }
++ return object;
++}
++
++function isObject(object) {
++ if (object == null) return false;
++ if (typeof object !== "object") return false;
++ if (Array.isArray(object)) return false;
++ if (object instanceof Date) return false;
++ return true;
++}
+--- /dev/null
++++ groovebasin-1.3.0/node_modules/curlydiff/package.json
+@@ -0,0 +1,46 @@
++{
++ "name": "curlydiff",
++ "version": "2.0.1",
++ "description": "diff nested JavaScript objects",
++ "main": "index.js",
++ "scripts": {
++ "test": "node test/test.js"
++ },
++ "repository": {
++ "type": "git",
++ "url": "git://github.com/thejoshwolfe/curlydiff.git"
++ },
++ "author": {
++ "name": "Josh Wolfe",
++ "email": "thejoshwolfe at gmail.com"
++ },
++ "license": "MIT",
++ "bugs": {
++ "url": "https://github.com/thejoshwolfe/curlydiff/issues"
++ },
++ "devDependencies": {
++ "whynoteq": "~1.0.2"
++ },
++ "gitHead": "b8f52b5906ec3e93873447e072c2d370c02cf869",
++ "homepage": "https://github.com/thejoshwolfe/curlydiff",
++ "_id": "curlydiff at 2.0.1",
++ "_shasum": "6ac4b754ea5b63af2632022d03a152306f7eac0b",
++ "_from": "curlydiff@~2.0.1",
++ "_npmVersion": "1.4.28",
++ "_npmUser": {
++ "name": "thejoshwolfe",
++ "email": "thejoshwolfe at gmail.com"
++ },
++ "maintainers": [
++ {
++ "name": "thejoshwolfe",
++ "email": "thejoshwolfe at gmail.com"
++ }
++ ],
++ "dist": {
++ "shasum": "6ac4b754ea5b63af2632022d03a152306f7eac0b",
++ "tarball": "http://registry.npmjs.org/curlydiff/-/curlydiff-2.0.1.tgz"
++ },
++ "directories": {},
++ "_resolved": "https://registry.npmjs.org/curlydiff/-/curlydiff-2.0.1.tgz"
++}
diff --git a/debian/patches/bundle-mv-module.patch b/debian/patches/bundle-mv-module.patch
new file mode 100644
index 0000000..78dccc9
--- /dev/null
+++ b/debian/patches/bundle-mv-module.patch
@@ -0,0 +1,179 @@
+Description: bundle mv module
+ FTP masters rejected node-mv on the account of it being too small, so we
+ bundle the module here.
+Author: Andrew Kelley <superjoe30 at gmail.com>
+Forwarded: not-needed
+
+--- /dev/null
++++ groovebasin-1.3.0/node_modules/mv/index.js
+@@ -0,0 +1,105 @@
++var fs = require('fs');
++var ncp = require('ncp').ncp;
++var path = require('path');
++var rimraf = require('rimraf');
++var mkdirp = require('mkdirp');
++
++module.exports = mv;
++
++function mv(source, dest, options, cb){
++ if (typeof options === 'function') {
++ cb = options;
++ options = {};
++ }
++ var shouldMkdirp = !!options.mkdirp;
++ var clobber = options.clobber !== false;
++ var limit = options.limit || 16;
++
++ if (shouldMkdirp) {
++ mkdirs();
++ } else {
++ doRename();
++ }
++
++ function mkdirs() {
++ mkdirp(path.dirname(dest), function(err) {
++ if (err) return cb(err);
++ doRename();
++ });
++ }
++
++ function doRename() {
++ if (clobber) {
++ fs.rename(source, dest, function(err) {
++ if (!err) return cb();
++ if (err.code !== 'EXDEV') return cb(err);
++ moveFileAcrossDevice(source, dest, clobber, limit, cb);
++ });
++ } else {
++ fs.link(source, dest, function(err) {
++ if (err) {
++ if (err.code === 'EXDEV') {
++ moveFileAcrossDevice(source, dest, clobber, limit, cb);
++ return;
++ }
++ if (err.code === 'EISDIR' || err.code === 'EPERM') {
++ moveDirAcrossDevice(source, dest, clobber, limit, cb);
++ return;
++ }
++ cb(err);
++ return;
++ }
++ fs.unlink(source, cb);
++ });
++ }
++ }
++}
++
++function moveFileAcrossDevice(source, dest, clobber, limit, cb) {
++ var outFlags = clobber ? 'w' : 'wx';
++ var ins = fs.createReadStream(source);
++ var outs = fs.createWriteStream(dest, {flags: outFlags});
++ ins.on('error', function(err){
++ ins.destroy();
++ outs.destroy();
++ outs.removeListener('close', onClose);
++ if (err.code === 'EISDIR' || err.code === 'EPERM') {
++ moveDirAcrossDevice(source, dest, clobber, limit, cb);
++ } else {
++ cb(err);
++ }
++ });
++ outs.on('error', function(err){
++ ins.destroy();
++ outs.destroy();
++ outs.removeListener('close', onClose);
++ cb(err);
++ });
++ outs.once('close', onClose);
++ ins.pipe(outs);
++ function onClose(){
++ fs.unlink(source, cb);
++ }
++}
++
++function moveDirAcrossDevice(source, dest, clobber, limit, cb) {
++ var options = {
++ stopOnErr: true,
++ clobber: false,
++ limit: limit,
++ };
++ if (clobber) {
++ rimraf(dest, function(err) {
++ if (err) return cb(err);
++ startNcp();
++ });
++ } else {
++ startNcp();
++ }
++ function startNcp() {
++ ncp(source, dest, options, function(errList) {
++ if (errList) return cb(errList[0]);
++ rimraf(source, cb);
++ });
++ }
++}
+--- /dev/null
++++ groovebasin-1.3.0/node_modules/mv/package.json
+@@ -0,0 +1,62 @@
++{
++ "name": "mv",
++ "version": "2.0.3",
++ "description": "fs.rename but works across devices. same as the unix utility 'mv'",
++ "main": "index.js",
++ "scripts": {
++ "test": "mocha test/test.js --reporter spec"
++ },
++ "repository": {
++ "type": "git",
++ "url": "git://github.com/andrewrk/node-mv.git"
++ },
++ "keywords": [
++ "mv",
++ "move",
++ "rename",
++ "device",
++ "recursive",
++ "folder"
++ ],
++ "author": {
++ "name": "Andrew Kelley"
++ },
++ "license": "MIT",
++ "engines": {
++ "node": ">=0.8.0"
++ },
++ "devDependencies": {
++ "mocha": "~1.21.0"
++ },
++ "dependencies": {
++ "mkdirp": "~0.5.0",
++ "ncp": "~0.6.0",
++ "rimraf": "~2.2.8"
++ },
++ "bugs": {
++ "url": "https://github.com/andrewrk/node-mv/issues"
++ },
++ "homepage": "https://github.com/andrewrk/node-mv",
++ "directories": {
++ "test": "test"
++ },
++ "_id": "mv at 2.0.3",
++ "dist": {
++ "shasum": "e9ab707d71dc38de24edcc637a8e2f5f480c7f32",
++ "tarball": "http://registry.npmjs.org/mv/-/mv-2.0.3.tgz"
++ },
++ "_from": "mv@~2.0.3",
++ "_npmVersion": "1.3.10",
++ "_npmUser": {
++ "name": "superjoe",
++ "email": "superjoe30 at gmail.com"
++ },
++ "maintainers": [
++ {
++ "name": "superjoe",
++ "email": "superjoe30 at gmail.com"
++ }
++ ],
++ "_shasum": "e9ab707d71dc38de24edcc637a8e2f5f480c7f32",
++ "_resolved": "https://registry.npmjs.org/mv/-/mv-2.0.3.tgz"
++}
diff --git a/debian/patches/series b/debian/patches/series
index 60611ea..2fd3f99 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,4 @@
shebang.patch
+bundle-connect-static-module.patch
+bundle-curlydiff-module.patch
+bundle-mv-module.patch
--
groovebasin packaging
More information about the pkg-multimedia-commits
mailing list