all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Stephen Leake <stephen_leake@stephe-leake.org>
Cc: emacs-devel@gnu.org
Subject: Re: how to run makeinfo in a subprocess on Windows?
Date: Mon, 06 Sep 2021 08:20:32 +0300	[thread overview]
Message-ID: <83v93es2jj.fsf@gnu.org> (raw)
In-Reply-To: <86bl56skqd.fsf@stephe-leake.org> (message from Stephen Leake on Sun, 05 Sep 2021 15:47:38 -0700)

> From: Stephen Leake <stephen_leake@stephe-leake.org>
> Date: Sun, 05 Sep 2021 15:47:38 -0700
> 
> When the source for a doc is .texi, that requires running "makeinfo".
> elpa-admin does this via call-process, doing something like:
> 
> (let ((default-directory "c:/Projects/elpa/packages/ada-mode/")
>       (docfile "ada-mode.texi")
>       (html-file "doc/ada-mode/ada-mode.html"))
>   (call-process "makeinfo" docfile nil nil "--no-split" "--html" "-o" html-file))
> 
> and that works fine on Debian.
> 
> However, on Windows, I get :
> let: Searching for program: Permission denied, makeinfo
> 
> I suspect the problem is that "makeinfo" is actually a perl script, and
> it has "#! /usr/bin/perl" on the first line. On Debian, the lower-level
> system call that actually starts the process apparently knows how to
> handle that; it starts perl, and passes it "makeinfo" and the other args.

Where did you get the Windows binary Texinfo distribution?  If done
right for native MS-Windows, such a binary distribution should install
on PATH the makeinfo.bat batch file in addition to makeinfo the Perl
script, and Emacs is supposed to find the batch file and invoke it
instead of the Perl script.  However, I'm not sure MSYS2/MinGW64
provide a native MinGW Texinfo package, in which case what you have is
the MSYS2 port of Texinfo, and that isn't good in general for using it
from a native w32 Emacs.

> However, on Windows that doesn't happen. I suspect if I was running the
> mingw64 version of Emacs, it would work. The emacs I'm running is built
> using mingw64 tools, but it uses the native Windows OS, not the
> mingw64 layer.

There's a terminology problem here.  MinGW64 executables are native
Windows executables, so the Emacs you are running _is_ "the mingw64
version of Emacs".  The non-native executables provided by MSYS2 are
called "MSYS2 executables", and are similar to Cygwin executables:
they need a special DLL to run on Windows, and have features and
peculiarities whose intent is to run smoothly inside Bash and interact
smoothly with other MSYS2 programs.

> Is there a suggested way to handle this? I can just add code to
> elpa-admin to run perl explicitly when on Windows, but I'm hoping
> there's already code somewhere that handles this.

The official upstream Texinfo tarball includes makeinfo.bat, so if the
binary distribution you have doesn't have it, you could try installing
that by hand and using it.  Or just write it yourself, it's very
simple:

  @echo off
  setlocal
  set TEXINFO_XS_PARSER=1
  perl "%~dpn0" %*
  endlocal

If this somehow doesn't work, try commenting out the "set" command,
maybe your Texinfo binaries were built without XS support.



  parent reply	other threads:[~2021-09-06  5:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-05 22:47 how to run makeinfo in a subprocess on Windows? Stephen Leake
2021-09-06  2:52 ` Stefan Monnier
2021-09-06  5:20 ` Eli Zaretskii [this message]
2021-09-06 16:20   ` Stephen Leake
2021-09-06 16:56     ` Stephen Leake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83v93es2jj.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=stephen_leake@stephe-leake.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.