Skip to content

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

Merge request reports

Loading