From 2d2defe3df4bc1c17527bec4a63321ad795c7d00 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Mon, 26 Feb 2018 16:54:36 -0800 Subject: [PATCH] Bug 1428197 - Reject generic channels in rust repack jobs. r=glandium Ensure better determinism when creating rust toolchain packages by rejecting generic channels like 'stable' or 'nightly'. Instead, insist on a specific version or date. The current valid dates for beta and nightly can be obtained with: curl -s https://static.rust-lang.org/dist/channel-rust-beta.toml | grep ^date curl -s https://static.rust-lang.org/dist/channel-rust-nightly.toml | grep ^date MozReview-Commit-ID: I0DXw1KJGZz --HG-- extra : rebase_source : 92e158193072582b8568d9c9f00ffdefa0af1a9c --- taskcluster/scripts/misc/repack_rust.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/taskcluster/scripts/misc/repack_rust.py b/taskcluster/scripts/misc/repack_rust.py index e0744c1f6be3..041d718138e4 100644 --- a/taskcluster/scripts/misc/repack_rust.py +++ b/taskcluster/scripts/misc/repack_rust.py @@ -384,16 +384,29 @@ def expand_platform(name): return platforms.get(name, name) +def validate_channel(channel): + '''Require a specific release version. + + Packaging from meta-channels, like `stable`, `beta`, or `nightly` + doesn't give repeatable output. Reject such channels.''' + channel_prefixes = ('stable', 'beta', 'nightly') + if any([channel.startswith(c) for c in channel_prefixes]): + if '-' not in channel: + raise ValueError('Generic channel "%s" specified!' + '\nPlease give a specific release version' + ' like "1.24.0" or "beta-2018-02-20".' % channel) + + def args(): '''Read command line arguments and return options.''' parser = argparse.ArgumentParser() parser.add_argument('--channel', help='Release channel to use:' - ' stable, beta, or nightly', - default='stable') + ' 1.xx.y, beta-yyyy-mm-dd,' + ' or nightly-yyyy-mm-dd.', + required=True) parser.add_argument('--cargo-channel', - help='Release channel to use for cargo:' - ' stable, beta, or nightly.' + help='Release channel version to use for cargo.' ' Defaults to the same as --channel.') parser.add_argument('--host', help='Host platform for the toolchain executable:' @@ -406,6 +419,8 @@ def args(): args = parser.parse_args() if not args.cargo_channel: args.cargo_channel = args.channel + validate_channel(args.channel) + validate_channel(args.cargo_channel) if not args.host: args.host = 'linux64' args.host = expand_platform(args.host)