From 48736606ec70ac8708c9fa5e04af783bd88d327b Mon Sep 17 00:00:00 2001 From: Michael Hudson-Doyle Date: Fri, 8 May 2020 14:10:02 +1200 Subject: [PATCH] inline streamlined version of build_i18n & intltool into our setup.py I found the layers and layers of other tools just confusing. "python3 setup.py build" generates an identical (apart from timestamp) POT file and an identical build directory before and after this change. --- setup.py | 52 ++++++++++++++++++++++++++++++++++++++++---------- snapcraft.yaml | 2 -- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/setup.py b/setup.py index 0ec6268e..584ee005 100644 --- a/setup.py +++ b/setup.py @@ -22,18 +22,48 @@ subiquity Ubuntu Server Installer """ -from setuptools import setup, find_packages - +import distutils.cmd +import distutils.command.build +import glob import os +import subprocess import sys -setup_kwargs = {} -# dpkg build uses build and install, tox uses sdist -if 'SUBIQUITY_NO_I18N' not in os.environ: - from DistUtilsExtra.command import build_extra - from DistUtilsExtra.command import build_i18n - setup_kwargs['cmdclass'] = {'build': build_extra.build_extra, - 'build_i18n': build_i18n.build_i18n} +from setuptools import setup, find_packages + + +class build(distutils.command.build.build): + + def run(self): + super().run() + data_files = self.distribution.data_files + + with open('po/POTFILES.in') as in_fp: + with open('po/POTFILES.in.tmp', 'w') as out_fp: + for line in in_fp: + if line.startswith('['): + continue + out_fp.write('../' + line) + + subprocess.run([ + 'xgettext', + '--directory=.', + '--add-comments', + '--from-code=UTF-8', + '--output=subiquity.pot', + '--files-from=POTFILES.in.tmp', + ], cwd="po") + os.unlink('po/POTFILES.in.tmp') + + for po_file in glob.glob("po/*.po"): + lang = os.path.basename(po_file[:-3]) + mo_dir = os.path.join("build", "mo", lang, "LC_MESSAGES") + mo_file = os.path.join(mo_dir, "subiquity.mo") + if not os.path.exists(mo_dir): + os.makedirs(mo_dir) + subprocess.run(["msgfmt", po_file, "-o", mo_file]) + targetpath = os.path.join("share/locale", lang, "LC_MESSAGES") + data_files.append((targetpath, (mo_file,))) with open(os.path.join(os.path.dirname(__file__), @@ -43,6 +73,7 @@ with open(os.path.join(os.path.dirname(__file__), exec('\n'.join(lines), ns) version = ns['__version__'] + if sys.argv[-1] == 'clean': print("Cleaning up ...") os.system('rm -rf subiquity.egg-info build dist') @@ -75,4 +106,5 @@ setup(name='subiquity', ], }, data_files=[], - **setup_kwargs) + cmdclass={'build': build}, + ) diff --git a/snapcraft.yaml b/snapcraft.yaml index 9f7129e8..e6417bf7 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -68,7 +68,6 @@ parts: - libsystemd-dev - lsb-release - pkg-config - - python3-distutils-extra - python3-urwid stage-packages: - cloud-init @@ -76,7 +75,6 @@ parts: - iso-codes - lsb-release - python3-bson - - python3-distutils-extra - python3-urwid - python3-requests - python3-requests-unixsocket