Detect Homebrew on Mac M1 (Apple Silicon) (#74378)
Homebrew's default install location for macOS on ARM is /opt/homebrew. Source: https://docs.brew.sh/FAQ On a Mac M1 (Apple Silicon), homebrew will be installed at /opt/homebrew/bin/brew.
This commit is contained in:
parent
6cfe36fa1f
commit
7fd989d008
3 changed files with 44 additions and 0 deletions
3
changelogs/fragments/73887.mac-m1-homebrew.yaml
Normal file
3
changelogs/fragments/73887.mac-m1-homebrew.yaml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
bugfixes:
|
||||||
|
- facts - detect homebrew installed at /opt/homebrew/bin/brew
|
|
@ -25,6 +25,7 @@ PKG_MGRS = [{'path': '/usr/bin/yum', 'name': 'yum'},
|
||||||
{'path': '/opt/tools/bin/pkgin', 'name': 'pkgin'},
|
{'path': '/opt/tools/bin/pkgin', 'name': 'pkgin'},
|
||||||
{'path': '/opt/local/bin/port', 'name': 'macports'},
|
{'path': '/opt/local/bin/port', 'name': 'macports'},
|
||||||
{'path': '/usr/local/bin/brew', 'name': 'homebrew'},
|
{'path': '/usr/local/bin/brew', 'name': 'homebrew'},
|
||||||
|
{'path': '/opt/homebrew/bin/brew', 'name': 'homebrew'},
|
||||||
{'path': '/sbin/apk', 'name': 'apk'},
|
{'path': '/sbin/apk', 'name': 'apk'},
|
||||||
{'path': '/usr/sbin/pkg', 'name': 'pkgng'},
|
{'path': '/usr/sbin/pkg', 'name': 'pkgng'},
|
||||||
{'path': '/usr/sbin/swlist', 'name': 'swdepot'},
|
{'path': '/usr/sbin/swlist', 'name': 'swdepot'},
|
||||||
|
|
|
@ -238,6 +238,46 @@ class TestPkgMgrFacts(BaseFactsTest):
|
||||||
self.assertIn('pkg_mgr', facts_dict)
|
self.assertIn('pkg_mgr', facts_dict)
|
||||||
|
|
||||||
|
|
||||||
|
class TestMacOSXPkgMgrFacts(BaseFactsTest):
|
||||||
|
__test__ = True
|
||||||
|
gather_subset = ['!all', 'pkg_mgr']
|
||||||
|
valid_subsets = ['pkg_mgr']
|
||||||
|
fact_namespace = 'ansible_pkgmgr'
|
||||||
|
collector_class = PkgMgrFactCollector
|
||||||
|
collected_facts = {
|
||||||
|
"ansible_distribution": "MacOSX",
|
||||||
|
"ansible_distribution_major_version": "11",
|
||||||
|
"ansible_os_family": "Darwin"
|
||||||
|
}
|
||||||
|
|
||||||
|
@patch('ansible.module_utils.facts.system.pkg_mgr.os.path.exists', side_effect=lambda x: x == '/opt/homebrew/bin/brew')
|
||||||
|
def test_collect_opt_homebrew(self, p_exists):
|
||||||
|
module = self._mock_module()
|
||||||
|
fact_collector = self.collector_class()
|
||||||
|
facts_dict = fact_collector.collect(module=module, collected_facts=self.collected_facts)
|
||||||
|
self.assertIsInstance(facts_dict, dict)
|
||||||
|
self.assertIn('pkg_mgr', facts_dict)
|
||||||
|
self.assertEqual(facts_dict['pkg_mgr'], 'homebrew')
|
||||||
|
|
||||||
|
@patch('ansible.module_utils.facts.system.pkg_mgr.os.path.exists', side_effect=lambda x: x == '/usr/local/bin/brew')
|
||||||
|
def test_collect_usr_homebrew(self, p_exists):
|
||||||
|
module = self._mock_module()
|
||||||
|
fact_collector = self.collector_class()
|
||||||
|
facts_dict = fact_collector.collect(module=module, collected_facts=self.collected_facts)
|
||||||
|
self.assertIsInstance(facts_dict, dict)
|
||||||
|
self.assertIn('pkg_mgr', facts_dict)
|
||||||
|
self.assertEqual(facts_dict['pkg_mgr'], 'homebrew')
|
||||||
|
|
||||||
|
@patch('ansible.module_utils.facts.system.pkg_mgr.os.path.exists', side_effect=lambda x: x == '/opt/local/bin/port')
|
||||||
|
def test_collect_macports(self, p_exists):
|
||||||
|
module = self._mock_module()
|
||||||
|
fact_collector = self.collector_class()
|
||||||
|
facts_dict = fact_collector.collect(module=module, collected_facts=self.collected_facts)
|
||||||
|
self.assertIsInstance(facts_dict, dict)
|
||||||
|
self.assertIn('pkg_mgr', facts_dict)
|
||||||
|
self.assertEqual(facts_dict['pkg_mgr'], 'macports')
|
||||||
|
|
||||||
|
|
||||||
def _sanitize_os_path_apt_get(path):
|
def _sanitize_os_path_apt_get(path):
|
||||||
if path == '/usr/bin/apt-get':
|
if path == '/usr/bin/apt-get':
|
||||||
return True
|
return True
|
||||||
|
|
Loading…
Reference in a new issue