diff --git a/lib/python/qmk/cli/mass_compile.py b/lib/python/qmk/cli/mass_compile.py index 9dad5420e9d..b978a1ef7ce 100755 --- a/lib/python/qmk/cli/mass_compile.py +++ b/lib/python/qmk/cli/mass_compile.py @@ -7,7 +7,7 @@ from pathlib import Path from subprocess import DEVNULL from milc import cli -from qmk.constants import QMK_FIRMWARE, QMK_USERSPACE +from qmk.constants import QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE from qmk.commands import _find_make, get_make_parallel_args from qmk.keyboard import resolve_keyboard from qmk.search import search_keymap_targets @@ -51,7 +51,7 @@ def mass_compile(cli): with open(makefile, "w") as f: userspace_suffix = '' - if Path(QMK_FIRMWARE).resolve() != Path(QMK_USERSPACE).resolve(): + if HAS_QMK_USERSPACE: userspace_suffix = f'QMK_USERSPACE={Path(QMK_USERSPACE).resolve()}' for target in sorted(targets): diff --git a/lib/python/qmk/cli/new/keymap.py b/lib/python/qmk/cli/new/keymap.py index 9b0ac221a4a..f7ffcab0e99 100755 --- a/lib/python/qmk/cli/new/keymap.py +++ b/lib/python/qmk/cli/new/keymap.py @@ -1,10 +1,12 @@ """This script automates the copying of the default keymap into your own keymap. """ import shutil +from pathlib import Path from milc import cli from milc.questions import question +from qmk.constants import HAS_QMK_USERSPACE, QMK_USERSPACE, QMK_FIRMWARE from qmk.path import is_keyboard, keymaps, keymap from qmk.git import git_get_username from qmk.decorators import automagic_keyboard, automagic_keymap @@ -54,6 +56,9 @@ def new_keymap(cli): keymap_path_default = keymap(kb_name, 'default') keymap_path_new = keymaps_dirs[0] / user_name + if HAS_QMK_USERSPACE: + keymap_path_new = Path(QMK_USERSPACE) / keymaps_dirs[0].relative_to(QMK_FIRMWARE) / user_name + if not keymap_path_default.exists(): cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!') return False diff --git a/lib/python/qmk/commands.py b/lib/python/qmk/commands.py index 4b1fea6bbb8..ad73fc58d16 100644 --- a/lib/python/qmk/commands.py +++ b/lib/python/qmk/commands.py @@ -9,7 +9,7 @@ from pathlib import Path from milc import cli import jsonschema -from qmk.constants import INTERMEDIATE_OUTPUT_PREFIX, QMK_FIRMWARE, QMK_USERSPACE +from qmk.constants import INTERMEDIATE_OUTPUT_PREFIX, QMK_USERSPACE, HAS_QMK_USERSPACE from qmk.json_schema import json_load, validate @@ -51,7 +51,7 @@ def create_make_target(target, dry_run=False, parallel=1, **env_vars): for key, value in env_vars.items(): env.append(f'{key}={value}') - if Path(QMK_FIRMWARE).resolve() != Path(QMK_USERSPACE).resolve(): + if HAS_QMK_USERSPACE: env.append(f'QMK_USERSPACE={Path(QMK_USERSPACE).resolve()}') if cli.config.general.verbose: diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py index 58d00faa528..b9555948e9f 100644 --- a/lib/python/qmk/constants.py +++ b/lib/python/qmk/constants.py @@ -25,6 +25,9 @@ def _detect_qmk_userspace(): # The detected userspace tree QMK_USERSPACE = _detect_qmk_userspace() +# Whether or not we have a separate userspace directory +HAS_QMK_USERSPACE = True if Path(QMK_USERSPACE).resolve() != Path(QMK_FIRMWARE).resolve() else False + # Upstream repo url QMK_FIRMWARE_UPSTREAM = 'qmk/qmk_firmware' diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py index bac919a773f..f3c620ed8ef 100644 --- a/lib/python/qmk/keymap.py +++ b/lib/python/qmk/keymap.py @@ -12,7 +12,7 @@ from pygments.token import Token from pygments import lex import qmk.path -from qmk.constants import QMK_FIRMWARE, QMK_USERSPACE +from qmk.constants import QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE from qmk.keyboard import find_keyboard_from_dir, keyboard_folder from qmk.errors import CppError from qmk.info import info_json @@ -218,7 +218,7 @@ def find_keymap_from_dir(): return relative_cwd.parts[1], 'users_directory' return None, None - if Path(QMK_FIRMWARE).resolve() != Path(QMK_USERSPACE).resolve(): + if HAS_QMK_USERSPACE: name, source = _impl_find_keymap_from_dir(qmk.path.under_qmk_userspace()) if name and source: return name, source @@ -430,7 +430,7 @@ def locate_keymap(keyboard, keymap): # Check the keyboard folder first, last match wins keymap_path = '' - for search_dir in [QMK_FIRMWARE, QMK_USERSPACE]: + for search_dir in [QMK_FIRMWARE, QMK_USERSPACE] if HAS_QMK_USERSPACE else [QMK_FIRMWARE]: checked_dirs = '' for dir in keyboard_folder(keyboard).split('/'): if checked_dirs: @@ -452,7 +452,7 @@ def locate_keymap(keyboard, keymap): info = info_json(keyboard) community_parents = list(Path('layouts').glob('*/')) - if Path(QMK_FIRMWARE).resolve() != Path(QMK_USERSPACE).resolve() and (Path(QMK_USERSPACE) / "layouts").exists(): + if HAS_QMK_USERSPACE and (Path(QMK_USERSPACE) / "layouts").exists(): community_parents.append(Path(QMK_USERSPACE) / "layouts") for community_parent in community_parents: @@ -509,7 +509,7 @@ def list_keymaps(keyboard, c=True, json=True, additional_files=None, fullpath=Fa info = info_json(keyboard) community_parents = list(Path('layouts').glob('*/')) - if Path(QMK_FIRMWARE).resolve() != Path(QMK_USERSPACE).resolve() and (Path(QMK_USERSPACE) / "layouts").exists(): + if HAS_QMK_USERSPACE and (Path(QMK_USERSPACE) / "layouts").exists(): community_parents.append(Path(QMK_USERSPACE) / "layouts") for community_parent in community_parents: