Skip to content

Commit

Permalink
add autotools tarball support
Browse files Browse the repository at this point in the history
Fixes: libuv/libuv#1679
PR-URL: #13
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
  • Loading branch information
vtjnash committed Aug 24, 2021
1 parent 656ea63 commit 4abd4c0
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 21 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Command line utility for creating new releases of libuv.

1. Make sure you have the most up-to-date version of this tool and the libuv
branch that will be used to create the release.
2. Currently, the release tool requires Node.js v0.10.x. You may want to use
2. Currently, the release tool requires Node.js v12.10.x. You may want to use
something like `nvm` to change Node versions.
3. Run `node ./release.js --version x.x.x --dir path --remote name`, where
`x.x.x` is the version of libuv you are creating, `path` is the location of
Expand Down
103 changes: 83 additions & 20 deletions release.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
var child_process = require('child_process'),
format = require('util').format,
fs = require('fs'),
os = require('os'),
path = require('path'),
resolve = require('path').resolve,
git = require('./lib/git'),
Expand Down Expand Up @@ -31,13 +32,14 @@ var SCHEDULE = [
tagRelease,
addSHASumsToChangeLog,
reviewTagAndCommits,
createDistDirectory,
createCMakeTarBall,
createAutotoolsTarBall,
signTarballs,
createWebsiteDirectory,
pushTag,
pushBranch,
createDistDirectory,
createTarBall,
signTarball,
uploadTarBall,
uploadTarBalls,
done
];

Expand Down Expand Up @@ -374,46 +376,107 @@ function createWebsiteDirectory() {


function createDistDirectory() {
fs.mkdir(dir + '/dist', function(err) {
var distdir = dir + '/dist';
fs.mkdir(distdir, function(err) {
if (err && err.code !== 'EEXIST')
return pauseRetry(err);
return pauseRetry(err);
if (fs.readdirSync(distdir).length !== 0)
return pauseRetry("dist dir is not empty");

next();
});
}


function createTarBall() {
function createCMakeTarBall() {
var tag = ver.format(state.releaseVersion);
var filename = format('libuv-%s.tar.gz', tag);
var prefix = format('libuv-%s/', tag);
var command = format('git archive %s --format=tar --prefix=%s | gzip -9 > dist/%s',
tag,
prefix,
filename);
child_process.exec(command, { stdio: 'inherit', cwd: dir}, nextOrRetry);
child_process.exec(command, { stdio: 'inherit', cwd: dir }, nextOrRetry);
}


function signTarball() {
function createAutotoolsTarBall() {
var tag = ver.format(state.releaseVersion);
var filename = format('libuv-%s.tar.gz', tag);
var signFilename = format('libuv-%s.tar.gz.sign', tag);
var command = format('gpg -a --output dist/%s --detach-sign dist/%s',
signFilename,
filename);
child_process.exec(command, { stdio: 'inherit', cwd: dir}, nextOrRetry);
try {
var distver = format('%d.%d.%d',
state.releaseVersion.major,
state.releaseVersion.minor,
state.releaseVersion.patch);
} catch (err) {
return pauseRetry(err);
}
child_process.execFile('./autogen.sh', [], { stdio: 'inherit', cwd: dir},
function(err, stdout, stderr) {
if (err) {
console.log(stdout);
console.log(stderr);
return pauseRetry(err);
}
try {
var builddir = fs.mkdtempSync(path.join(os.tmpdir(), 'libuv-build-'));
console.log(' attempting build in %s', builddir);
} catch (err) {
return pauseRetry(err);
}
child_process.execFile(dir + '/configure', [],
{ stdio: 'inherit', cwd: builddir},
function(err, stdout, stderr) {
if (err) {
console.log(stdout);
console.log(stderr);
return pauseRetry(err);
}
child_process.execFile('make', ['dist', '-j' + os.cpus().length], // TODO: use distcheck here
{ stdio: 'pipe', cwd: builddir },
function(err, stdout, stderr) {
if (err) {
console.log(stdout);
console.log(stderr);
return pauseRetry(err);
}
var srcfilename = path.join(builddir, format('libuv-%s.tar.gz', distver));
var dstfilename = path.join(dir, 'dist', format('libuv-%s-dist.tar.gz', tag));
try {
fs.renameSync(srcfilename, dstfilename);
fs.rmdirSync(builddir, { recursive: true });
} catch (err) {
return pauseRetry(err);
}
next();
});
});
});
}


function signTarballs() {
var tag = ver.format(state.releaseVersion);
var filename = format('dist/libuv-%s.tar.gz', tag);
var signFilename = filename + ".sign";
var args = ['-a', '--output', signFilename, '--detach-sign', filename];
child_process.execFile('gpg', args, { stdio: 'inherit', cwd: dir }, function(err) {
if (err)
return pauseRetry(err);
var filename = format('dist/libuv-%s-dist.tar.gz', tag);
var signFilename = filename + ".sign";
var args = ['-a', '--output', signFilename, '--detach-sign', filename];
child_process.execFile('gpg', args, { stdio: 'inherit', cwd: dir }, nextOrRetry);
});
}


function uploadTarBall() {
function uploadTarBalls() {
var tag = ver.format(state.releaseVersion);
var baseFilename = format('libuv-%s.tar.gz', tag);
var directory = format('~/www/dist/%s/', tag);
var command = format('scp dist/%s* libuv@dist.libuv.org:%s',
baseFilename,
directory);
child_process.exec(command, { stdio: 'inherit', cwd: dir}, nextOrRetry);
var args = [format('dist/%s*', baseFilename),
"libuv@dist.libuv.org:" + directory];
child_process.execFile('scp', args, { stdio: 'inherit', cwd: dir }, nextOrRetry);
}


Expand Down

0 comments on commit 4abd4c0

Please sign in to comment.