1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-26 10:04:02 +03:00

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
This commit is contained in:
Andrew Bartlett 2010-05-28 20:24:47 +10:00
parent 708d6fc5b0
commit 7ea7b23413
2 changed files with 40 additions and 4 deletions

View File

@ -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

View File

@ -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):