From 3e97b1e93c0ccb618c9b996acc0fc93837bf358e Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Wed, 8 Jul 2020 13:38:15 +0000 Subject: rc6: Fixed an issue where 'which' doesn't return the binary absolute path. This due to which being a builtin bash thing, and for whatever reason that stopped working when running as a module, so created locate_binary(name:str) which uses the PATH variable just as which does to find the binary's absolute path --- archinstall/lib/general.py | 14 ++++++++++++-- setup.py | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index f32f85c7..508a2f89 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -65,6 +65,14 @@ def supports_color(): is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty() return supported_platform and is_a_tty +def locate_binary(name): + for PATH in os.environ['PATH']: + for root, folders, files in os.walk(PATH): + for file in files: + if file == name: + return os.path.join(root, file) + break # Don't recurse + class sys_command():#Thread): """ Stolen from archinstall_gui @@ -97,10 +105,12 @@ class sys_command():#Thread): self.exec_dir = f'{self.cwd}/{os.path.basename(self.cmd[0])}_workingdir' if not self.cmd[0][0] == '/': + # "which" doesn't work as it's a builin to bash. + # It used to work, but for whatever reason it doesn't anymore. So back to square one.. + #log('Worker command is not executed with absolute path, trying to find: {}'.format(self.cmd[0]), origin='spawn', level=5) - o = check_output(['/usr/bin/which', self.cmd[0]]) #log('This is the binary {} for {}'.format(o.decode('UTF-8'), self.cmd[0]), origin='spawn', level=5) - self.cmd[0] = o.decode('UTF-8').strip() + self.cmd[0] = locate_binary(self.cmd[0]) if not os.path.isdir(self.exec_dir): os.makedirs(self.exec_dir) diff --git a/setup.py b/setup.py index 48b928bf..4d561840 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ with open("README.md", "r") as fh: setuptools.setup( name="archinstall", - version="2.0.3rc6", + version="2.0.3rc7", author="Anton Hvornum", author_email="anton@hvornum.se", description="Arch Linux installer - guided, templates etc.", -- cgit v1.2.3-54-g00ecf