mirror of
https://github.com/rkd77/elinks.git
synced 2025-02-02 15:09:23 -05:00
[meson] added options: reproducible and source-date-epoch for reproducible builds
Usage example: -Dreproducible=true \ -Dsource-date-epoch=$(git log -1 --pretty=%ct)
This commit is contained in:
parent
ac0241f479
commit
33e36dc1e8
@ -196,6 +196,9 @@
|
|||||||
/* Define if you want: Pod2HTML support */
|
/* Define if you want: Pod2HTML support */
|
||||||
#mesondefine CONFIG_POD2HTML
|
#mesondefine CONFIG_POD2HTML
|
||||||
|
|
||||||
|
/* Define if you want: Reproducible build */
|
||||||
|
#mesondefine CONFIG_REPRODUCIBLE
|
||||||
|
|
||||||
/* Define if you want: QuickJS support */
|
/* Define if you want: QuickJS support */
|
||||||
#mesondefine CONFIG_QUICKJS
|
#mesondefine CONFIG_QUICKJS
|
||||||
|
|
||||||
|
@ -10,6 +10,12 @@ xmlto = find_program('xmlto', required: false)
|
|||||||
perl_html = []
|
perl_html = []
|
||||||
perl_hooks_html = []
|
perl_hooks_html = []
|
||||||
|
|
||||||
|
if conf_data.get('CONFIG_REPRODUCIBLE')
|
||||||
|
asciidoc_env = ['LC_ALL=C', 'LANGUAGE=en', 'CONFIG_REPRODUCIBLE=1', 'SOURCE_DATE_EPOCH='+conf_data.get('SOURCE_DATE_EPOCH')]
|
||||||
|
else
|
||||||
|
asciidoc_env = []
|
||||||
|
endif
|
||||||
|
|
||||||
if pod2html.found()
|
if pod2html.found()
|
||||||
perl_html = custom_target('perl.html',
|
perl_html = custom_target('perl.html',
|
||||||
input: ['perl.pod'],
|
input: ['perl.pod'],
|
||||||
@ -68,6 +74,7 @@ elinks_1_html = custom_target('elinks.1.html',
|
|||||||
input: 'elinks.1.txt',
|
input: 'elinks.1.txt',
|
||||||
output: 'elinks.1.html',
|
output: 'elinks.1.html',
|
||||||
depends: option_command_frag_xhtml,
|
depends: option_command_frag_xhtml,
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
||||||
@ -81,6 +88,7 @@ elinks_conf_5_html = custom_target('elinks.conf.5.html',
|
|||||||
input: 'elinks.conf.5.txt',
|
input: 'elinks.conf.5.txt',
|
||||||
output: 'elinks.conf.5.html',
|
output: 'elinks.conf.5.html',
|
||||||
depends: option_config_frag_xhtml,
|
depends: option_config_frag_xhtml,
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
||||||
@ -94,6 +102,7 @@ elinkskeys_5_html = custom_target('elinkskeys.5.html',
|
|||||||
input: 'elinkskeys.5.txt',
|
input: 'elinkskeys.5.txt',
|
||||||
output: 'elinkskeys.5.html',
|
output: 'elinkskeys.5.html',
|
||||||
depends: [keymap_actions_txt, keymap_defaults_txt],
|
depends: [keymap_actions_txt, keymap_defaults_txt],
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
||||||
@ -106,6 +115,7 @@ elinkskeys_5_html = custom_target('elinkskeys.5.html',
|
|||||||
hacking_html = custom_target('hacking.html',
|
hacking_html = custom_target('hacking.html',
|
||||||
input: 'hacking.txt',
|
input: 'hacking.txt',
|
||||||
output: 'hacking.html',
|
output: 'hacking.html',
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
||||||
@ -119,6 +129,7 @@ manual_html = custom_target('manual.html',
|
|||||||
input: 'manual.txt',
|
input: 'manual.txt',
|
||||||
output: 'manual.html',
|
output: 'manual.html',
|
||||||
depends: features_txt,
|
depends: features_txt,
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/xhtml11.conf',
|
||||||
@ -132,6 +143,7 @@ elinks_1_xml = custom_target('elinks.1.xml',
|
|||||||
input: 'elinks.1.txt',
|
input: 'elinks.1.txt',
|
||||||
output: 'elinks.1.xml',
|
output: 'elinks.1.xml',
|
||||||
depends: option_command_frag_xml,
|
depends: option_command_frag_xml,
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
||||||
@ -146,6 +158,7 @@ elinks_conf_5_xml = custom_target('elinks.conf.5.xml',
|
|||||||
input: 'elinks.conf.5.txt',
|
input: 'elinks.conf.5.txt',
|
||||||
output: 'elinks.conf.5.xml',
|
output: 'elinks.conf.5.xml',
|
||||||
depends: option_config_frag_xml,
|
depends: option_config_frag_xml,
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
||||||
@ -160,6 +173,7 @@ elinkskeys_5_xml = custom_target('elinkskeys.5.xml',
|
|||||||
input: 'elinkskeys.5.txt',
|
input: 'elinkskeys.5.txt',
|
||||||
output: 'elinkskeys.5.xml',
|
output: 'elinkskeys.5.xml',
|
||||||
depends: [keymap_actions_txt, keymap_defaults_txt],
|
depends: [keymap_actions_txt, keymap_defaults_txt],
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
||||||
@ -173,6 +187,7 @@ elinkskeys_5_xml = custom_target('elinkskeys.5.xml',
|
|||||||
hacking_xml = custom_target('hacking.xml',
|
hacking_xml = custom_target('hacking.xml',
|
||||||
input: 'hacking.txt',
|
input: 'hacking.txt',
|
||||||
output: 'hacking.xml',
|
output: 'hacking.xml',
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
||||||
@ -186,6 +201,7 @@ manual_xml = custom_target('manual.xml',
|
|||||||
input: 'manual.txt',
|
input: 'manual.txt',
|
||||||
output: 'manual.xml',
|
output: 'manual.xml',
|
||||||
depends: features_txt,
|
depends: features_txt,
|
||||||
|
env: asciidoc_env,
|
||||||
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
command: [meson.current_source_dir() + '/tools/asciidoc/asciidoc.py',
|
||||||
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
'--no-conf', '-f', meson.current_source_dir() + '/tools/asciidoc/asciidoc.conf',
|
||||||
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
'-f', meson.current_source_dir() + '/tools/asciidoc/docbook.conf',
|
||||||
|
@ -1061,13 +1061,19 @@ class Document:
|
|||||||
self.safe = True # Default safe mode.
|
self.safe = True # Default safe mode.
|
||||||
def init_attrs(self):
|
def init_attrs(self):
|
||||||
# Set implicit attributes.
|
# Set implicit attributes.
|
||||||
d = time.localtime(time.time())
|
if os.environ.get('CONFIG_REPRODUCIBLE', ''):
|
||||||
self.attributes['localdate'] = time.strftime('%d-%b-%Y',d)
|
d = time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
|
||||||
s = time.strftime('%H:%M:%S',d)
|
self.attributes['localdate'] = time.strftime('%d-%b-%Y',d)
|
||||||
if time.daylight:
|
s = time.strftime('%H:%M:%S %z',d)
|
||||||
self.attributes['localtime'] = s + ' ' + time.tzname[1]
|
self.attributes['localtime'] = s
|
||||||
else:
|
else:
|
||||||
self.attributes['localtime'] = s + ' ' + time.tzname[0]
|
d = time.localtime(time.time())
|
||||||
|
self.attributes['localdate'] = time.strftime('%d-%b-%Y',d)
|
||||||
|
s = time.strftime('%H:%M:%S',d)
|
||||||
|
if time.daylight:
|
||||||
|
self.attributes['localtime'] = s + ' ' + time.tzname[1]
|
||||||
|
else:
|
||||||
|
self.attributes['localtime'] = s + ' ' + time.tzname[0]
|
||||||
self.attributes['asciidoc-version'] = VERSION
|
self.attributes['asciidoc-version'] = VERSION
|
||||||
self.attributes['backend'] = document.backend
|
self.attributes['backend'] = document.backend
|
||||||
self.attributes['doctype'] = document.doctype
|
self.attributes['doctype'] = document.doctype
|
||||||
|
@ -74,6 +74,9 @@ conf_data.set('CONFIG_SCRIPTING_GUILE', get_option('guile'))
|
|||||||
conf_data.set('CONFIG_SCRIPTING_PERL', get_option('perl'))
|
conf_data.set('CONFIG_SCRIPTING_PERL', get_option('perl'))
|
||||||
conf_data.set('CONFIG_SCRIPTING_PYTHON', get_option('python'))
|
conf_data.set('CONFIG_SCRIPTING_PYTHON', get_option('python'))
|
||||||
|
|
||||||
|
conf_data.set('CONFIG_REPRODUCIBLE', get_option('reproducible'))
|
||||||
|
conf_data.set('SOURCE_DATE_EPOCH', get_option('source-date-epoch'))
|
||||||
|
|
||||||
luapkg = get_option('luapkg')
|
luapkg = get_option('luapkg')
|
||||||
if luapkg != ''
|
if luapkg != ''
|
||||||
conf_data.set('CONFIG_SCRIPTING_LUA', true)
|
conf_data.set('CONFIG_SCRIPTING_LUA', true)
|
||||||
|
@ -65,3 +65,6 @@ option('gemini', type: 'boolean', value: false, description: 'gemini protocol su
|
|||||||
option('gettext', type: 'boolean', value: false, description: 'use external gettext library')
|
option('gettext', type: 'boolean', value: false, description: 'use external gettext library')
|
||||||
option('quickjs', type: 'boolean', value: false, description: 'use quickjs library')
|
option('quickjs', type: 'boolean', value: false, description: 'use quickjs library')
|
||||||
option('static', type: 'boolean', value: false, description: 'link static binary')
|
option('static', type: 'boolean', value: false, description: 'link static binary')
|
||||||
|
|
||||||
|
option('reproducible', type: 'boolean', value: false, description: 'reproducible build')
|
||||||
|
option('source-date-epoch', type: 'string', value: '', description: 'source date epoch for reproducible builds')
|
||||||
|
@ -124,9 +124,10 @@ get_dyn_full_version(struct terminal *term, int more)
|
|||||||
}
|
}
|
||||||
|
|
||||||
add_char_to_string(&string, '\n');
|
add_char_to_string(&string, '\n');
|
||||||
|
#ifndef CONFIG_REPRODUCIBLE
|
||||||
add_format_to_string(&string, _("Built on %s %s", term),
|
add_format_to_string(&string, _("Built on %s %s", term),
|
||||||
build_date, build_time);
|
build_date, build_time);
|
||||||
|
#endif
|
||||||
if (more) {
|
if (more) {
|
||||||
add_to_string(&string, "\n\n");
|
add_to_string(&string, "\n\n");
|
||||||
add_to_string(&string, _("Text WWW browser", term));
|
add_to_string(&string, _("Text WWW browser", term));
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#include "vernum.h"
|
#include "vernum.h"
|
||||||
|
|
||||||
|
#ifndef CONFIG_REPRODUCIBLE
|
||||||
const char *build_date = __DATE__;
|
const char *build_date = __DATE__;
|
||||||
const char *build_time = __TIME__;
|
const char *build_time = __TIME__;
|
||||||
|
#endif
|
||||||
const char *build_id = BUILD_ID;
|
const char *build_id = BUILD_ID;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user