|
3 | 3 | var child_process = require('child_process'), |
4 | 4 | format = require('util').format, |
5 | 5 | fs = require('fs'), |
| 6 | + os = require('os'), |
6 | 7 | path = require('path'), |
7 | 8 | resolve = require('path').resolve, |
8 | 9 | git = require('./lib/git'), |
@@ -31,13 +32,14 @@ var SCHEDULE = [ |
31 | 32 | tagRelease, |
32 | 33 | addSHASumsToChangeLog, |
33 | 34 | reviewTagAndCommits, |
| 35 | + createDistDirectory, |
| 36 | + createCMakeTarBall, |
| 37 | + createAutotoolsTarBall, |
| 38 | + signTarballs, |
34 | 39 | createWebsiteDirectory, |
35 | 40 | pushTag, |
36 | 41 | pushBranch, |
37 | | - createDistDirectory, |
38 | | - createTarBall, |
39 | | - signTarball, |
40 | | - uploadTarBall, |
| 42 | + uploadTarBalls, |
41 | 43 | done |
42 | 44 | ]; |
43 | 45 |
|
@@ -374,46 +376,103 @@ function createWebsiteDirectory() { |
374 | 376 |
|
375 | 377 |
|
376 | 378 | function createDistDirectory() { |
377 | | - fs.mkdir(dir + '/dist', function(err) { |
| 379 | + var distdir = dir + '/dist'; |
| 380 | + fs.mkdir(distdir, function(err) { |
378 | 381 | if (err && err.code !== 'EEXIST') |
379 | | - return pauseRetry(err); |
| 382 | + return pauseRetry(err); |
| 383 | + if (fs.readdirSync(distdir).length !== 0) |
| 384 | + return pauseRetry("dist dir is not empty"); |
380 | 385 |
|
381 | 386 | next(); |
382 | 387 | }); |
383 | 388 | } |
384 | 389 |
|
385 | 390 |
|
386 | | -function createTarBall() { |
| 391 | +function createCMakeTarBall() { |
387 | 392 | var tag = ver.format(state.releaseVersion); |
388 | 393 | var filename = format('libuv-%s.tar.gz', tag); |
389 | 394 | var prefix = format('libuv-%s/', tag); |
390 | 395 | var command = format('git archive %s --format=tar --prefix=%s | gzip -9 > dist/%s', |
391 | 396 | tag, |
392 | 397 | prefix, |
393 | 398 | filename); |
394 | | - child_process.exec(command, { stdio: 'inherit', cwd: dir}, nextOrRetry); |
| 399 | + child_process.exec(command, { stdio: 'inherit', cwd: dir }, nextOrRetry); |
395 | 400 | } |
396 | 401 |
|
397 | 402 |
|
398 | | -function signTarball() { |
| 403 | +function createAutotoolsTarBall() { |
399 | 404 | var tag = ver.format(state.releaseVersion); |
400 | | - var filename = format('libuv-%s.tar.gz', tag); |
401 | | - var signFilename = format('libuv-%s.tar.gz.sign', tag); |
402 | | - var command = format('gpg -a --output dist/%s --detach-sign dist/%s', |
403 | | - signFilename, |
404 | | - filename); |
405 | | - child_process.exec(command, { stdio: 'inherit', cwd: dir}, nextOrRetry); |
| 405 | + var distver = format('%d.%d.%d', |
| 406 | + state.releaseVersion.major, |
| 407 | + state.releaseVersion.minor, |
| 408 | + state.releaseVersion.patch); |
| 409 | + child_process.execFile('./autogen.sh', [], { stdio: 'inherit', cwd: dir }, |
| 410 | + function(err, stdout, stderr) { |
| 411 | + if (err) { |
| 412 | + console.log(stdout); |
| 413 | + console.log(stderr); |
| 414 | + return pauseRetry(err); |
| 415 | + } |
| 416 | + try { |
| 417 | + var builddir = fs.mkdtempSync(path.join(os.tmpdir(), 'libuv-build-')); |
| 418 | + console.log(' attempting build in %s', builddir); |
| 419 | + } catch (err) { |
| 420 | + return pauseRetry(err); |
| 421 | + } |
| 422 | + child_process.execFile(dir + '/configure', [], |
| 423 | + { stdio: 'inherit', cwd: builddir }, |
| 424 | + function(err, stdout, stderr) { |
| 425 | + if (err) { |
| 426 | + console.log(stdout); |
| 427 | + console.log(stderr); |
| 428 | + return pauseRetry(err); |
| 429 | + } |
| 430 | + child_process.execFile('make', ['dist', '-j' + os.cpus().length], // TODO: use distcheck here |
| 431 | + { stdio: 'pipe', cwd: builddir }, |
| 432 | + function(err, stdout, stderr) { |
| 433 | + if (err) { |
| 434 | + console.log(stdout); |
| 435 | + console.log(stderr); |
| 436 | + return pauseRetry(err); |
| 437 | + } |
| 438 | + var srcfilename = path.join(builddir, format('libuv-%s.tar.gz', distver)); |
| 439 | + var dstfilename = path.join(dir, 'dist', format('libuv-%s-dist.tar.gz', tag)); |
| 440 | + try { |
| 441 | + fs.renameSync(srcfilename, dstfilename); |
| 442 | + fs.rmdirSync(builddir, { recursive: true }); // in future nodejs, this will be called rmSync |
| 443 | + } catch (err) { |
| 444 | + return pauseRetry(err); |
| 445 | + } |
| 446 | + next(); |
| 447 | + }); |
| 448 | + }); |
| 449 | + }); |
| 450 | +} |
| 451 | + |
| 452 | + |
| 453 | +function signTarballs() { |
| 454 | + var tag = ver.format(state.releaseVersion); |
| 455 | + var filename = format('dist/libuv-%s.tar.gz', tag); |
| 456 | + var signFilename = filename + ".sign"; |
| 457 | + var args = ['-a', '--output', signFilename, '--detach-sign', filename]; |
| 458 | + child_process.execFile('gpg', args, { stdio: 'inherit', cwd: dir }, function(err) { |
| 459 | + if (err) |
| 460 | + return pauseRetry(err); |
| 461 | + var filename = format('dist/libuv-%s-dist.tar.gz', tag); |
| 462 | + var signFilename = filename + ".sign"; |
| 463 | + var args = ['-a', '--output', signFilename, '--detach-sign', filename]; |
| 464 | + child_process.execFile('gpg', args, { stdio: 'inherit', cwd: dir }, nextOrRetry); |
| 465 | + }); |
406 | 466 | } |
407 | 467 |
|
408 | 468 |
|
409 | | -function uploadTarBall() { |
| 469 | +function uploadTarBalls() { |
410 | 470 | var tag = ver.format(state.releaseVersion); |
411 | 471 | var baseFilename = format('libuv-%s.tar.gz', tag); |
412 | 472 | var directory = format('~/www/dist/%s/', tag); |
413 | | - var command = format('scp dist/%s* [email protected]:%s', |
414 | | - baseFilename, |
415 | | - directory); |
416 | | - child_process.exec(command, { stdio: 'inherit', cwd: dir}, nextOrRetry); |
| 473 | + var args = [format('dist/%s*', baseFilename), |
| 474 | + "[email protected]:" + directory]; |
| 475 | + child_process.execFile('scp', args, { stdio: 'inherit', cwd: dir }, nextOrRetry); |
417 | 476 | } |
418 | 477 |
|
419 | 478 |
|
|
0 commit comments