157 lines
5.3 KiB
Python
157 lines
5.3 KiB
Python
#!/usr/bin/python -u
|
|
#
|
|
# Python Bindings for LZMA
|
|
#
|
|
# Copyright (c) 2004-2006 by Joachim Bauch, mail@joachim-bauch.de
|
|
# 7-Zip Copyright (C) 1999-2005 Igor Pavlov
|
|
# LZMA SDK Copyright (C) 1999-2005 Igor Pavlov
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
#
|
|
# This library 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
|
|
# Lesser General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this library; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#
|
|
# $Id: setup.py 120 2006-09-29 21:14:23Z jojo $
|
|
#
|
|
import sys, os
|
|
from warnings import warn
|
|
|
|
# are we building an egg package?
|
|
BUILD_EGG = 'bdist_egg' in sys.argv
|
|
|
|
kw = {}
|
|
if BUILD_EGG:
|
|
from setuptools import setup, Extension
|
|
kw['test_suite'] = 'tests'
|
|
kw['zip_safe'] = False
|
|
else:
|
|
from distutils.core import setup, Extension
|
|
|
|
PYTHON_VERSION=sys.version[:3]
|
|
PYTHON_PREFIX=sys.prefix
|
|
|
|
class UnsupportedPlatformWarning(Warning):
|
|
pass
|
|
|
|
# set this to any true value to enable multithreaded compression
|
|
ENABLE_MULTITHREADING = True
|
|
|
|
# set this to any true value to add the compatibility decoder
|
|
# from version 0.0.3 to be able to decompress strings without
|
|
# the end of stream mark and you don't know their lengths
|
|
ENABLE_COMPATIBILITY = True
|
|
|
|
# compile including debug symbols on Windows?
|
|
COMPILE_DEBUG = False
|
|
|
|
if os.name == 'posix':
|
|
# This is the directory, your Python is installed in. It must contain the header and include files.
|
|
PYTHON_INCLUDE_DIR="%s/include/python%s" % (PYTHON_PREFIX, PYTHON_VERSION)
|
|
PYTHON_LIB_DIR="%s/lib/python%s" % (PYTHON_PREFIX, PYTHON_VERSION)
|
|
libraries=[]
|
|
else:
|
|
PYTHON_INCLUDE_DIR="%s\\include" % (PYTHON_PREFIX)
|
|
PYTHON_LIB_DIR="%s\\libs" % (PYTHON_PREFIX)
|
|
libraries=['user32', 'oleaut32']
|
|
|
|
include_dirs = [
|
|
PYTHON_INCLUDE_DIR,
|
|
".",
|
|
]
|
|
|
|
library_dirs = [
|
|
PYTHON_LIB_DIR,
|
|
".",
|
|
]
|
|
|
|
mt_platforms = (
|
|
'win32',
|
|
)
|
|
|
|
if ENABLE_MULTITHREADING and not sys.platform in mt_platforms:
|
|
warn("""\
|
|
Multithreading is not supported on the platform "%s",
|
|
please contact mail@joachim-bauch.de for more informations.""" % (sys.platform), UnsupportedPlatformWarning)
|
|
ENABLE_MULTITHREADING = 0
|
|
|
|
descr = "Python bindings for the LZMA library by Igor Pavlov."
|
|
long_descr = """PyLZMA provides a platform independent way to read and write data
|
|
that has been compressed or can be decompressed by the LZMA library by Igor Pavlov."""
|
|
try: version = open('version.txt', 'rb').read().strip()
|
|
except: version = 'unknown'
|
|
modules = ['py7zlib']
|
|
c_files = ['pylzma.c', 'pylzma_decompressobj.c', 'pylzma_compressfile.cpp',
|
|
'pylzma_decompress.c', 'pylzma_compress.cpp', 'pylzma_guids.cpp']
|
|
compile_args = []
|
|
link_args = []
|
|
macros = []
|
|
if 'win' in sys.platform:
|
|
macros.append(('WIN32', 1))
|
|
if COMPILE_DEBUG:
|
|
compile_args.append('/Zi')
|
|
compile_args.append('/MTd')
|
|
link_args.append('/DEBUG')
|
|
else:
|
|
compile_args.append('/MT')
|
|
if not 'win' in sys.platform:
|
|
# disable gcc warning about virtual functions with non-virtual destructors
|
|
compile_args.append(('-Wno-non-virtual-dtor'))
|
|
if ENABLE_MULTITHREADING:
|
|
macros.append(('COMPRESS_MF_MT', 1))
|
|
lzma_files = ('7zip/LzmaStateDecode.c', '7zip/7zip/Compress/LZMA/LZMAEncoder.cpp',
|
|
'7zip/7zip/Compress/RangeCoder/RangeCoderBit.cpp', '7zip/Common/CRC.cpp',
|
|
'7zip/7zip/Compress/LZ/LZInWindow.cpp', '7zip/7zip/Common/StreamUtils.cpp',
|
|
'7zip/7zip/Common/OutBuffer.cpp', '7zip/Common/Alloc.cpp', '7zip/Common/NewHandler.cpp', )
|
|
if ENABLE_MULTITHREADING:
|
|
lzma_files += ('7zip/7zip/Compress/LZ/MT/MT.cpp', '7zip/OS/Synchronization.cpp', )
|
|
if ENABLE_COMPATIBILITY:
|
|
c_files += ('pylzma_decompress_compat.c', 'pylzma_decompressobj_compat.c', )
|
|
lzma_files += ('7zip/LzmaCompatDecode.c', )
|
|
macros.append(('WITH_COMPAT', 1))
|
|
join = os.path.join
|
|
normalize = os.path.normpath
|
|
c_files += map(lambda x: normalize(join('.', x)), lzma_files)
|
|
extens=[Extension('pylzma', c_files, include_dirs=include_dirs, libraries=libraries,
|
|
library_dirs=library_dirs, define_macros=macros, extra_compile_args=compile_args,
|
|
extra_link_args=link_args)]
|
|
|
|
if sys.platform == 'win32':
|
|
operating_system = 'Microsoft :: Windows'
|
|
else:
|
|
operating_system = 'POSIX :: Linux'
|
|
|
|
setup(
|
|
name = "pylzma",
|
|
version = version,
|
|
description = descr,
|
|
author = "Joachim Bauch",
|
|
author_email = "mail@joachim-bauch.de",
|
|
url = "http://www.joachim-bauch.de",
|
|
license = 'LGPL',
|
|
keywords = "lzma compression",
|
|
long_description = long_descr,
|
|
platforms = sys.platform,
|
|
classifiers = [
|
|
'Development Status :: 5 - Production/Stable',
|
|
'Programming Language :: Python',
|
|
'Topic :: Software Development :: Libraries :: Python Modules',
|
|
'Intended Audience :: Developers',
|
|
'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
|
|
'Operating System :: %s' % operating_system,
|
|
],
|
|
py_modules = modules,
|
|
ext_modules = extens,
|
|
**kw
|
|
)
|
|
|
|
sys.exit(0)
|