From 4b4428a9e3ac38d582bc6476a5fc6c2482ba3c75 Mon Sep 17 00:00:00 2001 From: Valerij Maljulin Date: Aug 22 2019 15:06:26 +0000 Subject: Fix locale issues with date representations This fixes #1214 Also fixes tests running on different locales Signed-off-by: Valerij Maljulin --- diff --git a/module_build_service/builder/KojiModuleBuilder.py b/module_build_service/builder/KojiModuleBuilder.py index ca9f5c2..2bac74d 100644 --- a/module_build_service/builder/KojiModuleBuilder.py +++ b/module_build_service/builder/KojiModuleBuilder.py @@ -38,6 +38,7 @@ import kobo.rpmlib import threading import six.moves.xmlrpc_client as xmlrpclib import munch +import locale from itertools import chain from OpenSSL.SSL import SysCallError import textwrap @@ -51,7 +52,7 @@ from module_build_service.errors import ProgrammingError from module_build_service.builder.base import GenericBuilder from module_build_service.builder.KojiContentGenerator import KojiContentGenerator -from module_build_service.utils import get_reusable_components, get_reusable_module +from module_build_service.utils import get_reusable_components, get_reusable_module, set_locale logging.basicConfig(level=logging.DEBUG) @@ -324,7 +325,8 @@ class KojiModuleBuilder(GenericBuilder): name = "module-build-macros" version = "0.1" release = "1" - today = datetime.date.today().strftime("%a %b %d %Y") + with set_locale(locale.LC_TIME, "en_US.utf8"): + today = datetime.date.today().strftime("%a %b %d %Y") mmd = module_build.mmd() # Generate "Conflicts: name = version-release". This is workaround for diff --git a/module_build_service/utils/general.py b/module_build_service/utils/general.py index 2dfee2a..597ff28 100644 --- a/module_build_service/utils/general.py +++ b/module_build_service/utils/general.py @@ -27,6 +27,8 @@ import functools import inspect import hashlib import time +import locale +import contextlib from datetime import datetime from functools import partial @@ -761,3 +763,10 @@ def mmd_to_str(mmd): index = Modulemd.ModuleIndex() index.add_module_stream(mmd) return to_text_type(index.dump_to_string()) + + +@contextlib.contextmanager +def set_locale(*args, **kwargs): + saved = locale.setlocale(locale.LC_ALL) + yield locale.setlocale(*args, **kwargs) + locale.setlocale(locale.LC_ALL, saved)