mirror of https://github.com/djcb/mu.git
build: avoid dynamic dates for reproducibility
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.
This commit is contained in:
parent
f4a930cd19
commit
967b724e75
|
@ -1,4 +1,5 @@
|
||||||
@set UPDATED @UPDATED@
|
@set UPDATED @UPDATED@
|
||||||
@set UPDATED-MONTH @UPDATEDMONTH@
|
@set UPDATED-MONTH @UPDATEDMONTH@
|
||||||
|
@set UPDATED-YEAR @UPDATEDYEAR@
|
||||||
@set EDITION @VERSION@
|
@set EDITION @VERSION@
|
||||||
@set VERSION @VERSION@
|
@set VERSION @VERSION@
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
@include version.texi
|
@include version.texi
|
||||||
|
|
||||||
@copying
|
@copying
|
||||||
Copyright @copyright{} 2012 Dirk-Jan C. Binnema
|
Copyright @copyright{} 2012-@value{UPDATED-YEAR} Dirk-Jan C. Binnema
|
||||||
|
|
||||||
@quotation
|
@quotation
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
|
|
|
@ -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
|
## 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
|
## it under the terms of the GNU General Public License as published by
|
||||||
|
@ -63,13 +63,7 @@ man_orgs=[
|
||||||
'mu-view.1.org'
|
'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
|
foreach src : man_orgs
|
||||||
|
|
||||||
# meson makes in tricky to use the results of e.g. configure_file
|
# meson makes in tricky to use the results of e.g. configure_file
|
||||||
# in custom_commands..., so this is admittedly a little hacky.
|
# in custom_commands..., so this is admittedly a little hacky.
|
||||||
org = join_paths(meson.current_build_dir(), src)
|
org = join_paths(meson.current_build_dir(), src)
|
||||||
|
@ -81,15 +75,14 @@ foreach src : man_orgs
|
||||||
# @MAN_DATE@: date of the generation (not yet supported by ox-man)
|
# @MAN_DATE@: date of the generation (not yet supported by ox-man)
|
||||||
conf_data = configuration_data()
|
conf_data = configuration_data()
|
||||||
conf_data.set('SECTION_ID', section)
|
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',
|
configure_file(input: src, output:'@BASENAME@.org',
|
||||||
configuration: conf_data)
|
configuration: conf_data)
|
||||||
|
|
||||||
expr_tmpl = ''.join([
|
expr_tmpl = ''.join([
|
||||||
'(progn',
|
'(progn',
|
||||||
' (require \'ox-man)',
|
' (require \'ox-man)',
|
||||||
' (org-export-to-file \'man "@0@"))',
|
' (org-export-to-file \'man "@0@"))'])
|
||||||
])
|
|
||||||
expr = expr_tmpl.format(org.substring(0,-4))
|
expr = expr_tmpl.format(org.substring(0,-4))
|
||||||
sectiondir = join_paths(mandir, 'man' + section)
|
sectiondir = join_paths(mandir, 'man' + section)
|
||||||
|
|
||||||
|
|
34
meson.build
34
meson.build
|
@ -24,9 +24,11 @@ project('mu', ['c', 'cpp'],
|
||||||
'buildtype=debugoptimized',
|
'buildtype=debugoptimized',
|
||||||
'warning_level=3',
|
'warning_level=3',
|
||||||
'c_std=c11',
|
'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
|
# installation paths
|
||||||
prefixdir = get_option('prefix')
|
prefixdir = get_option('prefix')
|
||||||
|
@ -42,7 +44,6 @@ else
|
||||||
mu4e_lispdir= get_option('lispdir') / 'mu4e'
|
mu4e_lispdir= get_option('lispdir') / 'mu4e'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# compilers / flags
|
# compilers / flags
|
||||||
#
|
#
|
||||||
|
@ -97,6 +98,22 @@ endforeach
|
||||||
# https://github.com/djcb/mu/issues/2347
|
# https://github.com/djcb/mu/issues/2347
|
||||||
cxx.check_header('charconv', required:true)
|
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
|
# config.h setup
|
||||||
#
|
#
|
||||||
|
@ -244,10 +261,11 @@ endif
|
||||||
version_texi_data=configuration_data()
|
version_texi_data=configuration_data()
|
||||||
version_texi_data.set('VERSION', meson.project_version())
|
version_texi_data.set('VERSION', meson.project_version())
|
||||||
version_texi_data.set('EDITION', 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())
|
# derived date values
|
||||||
version_texi_data.set('UPDATEDMONTH',
|
version_texi_data.set('UPDATED', mu_day_month_year)
|
||||||
run_command('date', '+%B %Y', check:true).stdout().strip())
|
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'),
|
configure_file(input: join_paths('build-aux', 'version.texi.in'),
|
||||||
output: 'version.texi',
|
output: 'version.texi',
|
||||||
|
|
|
@ -126,19 +126,6 @@ install_data(mu4e_srcs, install_dir: mu4e_lispdir)
|
||||||
install_data('mu4e-about.org', install_dir : join_paths(datadir, 'doc', 'mu'))
|
install_data('mu4e-about.org', install_dir : join_paths(datadir, 'doc', 'mu'))
|
||||||
|
|
||||||
if makeinfo.found()
|
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',
|
custom_target('mu4e_info',
|
||||||
input: 'mu4e.texi',
|
input: 'mu4e.texi',
|
||||||
output: 'mu4e.info',
|
output: 'mu4e.info',
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
@c %**end of header
|
@c %**end of header
|
||||||
|
|
||||||
@copying
|
@copying
|
||||||
Copyright @copyright{} 2012-2023 Dirk-Jan C. Binnema
|
Copyright @copyright{} 2012-@value{UPDATED-YEAR} Dirk-Jan C. Binnema
|
||||||
|
|
||||||
@quotation
|
@quotation
|
||||||
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
|
|
Loading…
Reference in New Issue