setup.py: install all files if build is skipped
This commit is contained in:
		
							parent
							
								
									672aae9c12
								
							
						
					
					
						commit
						1ec49e9f24
					
				
					 1 changed files with 41 additions and 16 deletions
				
			
		
							
								
								
									
										57
									
								
								setup.py
									
										
									
									
									
								
							
							
						
						
									
										57
									
								
								setup.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -9,6 +9,7 @@ if sys.version_info < (3, 5):
 | 
			
		|||
from setuptools import setup, find_packages
 | 
			
		||||
from setuptools import Command
 | 
			
		||||
from setuptools.command.build_py import build_py as _build
 | 
			
		||||
from setuptools.command.install import install as _install
 | 
			
		||||
from distutils import log
 | 
			
		||||
from distutils.util import convert_path, newer
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +19,9 @@ import gajim
 | 
			
		|||
 | 
			
		||||
pos = [x for x in os.listdir('po') if x[-3:] == ".po"]
 | 
			
		||||
ALL_LINGUAS = sorted([os.path.split(x)[-1][:-3] for x in pos])
 | 
			
		||||
MAN_FILES = ['gajim.1', 'gajim-history-manager.1', 'gajim-remote.1']
 | 
			
		||||
META_FILES = [('data/org.gajim.Gajim.desktop', 'share/applications', '--desktop'),
 | 
			
		||||
              ('data/org.gajim.Gajim.appdata.xml', 'share/metainfo', '--xml')]
 | 
			
		||||
cwd = os.path.dirname(os.path.realpath(__file__))
 | 
			
		||||
build_dir = os.path.join(cwd, "build")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +57,6 @@ def build_trans(build_cmd):
 | 
			
		|||
    '''
 | 
			
		||||
    Translate the language files into gajim.mo
 | 
			
		||||
    '''
 | 
			
		||||
    data_files = build_cmd.distribution.data_files
 | 
			
		||||
    for lang in ALL_LINGUAS:
 | 
			
		||||
        po_file = os.path.join('po', lang + '.po')
 | 
			
		||||
        mo_file = os.path.join(build_dir, 'mo', lang, 'LC_MESSAGES', 'gajim.mo')
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +75,11 @@ def build_trans(build_cmd):
 | 
			
		|||
                    raise SystemExit(msg)
 | 
			
		||||
            log.info('Compiling %s >> %s', po_file, mo_file)
 | 
			
		||||
 | 
			
		||||
        # linux specific piece:
 | 
			
		||||
 | 
			
		||||
def install_trans(install_cmd):
 | 
			
		||||
    data_files = install_cmd.distribution.data_files
 | 
			
		||||
    for lang in ALL_LINGUAS:
 | 
			
		||||
        mo_file = os.path.join(build_dir, 'mo', lang, 'LC_MESSAGES', 'gajim.mo')
 | 
			
		||||
        target = 'share/locale/' + lang + '/LC_MESSAGES'
 | 
			
		||||
        data_files.append((target, [mo_file]))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -81,14 +88,12 @@ def build_man(build_cmd):
 | 
			
		|||
    '''
 | 
			
		||||
    Compress Gajim manual files
 | 
			
		||||
    '''
 | 
			
		||||
    data_files = build_cmd.distribution.data_files
 | 
			
		||||
    for man in ['gajim.1', 'gajim-history-manager.1', 'gajim-remote.1']:
 | 
			
		||||
        filename = os.path.join('data', man)
 | 
			
		||||
        newdir = os.path.join(build_dir, 'man')
 | 
			
		||||
        if not (os.path.isdir(newdir) or os.path.islink(newdir)):
 | 
			
		||||
            os.makedirs(newdir)
 | 
			
		||||
    newdir = os.path.join(build_dir, 'man')
 | 
			
		||||
    if not (os.path.isdir(newdir) or os.path.islink(newdir)):
 | 
			
		||||
        os.makedirs(newdir)
 | 
			
		||||
 | 
			
		||||
        import gzip
 | 
			
		||||
    for man in MAN_FILES:
 | 
			
		||||
        filename = os.path.join('data', man)
 | 
			
		||||
        man_file_gz = os.path.join(newdir, man + '.gz')
 | 
			
		||||
        if os.path.exists(man_file_gz):
 | 
			
		||||
            if newer(filename, man_file_gz):
 | 
			
		||||
| 
						 | 
				
			
			@ -97,13 +102,21 @@ def build_man(build_cmd):
 | 
			
		|||
                filename = False
 | 
			
		||||
 | 
			
		||||
        if filename:
 | 
			
		||||
            import gzip
 | 
			
		||||
            # Binary io, so open is OK
 | 
			
		||||
            with open(filename, 'rb') as f_in,\
 | 
			
		||||
                    gzip.open(man_file_gz, 'wb') as f_out:
 | 
			
		||||
                f_out.writelines(f_in)
 | 
			
		||||
                log.info('Compiling %s >> %s', filename, man_file_gz)
 | 
			
		||||
 | 
			
		||||
        target = 'share/man/man1'
 | 
			
		||||
 | 
			
		||||
def install_man(install_cmd):
 | 
			
		||||
    data_files = install_cmd.distribution.data_files
 | 
			
		||||
    man_dir = os.path.join(build_dir, 'man')
 | 
			
		||||
    target = 'share/man/man1'
 | 
			
		||||
 | 
			
		||||
    for man in MAN_FILES:
 | 
			
		||||
        man_file_gz = os.path.join(man_dir, man + '.gz')
 | 
			
		||||
        data_files.append((target, [man_file_gz]))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -111,20 +124,22 @@ def build_intl(build_cmd):
 | 
			
		|||
    '''
 | 
			
		||||
    Merge translation files into desktop and mime files
 | 
			
		||||
    '''
 | 
			
		||||
    data_files = build_cmd.distribution.data_files
 | 
			
		||||
    base = build_dir
 | 
			
		||||
 | 
			
		||||
    merge_files = (('data/org.gajim.Gajim.desktop', 'share/applications', '--desktop'),
 | 
			
		||||
                   ('data/org.gajim.Gajim.appdata.xml', 'share/metainfo', '--xml'))
 | 
			
		||||
 | 
			
		||||
    for filename, target, option in merge_files:
 | 
			
		||||
    for filename, _, option in META_FILES:
 | 
			
		||||
        filenamelocal = convert_path(filename)
 | 
			
		||||
        newfile = os.path.join(base, filenamelocal)
 | 
			
		||||
        newdir = os.path.dirname(newfile)
 | 
			
		||||
        if not(os.path.isdir(newdir) or os.path.islink(newdir)):
 | 
			
		||||
            os.makedirs(newdir)
 | 
			
		||||
        merge(filenamelocal + '.in', newfile, option)
 | 
			
		||||
        data_files.append((target, [base + '/' + filename]))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def install_intl(install_cmd):
 | 
			
		||||
    data_files = install_cmd.distribution.data_files
 | 
			
		||||
 | 
			
		||||
    for filename, target, _ in META_FILES:
 | 
			
		||||
        data_files.append((target, [build_dir + '/' + filename]))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def merge(in_file, out_file, option, po_dir='po'):
 | 
			
		||||
| 
						 | 
				
			
			@ -154,6 +169,15 @@ class build(_build):
 | 
			
		|||
        _build.run(self)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class install(_install):
 | 
			
		||||
    def run(self):
 | 
			
		||||
        install_trans(self)
 | 
			
		||||
        if sys.platform != 'win32':
 | 
			
		||||
            install_man(self)
 | 
			
		||||
            install_intl(self)
 | 
			
		||||
        _install.run(self)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class test(Command):
 | 
			
		||||
    description = "Run all tests"
 | 
			
		||||
    user_options = []
 | 
			
		||||
| 
						 | 
				
			
			@ -243,6 +267,7 @@ setup(
 | 
			
		|||
    ],
 | 
			
		||||
    cmdclass={
 | 
			
		||||
        'build_py': build,
 | 
			
		||||
        'install': install,
 | 
			
		||||
        'test': test,
 | 
			
		||||
        'test_nogui': test_nogui,
 | 
			
		||||
        'update_po': update_po,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue