Fix setup.py to not touch pylock.po

This commit is contained in:
Matthias Schiffer 2013-04-16 10:34:09 +02:00
parent 773eaa4350
commit c54421cf55

View file

@ -1,18 +1,43 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import distutils.core import distutils.core
import distutils.command.build
import distutils.command.install import distutils.command.install
from DistUtilsExtra.command import build_extra, build_i18n import glob
import os import os
class build_pylock(distutils.command.build.build):
def run(self):
distutils.command.build.build.run(self)
data_files = self.distribution.data_files
if data_files is None:
# in case not data_files are defined in setup.py
self.distribution.data_files = data_files = []
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, "%s.mo" % self.distribution.metadata.name)
if not os.path.exists(mo_dir):
os.makedirs(mo_dir)
cmd = ["msgfmt", po_file, "-o", mo_file]
po_mtime = os.path.getmtime(po_file)
mo_mtime = os.path.exists(mo_file) and os.path.getmtime(mo_file) or 0
if po_mtime > mo_mtime:
self.spawn(cmd)
targetpath = os.path.join("share/locale", lang, "LC_MESSAGES")
data_files.append((targetpath, (mo_file,)))
class install_pylock(distutils.command.install.install): class install_pylock(distutils.command.install.install):
def run(self): def run(self):
distutils.command.install.install.run(self)
distutils.dir_util.copy_tree('etc', os.path.join(self.root, 'etc'), distutils.dir_util.copy_tree('etc', os.path.join(self.root, 'etc'),
preserve_times=0, preserve_symlinks=1, verbose=1) preserve_times=0, preserve_symlinks=1, verbose=1)
distutils.command.install.install.run(self)
distutils.core.setup( distutils.core.setup(
name = 'pylock', name = 'pylock',
version = '1', version = '1',
@ -30,8 +55,7 @@ distutils.core.setup(
scripts = ['scripts/pylock'], scripts = ['scripts/pylock'],
cmdclass = { cmdclass = {
'build': build_extra.build_extra, 'build': build_pylock,
'build_i18n': build_i18n.build_i18n,
'install': install_pylock, 'install': install_pylock,
}, },