From: "Juan José García-Ripoll" <juanjose.garciaripoll@gmail.com>
To: emacs-devel@gnu.org
Subject: Avoid duplicate emacs.exe / emacs-$version.exe
Date: Sat, 28 Mar 2020 17:53:00 +0100 [thread overview]
Message-ID: <865zeoctg3.fsf@csic.es> (raw)
[-- Attachment #1: Type: text/plain, Size: 1923 bytes --]
Right now in my hard disk I have two copies of statically linked Emacs.
~/emacs-27/bin/emacs.exe
~/emacs-27/bin/emacs-27.0.90.exe (let me call it emacs-$version.exe)
Each of them is 128Mb large and waste space. I understand the latter is
only meant to be used when the version is required. runemacs.exe and
tools actually seem to rely on emacs.exe, because if I delete
emacs-$version.exe it still works fine. Same goes for earlier releases.
I would suggest one of these options
a) Remove emacs-$version.exe during installation.
b) Same as a), but install a script emacs-$version.cmd containing just two
lines
@echo off
%~dp0\emacs.exe %*
c) Instead, remove emacs.exe and leave only emacs-$version.exe Make emacs.cmd a
script
@echo off
%~dp0\emacs-$version.exe %*
where $version is replaced with the current version. We also have to change
runemacs.exe to look for emacs-$version.exe
Option a) only invokes a change in Makefile.in. Option b) includes that change,
plus the creation of the script. This is in a patch attached to this
message. Option c) would be the most intrusive. I personally do not like it
because it binds a general utility, runemacs.exe, to a particular version.
After the patch:
juanj@DESKTOP-3A8AAJ0 MINGW64 ~/emacs-build/build/juanjo
$ du -smc ~/emacs-27/*
135 /c/Users/juanj/emacs-27/bin
1 /c/Users/juanj/emacs-27/include
1 /c/Users/juanj/emacs-27/lib
17 /c/Users/juanj/emacs-27/libexec
98 /c/Users/juanj/emacs-27/share
249 total
Before the patch:
juanj@DESKTOP-3A8AAJ0 MINGW64 ~/emacs-build/build/juanjo
$ du -smc ~/emacs-27/*
252 /c/Users/juanj/emacs-27/bin
1 /c/Users/juanj/emacs-27/include
1 /c/Users/juanj/emacs-27/lib
17 /c/Users/juanj/emacs-27/libexec
98 /c/Users/juanj/emacs-27/share
366 total
A 32% reduction in size.
--
Juan José García Ripoll
http://juanjose.garciaripoll.com
http://quinfog.hbar.es
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: emacs-cmd.diff --]
[-- Type: text/x-patch, Size: 1644 bytes --]
diff --git a/Makefile.in b/Makefile.in
index 67e15cf..67c14f2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -499,10 +499,13 @@ install-arch-dep:
endif
-chmod 755 "$(DESTDIR)${bindir}/$(EMACSFULL)"
ifndef NO_BIN_LINK
+ifeq ($(NTDIR),nt)
+ cd "$(DESTDIR)${bindir}" && mv "$(EMACSFULL)" "$(EMACS)"
+else
rm -f "$(DESTDIR)${bindir}/$(EMACS)"
cd "$(DESTDIR)${bindir}" && $(LN_S_FILEONLY) "$(EMACSFULL)" "$(EMACS)"
endif
-else
+endif
subdir=${ns_appresdir}/site-lisp && ${write_subdir}
rm -rf ${ns_appresdir}/share
endif
diff --git a/nt/Makefile.in b/nt/Makefile.in
index 6bdf824..7af6e78 100644
--- a/nt/Makefile.in
+++ b/nt/Makefile.in
@@ -167,7 +167,7 @@ LINK_CFLAGS =
## Unused.
CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS}
-all: ${EXE_FILES}
+all: ${EXE_FILES} emacs-$(version).cmd
.PHONY: all
@@ -194,6 +194,7 @@ install:
for file in ${INSTALLABLES} ; do \
$(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} "$(DESTDIR)${bindir}"/`echo $${file} | sed -e 's/${EXEEXT}$$//' -e '$(TRANSFORM)'`${EXEEXT} ; \
done
+ $(INSTALL_PROGRAM) emacs-$(version).cmd "$(DESTDIR)${bindir}"
${MKDIR_P} "$(DESTDIR)${datadir}/emacs/$(version)"
$(INSTALL_DATA) ${srcdir}/README.W32 "$(DESTDIR)${datadir}/emacs/$(version)"
@@ -251,6 +252,10 @@ cmdproxy${EXEEXT}:
runemacs${EXEEXT}: ${srcdir}/runemacs.c $(EMACSRES)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $^ -mwindows -o $@
+emacs-$(version).cmd:
+ echo '@echo off' > $@
+ echo '%~dp0\emacs.exe %*' >> $@
+
## Also used in ../src/Makefile.
emacs.res ../src/emacs.res: emacs.rc ${srcdir}/icons/emacs.ico \
${srcdir}/icons/hand.cur ${srcdir}/$(EMACS_MANIFEST)
next reply other threads:[~2020-03-28 16:53 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-28 16:53 Juan José García-Ripoll [this message]
2020-03-28 18:19 ` Avoid duplicate emacs.exe / emacs-$version.exe Eli Zaretskii
2020-03-28 20:41 ` Juan José García-Ripoll
2020-03-28 22:45 ` Phillip Lord
2020-03-29 2:31 ` Eli Zaretskii
2020-03-29 9:38 ` Juan José García-Ripoll
2020-03-29 13:08 ` Phillip Lord
2020-03-29 14:10 ` Eli Zaretskii
2020-03-28 18:19 ` Eli Zaretskii
2020-03-28 20:13 ` Phillip Lord
2020-03-28 20:48 ` Juan José García-Ripoll
2020-03-28 22:22 ` Phillip Lord
2020-03-28 23:36 ` Juan José García-Ripoll
2020-03-29 12:55 ` Phillip Lord
2020-03-29 2:27 ` Eli Zaretskii
2020-03-29 12:52 ` Phillip Lord
2020-03-29 13:56 ` Eli Zaretskii
2020-03-29 17:25 ` Phillip Lord
2020-03-28 23:36 ` Juan José García-Ripoll
2020-03-29 2:36 ` Eli Zaretskii
2020-03-29 12:59 ` Phillip Lord
2020-03-29 13:59 ` Eli Zaretskii
2020-03-29 18:18 ` Phillip Lord
2020-03-29 18:34 ` Eli Zaretskii
2020-03-29 20:49 ` Phillip Lord
-- strict thread matches above, loose matches on Subject: below --
2020-03-29 17:01 Angelo Graziosi
2020-03-29 17:22 ` Eli Zaretskii
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=865zeoctg3.fsf@csic.es \
--to=juanjose.garciaripoll@gmail.com \
--cc=emacs-devel@gnu.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.