-
Notifications
You must be signed in to change notification settings - Fork 0
Host the daemon on every platform #128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
79d67e1
f78dda3
955dcb9
2dcc313
677d672
bf29625
b220714
496a27d
ef8127b
fca4126
3f0c88c
af4290b
fe1b7e5
9ccab1c
af727d0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -40,7 +40,19 @@ gnome = import('gnome') | |
| cc = meson.get_compiler('c') | ||
| is_windows = host_machine.system() == 'windows' | ||
| is_macos = host_machine.system() == 'darwin' | ||
| has_server = not is_windows and not is_macos | ||
|
|
||
| # | ||
| # Every platform hosts the daemon. | ||
| # | ||
| # The client is about to stop having a second way to do anything: it adopts or | ||
| # spawns a daemon and talks to it, locally as well as remotely, so a machine | ||
| # that cannot serve is a machine xd cannot run on. The daemon's own code is | ||
| # already portable -- server.c and turn.c use nothing Unix-only -- and a shell | ||
| # is the single exception, which Windows takes as a stub the way its client | ||
| # already does. | ||
| # | ||
| has_server = true | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Even after the terminal test is gated, enabling Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When the newly enabled Windows server is launched as Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
On macOS and Windows, Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
With Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
On a fresh macOS installation where the window has never run, enabling Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
On an installed Windows MSI, opening the diff pane for a chat hosted by this daemon immediately sends Useful? React with 👍 / 👎. |
||
| has_daemon_terminal = not is_windows | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
On Windows, Useful? React with 👍 / 👎. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When a macOS client closes a daemon-hosted terminal whose shell or child ignores the PTY's implicit hangup, the explicit cleanup does nothing: Useful? React with 👍 / 👎. |
||
| has_voice = not is_windows and not is_macos | ||
|
|
||
| glib_dep = dependency('glib-2.0', version: '>= 2.72') | ||
|
|
@@ -52,10 +64,20 @@ pango_dep = dependency('pango') | |
| sqlite_dep = dependency('sqlite3') | ||
| cmark_dep = dependency('libcmark', version: '>= 0.30') | ||
|
|
||
| # | ||
| # Voice is the window's, and only the window's. | ||
| # | ||
| # Nothing under test needs it -- util/voice-data.c is core and parses; it is | ||
| # chat/voice-input.c that listens and transcribes. Asking for these as | ||
| # required would make every build that only wants the tests compile | ||
| # whisper.cpp first, which is minutes of CPU for a library it never links. | ||
| # | ||
| if has_voice | ||
| pulse_simple_dep = dependency('libpulse-simple') | ||
| soup_dep = dependency('libsoup-3.0') | ||
| whisper_dep = dependency('whisper', version: '>= 1.9.1') | ||
| pulse_simple_dep = dependency('libpulse-simple', required: false) | ||
| soup_dep = dependency('libsoup-3.0', required: false) | ||
| whisper_dep = dependency('whisper', version: '>= 1.9.1', required: false) | ||
|
|
||
| has_voice = pulse_simple_dep.found() and soup_dep.found() and whisper_dep.found() | ||
| endif | ||
|
|
||
| if is_windows | ||
|
|
@@ -66,7 +88,7 @@ else | |
| vte_dep = dependency('vte-2.91-gtk4') | ||
| endif | ||
|
|
||
| if has_server | ||
| if has_daemon_terminal | ||
| util_dep = cc.find_library('util') | ||
| else | ||
| util_dep = declare_dependency() | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On an installed Windows MSI without a separately installed OpenSSL executable,
xd servenow reachesensure_certificate(), which spawnsopensslto create the initial certificate and exits before listening when that command is unavailable. The Windows release path inscripts/bundle-windows.shpackagesxd.exe, runtime data, modules, and linked DLLs but noopenssl.exe, so the newly enabled daemon is unusable on a clean Windows installation; package the generator or replace this runtime dependency before enabling the server there.Useful? React with 👍 / 👎.