[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