Subject: isn't use of make's ".for" preferred for makefile iteration?
To: NetBSD Packages Technical Discussion List <tech-pkg@NetBSD.ORG>
From: Greg A. Woods <woods@weird.com>
List: tech-pkg
Date: 03/18/2001 13:01:17
I was looking through the security/openssh package module to see if I
could see whether it might be installing things in the wrong place or
not and I discovered what I think is a rather questionable use of a
shell "for" loop instead of a make ".for" loop.

The first obvious problem is that in order for the makefile to clearly
show what it is doing during the build an extra 'echo' statement would
be necessary.  Use of make's syntax eliminates this need.

Wouldn't the following change make it more correct?

$ cvs diff Makefile 
Index: Makefile
===================================================================
RCS file: /most/spare/cvs.NetBSD.ORG/pkgsrc/security/openssh/Makefile,v
retrieving revision 1.42
diff -c -r1.42 Makefile
*** Makefile    2001/03/11 20:42:28     1.42
--- Makefile    2001/03/18 17:48:43
***************
*** 83,99 ****
	cd ${WRKSRC} && ${LOCALBASE}/bin/autoreconf
  
  post-build:
!	for FILE in \
!		${PKGDIR}/DEINSTALL	\
		${PKGDIR}/INSTALL	\
		${PKGDIR}/INSTALL.SunOS \
		${FILESDIR}/sshd.sh;	\
!	do \
!		${SED}  -e 's#@SSH_CONF_DIR@#${SSH_CONF_DIR}#g' \
!			-e 's#@PREFIX@#${PREFIX}#g' \
!			-e 's#@INSTALL_DATA@#${INSTALL_DATA}#g' \
!			< $${FILE} > ${WRKDIR}/`basename $${FILE}`; \
!	done
  
  pre-install:
	PKG_PREFIX=${PREFIX} ${SH} ${INSTALL_FILE} ${PKGNAME} PRE-INSTALL
--- 83,97 ----
	cd ${WRKSRC} && ${LOCALBASE}/bin/autoreconf
  
  post-build:
! .for FILE in  ${PKGDIR}/DEINSTALL	\
		${PKGDIR}/INSTALL	\
		${PKGDIR}/INSTALL.SunOS	\
! 		${FILESDIR}/sshd.sh
!	${SED}  -e 's#@SSH_CONF_DIR@#${SSH_CONF_DIR}#g'		\
!		-e 's#@PREFIX@#${PREFIX}#g'			\
!		-e 's#@INSTALL_DATA@#${INSTALL_DATA}#g'		\
!		${FILE} > ${WRKDIR}/`basename ${FILE}`
! .endfor
  
  pre-install:
	PKG_PREFIX=${PREFIX} ${SH} ${INSTALL_FILE} ${PKGNAME} PRE-INSTALL



It would probably be even better to list the files in a variable
definition too....

and note also the fix to eliminate silly stdin redirection for sed.

-- 
							Greg A. Woods

+1 416 218-0098      VE3TCP      <gwoods@acm.org>      <robohack!woods>
Planix, Inc. <woods@planix.com>; Secrets of the Weird <woods@weird.com>