Skip to content

Commit

Permalink
build: avoid dynamic dates for reproducibility
Browse files Browse the repository at this point in the history
We were using dates (in documentation, (c) notices etc) based on the
build-date; that makes it hard to do reproducible builds, so specify a
specific date in the top-level meson file, and use that throughout.
  • Loading branch information
djcb committed Oct 14, 2023
1 parent f4a930c commit 967b724
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 33 deletions.
1 change: 1 addition & 0 deletions build-aux/version.texi.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
@set UPDATED @UPDATED@
@set UPDATED-MONTH @UPDATEDMONTH@
@set UPDATED-YEAR @UPDATEDYEAR@
@set EDITION @VERSION@
@set VERSION @VERSION@
2 changes: 1 addition & 1 deletion guile/mu-guile.texi
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
@include version.texi

@copying
Copyright @copyright{} 2012 Dirk-Jan C. Binnema
Copyright @copyright{} 2012-@value{UPDATED-YEAR} Dirk-Jan C. Binnema

@quotation
Permission is granted to copy, distribute and/or modify this document
Expand Down
13 changes: 3 additions & 10 deletions man/meson.build
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Copyright (C) 2021 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
## Copyright (C) 2021-2023 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
##
## 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
Expand Down Expand Up @@ -63,13 +63,7 @@ man_orgs=[
'mu-view.1.org'
]

env = environment()
env.set('LANG', 'C')
yearmonth = run_command('date', '+%B %Y', check:true, capture:true, env: env)
ym=yearmonth.stdout().strip()

foreach src : man_orgs

# meson makes in tricky to use the results of e.g. configure_file
# in custom_commands..., so this is admittedly a little hacky.
org = join_paths(meson.current_build_dir(), src)
Expand All @@ -81,15 +75,14 @@ foreach src : man_orgs
# @MAN_DATE@: date of the generation (not yet supported by ox-man)
conf_data = configuration_data()
conf_data.set('SECTION_ID', section)
conf_data.set('MAN_DATE', ym)
conf_data.set('MAN_DATE', mu_month_year)
configure_file(input: src, output:'@BASENAME@.org',
configuration: conf_data)

expr_tmpl = ''.join([
'(progn',
' (require \'ox-man)',
' (org-export-to-file \'man "@0@"))',
])
' (org-export-to-file \'man "@0@"))'])
expr = expr_tmpl.format(org.substring(0,-4))
sectiondir = join_paths(mandir, 'man' + section)

Expand Down
34 changes: 26 additions & 8 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ project('mu', ['c', 'cpp'],
'buildtype=debugoptimized',
'warning_level=3',
'c_std=c11',
'cpp_std=c++17'
]
)
'cpp_std=c++17'])

# hard-code the date here (for reproduciblity); we derive the dates used in e.g.
# documentation from this.
mu_date='2023-10-14'

# installation paths
prefixdir = get_option('prefix')
Expand All @@ -42,7 +44,6 @@ else
mu4e_lispdir= get_option('lispdir') / 'mu4e'
endif


################################################################################
# compilers / flags
#
Expand Down Expand Up @@ -97,6 +98,22 @@ endforeach
# https://github.com/djcb/mu/issues/2347
cxx.check_header('charconv', required:true)


################################################################################
# derived date values (based on 'mu-date'); used in docs
date=find_program('date', required:true)
env = environment()
env.set('LANG', 'C')
mu_day_month_year = run_command(date, '-u', '+%d %B %Y', '--date', mu_date,
check:true, capture:true,
env: env).stdout().strip()
mu_month_year = run_command(date, '-u', '+%B %Y', '--date', mu_date,
check:true, capture:true,
env: env).stdout().strip()
mu_year = run_command(date, '-u', '+%Y', '--date', mu_date,
check:true, capture:true, env: env).stdout().strip()


################################################################################
# config.h setup
#
Expand Down Expand Up @@ -244,10 +261,11 @@ endif
version_texi_data=configuration_data()
version_texi_data.set('VERSION', meson.project_version())
version_texi_data.set('EDITION', meson.project_version())
version_texi_data.set('UPDATED',
run_command('date', '+%d %B %Y', check:true).stdout().strip())
version_texi_data.set('UPDATEDMONTH',
run_command('date', '+%B %Y', check:true).stdout().strip())

# derived date values
version_texi_data.set('UPDATED', mu_day_month_year)
version_texi_data.set('UPDATEDMONTH', mu_month_year)
version_texi_data.set('UPDATEDYEAR', mu_year)

configure_file(input: join_paths('build-aux', 'version.texi.in'),
output: 'version.texi',
Expand Down
13 changes: 0 additions & 13 deletions mu4e/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -126,19 +126,6 @@ install_data(mu4e_srcs, install_dir: mu4e_lispdir)
install_data('mu4e-about.org', install_dir : join_paths(datadir, 'doc', 'mu'))

if makeinfo.found()

fulldate = run_command('date', '+%d %B %Y', check:true).stdout().strip()
monthdate = run_command('date', '+%B %Y', check:true).stdout().strip()
version_texi_data = configuration_data({
'fulldate' : fulldate,
'monthdate' : monthdate,
'version' : meson.project_version(),
})
version_texi = configure_file(
input: 'version.texi.in',
output: 'version.texi',
configuration: version_texi_data)

custom_target('mu4e_info',
input: 'mu4e.texi',
output: 'mu4e.info',
Expand Down
2 changes: 1 addition & 1 deletion mu4e/mu4e.texi
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
@c %**end of header

@copying
Copyright @copyright{} 2012-2023 Dirk-Jan C. Binnema
Copyright @copyright{} 2012-@value{UPDATED-YEAR} Dirk-Jan C. Binnema

@quotation
Permission is granted to copy, distribute and/or modify this document
Expand Down

0 comments on commit 967b724

Please sign in to comment.