This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Makefile.in respect $(DESTDIR) - Patch applied


Hello,

I noticed winsup does not respect $(DESTDIR) in its installation process. The applied patch modifies the Makefile.in files, to have them use $(DESTDIR) in all install lines. This includes:
* install(1) (also MKDIRP)
* the mkinstalldirs / $(mkinstalldirs) commands
* a ln -sf line
I may have forgotten some, however the following commands show the patch works:


   build$ ../src/configure --prefix=/tmp/wrongplace
   build$ make
   build$ make install DESTDIR=/tmp/rightplace

This correctly installs all files to /tmp/rightplace/tmp/wrongplace, /tmp/wrongplace is never created. newlib already respects DESTDIR in its makefiles (it does use automake). This patch applies cleanly to the current CVS revision.

After applying this patch, the commands in FAQ section 6.18 "How do I build Cygwin on my own" can be changed to:

  mkdir build install;
  cd build;
  (../src/configure --prefix= -v; make) >& make.out
  make install DESTDIR=../install > install.log 2>&1

After these commands, all files are in ../install and configured to be installed in / (prefix is empty, i.e. / without the last slash). In my opinion, this is a cleaner way to compile Cygwin than giving --prefix=../install to configure.

Sjors
Index: winsup/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/Makefile.in,v
retrieving revision 1.32
diff -u -r1.32 Makefile.in
--- winsup/Makefile.in	26 Nov 2008 16:42:00 -0000	1.32
+++ winsup/Makefile.in	23 Feb 2009 17:10:28 -0000
@@ -65,9 +65,9 @@
 all: Makefile $(SUBDIRS)
 
 install-license: CYGWIN_LICENSE COPYING
-	${INSTALL} -d $(prefix)/share/doc/Cygwin
+	${INSTALL} -d $(DESTDIR)$(prefix)/share/doc/Cygwin
 	for i in $^; do \
-	  ${INSTALL} $$i $(prefix)/share/doc/Cygwin ; \
+	  ${INSTALL} $$i $(DESTDIR)$(prefix)/share/doc/Cygwin ; \
 	done
 
 install: Makefile $(INSTALL_LICENSE) $(INSTALL_SUBDIRS)
Index: winsup/cygserver/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/cygserver/Makefile.in,v
retrieving revision 1.21
diff -u -r1.21 Makefile.in
--- winsup/cygserver/Makefile.in	3 Jan 2009 05:37:34 -0000	1.21
+++ winsup/cygserver/Makefile.in	23 Feb 2009 17:10:28 -0000
@@ -51,14 +51,14 @@
 all: cygserver.exe
 
 install: all $(updir1)/mkinstalldirs cygserver.conf cygserver-config README
-	$(updir1)/mkinstalldirs $(sbindir)
-	$(updir1)/mkinstalldirs $(bindir)
-	$(updir1)/mkinstalldirs $(sysconfdir)/defaults/etc
-	$(updir1)/mkinstalldirs $(prefix)/share/doc/Cygwin
-	$(INSTALL_PROGRAM) cygserver.exe $(sbindir)/cygserver.exe
-	$(INSTALL_PROGRAM) $(srcdir)/cygserver-config $(bindir)/cygserver-config
-	$(INSTALL_DATA) $(srcdir)/cygserver.conf $(sysconfdir)/defaults/etc/cygserver.conf
-	$(INSTALL_DATA) $(srcdir)/README $(prefix)/share/doc/Cygwin/cygserver.README
+	$(updir1)/mkinstalldirs $(DESTDIR)$(sbindir)
+	$(updir1)/mkinstalldirs $(DESTDIR)$(bindir)
+	$(updir1)/mkinstalldirs $(DESTDIR)$(sysconfdir)/defaults/etc
+	$(updir1)/mkinstalldirs $(DESTDIR)$(prefix)/share/doc/Cygwin
+	$(INSTALL_PROGRAM) cygserver.exe $(DESTDIR)$(sbindir)/cygserver.exe
+	$(INSTALL_PROGRAM) $(srcdir)/cygserver-config $(DESTDIR)$(bindir)/cygserver-config
+	$(INSTALL_DATA) $(srcdir)/cygserver.conf $(DESTDIR)$(sysconfdir)/defaults/etc/cygserver.conf
+	$(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(prefix)/share/doc/Cygwin/cygserver.README
 
 clean:
 	rm -f $(OBJS) ${patsubst %.o,%.d,$(OBJS)} cygserver.exe
Index: winsup/cygwin/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/Makefile.in,v
retrieving revision 1.219
diff -u -r1.219 Makefile.in
--- winsup/cygwin/Makefile.in	3 Jan 2009 05:12:20 -0000	1.219
+++ winsup/cygwin/Makefile.in	23 Feb 2009 17:10:28 -0000
@@ -308,37 +308,37 @@
 uninstall: uninstall-libs uninstall-headers uninstall-man
 
 install-libs: $(TARGET_LIBS)
-	@$(MKDIRP) $(bindir)
-	$(INSTALL_PROGRAM) $(TEST_DLL_NAME) $(bindir)/$(DLL_NAME); \
+	@$(MKDIRP) $(DESTDIR)$(bindir)
+	$(INSTALL_PROGRAM) $(TEST_DLL_NAME) $(DESTDIR)$(bindir)/$(DLL_NAME); \
 	for i in $^; do \
-	    $(INSTALL_DATA) $$i $(tooldir)/lib/`basename $$i` ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/lib/`basename $$i` ; \
 	done
-	cd $(tooldir)/lib && ln -sf libcygwin.a libg.a
+	cd $(DESTDIR)$(tooldir)/lib && ln -sf libcygwin.a libg.a
 
 install-headers:
 	cd $(srcdir); \
 	for sub in `find include -name '[a-z]*' -type d -print | sort`; do \
-	    $(MKDIRP) $(tooldir)/$$sub; \
+	    $(MKDIRP) $(DESTDIR)$(tooldir)/$$sub; \
 	    for i in $$sub/*.h ; do \
-	      $(INSTALL_DATA) $$i $(tooldir)/$$sub/`basename $$i` ; \
+	      $(INSTALL_DATA) $$i $(DESTDIR)$(tooldir)/$$sub/`basename $$i` ; \
 	    done ; \
 	done ; \
-	$(INSTALL_DATA) regex/regex.h $(tooldir)/include/regex.h
+	$(INSTALL_DATA) regex/regex.h $(DESTDIR)$(tooldir)/include/regex.h
 
 install-man:
-	@$(MKDIRP) $(mandir)/man2 $(mandir)/man3 $(mandir)/man5 $(mandir)/man7
+	@$(MKDIRP) $(DESTDIR)$(mandir)/man2 $(DESTDIR)$(mandir)/man3 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7
 	cd $(srcdir); \
 	for i in `find . -type f -name '*.2'`; do \
-	    $(INSTALL_DATA) $$i $(mandir)/man2/`basename $$i` ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man2/`basename $$i` ; \
 	done; \
 	for i in `find . -type f -name '*.3'`; do \
-	    $(INSTALL_DATA) $$i $(mandir)/man3/`basename $$i` ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man3/`basename $$i` ; \
 	done; \
 	for i in `find . -type f -name '*.5'`; do \
-	    $(INSTALL_DATA) $$i $(mandir)/man5/`basename $$i` ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man5/`basename $$i` ; \
 	done; \
 	for i in `find . -type f -name '*.7'`; do \
-	    $(INSTALL_DATA) $$i $(mandir)/man7/`basename $$i` ; \
+	    $(INSTALL_DATA) $$i $(DESTDIR)$(mandir)/man7/`basename $$i` ; \
 	done
 
 install_target:
Index: winsup/lsaauth/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/lsaauth/Makefile.in,v
retrieving revision 1.2
diff -u -r1.2 Makefile.in
--- winsup/lsaauth/Makefile.in	12 Oct 2008 23:53:26 -0000	1.2
+++ winsup/lsaauth/Makefile.in	23 Feb 2009 17:10:28 -0000
@@ -70,10 +70,10 @@
 	rm -f *.o *.dll
 
 install: all
-	$(SHELL) $(updir1)/mkinstalldirs $(bindir)
-	$(INSTALL_PROGRAM) $(DLL) $(bindir)/$(DLL)
-	$(INSTALL_PROGRAM) $(srcdir)/cyglsa64.dll $(bindir)/cyglsa64.dll
-	$(INSTALL_PROGRAM) $(srcdir)/cyglsa-config $(bindir)/cyglsa-config
+	$(SHELL) $(updir1)/mkinstalldirs $(DESTDIR)$(bindir)
+	$(INSTALL_PROGRAM) $(DLL) $(DESTDIR)$(bindir)/$(DLL)
+	$(INSTALL_PROGRAM) $(srcdir)/cyglsa64.dll $(DESTDIR)$(bindir)/cyglsa64.dll
+	$(INSTALL_PROGRAM) $(srcdir)/cyglsa-config $(DESTDIR)$(bindir)/cyglsa-config
 
 %.o: %.c
 	$(CC) $(WIN32_CFLAGS) -c -o $@ $<
Index: winsup/mingw/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/mingw/Makefile.in,v
retrieving revision 1.88
diff -u -r1.88 Makefile.in
--- winsup/mingw/Makefile.in	28 Oct 2008 23:55:39 -0000	1.88
+++ winsup/mingw/Makefile.in	23 Feb 2009 17:10:29 -0000
@@ -231,7 +231,7 @@
 
 install_dlls_host:
 	for i in $(DLLS); do \
-		$(INSTALL_PROGRAM) $$i $(inst_bindir)/$$i ; \
+		$(INSTALL_PROGRAM) $$i $(DESTDIR)$(inst_bindir)/$$i ; \
 	done
 
 _libm_dummy.o:
@@ -445,24 +445,24 @@
 install-info: info
 
 install-dirs:
-	$(mkinstalldirs) $(inst_bindir)
-	$(mkinstalldirs) $(inst_includedir)
-	$(mkinstalldirs) $(inst_libdir)
-	$(mkinstalldirs) $(inst_docdir)
-	$(mkinstalldirs) $(mandir)/man$(mansection)
+	$(mkinstalldirs) $(DESTDIR)$(inst_bindir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_includedir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_docdir)
+	$(mkinstalldirs) $(DESTDIR)$(mandir)/man$(mansection)
 
 install: all install-dirs $(install_dlls_host)
 	for i in $(LIBS); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 	for i in $(CRT0S); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 	for i in $(INSTDOCS); do \
-		$(INSTALL_DATA) $(srcdir)/$$i $(inst_docdir)/$$i ; \
+		$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(inst_docdir)/$$i ; \
 	done
 	for sub in . sys ; do \
-		dstdir=$(inst_includedir)/$$sub ; \
+		dstdir=$(DESTDIR)$(inst_includedir)/$$sub ; \
 		$(mkinstalldirs) $$dstdir ; \
 		for i in $(srcdir)/include/$$sub/*.h ; do \
 		  $(INSTALL_DATA) $$i $$dstdir/`basename $$i` ; \
@@ -472,10 +472,10 @@
 # This provisional hack installs the only manpage we have at present...
 # It simply CANNOT suffice, when we have more manpages to ship.
 #
-	$(mkinstalldirs) $(mandir)/man$(mansection)
-	$(INSTALL_DATA) $(srcdir)/man/dirname.man $(mandir)/man$(mansection)/`\
+	$(mkinstalldirs) $(DESTDIR)$(mandir)/man$(mansection)
+	$(INSTALL_DATA) $(srcdir)/man/dirname.man $(DESTDIR)$(mandir)/man$(mansection)/`\
 	  echo dirname.man|sed '$(manpage_transform);s,man$$,$(mansection),'`
-	$(INSTALL_DATA) $(srcdir)/man/dirname.man $(mandir)/man$(mansection)/`\
+	$(INSTALL_DATA) $(srcdir)/man/dirname.man $(DESTDIR)$(mandir)/man$(mansection)/`\
 	  echo basename.man|sed '$(manpage_transform);s,man$$,$(mansection),'`
 #
 # End provisional hack.
Index: winsup/mingw/mingwex/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/mingw/mingwex/Makefile.in,v
retrieving revision 1.46
diff -u -r1.46 Makefile.in
--- winsup/mingw/mingwex/Makefile.in	12 Oct 2008 23:58:17 -0000	1.46
+++ winsup/mingw/mingwex/Makefile.in	23 Feb 2009 17:10:29 -0000
@@ -239,9 +239,9 @@
 install-info: info
 
 install: all
-	$(mkinstalldirs) $(inst_libdir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
 	for i in $(LIBS); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 
 clean:
Index: winsup/mingw/profile/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/mingw/profile/Makefile.in,v
retrieving revision 1.16
diff -u -r1.16 Makefile.in
--- winsup/mingw/profile/Makefile.in	12 Oct 2008 23:58:17 -0000	1.16
+++ winsup/mingw/profile/Makefile.in	23 Feb 2009 17:10:29 -0000
@@ -112,17 +112,17 @@
 install-info: info
 
 install: all
-	$(mkinstalldirs) $(inst_libdir) 
+	$(mkinstalldirs) $(DESTDIR)$(inst_libdir) 
 	for i in $(LIBS); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 	for i in $(CRT0S); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 	for sub in . ; do \
-	$(mkinstalldirs) $(inst_includedir)/$$sub ; \
+	$(mkinstalldirs) $(DESTDIR)$(inst_includedir)/$$sub ; \
 		for i in $(srcdir)/$$sub/*.h ; do \
-		  $(INSTALL_DATA) $$i $(inst_includedir)/$$sub/`basename $$i` ; \
+		  $(INSTALL_DATA) $$i $(DESTDIR)$(inst_includedir)/$$sub/`basename $$i` ; \
 		done ; \
 	done
 
Index: winsup/utils/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/utils/Makefile.in,v
retrieving revision 1.80
diff -u -r1.80 Makefile.in
--- winsup/utils/Makefile.in	17 Jan 2009 11:59:16 -0000	1.80
+++ winsup/utils/Makefile.in	23 Feb 2009 17:10:29 -0000
@@ -158,10 +158,10 @@
 	rm -f Makefile config.cache
 
 install: all
-	$(SHELL) $(updir1)/mkinstalldirs $(bindir)
+	$(SHELL) $(updir1)/mkinstalldirs $(DESTDIR)$(bindir)
 	for i in $(CYGWIN_BINS) ${filter-out testsuite.exe,$(MINGW_BINS)} ; do \
 	  n=`echo $$i | sed '$(program_transform_name)'`; \
-	  $(INSTALL_PROGRAM) $$i $(bindir)/$$n; \
+	  $(INSTALL_PROGRAM) $$i $(DESTDIR)$(bindir)/$$n; \
 	done
 
 $(cygwin_build)/libcygwin.a: $(cygwin_build)/Makefile
Index: winsup/w32api/lib/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/w32api/lib/Makefile.in,v
retrieving revision 1.46
diff -u -r1.46 Makefile.in
--- winsup/w32api/lib/Makefile.in	29 Jan 2008 21:18:49 -0000	1.46
+++ winsup/w32api/lib/Makefile.in	23 Feb 2009 17:10:30 -0000
@@ -213,19 +213,19 @@
 install: install-libraries install-headers install-ddk install-directx
 
 install-libraries: all
-	$(mkinstalldirs) $(inst_libdir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
 	for i in $(LIBS); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 
 install-headers:
-	$(mkinstalldirs) $(inst_includedir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_includedir)
 	for i in $(HEADERS); do \
-		$(INSTALL_DATA) $(srcdir)/../include/$$i $(inst_includedir)/$$i ; \
+		$(INSTALL_DATA) $(srcdir)/../include/$$i $(DESTDIR)$(inst_includedir)/$$i ; \
 	done
-	$(mkinstalldirs) $(inst_includedir)/GL
+	$(mkinstalldirs) $(DESTDIR)$(inst_includedir)/GL
 	for i in $(GL_HEADERS); do \
-		$(INSTALL_DATA) $(srcdir)/../include/GL/$$i $(inst_includedir)/GL/$$i ; \
+		$(INSTALL_DATA) $(srcdir)/../include/GL/$$i $(DESTDIR)$(inst_includedir)/GL/$$i ; \
 	done
 
 install-ddk: install-libraries install-headers
Index: winsup/w32api/lib/ddk/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/w32api/lib/ddk/Makefile.in,v
retrieving revision 1.5
diff -u -r1.5 Makefile.in
--- winsup/w32api/lib/ddk/Makefile.in	12 Sep 2006 00:29:04 -0000	1.5
+++ winsup/w32api/lib/ddk/Makefile.in	23 Feb 2009 17:10:30 -0000
@@ -145,15 +145,15 @@
 install: install-libraries install-headers
 
 install-libraries: all
-	$(mkinstalldirs) $(inst_libdir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
 	for i in $(LIBS); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 
 install-headers:
-	$(mkinstalldirs) $(inst_includedir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_includedir)
 	for i in $(HEADERS); do \
-		$(INSTALL_DATA) $(srcdir)/../../include/ddk/$$i $(inst_includedir)/$$i ; \
+		$(INSTALL_DATA) $(srcdir)/../../include/ddk/$$i $(DESTDIR)$(inst_includedir)/$$i ; \
 	done
 
 # uninstall headers and libraries from a target specified directory
Index: winsup/w32api/lib/directx/Makefile.in
===================================================================
RCS file: /cvs/src/src/winsup/w32api/lib/directx/Makefile.in,v
retrieving revision 1.4
diff -u -r1.4 Makefile.in
--- winsup/w32api/lib/directx/Makefile.in	12 Sep 2006 00:29:04 -0000	1.4
+++ winsup/w32api/lib/directx/Makefile.in	23 Feb 2009 17:10:30 -0000
@@ -170,15 +170,15 @@
 install: install-libraries install-headers
 
 install-libraries: all
-	$(mkinstalldirs) $(inst_libdir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
 	for i in $(LIBS); do \
-		$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
+		$(INSTALL_DATA) $$i $(DESTDIR)$(inst_libdir)/$$i ; \
 	done
 
 install-headers:
-	$(mkinstalldirs) $(inst_includedir)
+	$(mkinstalldirs) $(DESTDIR)$(inst_includedir)
 	for i in $(HEADERS); do \
-		$(INSTALL_DATA) $(srcdir)/../../include/directx/$$i $(inst_includedir)/$$i ; \
+		$(INSTALL_DATA) $(srcdir)/../../include/directx/$$i $(DESTDIR)$(inst_includedir)/$$i ; \
 	done
 
 # uninstall headers and libraries from a target specified directory

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]