diff options
author | Andrew Bartlett <abartlet@samba.org> | 2010-05-28 20:24:47 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2010-05-28 21:59:08 +1000 |
commit | 7ea7b23413f48325d1805fd2666757241eddc2e7 (patch) | |
tree | 1f21cd36402c0552e16e3e1690a58d2367f4be42 | |
parent | 708d6fc5b002fb781983dd6ca4bda6e59a3a6411 (diff) | |
download | samba-7ea7b23413f48325d1805fd2666757241eddc2e7.tar.gz samba-7ea7b23413f48325d1805fd2666757241eddc2e7.tar.bz2 samba-7ea7b23413f48325d1805fd2666757241eddc2e7.zip |
waf Provide release signing capability in 'waf dist'
This helps ensure the release is signed correctly - the .tar file, not
the .tar.gz must be signed, and it's easy to forget this.
Andrew Bartlett
-rw-r--r-- | buildtools/wafsamba/samba_dist.py | 36 | ||||
-rw-r--r-- | buildtools/wafsamba/wscript | 8 |
2 files changed, 40 insertions, 4 deletions
diff --git a/buildtools/wafsamba/samba_dist.py b/buildtools/wafsamba/samba_dist.py index 30e82620af..05c5aaaeb6 100644 --- a/buildtools/wafsamba/samba_dist.py +++ b/buildtools/wafsamba/samba_dist.py @@ -1,7 +1,7 @@ # customised version of 'waf dist' for Samba tools # uses git ls-files to get file lists -import Utils, os, sys, tarfile, stat, Scripting, Logs +import Utils, os, sys, tarfile, gzip, stat, Scripting, Logs, Options from samba_utils import * dist_dirs = None @@ -86,9 +86,14 @@ def dist(appname='',version=''): sys.exit(1) dist_base = '%s-%s' % (appname, version) - dist_name = '%s.tar.gz' % (dist_base) - tar = tarfile.open(dist_name, 'w:gz') + if Options.options.SIGN_RELEASE: + dist_name = '%s.tar' % (dist_base) + tar = tarfile.open(dist_name, 'w') + else: + dist_name = '%s.tar.gz' % (dist_base) + tar = tarfile.open(dist_name, 'w:gz') + blacklist = dist_blacklist.split() for dir in dist_dirs.split(): @@ -126,7 +131,30 @@ def dist(appname='',version=''): tar.close() - Logs.info('Created %s' % dist_name) + if Options.options.SIGN_RELEASE: + try: + os.unlink(dist_name + '.asc') + except OSError: + pass + + cmd = "gpg --detach-sign --armor " + dist_name + os.system(cmd) + uncompressed_tar = open(dist_name, 'rb') + compressed_tar = gzip.open(dist_name + '.gz', 'wb') + while 1: + buffer = uncompressed_tar.read(1048576) + if buffer: + compressed_tar.write(buffer) + else: + break + uncompressed_tar.close() + compressed_tar.close() + os.unlink(dist_name) + Logs.info('Created %s.gz %s.asc' % (dist_name, dist_name)) + dist_name = dist_name + '.gz' + else: + Logs.info('Created %s' % dist_name) + return dist_name diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index 7bb2baa038..bad65cac24 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript @@ -130,6 +130,14 @@ def set_options(opt): help=SUPPRESS_HELP, action='store_true', dest='AUTOCONF_DISABLE_DEPENDENCY_TRACKING', default=False) + gr = opt.option_group('dist options') + gr.add_option('--sign-release', + help='sign the release tarball created by waf dist', + action='store_true', dest='SIGN_RELEASE') + gr.add_option('--tag', + help='tag release in git at the same time', + type='string', action='store', dest='TAG_RELEASE') + @wafsamba.runonce def configure(conf): |