From 3202e319a19297e3d61d6fe1db87b5ba5a940d28 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 4 Jan 2019 11:02:45 +0100 Subject: Replace build date with Git hash and commit date The usage of a build date prevents reproducible builds. --- common/conf.py | 25 +------------------------ common/waf.py | 22 ++-------------------- wscript | 39 ++++++++++++++++++++++++++++++++++++--- 3 files changed, 39 insertions(+), 47 deletions(-) diff --git a/common/conf.py b/common/conf.py index 60db066..8d5e6b8 100644 --- a/common/conf.py +++ b/common/conf.py @@ -1,26 +1,3 @@ -import datetime - -def build_date(): - now = datetime.date.today() - m = now.strftime('%B') - y = now.strftime('%Y') - if now.day == 11: - s = 'th' - elif now.day % 10 == 1: - s = 'st' - elif now.day == 12: - s = 'th' - elif now.day % 10 == 2: - s = 'nd' - elif now.day == 13: - s = 'th' - elif now.day == 3: - s = 'rd' - else: - s = 'th' - d = '%2d%s' % (now.day, s) - return '%s %s %s' % (d, m, y) - extensions = [ "sphinx.ext.autodoc", "sphinx.ext.coverage", @@ -47,7 +24,7 @@ master_doc = 'index' # General information about the project. project = u'RTEMS Documentation Project' -copyright = u'2018, RTEMS Project (built %s)' % (build_date()) +copyright = u'2018, RTEMS Project' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/common/waf.py b/common/waf.py index d2cb432..01dd24f 100644 --- a/common/waf.py +++ b/common/waf.py @@ -17,24 +17,8 @@ import latex sphinx_min_version = (1, 3) -def build_date(): - import datetime - now = datetime.date.today() - m = now.strftime('%B') - y = now.strftime('%Y') - if now.day % 10 == 1: - s = 'st' - elif now.day % 10 == 2: - s = 'nd' - elif now.day == 3: - s = 'rd' - else: - s = 'th' - d = '%2d%s' % (now.day, s) - return '%s %s %s' % (d, m, y) - def version_cmdline(ctx): - return '-Drelease="%s" -Dversion="%s"' % (ctx.env.VERSION, ctx.env.VERSION) + return '-Drelease="%s" -Dversion="%s"' % (ctx.env.RELEASE, ctx.env.VERSION) def sphinx_cmdline(ctx, build_type, conf_dir, doctrees, source_dir, output_dir, configs = []): @@ -207,8 +191,6 @@ def check_sphinx_extension(ctx, extension): def cmd_configure(ctx): check_sphinx = not ctx.env.BIN_SPHINX_BUILD if check_sphinx: - ctx.msg('Checking version', ctx.env.VERSION) - ctx.find_program("sphinx-build", var="BIN_SPHINX_BUILD", mandatory = True) ctx.find_program("aspell", var = "BIN_ASPELL", mandatory = False) @@ -502,7 +484,7 @@ def xml_catalogue(ctx, building): cat = xml.Document() root = cat.createElement('rtems-docs') - root.setAttribute('date', build_date()) + root.setAttribute('date', ctx.env.DATE) cat.appendChild(root) heading = cat.createElement('catalogue') diff --git a/wscript b/wscript index 82d5eaa..1488d3a 100644 --- a/wscript +++ b/wscript @@ -9,8 +9,6 @@ path.append(abspath('common')) import waflib import waf as docs_waf -version = '5.0.0 (master)' - build_all = ['user', 'rsb', 'c-user', @@ -31,7 +29,6 @@ def options(opt): docs_waf.cmd_options(opt) def configure(conf): - conf.env.VERSION = version for b in building: conf.recurse(b) conf.env['BUILD_FROM_TOP'] = 'yes' @@ -53,7 +50,43 @@ def coverpage_js(ctx): with open(ctx.outputs[0].abspath(), 'w') as o: o.write(js.replace('@CATALOGUE', xml)) +def pretty_day(day): + if day == 3: + s = 'rd' + elif day == 11: + s = 'th' + elif day == 12: + s = 'th' + elif day == 13: + s = 'th' + elif day % 10 == 1: + s = 'st' + elif day % 10 == 2: + s = 'nd' + else: + s = 'th' + return str(day) + s + def build(ctx): + # + # Get date and version from Git + # + version = '5.0.0' + if ctx.exec_command(['git', 'diff-index', '--quiet', 'HEAD']) == 0: + modified = '' + else: + modified = '-modified' + try: + out = ctx.cmd_and_log(['git', 'log', '-1', '--format=%H,%cd', '--date=format:%e,%B,%Y']) + f = out.strip('\n').split(',') + version = version + '.' + f[0] + modified + date = pretty_day(int(f[1])) + ' ' + f[2] + ' ' + f[3] + except waflib.Build.Errors.WafError: + date = 'unknown date' + ctx.env.DATE = date + ctx.env.RELEASE = version + ' (' + date + ')' + ctx.env.VERSION = version + # # Generate any PlantUML images if enabled. # -- cgit v1.2.3