Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,15 @@

class SevenzipPaths(LocationProviderPlugin):

def get_like_distro(self):
info = platform.freedesktop_os_release()
ids = [info["ID"]]
if "ID_LIKE" in info:
# ids are space separated and ordered by precedence
ids.extend(info["ID_LIKE"].split())
return ids


def get_locations(self):
"""
Return a mapping of {location key: location} providing the installation
Expand All @@ -28,14 +37,14 @@ def get_locations(self):
if not lib_7z:
mainstream_system = platform.system().lower()
if mainstream_system == 'linux':
distribution = platform.linux_distribution()[0].lower()
distribution = self.get_like_distro()
debian_based_distro = ['ubuntu', 'mint', 'debian']
rpm_based_distro = ['fedora', 'redhat']
rpm_based_distro = ['fedora', 'rhel']

if distribution in debian_based_distro:
if any(dist in debian_based_distro for dist in distribution):
lib_dir = '/usr/lib/p7zip'

elif distribution in rpm_based_distro:
elif any(dist in rpm_based_distro for dist in distribution):
lib_dir = '/usr/libexec/p7zip'

else:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,15 @@


class LibarchivePaths(LocationProviderPlugin):

def get_like_distro(self):
info = platform.freedesktop_os_release()
ids = [info["ID"]]
if "ID_LIKE" in info:
# ids are space separated and ordered by precedence
ids.extend(info["ID_LIKE"].split())
return ids

def get_locations(self):
"""
Return a mapping of {location key: location} providing the installation
Expand All @@ -26,15 +35,17 @@ def get_locations(self):
system_arch = platform.machine()
mainstream_system = platform.system().lower()
if mainstream_system == 'linux':
distribution = platform.linux_distribution()[0].lower()
distribution = self.get_like_distro()
debian_based_distro = ['ubuntu', 'mint', 'debian']
rpm_based_distro = ['fedora', 'redhat']
rpm_based_distro = ['fedora', 'rhel']

if distribution in debian_based_distro:
lib_dir = '/usr/lib/'+system_arch+'-linux-gnu'
if any(dist in debian_based_distro for dist in distribution):
db_dir = '/usr/lib/file'
lib_dir = '/usr/lib' if platform.architecture()[0] == '32bit' else '/usr/lib/'+system_arch+'-linux-gnu'

elif distribution in rpm_based_distro:
lib_dir = '/usr/lib64'
elif any(dist in rpm_based_distro for dist in distribution):
db_dir = '/usr/share/misc'
lib_dir = '/usr/lib' if platform.architecture()[0] == '32bit' else '/usr/lib64'

else:
raise Exception('Unsupported system: {}'.format(distribution))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@


class LibmagicPaths(LocationProviderPlugin):

def get_like_distro(self):
info = platform.freedesktop_os_release()
ids = [info["ID"]]
if "ID_LIKE" in info:
# ids are space separated and ordered by precedence
ids.extend(info["ID_LIKE"].split())
return ids

def get_locations(self):
"""
Return a mapping of {location key: location} providing the installation
Expand All @@ -40,17 +49,17 @@ def get_locations(self):
system_arch = platform.machine()
mainstream_system = platform.system().lower()
if mainstream_system == 'linux':
distribution = platform.linux_distribution()[0].lower()
distribution = self.get_like_distro()
debian_based_distro = ['ubuntu', 'mint', 'debian']
rpm_based_distro = ['fedora', 'redhat']
rpm_based_distro = ['fedora', 'rhel']

if distribution in debian_based_distro:
if any(dist in debian_based_distro for dist in distribution):
db_dir = '/usr/lib/file'
lib_dir = '/usr/lib/'+system_arch+'-linux-gnu'
lib_dir = '/usr/lib' if platform.architecture()[0] == '32bit' else '/usr/lib/'+system_arch+'-linux-gnu'

elif distribution in rpm_based_distro:
elif any(dist in rpm_based_distro for dist in distribution):
db_dir = '/usr/share/misc'
lib_dir = '/usr/lib64'
lib_dir = '/usr/lib' if platform.architecture()[0] == '32bit' else '/usr/lib64'

else:
raise Exception('Unsupported system: {}'.format(distribution))
Expand Down