c1a086f3e4
Rationale: Some English translation text strings are now marked "fuzzy" despite their actually being correct. This is presumably because, during the transition to "gettext" or from tabs to spaces, some strings got reformatted in a way "gettext" didn't expect. Since several translations are falsely marked "fuzzy" in English, it's likely that the same is true for some of the other supported languages as well. The "--use-fuzzy" option can optionally be turned off after the *.po files are verified by human translators.
151 lines
6 KiB
Python
151 lines
6 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2006 sense.lab e.V.
|
|
#
|
|
# This file is part of the CryptoBox.
|
|
#
|
|
# The CryptoBox is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# The CryptoBox is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with the CryptoBox; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
# Dependencies: clearsilver(python), cherrypy, python-configobj
|
|
#
|
|
|
|
from distutils.core import setup
|
|
import distutils.sysconfig
|
|
import os
|
|
|
|
## define some strings (not patterns) to exclude specific files or directories
|
|
IGNORE_FILES = [ '.svn', 'intl' ]
|
|
|
|
## define the data destination directory (below the python directory - for debian this gets overridden the rules file)
|
|
pydir = distutils.sysconfig.get_python_lib()
|
|
## remove installation prefix to get relative path
|
|
pydir = pydir.replace(distutils.sysconfig.get_config_var("prefix") + os.path.sep, '')
|
|
pydir = os.path.join(pydir, 'cryptobox')
|
|
|
|
## shared data dir
|
|
datadir = os.path.join('share', 'cryptobox-server')
|
|
## doc dir
|
|
docdir = os.path.join('share', 'doc', 'cryptobox-server')
|
|
## configuration directory
|
|
confdir = os.path.join(os.path.sep, 'etc', 'cryptobox-server')
|
|
|
|
|
|
def listfiles(prefix, src):
|
|
"""create a list of files below a directory recursively
|
|
|
|
If the src contains more then one path element (multiple levels), then only the
|
|
last one (basename part) is added to the prefix path (e.g.: 'dest','src1/src2' will
|
|
create a list below 'dest/src2').
|
|
The result is a list of tuples: (destination, [srcfiles,...]).
|
|
This is the datatype expected by 'data_files' in setup."""
|
|
## we will not add the 'dirname' part of srcdir to the destination
|
|
src_dir, src_base = os.path.split(src)
|
|
## add the files of this directory
|
|
result = [(os.path.join(prefix, src_base), [ os.path.join(src, f)
|
|
for f in os.listdir(src)
|
|
if os.path.isfile(os.path.join(src, f)) \
|
|
and not f in IGNORE_FILES ])]
|
|
## add the files in subdirectories
|
|
for d in os.listdir(src):
|
|
if os.path.isdir(os.path.join(src,d)) and not d in IGNORE_FILES:
|
|
result.extend(listfiles(
|
|
os.path.join(prefix,src_base), os.path.join(src, d)))
|
|
return result
|
|
|
|
|
|
def getdatafiles(prefix, dirs):
|
|
filelist = []
|
|
for d in dirs:
|
|
if os.path.isdir(d):
|
|
filelist.extend(listfiles(prefix, d))
|
|
else:
|
|
filelist.append((prefix, [d]))
|
|
return filelist
|
|
|
|
|
|
def get_language_files(prefix):
|
|
"""return a destination-file mapping for all compiled language files (*.po)
|
|
"""
|
|
import sys
|
|
mapping = []
|
|
## find all language directories
|
|
intl_dirs = []
|
|
for (root, dirs, files) in os.walk(os.getcwd()):
|
|
if 'intl' in dirs:
|
|
intl_dirs.append(os.path.join(root, 'intl'))
|
|
for i_dir in intl_dirs:
|
|
for lang_dir in [os.path.join(i_dir, e)
|
|
for e in os.listdir(i_dir)
|
|
if os.path.isdir(os.path.join(i_dir, e)) and (not e in IGNORE_FILES)]:
|
|
po_files = [ os.path.join(lang_dir, e)
|
|
for e in os.listdir(lang_dir)
|
|
if os.path.isfile(os.path.join(lang_dir, e)) \
|
|
and (e[-3:] == '.po') ]
|
|
lang_files = []
|
|
for po_file in po_files:
|
|
if compile_po_file(po_file):
|
|
lang_files.append(po_file[:-3] + ".mo")
|
|
else:
|
|
sys.stderr.write("Failed to compile language file: %s\n" % po_file)
|
|
mapping.append((os.path.join(
|
|
prefix, os.path.basename(lang_dir), 'LC_MESSAGES'), lang_files))
|
|
return mapping
|
|
|
|
|
|
def compile_po_file(po_file):
|
|
"""compile the binary mo file out of a po file
|
|
"""
|
|
import subprocess
|
|
return subprocess.call( [ "msgfmt", "--use-fuzzy", "-o", po_file[:-3] + ".mo", po_file ] ) == 0
|
|
|
|
|
|
setup(
|
|
name = 'cryptobox-server',
|
|
version = '0.3.0',
|
|
description = 'webinterface for handling encrypted disks',
|
|
author = 'Sense.Lab e.V.',
|
|
author_email = 'info@cryptobox.org',
|
|
maintainer = 'Lars Kruse',
|
|
maintainer_email = 'devel@sumpfralle.de',
|
|
license = 'GPL',
|
|
url = 'http://cryptobox.org',
|
|
packages = [ 'cryptobox', 'cryptobox.core', 'cryptobox.web',
|
|
'cryptobox.plugins', 'cryptobox.tests' ],
|
|
data_files = getdatafiles(datadir, ['templates', 'www-data', 'plugins']) +
|
|
getdatafiles(confdir, [os.path.join('conf-examples', 'cryptobox.conf')]) +
|
|
getdatafiles(os.path.join(confdir, 'events.d'), [
|
|
os.path.join('event-scripts', 'README'),
|
|
os.path.join('event-scripts', '_event_scripts_')]) +
|
|
getdatafiles(docdir, ['conf-examples', 'event-scripts', 'README', 'changelog',
|
|
'LICENSE', 'copyright', os.path.join('doc', 'html'), 'README.davfs',
|
|
'README.samba', 'README.proxy', 'README.ssl' ]) +
|
|
getdatafiles(os.path.join(docdir, 'conf-examples'),
|
|
[os.path.join('debian', 'cryptobox-server.init')]) +
|
|
get_language_files(os.path.join('share', 'locale')),
|
|
package_dir = { '': 'src' },
|
|
scripts = [ os.path.join('bin', 'CryptoBoxWebserver'),
|
|
os.path.join('bin', 'CryptoBoxRootActions') ],
|
|
classifiers = [
|
|
'Development Status :: 4 - Beta',
|
|
'Environment :: Web Environment',
|
|
'Intended Audience :: End Users/Desktop',
|
|
'Intended Audience :: System Administrators',
|
|
'License :: OSI Approved :: GNU General Public License (GPL)',
|
|
'Topic :: System :: Systems Administration',
|
|
'Operating System :: POSIX',
|
|
'Operating System :: Unix',
|
|
'Programming Language :: Python'],
|
|
)
|
|
|