mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
4d63a1a79f
We re-run ./bootstrap/template.py --render to get a new GnuTLS on Fedora 32 This was missed with7dc535995b
and so causede0e51632cf
to break the sha1sum and so require 7077be01a3cc860ce1fcfafd9e5028829f0c1887 to fix it. The sha1sum changes because we fixed the bug about the spelling of README.md, which is helpful because otherwise we would not get a new image. This provides a GnuTLS 3.6.15 so that we still test using GnuTLS's gnutls_aead_cipher_encryptv2() for the SMB encryption codepath. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14399 Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
143 lines
4.4 KiB
Python
Executable File
143 lines
4.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
# Copyright (C) Catalyst.Net Ltd 2019
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
"""
|
|
Manage dependencies and bootstrap environments for Samba.
|
|
|
|
CLI script to render bootstrap.sh/Dockerfile/Vagrantfile.
|
|
|
|
Author: Joe Guo <joeg@catalyst.net.nz>
|
|
"""
|
|
|
|
import io
|
|
import os
|
|
import hashlib
|
|
import logging
|
|
import argparse
|
|
from config import DISTS, VAGRANTFILE, OUT
|
|
|
|
HERE = os.path.abspath(os.path.dirname(__file__))
|
|
SHA1SUM_FILE_PATH = os.path.join(HERE, 'sha1sum.txt')
|
|
README_FILE_PATH = os.path.join(HERE, 'README.md')
|
|
|
|
logging.basicConfig(level='INFO')
|
|
log = logging.getLogger(__file__)
|
|
|
|
|
|
def get_files(path):
|
|
"""Get all files recursively in path as a list"""
|
|
filepaths = []
|
|
for root, dirnames, filenames in os.walk(path):
|
|
for filename in filenames:
|
|
filepath = os.path.join(root, filename)
|
|
filepaths.append(filepath)
|
|
return filepaths
|
|
|
|
|
|
def get_sha1sum(debug=False):
|
|
"""Get sha1sum for dists + .gitlab-ci.yml"""
|
|
filepaths = get_files(HERE)
|
|
m = hashlib.sha1()
|
|
i = 0
|
|
for filepath in sorted(list(filepaths)):
|
|
_filepath = os.path.relpath(filepath)
|
|
i += 1
|
|
if filepath == SHA1SUM_FILE_PATH:
|
|
d = "skip "
|
|
if debug:
|
|
print("%s: %s: %s" % (i, d, _filepath))
|
|
continue
|
|
if filepath == README_FILE_PATH:
|
|
d = "skip "
|
|
if debug:
|
|
print("%s: %s: %s" % (i, d, _filepath))
|
|
continue
|
|
if filepath.endswith('.pyc'):
|
|
d = "skip "
|
|
if debug:
|
|
print("%s: %s: %s" % (i, d, _filepath))
|
|
continue
|
|
with io.open(filepath, mode='rb') as _file:
|
|
_bytes = _file.read()
|
|
|
|
m1 = hashlib.sha1()
|
|
m1.update(_bytes)
|
|
d = m1.hexdigest()
|
|
if debug:
|
|
print("%s: %s: %s" % (i, d, _filepath))
|
|
|
|
m.update(_bytes)
|
|
return m.hexdigest()
|
|
|
|
|
|
def render(dists):
|
|
"""Render files for all dists"""
|
|
for dist, config in dists.items():
|
|
home = config['home']
|
|
os.makedirs(home, exist_ok=True)
|
|
for key in ['bootstrap.sh', 'locale.sh', 'packages.yml', 'Dockerfile']:
|
|
path = os.path.join(home, key)
|
|
log.info('%s: render "%s" to %s', dist, key, path)
|
|
with io.open(path, mode='wt', encoding='utf8') as fp:
|
|
fp.write(config[key])
|
|
if path.endswith('.sh'):
|
|
os.chmod(path, 0o755)
|
|
|
|
key = 'Vagrantfile'
|
|
path = os.path.join(OUT, key)
|
|
log.info('%s: render "%s" to %s', dist, key, path)
|
|
with io.open(path, mode='wt', encoding='utf8') as fp:
|
|
fp.write(VAGRANTFILE)
|
|
|
|
# always calc sha1sum after render
|
|
sha1sum = get_sha1sum()
|
|
log.info('write sha1sum to %s: %s', SHA1SUM_FILE_PATH, sha1sum)
|
|
with io.open(SHA1SUM_FILE_PATH, mode='wt', encoding='utf8') as fp:
|
|
fp.write(sha1sum + "\n")
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
description=('Render templates with samba dependencies '
|
|
'to bootstrap multiple distributions.'))
|
|
|
|
parser.add_argument(
|
|
'-r', '--render', action='store_true', help='Render templates')
|
|
|
|
parser.add_argument(
|
|
'-s', '--sha1sum', action='store_true', help='Print sha1sum')
|
|
parser.add_argument(
|
|
'-d', '--debug', action='store_true', help='Debug sha1sum')
|
|
|
|
args = parser.parse_args()
|
|
need_help = True
|
|
|
|
if args.render:
|
|
render(DISTS)
|
|
need_help = False
|
|
if args.sha1sum:
|
|
# we will use the output to check sha1sum in ci
|
|
print(get_sha1sum(args.debug))
|
|
need_help = False
|
|
if need_help:
|
|
parser.print_help()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|