Subject: bug#6602: [PATCH] make dist target for Windows

From: Christoph <[email-masked]>
Date: Sat, 24 Jul 2010 21:18:52 -0600

On 7/24/2010 8:55 PM, Juanma Barranquero wrote:

> Well, as I said, no sweat. If someone else besides me needs the
> functionality we'll know soon enough.

I bet we will. :)

>> Perhaps it should be added to `distclean'?
>
> Well, somewhere in *clean*, yes :-) (I renounced trying to understand
> the different clean targets a long time ago.)

I know what you mean. I added it to (top-)distclean, so at least it is 
gone whenever somebody resets to the original distribution state.

Updated patch bundle attached.

Christoph

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [email-masked]
# target_branch: http://bzr.savannah.gnu.org/r/emacs/trunk/
# testament_sha1: c73940e4ed6fed5fb41a5bacb9e06ee0c37fa7ca
# timestamp: 2010-07-24 21:08:03 -0600
# base_revision_id: [email-masked]
# 
# Begin patch
=== modified file 'nt/ChangeLog'
--- nt/ChangeLog	2010-07-24 13:35:31 +0000
+++ nt/ChangeLog	2010-07-25 03:07:15 +0000
@@ -1,5 +1,13 @@
 2010-07-24  Christoph Scholtes  <[email-masked]>
 
+	* makefile.w32-in: Copy README.W32 to installation directory
+	during `make install'.  Remove README.W32 with `distclean' (in
+	case Emacs was installed in place).  Use temporary directory to
+	create distribution zip files in `dist' target.
+	* zipdist.bat: Simplify code using temporary directory.
+
+2010-07-24  Christoph Scholtes  <[email-masked]>
+
 	New make target for Windows platform: make dist (bug#6602)
 
 	* INSTALL: Document new dist target and add section about

=== modified file 'nt/makefile.w32-in'
--- nt/makefile.w32-in	2010-07-24 13:35:31 +0000
+++ nt/makefile.w32-in	2010-07-25 03:07:15 +0000
@@ -25,6 +25,8 @@
 
 VERSION		= 24.0.50
 
+TMP_DIST_DIR 	= emacs-$(VERSION)
+
 TRES		= $(BLD)/emacs.res
 CLIENTRES	= $(BLD)/emacsclient.res
 
@@ -208,6 +210,7 @@
 	- $(CP) $(BLD)/ddeclient.exe $(INSTALL_DIR)/bin
 	- $(CP) $(BLD)/cmdproxy.exe $(INSTALL_DIR)/bin
 	- $(CP) $(BLD)/runemacs.exe $(INSTALL_DIR)/bin
+	- $(CP) README.W32 $(INSTALL_DIR)
 	- $(DEL) ../same-dir.tst
 	- $(DEL) $(INSTALL_DIR)/same-dir.tst
 	echo SameDirTest > "$(INSTALL_DIR)/same-dir.tst"
@@ -246,10 +249,22 @@
 install-shortcuts:
 	"$(INSTALL_DIR)/bin/addpm" -q
 
-dist: install-bin 
-	$(CP) $(DIST_FILES) $(INSTALL_DIR)/bin
-	$(CP) README.W32 $(INSTALL_DIR)
-	$(COMSPEC)$(ComSpec) /c $(ARGQUOTE)zipdist.bat $(INSTALL_DIR) $(VERSION)$(ARGQUOTE)
+dist: install-bin
+	mkdir $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/README.W32" $(TMP_DIST_DIR)
+	$(CP) "$(INSTALL_DIR)/INSTALL" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/bin" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/etc" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/info" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/lisp" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/leim" $(TMP_DIST_DIR)
+	$(CP_DIR) "$(INSTALL_DIR)/site-lisp" $(TMP_DIST_DIR)
+	$(CP_DIR) $(DIST_FILES) $(TMP_DIST_DIR)/bin
+	$(COMSPEC)$(ComSpec) /c $(ARGQUOTE)zipdist.bat $(VERSION)$(ARGQUOTE)
+	$(DEL_TREE) $(TMP_DIST_DIR)
 
 force-info:
 # Note that doc/emacs/makefile knows how to
@@ -336,6 +351,7 @@
 	- $(DEL) stamp_BLD
 	- $(DEL) ../etc/DOC ../etc/DOC-X
 	- $(DEL) config.log Makefile
+	- $(DEL) ../README.W32
 
 distclean: distclean-other-dirs-$(MAKETYPE) top-distclean

=== modified file 'nt/zipdist.bat'
--- nt/zipdist.bat	2010-07-24 13:35:31 +0000
+++ nt/zipdist.bat	2010-07-24 22:04:10 +0000
@@ -20,25 +20,10 @@
 rem along with GNU Emacs.  If not, see http://www.gnu.org/licenses/.
 
 SETLOCAL
-rem arg 1: full path to Emacs root directory
-set ARG_PATH="%~f1"
-rem Path separator cannot be parsed correctly, substitute
-set ARG_PATH=%ARG_PATH:\=;%
-
-rem arg 2: Emacs version number
-set EMACS_VER=%2
-
-rem Parse out last directory from passed in full path (arg 1)
-for /f "tokens=* delims=;" %%G in (%ARG_PATH%) do call :PARSE_PATH %%G
-goto :EXIT
-
-:PARSE_PATH
-if "%1"=="" (
-  goto :ZIP_CHECK
-)
-set ROOT_DIR=%1
-SHIFT
-goto :PARSE_PATH
+rem arg 1: Emacs version number
+set EMACS_VER=%1
+
+set TMP_DIST_DIR=emacs-%EMACS_VER%
 
 rem Check, if 7zip is installed and available on path
 :ZIP_CHECK
@@ -53,14 +38,12 @@
 
 rem Build distributions
 :ZIP_DIST
-pushd ..\..
 rem Build and verify full distribution
-7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-bin-i386.zip %ROOT_DIR%/BUGS %ROOT_DIR%/COPYING %ROOT_DIR%/README %ROOT_DIR%/README.W32 %ROOT_DIR%/INSTALL %ROOT_DIR%/bin %ROOT_DIR%/etc %ROOT_DIR%/info %ROOT_DIR%/lisp %ROOT_DIR%/leim %ROOT_DIR%/site-lisp
+7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-bin-i386.zip %TMP_DIST_DIR%
 7z t emacs-%EMACS_VER%-bin-i386.zip
 rem Build and verify binary only distribution
-7z a -bd -tZIP -mx=9 emacs-%EMACS_VER%-barebin-i386.zip %ROOT_DIR%/README.W32 %ROOT_DIR%/bin %ROOT_DIR%/etc/DOC-X %ROOT_DIR%/COPYING
+7z a -bd -tZIP -mx=9 -x!.bzrignore -x!.gitignore -xr!emacs.mdp -xr!*.pdb -xr!*.opt -xr!*~ -xr!CVS -xr!.arch-inventory emacs-%EMACS_VER%-barebin-i386.zip %TMP_DIST_DIR%/README.W32 %TMP_DIST_DIR%/bin %TMP_DIST_DIR%/etc/DOC-X %TMP_DIST_DIR%/COPYING
 7z t emacs-%EMACS_VER%-barebin-i386.zip
-popd
 goto EXIT
 
 :EXIT

# Begin bundle