[Reproducible-builds] Bug#834861: cookiecutter: please make the build reproducible
Chris Lamb
lamby at debian.org
Fri Aug 19 23:01:08 UTC 2016
Source: cookiecutter
Version: 1.4.0-2
Severity: wishlist
Tags: patch
User: reproducible-builds at lists.alioth.debian.org
Usertags: environment
X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org
Hi,
Whilst working on the Reproducible Builds effort [0], I noticed
that cookiecutter could not be built reproducibly.
Patch attached.
[0] https://reproducible-builds.org/
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby at debian.org / chris-lamb.co.uk
`-
-------------- next part --------------
--- a/debian/patches/0003-Reproducible-build.patch 1970-01-01 01:00:00.000000000 +0100
--- b/debian/patches/0003-Reproducible-build.patch 2016-08-19 23:59:45.688697595 +0100
@@ -0,0 +1,54 @@
+Description: Make the build reproducible
+Author: Chris Lamb <lamby at debian.org>
+Last-Update: 2016-08-19
+
+--- cookiecutter-1.4.0.orig/cookiecutter/config.py
++++ cookiecutter-1.4.0/cookiecutter/config.py
+@@ -22,6 +22,7 @@ from .exceptions import InvalidConfigura
+
+ logger = logging.getLogger(__name__)
+
++NOT_PROVIDED = object()
+ USER_CONFIG_PATH = os.path.expanduser('~/.cookiecutterrc')
+
+ DEFAULT_CONFIG = {
+@@ -68,7 +69,7 @@ def get_config(config_path):
+ return config_dict
+
+
+-def get_user_config(config_file=USER_CONFIG_PATH):
++def get_user_config(config_file=NOT_PROVIDED):
+ """Retrieve the config from a file or return the defaults if None is
+ passed. If an environment variable `COOKIECUTTER_CONFIG` is set up, try
+ to load its value. Otherwise fall back to a default file or config.
+@@ -77,6 +78,10 @@ def get_user_config(config_file=USER_CON
+ if config_file is None:
+ return copy.copy(DEFAULT_CONFIG)
+
++ # Differentiate between being passed ``None`` and the default.
++ if config_file is NOT_PROVIDED:
++ config_file = USER_CONFIG_PATH
++
+ # Load the given config file
+ if config_file and config_file is not USER_CONFIG_PATH:
+ return get_config(config_file)
+--- cookiecutter-1.4.0.orig/cookiecutter/main.py
++++ cookiecutter-1.4.0/cookiecutter/main.py
+@@ -16,7 +16,7 @@ import logging
+ import os
+ import re
+
+-from .config import get_user_config, USER_CONFIG_PATH
++from .config import get_user_config, NOT_PROVIDED
+ from .exceptions import InvalidModeException, RepositoryNotFound
+ from .prompt import prompt_for_config
+ from .generate import generate_context, generate_files
+@@ -71,7 +71,7 @@ def expand_abbreviations(template, confi
+ def cookiecutter(
+ template, checkout=None, no_input=False, extra_context=None,
+ replay=False, overwrite_if_exists=False, output_dir='.',
+- config_file=USER_CONFIG_PATH):
++ config_file=NOT_PROVIDED):
+ """
+ API equivalent to using Cookiecutter at the command line.
+
--- a/debian/patches/series 2016-08-19 23:41:14.643167381 +0100
--- b/debian/patches/series 2016-08-19 23:50:49.588100239 +0100
@@ -1,2 +1,3 @@
0001-Don-t-test-for-.DS_Store.patch
0002-Use-PyYAML-instead-of-poyo.patch
+0003-Reproducible-build.patch
More information about the Reproducible-builds
mailing list