WIP: win32 proof of concept
A proof of concept of BuildStream running on Windows, without a sandbox.
This isn't intended to be merged, it's more an exploration of the major challenges to be overcome for it to work.
A mailing list post will follow to start the conversation about major changes required.
Doing this properly is expected to be a large undertaking.
A summary of commit titles, organised by topic:
- General Win32 support:
psutil for disk_usage
ImportElement - fix separators
job: signals / win32
job: replace add_child_handler with thread
platform: os.uname and resource
_platform/win32: add support for win32
use cmd.exe instead of sh
don't set owner of files
- Support 'spawn' method, since there's no 'fork' on Windows.
can't use job result yet
use multiprocessing.Manager
no Plugin._lookup, class instance plugin map
no _is_main_process
- Pickling things over to the new process:
Plugin - disable pickling
Element, Source _meta_kind
FetchQueue - not needed?
{ArtifactPush,Build}Queue - not needed?
Job, ElementJob, Element, Source
optionpool: make picklable
PluginContext, ElementFactory, SourceFactory
Context: no _message_handler
_{artifact,source}cache: __getstate__ no elements
-
bst-job-replay
: make it easier to debug job processes, by "replaying" their invocation outside of BuildStream. - SandboxNone - an implementation without sandboxing to get things rolling
use initial SandboxNone
pass-through env for now