Jelajahi Sumber

Merge remote-tracking branch 'origin/develop' into xap

QMK Bot 1 tahun lalu
induk
melakukan
85633d1b73
2 mengubah file dengan 25 tambahan dan 3 penghapusan
  1. 2 2
      lib/python/qmk/cli/generate/rules_mk.py
  2. 23 1
      lib/python/qmk/path.py

+ 2 - 2
lib/python/qmk/cli/generate/rules_mk.py

@@ -10,7 +10,7 @@ from qmk.info import info_json, get_modules
 from qmk.json_schema import json_load
 from qmk.keyboard import keyboard_completer, keyboard_folder
 from qmk.commands import dump_lines, parse_configurator_json
-from qmk.path import normpath, FileType
+from qmk.path import normpath, unix_style_path, FileType
 from qmk.constants import GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE
 from qmk.community_modules import find_module_path, load_module_jsons
 
@@ -63,7 +63,7 @@ def generate_modules_rules(keyboard, filename):
         lines.append('')
         lines.append('OPT_DEFS += -DCOMMUNITY_MODULES_ENABLE=TRUE')
         for module in modules:
-            module_path = find_module_path(module)
+            module_path = unix_style_path(find_module_path(module))
             if not module_path:
                 raise FileNotFoundError(f"Module '{module}' not found.")
             lines.append('')

+ 23 - 1
lib/python/qmk/path.py

@@ -3,7 +3,7 @@
 import logging
 import os
 import argparse
-from pathlib import Path
+from pathlib import Path, PureWindowsPath, PurePosixPath
 
 from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE
 from qmk.errors import NoSuchKeyboardError
@@ -146,6 +146,28 @@ def normpath(path):
     return Path(os.environ['ORIG_CWD']) / path
 
 
+def unix_style_path(path):
+    """Converts a Windows-style path with drive letter to a Unix path.
+
+    Path().as_posix() normally returns the path with drive letter and forward slashes, so is inappropriate for `Makefile` paths.
+
+    Passes through unadulterated if the path is not a Windows-style path.
+
+    Args:
+
+        path
+            The path to convert.
+
+    Returns:
+        The input path converted to Unix format.
+    """
+    if isinstance(path, PureWindowsPath):
+        p = list(path.parts)
+        p[0] = f'/{p[0][0].lower()}'  # convert from `X:/` to `/x`
+        path = PurePosixPath(*p)
+    return path
+
+
 class FileType(argparse.FileType):
     def __init__(self, *args, **kwargs):
         # Use UTF8 by default for stdin