emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Your Emacs changes


From: Eli Zaretskii
Subject: Re: Your Emacs changes
Date: Tue, 19 Aug 2003 09:51:47 +0200

> From: "Peter 'Luna' Runestig" <address@hidden>
> Date: 18 Aug 2003 17:21:58 +0200
> 
> Richard Stallman <address@hidden> writes:
> > Now that we have your papers, we can install your changes.  Could you
> > send your changes once again to emacs-devel, together with change log
> > entries for them?
> 
> Here it goes:
> [...]

Hmm, bother:

> +SHELL = cmd
> [...]
> +MAKEINFO = makeinfo
> +TEXI2DVI = texi2dvi
> +DVIPS = dvips
> +ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) 
> -I$(srcdir)"
> [...]
> +mostlyclean:
> +     rm -f  *.log *.cp *.fn *.ky *.pg *.vr *.tp
> +
> +clean: mostlyclean
> +     rm -f *.dvi
> +
> +distclean: clean
> +
> +maintainer-clean: distclean
> +     rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc

These patches will probably work only with the Cygwin-compiled ports
of Texinfo and programs such as dvips and rm.  

[There's the fpTeX project which produces native Windows ports of TeX,
DVIware, and related programs, so the assumption that only Cygwin
ports of those programs exist is incorrect.  fpTeX is included on the
annual releases of the "TeX Live" CDROM.]

Also, the Makefile says "SHELL = cmd", but commands such as this:

> +emacs-lisp-intro.dvi: $(INFO_SOURCES)
> +     $(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-lisp-intro.texi

and this:

> +elisp.dvi: $(srcs) index.texi
> +     # Avoid losing old contents of aux file entirely.
> +     -mv elisp.aux elisp.oaux
> +     # First shot to define xrefs.
> +     $(texinputdir) $(TEX) $(srcdir)/elisp.texi
> +     if [ a$(permuted_index) != a ]; \
> +     then \
> +       $(srcdir)/permute-index; \
> +       mv permuted.fns elisp.fns; \
> +       texindex elisp.tp; \
> +     else \
> +       texindex elisp.??; \
> +     fi
> +     $(texinputdir) $(TEX) $(srcdir)/elisp.texi

will only work if the shell is actually a port of a Unix shell, such
as Bash, since (AFAIK) CMD doesn't understand the syntax

   "foo=bar some-command"

and also because texi2dvi is a Unix shell script that CMD cannot run
directly, and because "if [ something" will totally confuse CMD.

> +dist: elisp elisp.dvi
> +     -rm -rf temp
> +     -mkdir temp
> +     -mkdir temp/$(manual)
> +     -ln $(srcdir)/README $(srcdir)/configure.in $(srcdir)/configure \
> + $(srcdir)/Makefile.in $(srcdir)/permute-index $(srcs) \
> + $(srcdir)/../man/texinfo.tex \
> + elisp.dvi elisp.aux elisp.??s elisp elisp-[0-9] elisp-[0-9][0-9] \
> + temp/$(manual)
> +     -(cd temp/$(manual); rm -f mkinstalldirs)
> +     cp $(srcdir)/mkinstalldirs temp/$(manual)
> +     (cd temp/$(manual); rm -f *~)
> +     (cd temp; tar chf - $(manual)) | gzip > $(manual).tar.gz
> +     -rm -rf temp

Since no one will ever prepare an Emacs tarball on Windows, targets
such as this seems unnecessary (it will also not work, since Windows
doesn't support hard links).

Is it really your intent here to allow only Cygwin-compiled ports to
be used?  If so, I'd suggest to say so in some prominent place, since
other makefile-w32.in files (e.g., in the `src' directory) don't make
those assumptions.  (They also take care to use available Windows
commands for operations such as rm, mv and cp.)

Better still, make these Makefiles work with stock Windows shells, if
you are prepared to invest an extra effort.  E.g., the ENVADD stuff
can be replaced with Make's own "export foo=bar" directives.  Or at
least detect that the Makefile is being used with non-Cygwin ports and
refuse to run.

The line "SHELL = CMD" is erroneous in any case, I think.

All these considerations are important especially in the `man'
directory, since the absence of Cygwin ports will prevent people from
building and changing the user manual, which is essential for proper
usage of Emacs.

In any case, thank you for your work.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]