diff --git a/builtins/extractcode_7z_system_provided/README.rst b/builtins/extractcode_7z_system_provided/README.rst index 49a1e11..9482cc4 100755 --- a/builtins/extractcode_7z_system_provided/README.rst +++ b/builtins/extractcode_7z_system_provided/README.rst @@ -1 +1,5 @@ -A ScanCode Toolkit plugin to use pre-installed system binary libraries and utilities. +A ScanCode Toolkit plugin to use pre-installed 7zip executables +=============================================================== + +the path of 7zip is either determined by distro data or explicitily +taken from ``EXTRACTCODE_7Z_PATH`` environment variable diff --git a/builtins/extractcode_7z_system_provided/src/extractcode_7z/__init__.py b/builtins/extractcode_7z_system_provided/src/extractcode_7z/__init__.py index 74eb8de..63f02b9 100755 --- a/builtins/extractcode_7z_system_provided/src/extractcode_7z/__init__.py +++ b/builtins/extractcode_7z_system_provided/src/extractcode_7z/__init__.py @@ -9,6 +9,7 @@ import platform +from os import environ from os import path from plugincode.location_provider import LocationProviderPlugin @@ -22,26 +23,31 @@ def get_locations(self): locations of the 7zip exe and shared libraries as installed on various Linux distros or on FreeBSD. """ - mainstream_system = platform.system().lower() - if mainstream_system == 'linux': - distribution = platform.linux_distribution()[0].lower() - debian_based_distro = ['ubuntu', 'mint', 'debian'] - rpm_based_distro = ['fedora', 'redhat'] - - if distribution in debian_based_distro: - lib_dir = '/usr/lib/p7zip' - - elif distribution in rpm_based_distro: - lib_dir = '/usr/libexec/p7zip' - - else: - raise Exception('Unsupported system: {}'.format(distribution)) - elif mainstream_system == 'freebsd': - lib_dir = '/usr/local/libexec/p7zip' + lib_7z = environ.get('EXTRACTCODE_7Z_PATH') + if not lib_7z: + mainstream_system = platform.system().lower() + if mainstream_system == 'linux': + distribution = platform.linux_distribution()[0].lower() + debian_based_distro = ['ubuntu', 'mint', 'debian'] + rpm_based_distro = ['fedora', 'redhat'] + + if distribution in debian_based_distro: + lib_dir = '/usr/lib/p7zip' + + elif distribution in rpm_based_distro: + lib_dir = '/usr/libexec/p7zip' + + else: + raise Exception('Unsupported system: {}'.format(distribution)) + elif mainstream_system == 'freebsd': + lib_dir = '/usr/local/libexec/p7zip' + lib_7z = path.join(lib_dir, '7z') + else: + lib_dir = path.dirname(lib_7z) locations = { 'extractcode.sevenzip.libdir': lib_dir, - 'extractcode.sevenzip.exe': path.join(lib_dir, '7z'), + 'extractcode.sevenzip.exe': lib_7z, } return locations diff --git a/builtins/extractcode_libarchive_system_provided/README.rst b/builtins/extractcode_libarchive_system_provided/README.rst index 49a1e11..cb0da21 100755 --- a/builtins/extractcode_libarchive_system_provided/README.rst +++ b/builtins/extractcode_libarchive_system_provided/README.rst @@ -1 +1,5 @@ -A ScanCode Toolkit plugin to use pre-installed system binary libraries and utilities. +A ScanCode Toolkit plugin to use pre-installed libarchive library +================================================================= + +the path of libarchive.so is either determined by distro data or explicitily +taken from ``EXTRACTCODE_LIBARCHIVE_PATH`` environment variable diff --git a/builtins/extractcode_libarchive_system_provided/src/extractcode_libarchive/__init__.py b/builtins/extractcode_libarchive_system_provided/src/extractcode_libarchive/__init__.py index 9496daa..9af1721 100755 --- a/builtins/extractcode_libarchive_system_provided/src/extractcode_libarchive/__init__.py +++ b/builtins/extractcode_libarchive_system_provided/src/extractcode_libarchive/__init__.py @@ -7,8 +7,9 @@ # See https://aboutcode.org for more information about nexB OSS projects. # -from os import path import platform +from os import environ +from os import path from plugincode.location_provider import LocationProviderPlugin @@ -20,30 +21,35 @@ def get_locations(self): locations of the libarchive shared library as installed on various Linux distros or on FreeBSD. """ - system_arch = platform.machine() - mainstream_system = platform.system().lower() - if mainstream_system == 'linux': - distribution = platform.linux_distribution()[0].lower() - debian_based_distro = ['ubuntu', 'mint', 'debian'] - rpm_based_distro = ['fedora', 'redhat'] - - if distribution in debian_based_distro: - lib_dir = '/usr/lib/'+system_arch+'-linux-gnu' - - elif distribution in rpm_based_distro: - lib_dir = '/usr/lib64' - - else: - raise Exception('Unsupported system: {}'.format(distribution)) - - elif mainstream_system == 'freebsd': - if path.isdir('/usr/local/'): - lib_dir = '/usr/local/lib' - else: - lib_dir = '/usr/lib' + lib_archive = environ.get('EXTRACTCODE_LIBARCHIVE_PATH') + if not lib_archive: + system_arch = platform.machine() + mainstream_system = platform.system().lower() + if mainstream_system == 'linux': + distribution = platform.linux_distribution()[0].lower() + debian_based_distro = ['ubuntu', 'mint', 'debian'] + rpm_based_distro = ['fedora', 'redhat'] + + if distribution in debian_based_distro: + lib_dir = '/usr/lib/'+system_arch+'-linux-gnu' + + elif distribution in rpm_based_distro: + lib_dir = '/usr/lib64' + + else: + raise Exception('Unsupported system: {}'.format(distribution)) + + elif mainstream_system == 'freebsd': + if path.isdir('/usr/local/'): + lib_dir = '/usr/local/lib' + else: + lib_dir = '/usr/lib' + lib_archive = path.join(lib_dir, 'libarchive.so') + else: + lib_dir = path.dirname(lib_archive) locations = { 'extractcode.libarchive.libdir': lib_dir, - 'extractcode.libarchive.dll': path.join(lib_dir, 'libarchive.so'), + 'extractcode.libarchive.dll': lib_archive, } return locations diff --git a/builtins/typecode_libmagic_system_provided/README.rst b/builtins/typecode_libmagic_system_provided/README.rst index 49a1e11..1eacbcf 100755 --- a/builtins/typecode_libmagic_system_provided/README.rst +++ b/builtins/typecode_libmagic_system_provided/README.rst @@ -1 +1,8 @@ -A ScanCode Toolkit plugin to use pre-installed system binary libraries and utilities. +A ScanCode Toolkit plugin to use pre-installed libmagic library and data file +============================================================================= + +the path of libmagic is either determined by distro data or explicitly +taken from ``TYPECODE_LIBMAGIC_PATH`` environment variable. additionally +the path to ``magic.mgc`` file can be explicitly set by using +``TYPECODE_LIBMAGIC_DB_PATH`` environment variable, otherwise it is +calculated from distro data diff --git a/builtins/typecode_libmagic_system_provided/src/typecode_libmagic/__init__.py b/builtins/typecode_libmagic_system_provided/src/typecode_libmagic/__init__.py index 84fb1c5..3a58fba 100755 --- a/builtins/typecode_libmagic_system_provided/src/typecode_libmagic/__init__.py +++ b/builtins/typecode_libmagic_system_provided/src/typecode_libmagic/__init__.py @@ -22,8 +22,9 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from os import path import platform +from os import environ +from os import path from plugincode.location_provider import LocationProviderPlugin @@ -35,38 +36,46 @@ def get_locations(self): locations of the libmagic shared library as installed on various Linux distros or on FreeBSD. """ - system_arch = platform.machine() - mainstream_system = platform.system().lower() - if mainstream_system == 'linux': - distribution = platform.linux_distribution()[0].lower() - debian_based_distro = ['ubuntu', 'mint', 'debian'] - rpm_based_distro = ['fedora', 'redhat'] + lib_dll = environ.get('TYPECODE_LIBMAGIC_PATH') + if not lib_dll: + system_arch = platform.machine() + mainstream_system = platform.system().lower() + if mainstream_system == 'linux': + distribution = platform.linux_distribution()[0].lower() + debian_based_distro = ['ubuntu', 'mint', 'debian'] + rpm_based_distro = ['fedora', 'redhat'] + + if distribution in debian_based_distro: + data_dir = '/usr/lib/file' + lib_dir = '/usr/lib/'+system_arch+'-linux-gnu' - if distribution in debian_based_distro: - data_dir = '/usr/lib/file' - lib_dir = '/usr/lib/'+system_arch+'-linux-gnu' + elif distribution in rpm_based_distro: + data_dir = '/usr/share/misc' + lib_dir = '/usr/lib64' - elif distribution in rpm_based_distro: - data_dir = '/usr/share/misc' - lib_dir = '/usr/lib64' + else: + raise Exception('Unsupported system: {}'.format(distribution)) - else: - raise Exception('Unsupported system: {}'.format(distribution)) + lib_dll = path.join(lib_dir, 'libmagic.so') - lib_dll = path.join(lib_dir, 'libmagic.so'); + elif mainstream_system == 'freebsd': + if path.isdir('/usr/local/'): + lib_dir = '/usr/local' + else: + lib_dir = '/usr' - elif mainstream_system == 'freebsd': - if path.isdir('/usr/local/'): - lib_dir = '/usr/local' - else: - lib_dir = '/usr' + lib_dll = path.join(lib_dir, 'lib/libmagic.so') + data_dir = path.join(lib_dir,'share/file') + else: + lib_dir = path.dirname(lib_dll) - lib_dll = path.join(lib_dir, 'lib/libmagic.so') - data_dir = path.join(lib_dir,'share/file') + file_magic_data = environ.get('TYPECODE_LIBMAGIC_DB_PATH') + if not file_magic_data: + file_magic_data = path.join(data_dir, 'magic.mgc') locations = { 'typecode.libmagic.libdir': lib_dir, 'typecode.libmagic.dll': lib_dll, - 'typecode.libmagic.db': path.join(data_dir, 'magic.mgc'), + 'typecode.libmagic.db': file_magic_data, } return locations