| @@ -34,29 +34,36 @@ except ImportError: | |||||
| from distutils.core import setup, Extension | from distutils.core import setup, Extension | ||||
| from distutils.command.build_ext import build_ext | from distutils.command.build_ext import build_ext | ||||
| import libarchive | |||||
| import subprocess | |||||
| # retreive the version number form SWIG generated file | |||||
| cmd = [ | |||||
| 'awk', | |||||
| '/ARCHIVE_VERSION_NUMBER/ { if (match($0,"[[:digit:]]+")) print substr($0, RSTART,RLENGTH) }', | |||||
| "libarchive/_libarchive_wrap.c", | |||||
| ] | |||||
| p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |||||
| vnum = int(p.stdout) | |||||
| name = 'python-libarchive-ext' | name = 'python-libarchive-ext' | ||||
| version = libarchive._libarchive.ARCHIVE_VERSION_STRING.split(' ')[1] | |||||
| version = '{}.{}.{}'.format(vnum // 1000000, (vnum // 1000) % 100, vnum % 100) | |||||
| versrel = version | versrel = version | ||||
| readme = 'README.rst' | readme = 'README.rst' | ||||
| repourl = 'https://github.com/Vadiml1024/python-libarchive' | repourl = 'https://github.com/Vadiml1024/python-libarchive' | ||||
| download_url = repourl + '/tarball/extended' | |||||
| repobranch = 'extended' | |||||
| download_url = repourl + f'/tarball/{repobranch}' | |||||
| long_description = open(readme).read() | long_description = open(readme).read() | ||||
| class build_ext_extra(build_ext, object): | class build_ext_extra(build_ext, object): | ||||
| """ | """ | ||||
| Extend build_ext allowing extra_compile_args and extra_link_args to be set | Extend build_ext allowing extra_compile_args and extra_link_args to be set | ||||
| on the command-line. | on the command-line. | ||||
| """ | """ | ||||
| user_options = build_ext.user_options | user_options = build_ext.user_options | ||||
| user_options.append( | |||||
| ('extra-compile-args=', None, | |||||
| 'Extra arguments passed directly to the compiler') | |||||
| ) | |||||
| user_options.append( | |||||
| ('extra-link-args=', None, | |||||
| 'Extra arguments passed directly to the linker') | |||||
| ) | |||||
| user_options.append(('extra-compile-args=', None, 'Extra arguments passed directly to the compiler')) | |||||
| user_options.append(('extra-link-args=', None, 'Extra arguments passed directly to the linker')) | |||||
| def initialize_options(self): | def initialize_options(self): | ||||
| build_ext.initialize_options(self) | build_ext.initialize_options(self) | ||||
| @@ -76,43 +83,44 @@ libarchivePrefix = environ.get('LIBARCHIVE_PREFIX') | |||||
| if libarchivePrefix: | if libarchivePrefix: | ||||
| extra_compile_args = ['-I{0}/include'.format(libarchivePrefix)] | extra_compile_args = ['-I{0}/include'.format(libarchivePrefix)] | ||||
| extra_link_args = ['-Wl,-rpath={0}/lib'.format(libarchivePrefix)] | extra_link_args = ['-Wl,-rpath={0}/lib'.format(libarchivePrefix)] | ||||
| environ['LDFLAGS'] = '-L{0}/lib {1}'.format(libarchivePrefix, | |||||
| environ.get('LDFLAGS', '')) | |||||
| environ['LDFLAGS'] = '-L{0}/lib {1}'.format(libarchivePrefix, environ.get('LDFLAGS', '')) | |||||
| else: | else: | ||||
| extra_compile_args = [] | extra_compile_args = [] | ||||
| extra_link_args = ['-l:libarchive.so.13'] | extra_link_args = ['-l:libarchive.so.13'] | ||||
| __libarchive = Extension(name='libarchive.__libarchive', | |||||
| sources=['libarchive/_libarchive_wrap.c'], | |||||
| libraries=['archive'], | |||||
| extra_compile_args=extra_compile_args, | |||||
| extra_link_args=extra_link_args, | |||||
| include_dirs=['libarchive'], | |||||
| ) | |||||
| __libarchive = Extension( | |||||
| name='libarchive.__libarchive', | |||||
| sources=['libarchive/_libarchive_wrap.c'], | |||||
| libraries=['archive'], | |||||
| extra_compile_args=extra_compile_args, | |||||
| extra_link_args=extra_link_args, | |||||
| include_dirs=['libarchive'], | |||||
| ) | |||||
| setup(name = name, | |||||
| version = versrel, | |||||
| description = 'A libarchive wrapper for Python supporting password protection.', | |||||
| long_description = long_description, | |||||
| license = 'BSD-style license', | |||||
| platforms = ['any'], | |||||
| author = 'Vadim Lebedev, Ben Timby, Travis Cunningham, Ryan Johnston, SmartFile', | |||||
| author_email = 'vadiml1024@gmail.com', | |||||
| url = repourl, | |||||
| download_url = download_url, | |||||
| packages = ['libarchive'], | |||||
| classifiers = [ | |||||
| 'Development Status :: 4 - Beta', | |||||
| 'Intended Audience :: Developers', | |||||
| 'Operating System :: OS Independent', | |||||
| 'Programming Language :: C', | |||||
| 'Programming Language :: Python', | |||||
| 'Topic :: System :: Archiving :: Compression', | |||||
| 'Topic :: Software Development :: Libraries :: Python Modules', | |||||
| ], | |||||
| cmdclass = { | |||||
| setup( | |||||
| name=name, | |||||
| version=versrel, | |||||
| description='A libarchive wrapper for Python supporting password protection.', | |||||
| long_description=long_description, | |||||
| license='BSD-style license', | |||||
| platforms=['any'], | |||||
| author='Vadim Lebedev, Ben Timby, Travis Cunningham, Ryan Johnston, SmartFile', | |||||
| author_email='vadiml1024@gmail.com', | |||||
| url=repourl, | |||||
| download_url=download_url, | |||||
| packages=['libarchive'], | |||||
| classifiers=[ | |||||
| 'Development Status :: 4 - Beta', | |||||
| 'Intended Audience :: Developers', | |||||
| 'Operating System :: OS Independent', | |||||
| 'Programming Language :: C', | |||||
| 'Programming Language :: Python', | |||||
| 'Topic :: System :: Archiving :: Compression', | |||||
| 'Topic :: Software Development :: Libraries :: Python Modules', | |||||
| ], | |||||
| cmdclass={ | |||||
| 'build_ext': build_ext_extra, | 'build_ext': build_ext_extra, | ||||
| }, | |||||
| ext_modules = [__libarchive], | |||||
| ) | |||||
| }, | |||||
| ext_modules=[__libarchive], | |||||
| ) | |||||