Bug#783326: Acknowledgement (please make the generated output reproducible)

2015-04-28 Thread Kenneth Pronovici
I've uploaded epydoc_3.0.1+dfsg-6 including this change.  I tweaked
the help output slightly and also added information in the manpage.
The final version of the patch is attached for reference.

KEN

-- 
Kenneth J. Pronovici prono...@debian.org
Description: Add --no-include-build-time option to allow reproducible builds.
Author: Jelmer Vernooij jel...@debian.org, Kenneth J. Pronovici prono...@debian.org
Bug: https://sourceforge.net/p/epydoc/bugs/367/
Bug-Debian: https://bugs.debian.org/783326
Forwarded: https://sourceforge.net/p/epydoc/bugs/367/
Last-Update: 2015-04-25

Index: epydoc-3.0.1+dfsg/epydoc/cli.py
===
--- epydoc-3.0.1+dfsg.orig/epydoc/cli.py
+++ epydoc-3.0.1+dfsg/epydoc/cli.py
@@ -137,7 +137,7 @@ OPTION_DEFAULTS = dict(
 include_source_code=True, pstat_files=[], simple_term=False, fail_on=None,
 exclude=[], exclude_parse=[], exclude_introspect=[],
 external_api=[], external_api_file=[], external_api_root=[],
-redundant_details=False, src_code_tab_width=8)
+redundant_details=False, src_code_tab_width=8, include_build_time=True)
 
 def parse_arguments():
 # Construct the option parser.
@@ -286,6 +286,10 @@ def parse_arguments():
 action='store_true', dest='include_log',
 help=(Include a page with the process log (epydoc-log.html)))
 
+generation_group.add_option('--no-include-build-time',
+action='store_false', dest='include_build_time',
+help=(Do not print the build time in the page footer, useful for reproducible builds.))
+
 generation_group.add_option(
 '--redundant-details',
 action='store_true', dest='redundant_details',
@@ -558,6 +562,8 @@ def parse_configfiles(configfiles, optio
 options.include_source_code = _str_to_bool(val, optname)
 elif optname in ('include-log', 'include_log'):
 options.include_log = _str_to_bool(val, optname)
+elif optname in ('include-build-time', 'include_build_time'):
+options.include_build_time = _str_to_bool(val, optname)
 elif optname in ('redundant-details', 'redundant_details'):
 options.redundant_details = _str_to_bool(val, optname)
 
Index: epydoc-3.0.1+dfsg/epydoc/docwriter/html.py
===
--- epydoc-3.0.1+dfsg.orig/epydoc/docwriter/html.py
+++ epydoc-3.0.1+dfsg/epydoc/docwriter/html.py
@@ -291,6 +291,9 @@ class HTMLWriter:
 @type include_log: C{boolean}
 @keyword include_log: If true, the the footer will include an
   href to the page 'epydoc-log.html'.
+@type include_build_time: C{boolean}
+@keyword include_build_time: If true, the the footer will
+  include the build time.
 @type src_code_tab_width: C{int}
 @keyword src_code_tab_width: Number of spaces to replace each tab
 with in source code listings.
@@ -358,6 +361,9 @@ class HTMLWriter:
 self._include_log = kwargs.get('include_log', False)
 Are we generating an HTML log page?
 
+self._include_build_time = kwargs.get('include_build_time', True)
+Are we including a build time?
+
 self._src_code_tab_width = kwargs.get('src_code_tab_width', 8)
 Number of spaces to replace each tab with in source code
 listings.
@@ -1770,10 +1776,14 @@ class HTMLWriter:
   tr
 td align=left class=footer
if self._include_log:
-a href=epydoc-log.htmlGenerated by Epydoc
-$epydoc.__version__$ on $time.asctime()$/a
-   else:
-Generated by Epydoc $epydoc.__version__$ on $time.asctime()$
+a href=epydoc-log.html
+   #endif
+Generated by Epydoc $epydoc.__version__$
+ if self._include_build_time:
+on $time.asctime()$
+ #endif
+   if self._include_log:
+/a
#endif
 /td
 td align=right class=footer
Index: epydoc-3.0.1+dfsg/man/epydoc.1
===
--- epydoc-3.0.1+dfsg.orig/man/epydoc.1
+++ epydoc-3.0.1+dfsg/man/epydoc.1
@@ -226,6 +226,12 @@ Generate an HTML page
 .B epydoc\-log.html
 containing all error and warning messages that are generated by
 epydoc, and include it in the generated output.
+.TP
+.B \-\-no\-include\-build\-time
+Do not print the build time in the page footer.  This is useful if
+you are trying to generate reproducible builds, where each build
+against a given version of a source tree produces exactly the
+same artifacts.
 .RE
 .PP
 .\--


Bug#783326: Acknowledgement (please make the generated output reproducible)

2015-04-25 Thread Jelmer Vernooij
And here is the aforementioned patch.
Description: Add --no-include-build-time option to allow reproducible builds.
Author: Jelmer Vernooij jel...@debian.org
Bug: https://sourceforge.net/p/epydoc/bugs/367/
Bug-Debian: https://bugs.debian.org/783326
Forwarded: https://sourceforge.net/p/epydoc/bugs/367/
Last-Update: 2015-04-25

--- epydoc-3.0.1+dfsg.orig/epydoc/cli.py
+++ epydoc-3.0.1+dfsg/epydoc/cli.py
@@ -137,7 +137,7 @@ OPTION_DEFAULTS = dict(
 include_source_code=True, pstat_files=[], simple_term=False, fail_on=None,
 exclude=[], exclude_parse=[], exclude_introspect=[],
 external_api=[], external_api_file=[], external_api_root=[],
-redundant_details=False, src_code_tab_width=8)
+redundant_details=False, src_code_tab_width=8, include_build_time=True)
 
 def parse_arguments():
 # Construct the option parser.
@@ -286,6 +286,10 @@ def parse_arguments():
 action='store_true', dest='include_log',
 help=(Include a page with the process log (epydoc-log.html)))
 
+generation_group.add_option('--no-include-build-time',
+action='store_false', dest='include_build_time',
+help=(Print the build time in the page footer.))
+
 generation_group.add_option(
 '--redundant-details',
 action='store_true', dest='redundant_details',
@@ -558,6 +562,8 @@ def parse_configfiles(configfiles, optio
 options.include_source_code = _str_to_bool(val, optname)
 elif optname in ('include-log', 'include_log'):
 options.include_log = _str_to_bool(val, optname)
+elif optname in ('include-build-time', 'include_build_time'):
+options.include_build_time = _str_to_bool(val, optname)
 elif optname in ('redundant-details', 'redundant_details'):
 options.redundant_details = _str_to_bool(val, optname)
 
--- epydoc-3.0.1+dfsg.orig/epydoc/docwriter/html.py
+++ epydoc-3.0.1+dfsg/epydoc/docwriter/html.py
@@ -291,6 +291,9 @@ class HTMLWriter:
 @type include_log: C{boolean}
 @keyword include_log: If true, the the footer will include an
   href to the page 'epydoc-log.html'.
+@type include_build_time: C{boolean}
+@keyword include_build_time: If true, the the footer will
+  include the build time.
 @type src_code_tab_width: C{int}
 @keyword src_code_tab_width: Number of spaces to replace each tab
 with in source code listings.
@@ -358,6 +361,9 @@ class HTMLWriter:
 self._include_log = kwargs.get('include_log', False)
 Are we generating an HTML log page?
 
+self._include_build_time = kwargs.get('include_build_time', True)
+Are we including a build time?
+
 self._src_code_tab_width = kwargs.get('src_code_tab_width', 8)
 Number of spaces to replace each tab with in source code
 listings.
@@ -1770,10 +1776,14 @@ class HTMLWriter:
   tr
 td align=left class=footer
if self._include_log:
-a href=epydoc-log.htmlGenerated by Epydoc
-$epydoc.__version__$ on $time.asctime()$/a
-   else:
-Generated by Epydoc $epydoc.__version__$ on $time.asctime()$
+a href=epydoc-log.html
+   #endif
+Generated by Epydoc $epydoc.__version__$
+ if self._include_build_time:
+on $time.asctime()$
+ #endif
+   if self._include_log:
+/a
#endif
 /td
 td align=right class=footer


signature.asc
Description: Digital signature