--- Begin Message ---
Subject: |
28.0.50; tramp-sh.el uses mknod file p which is not available on macos |
Date: |
Thu, 23 Sep 2021 08:29:53 +0200 |
I'm trying to use eglot over tramp using `emacs -Q -f package-initialize
-L /path/to/my/eglot -l eglot.el`. From what I understand, to
capture the remote process stderr, tramp creates a fifo, in
`tramp-sh-handle-make-process`, `tramp-sh.el:2889`. The MacOS mknod
command does not support the "p" parameter, so the communication with
the process does not work. Also no error is reported while the mknod
command is failing. I tried replacing `mknod %s p` with `mkfifo %s` or using
gnu coreutils mknod. This
fixes the fifo creation but the process communication is still
broken after that.
I can reproduce the problem with
(let ((default-directory "/ssh:macos-laptop:"))
(make-process
:name "TEST"
:buffer "*TEST*"
:command '("sh" "-c" "while sleep 1; do echo $(hostname) out; echo
$(hostname) err >&2; done")
:connection-type 'pipe
:coding 'utf-8-emacs-unix
:noquery t
:stderr (get-buffer-create "*TEST stderr*")
:file-handler t))
And it works correctly with
(let ((default-directory "/ssh:localhost:"))
(make-process
:name "TEST"
:buffer "*TEST*"
:command '("sh" "-c" "while sleep 1; do echo $(hostname) out; echo
$(hostname) err >&2; done")
:connection-type 'pipe
:coding 'utf-8-emacs-unix
:noquery t
:stderr (get-buffer-create "*TEST stderr*")
:file-handler t))
In GNU Emacs 28.0.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.24.25, cairo
version 1.16.0)
of 2021-09-16 built on workstation.lan
Repository revision: 7f53446a10eaf029f73e637bba3c9c6bf7c33111
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101001
System Description: Ubuntu 21.04
Configured using:
'configure --with-native-compilation --with-mailutils --with-gnutls
--with-modules --with-json --without-gpm --with-file-notification=yes
--with-xwidgets --without-selinux --with-libsystemd --with-jpeg
--with-tiff --with-gif --with-png --with-rsvg --with-imagemagick
CC=gcc-10'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ
IMAGEMAGICK JPEG JSON LCMS2 LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF
TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3 ZLIB
Important settings:
value of $LC_MONETARY: fr_BE.UTF-8
value of $LC_NUMERIC: fr_BE.UTF-8
value of $LC_TIME: fr_BE.UTF-8
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=ibus
locale-coding-system: utf-8-unix
Major mode: C++//lw
Minor modes in effect:
cov-mode: t
bloom-global-minor-mode: t
bloom-minor-mode: t
eglot--managed-mode: t
flymake-mode: t
flyspell-mode: t
bug-reference-prog-mode: t
magit-wip-after-apply-mode: t
global-git-commit-mode: t
magit-auto-revert-mode: t
dtrt-indent-global-mode: t
dtrt-indent-mode: t
test-runner-mode: t
pdf-occur-global-minor-mode: t
yas-global-mode: t
yas-minor-mode: t
subword-mode: t
smartparens-global-mode: t
smartparens-mode: t
show-paren-mode: t
auto-revert-mode: t
marginalia-mode: t
selectrum-mode: t
corfu-global-mode: t
corfu-mode: t
global-ligature-mode: t
ligature-mode: t
shell-dirtrack-mode: t
envrc-global-mode: t
envrc-mode: t
bepo-global-mode: t
which-key-mode: t
savehist-mode: t
global-so-long-mode: t
override-global-mode: t
straight-use-package-mode: t
straight-package-neutering-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
auto-fill-function: yas--auto-fill
transient-mark-mode: t
abbrev-mode: t
Load-path shadows:
/home/dam/.emacs.d/straight/build/transient/transient hides
/usr/local/share/emacs/28.0.50/lisp/transient
/home/dam/.emacs.d/straight/build/jsonrpc/jsonrpc hides
/usr/local/share/emacs/28.0.50/lisp/jsonrpc
/home/dam/.emacs.d/straight/build/xref/xref hides
/usr/local/share/emacs/28.0.50/lisp/progmodes/xref
/home/dam/.emacs.d/straight/build/flymake/flymake hides
/usr/local/share/emacs/28.0.50/lisp/progmodes/flymake
/home/dam/.emacs.d/straight/build/project/project hides
/usr/local/share/emacs/28.0.50/lisp/progmodes/project
/home/dam/.emacs.d/straight/build/let-alist/let-alist hides
/usr/local/share/emacs/28.0.50/lisp/emacs-lisp/let-alist
/home/dam/.emacs.d/straight/build/eldoc/eldoc hides
/usr/local/share/emacs/28.0.50/lisp/emacs-lisp/eldoc
Features:
(shadow sort mail-extr pulse sh-script executable conf-mode rect
mm-archive network-stream url-cache goto-addr emacsbug sendmail helpful
trace edebug info-look help-fns elisp-refs tramp-cmds misearch
multi-isearch cov elquery mule-util terraform-mode hcl-mode vterm term
disp-table ehelp vterm-module term/xterm xterm face-remap vc-mtn vc-hg
vc-git vc-bzr vc-src vc-sccs vc-cvs vc-rcs vc vc-dispatcher checkdoc
form-feed bloomlife bloom-mode eglot array jsonrpc ert ewoc debug
backtrace bloom-sensor gdb-mi bloom-tools bloom-magit
bloom-magit-bitbucket atlassian-bitbucket bloom-magit-build
bloom-project bloom-test-runner bloom-build bloom-cmake bloom-conan
bloom-bbw bloom-target bloom-common bloom-pkg bloomlife-autoloads
autoload radix-tree lisp-mnt sonar sonar-autoloads circleci
circleci-autoloads atlassian atlassian-jira atlassian-common request
atlassian-autoloads request-autoloads magit-async-section
magit-async-section-autoloads terraform-mode-autoloads
hcl-mode-autoloads cargo-autoloads racer smartparens-rust rust-utils
rust-mode rust-rustfmt rust-playpen rust-compile rust-cargo
racer-autoloads pos-tip-autoloads rust-mode-autoloads rubocop
rubocop-autoloads robe etags fileloop generator inf-ruby robe-autoloads
inf-ruby-autoloads rbenv rbenv-autoloads ruby-mode smie
smartparens-python python tramp-sh smartparens-scala scala-mode
scala-mode-prettify-symbols scala-mode-imenu scala-mode-map
scala-mode-fontlock scala-mode-indent scala-mode-paragraph
scala-mode-syntax scala-mode-lib scala-mode-autoloads java-imports
pcache eieio-base java-imports-autoloads pcache-autoloads
form-feed-autoloads elisp-format flymake-proc flymake flyspell
elisp-format-autoloads test-runner-ert elfmt elfmt-autoloads cask-mode
cask-mode-autoloads docker docker-volume docker-network docker-machine
docker-image docker-container docker-faces docker-compose docker-utils
json-mode json-reformat json-snatcher smartparens-javascript js
docker-core docker-autoloads json-mode-autoloads json-snatcher-autoloads
json-reformat-autoloads docker-tramp-autoloads docker-tramp tramp-cache
dockerfile-mode-autoloads djinni-mode djinni-mode-autoloads
cov-autoloads elquery-autoloads gud-lldb cmake-api cmake-api-autoloads
test-runner-catch2 test-runner-catch2-autoloads eglot-clangd-autoloads
eldoc-cmake eldoc-cmake-autoloads cmake-font-lock-autoloads cmake-mode
smartparens-rst rst cmake-mode-autoloads android android-autoloads pbuf
pbuf-autoloads gud xref forge-list forge-commands forge-semi
forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab
forge-github forge-notify forge-revnote forge-pullreq forge-issue
forge-topic yaml bug-reference forge-post forge-repo forge forge-core
forge-db forge-autoloads yaml-autoloads closql emacsql-sqlite emacsql
emacsql-compiler closql-autoloads emacsql-sqlite-autoloads
emacsql-autoloads ghub-graphql treepy gsexp ghub url-http url-gw nsm
url-auth ghub-autoloads treepy-autoloads magit-extras magit-bookmark
magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func magit-diff
smerge-mode diff-mode git-commit log-edit message rmc rfc822 mml mml-sec
epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader pcvs-util add-log
magit-core magit-autorevert magit-margin magit-transient magit-process
with-editor server magit-mode transient comp comp-cstr warnings
magit-git magit-section magit-utils magit-autoloads
magit-section-autoloads git-commit-autoloads with-editor-autoloads
transient-autoloads eglot-autoloads project-autoloads xref-autoloads
flymake-autoloads eldoc-autoloads jsonrpc-autoloads dtrt-indent
dtrt-indent-autoloads diff ispell reformatter reformatter-autoloads
test-runner project test-runner-autoloads vterm-autoloads ag vc-svn
find-dired ag-autoloads dired-collapse dired-collapse-autoloads
dired-rainbow dired-rainbow-autoloads dired-narrow delsel
dired-narrow-autoloads dired-ranger-autoloads dired-subtree-autoloads
dired-filter f s dired-hacks-utils dired-x dired-filter-autoloads
dired-hacks-utils-autoloads dired-aux yaml-mode-autoloads plantuml-mode
plantuml-mode-autoloads pdf-occur ibuf-ext ibuffer ibuffer-loaddefs
tablist tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local find-func cedet
pdf-isearch let-alist pdf-misc imenu pdf-tools package pdf-view
jka-compr pdf-cache pdf-info tq pdf-util pdf-macs pdf-tools-autoloads
let-alist-autoloads tablist-autoloads xwwp eww xdg url-queue shr kinsoku
svg dom mm-url gnus nnheader gnus-util rmail rmail-loaddefs rfc2047
rfc2045 ietf-drums mail-utils mm-util mail-prsvr xwwp-autoloads xwidget
url-handlers image-mode dired dired-loaddefs exif browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap osx-browse-autoloads
browse-url-dwim-autoloads string-utils-autoloads list-utils-autoloads cl
smartparens-markdown markdown-mode url-parse url-vars noutline outline
markdown-mode-autoloads nov-autoloads esxml-autoloads kv-autoloads
yasnippet yasnippet-autoloads wgrep grep compile wgrep-autoloads
cap-words superword subword string-inflection
string-inflection-autoloads smartparens-config smartparens-text
smartparens-c smartparens-ruby smartparens dash smartparens-autoloads
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs paren mmm-mode mmm-univ mmm-class mmm-region mmm-auto
mmm-vars mmm-utils mmm-compat mmm-mode-autoloads iedit iedit-lib
iedit-autoloads autorevert filenotify marginalia marginalia-autoloads
embark-consult-autoloads embark-autoloads consult-selectrum selectrum
minibuf-eldef crm selectrum-autoloads orderless orderless-autoloads
corfu corfu-autoloads ns-auto-titlebar-autoloads
all-the-icons-dired-autoloads all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons all-the-icons-autoloads rx ligature
ligature-autoloads solarized-dark-high-contrast-theme solarized-palettes
solarized-theme solarized solarized-faces color
solarized-theme-autoloads use-theme use-theme-autoloads tramp
tramp-loaddefs trampver tramp-integration files-x tramp-compat shell
pcomplete comint ring parse-time iso8601 time-date ls-lisp auth-source
eieio eieio-core eieio-loaddefs password-cache envrc inheritenv
ansi-color envrc-autoloads inheritenv-autoloads eshell esh-cmd esh-ext
esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util bepo
which-key advice which-key-autoloads time savehist edmacro
helpful-autoloads elisp-refs-autoloads f-autoloads s-autoloads
dash-autoloads exec-path-from-shell exec-path-from-shell-autoloads
so-long diminish diminish-autoloads consult-dash pcase consult recentf
tree-widget kmacro bookmark text-property-search consult-dash-autoloads
consult-autoloads dash-docs use-package-dash-docs gnutls puny thingatpt
format-spec xml json map dash-docs-autoloads async async-autoloads
no-littering no-littering-autoloads finder-inf
use-package-ensure-system-package system-packages
use-package-ensure-system-package-autoloads system-packages-autoloads
use-package use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core
use-package-autoloads bind-key-autoloads cus-edit pp cus-load wid-edit
straight-autoloads info cl-seq cl-extra help-mode seq byte-opt straight
subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile cconv
iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads
xwidget-internal dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit
x multi-tty make-network-process native-compile emacs)
Memory information:
((conses 16 1171416 99492)
(symbols 48 48827 4)
(strings 32 188566 42756)
(string-bytes 1 7819478)
(vectors 16 95165)
(vector-slots 8 2534894 561288)
(floats 8 840 2000)
(intervals 56 71789 3857)
(buffers 992 60))
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#50748: Acknowledgement (28.0.50; tramp-sh.el uses mknod file p which is not available on macos) |
Date: |
Tue, 28 Sep 2021 16:06:03 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Version: 28.1
Damien Merenne <dam@cosinux.org> writes:
Hi Damien,
>> $ env REMOTE_TEMPORARY_FILE_DIRECTORY='/ssh:laptop.lan:/tmp' make -C
> test tramp-tests SELECTOR=tramp-test30-make-process
>
> env REMOTE_TEMPORARY_FILE_DIRECTORY='/ssh:laptop.lan:/tmp' make -C
> test tramp-tests SELECTOR=tramp-test30-make-process
> make: Entering directory '/home/dam/.local/Cellar/emacs/test'
> make[1]: Entering directory '/home/dam/.local/Cellar/emacs/test'
> GEN lisp/net/tramp-tests.log
> Running 1 tests (2021-09-28 13:59:35+0200, selector
> `tramp-test30-make-process')
> process-connection-type nil
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type pipe
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type t
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type pty
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type nil
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type pipe
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type t
> "66\n6F\n6F\n0A\n0A\n"
> process-connection-type pty
> "66\n6F\n6F\n0A\n0A\n"
> passed 1/1 tramp-test30-make-process (10.930992 sec)
>
> Ran 1 tests, 1 results as expected, 0 unexpected (2021-09-28
> 13:59:46+0200, 10.931095 sec)
Thanks, this looks like expected. So I have adapted tramp-tests.el, and
pushed it to master. Closing the bug report.
As you know, I have no macOS machine for testing. Perhaps you could run
the whole test suite, and see whether there are problems? The call is
$ env REMOTE_TEMPORARY_FILE_DIRECTORY='/ssh:laptop.lan:/tmp' make -C test
tramp-tests
Thanks, and best regards, Michael.
--- End Message ---