aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/cmake/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/cmake/client.py')
-rw-r--r--mesonbuild/cmake/client.py24
1 files changed, 12 insertions, 12 deletions
diff --git a/mesonbuild/cmake/client.py b/mesonbuild/cmake/client.py
index 2089be4..8057c3b 100644
--- a/mesonbuild/cmake/client.py
+++ b/mesonbuild/cmake/client.py
@@ -21,9 +21,9 @@ from ..mesonlib import MachineChoice
from .. import mlog
from contextlib import contextmanager
from subprocess import Popen, PIPE, TimeoutExpired
+from pathlib import Path
import typing as T
import json
-import os
if T.TYPE_CHECKING:
from ..environment import Environment
@@ -128,7 +128,7 @@ class MessageHello(MessageBase):
# Request classes
class RequestHandShake(RequestBase):
- def __init__(self, src_dir: str, build_dir: str, generator: str, vers_major: int, vers_minor: T.Optional[int] = None) -> None:
+ def __init__(self, src_dir: Path, build_dir: Path, generator: str, vers_major: int, vers_minor: T.Optional[int] = None) -> None:
super().__init__('handshake')
self.src_dir = src_dir
self.build_dir = build_dir
@@ -142,13 +142,13 @@ class RequestHandShake(RequestBase):
vers['minor'] = self.vers_minor
# Old CMake versions (3.7) want '/' even on Windows
- src_list = os.path.normpath(self.src_dir).split(os.sep)
- bld_list = os.path.normpath(self.build_dir).split(os.sep)
+ self.src_dir = self.src_dir.resolve()
+ self.build_dir = self.build_dir.resolve()
return {
**super().to_dict(),
- 'sourceDirectory': '/'.join(src_list),
- 'buildDirectory': '/'.join(bld_list),
+ 'sourceDirectory': self.src_dir.as_posix(),
+ 'buildDirectory': self.build_dir.as_posix(),
'generator': self.generator,
'protocolVersion': vers
}
@@ -191,15 +191,15 @@ class ReplyCompute(ReplyBase):
super().__init__(cookie, 'compute')
class ReplyCMakeInputs(ReplyBase):
- def __init__(self, cookie: str, cmake_root: str, src_dir: str, build_files: T.List[CMakeBuildFile]) -> None:
+ def __init__(self, cookie: str, cmake_root: Path, src_dir: Path, build_files: T.List[CMakeBuildFile]) -> None:
super().__init__(cookie, 'cmakeInputs')
self.cmake_root = cmake_root
self.src_dir = src_dir
self.build_files = build_files
def log(self) -> None:
- mlog.log('CMake root: ', mlog.bold(self.cmake_root))
- mlog.log('Source dir: ', mlog.bold(self.src_dir))
+ mlog.log('CMake root: ', mlog.bold(self.cmake_root.as_posix()))
+ mlog.log('Source dir: ', mlog.bold(self.src_dir.as_posix()))
mlog.log('Build files:', mlog.bold(str(len(self.build_files))))
with mlog.nested():
for i in self.build_files:
@@ -304,7 +304,7 @@ class CMakeClient:
raise CMakeException('CMake server query failed')
return reply
- def do_handshake(self, src_dir: str, build_dir: str, generator: str, vers_major: int, vers_minor: T.Optional[int] = None) -> None:
+ def do_handshake(self, src_dir: Path, build_dir: Path, generator: str, vers_major: int, vers_minor: T.Optional[int] = None) -> None:
# CMake prints the hello message on startup
msg = self.readMessage()
if not isinstance(msg, MessageHello):
@@ -327,8 +327,8 @@ class CMakeClient:
files = []
for i in data['buildFiles']:
for j in i['sources']:
- files += [CMakeBuildFile(j, i['isCMake'], i['isTemporary'])]
- return ReplyCMakeInputs(data['cookie'], data['cmakeRootDirectory'], data['sourceDirectory'], files)
+ files += [CMakeBuildFile(Path(j), i['isCMake'], i['isTemporary'])]
+ return ReplyCMakeInputs(data['cookie'], Path(data['cmakeRootDirectory']), Path(data['sourceDirectory']), files)
@contextmanager
def connect(self) -> T.Generator[None, None, None]: