diff --git a/setup.py b/setup.py index ebbc561..724479c 100644 --- a/setup.py +++ b/setup.py @@ -34,29 +34,36 @@ except ImportError: from distutils.core import setup, Extension 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' -version = libarchive._libarchive.ARCHIVE_VERSION_STRING.split(' ')[1] +version = '{}.{}.{}'.format(vnum // 1000000, (vnum // 1000) % 100, vnum % 100) versrel = version readme = 'README.rst' 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() + class build_ext_extra(build_ext, object): """ Extend build_ext allowing extra_compile_args and extra_link_args to be set on the command-line. """ + 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): build_ext.initialize_options(self) @@ -76,43 +83,44 @@ libarchivePrefix = environ.get('LIBARCHIVE_PREFIX') if libarchivePrefix: extra_compile_args = ['-I{0}/include'.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: extra_compile_args = [] 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, - }, - ext_modules = [__libarchive], - ) + }, + ext_modules=[__libarchive], +)