Subject: weird problem with DIST_SUBDIR
To: None <tech-pkg@netbsd.org>
From: Luke Mewburn <lukem@cs.rmit.edu.au>
List: tech-pkg
Date: 07/28/1999 02:44:39
i was in the process of recompiling all my a.out packages, and ran
into the following problem when downloading perl 5.004.04: because
i've specified MASTER_SITE_BACKUP in /etc/mk.conf as:
    MASTER_SITE_BACKUP=\
	ftp://ftp.au.netbsd.org/pub/NetBSD/packages/distfiles/${DIST_SUBDIR}/ \
	ftp://ftp2.au.netbsd.org/pub/NetBSD/packages/distfiles/${DIST_SUBDIR}/

when make fetch falls back to that it tries a url of the form
	ftp://ftp.au.netbsd.org/pub/NetBSD/packages/distfiles//perl...
and ftp doesn't like `//' in the path anymore (to be rfc 1738 compliant).

i'm sure other people will get bitten by this too.

here's my hack to bsd.pkg.mk, but i'm not sure if it's the best
solution.

comments?

Index: bsd.pkg.mk
===================================================================
RCS file: /cvsroot/pkgsrc/mk/bsd.pkg.mk,v
retrieving revision 1.305
diff -p -r1.305 bsd.pkg.mk
*** bsd.pkg.mk	1999/07/27 15:01:30	1.305
--- bsd.pkg.mk	1999/07/27 16:40:50
*************** SCRIPTDIR?=		${.CURDIR}/scripts
*** 74,79 ****
--- 74,84 ----
  FILESDIR?=		${.CURDIR}/files
  PKGDIR?=		${.CURDIR}/pkg
  
+ .if !defined(DIST_SUBDIR)
+ DIST_SUBDIR=		.
+ _DIST_SUBDIR_DOT=	1
+ .endif
+ 
  .if defined(USE_IMAKE) || defined(USE_MOTIF) || defined(USE_X11BASE)
  .if defined(USE_LOCALBASE_FOR_X11)
  PREFIX=			${LOCALBASE}
*************** MASTER_SITES?=
*** 554,568 ****
  PATCH_SITES?=
  
  # The primary backup site.
- .if defined(DIST_SUBDIR)
  MASTER_SITE_BACKUP?=	\
  	ftp://ftp.netbsd.org/pub/NetBSD/packages/distfiles/${DIST_SUBDIR}/ \
  	ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
- .else
- MASTER_SITE_BACKUP?=	\
- 	ftp://ftp.netbsd.org/pub/NetBSD/packages/distfiles/ \
- 	ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/
- .endif
  
  # Where to put distfiles that don't have any other master site
  MASTER_SITE_LOCAL?= \
--- 559,567 ----
*************** CKSUMFILES:=	${CKSUMFILES:N${__tmp__}}
*** 611,617 ****
  .endfor
  
  # List of all files, with ${DIST_SUBDIR} in front.  Used for fetch and checksum.
! .if defined(DIST_SUBDIR)
  _CKSUMFILES?=	${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
  _DISTFILES?=	${DISTFILES:S/^/${DIST_SUBDIR}\//}
  _IGNOREFILES?=	${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
--- 610,616 ----
  .endfor
  
  # List of all files, with ${DIST_SUBDIR} in front.  Used for fetch and checksum.
! .if defined(DIST_SUBDIR) && !defined(_DIST_SUBDIR_DOT)
  _CKSUMFILES?=	${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
  _DISTFILES?=	${DISTFILES:S/^/${DIST_SUBDIR}\//}
  _IGNOREFILES?=	${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
*************** distclean: pre-distclean clean
*** 1611,1618 ****
  		${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES};	\
  		${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES};	\
  	fi)
! .if defined(DIST_SUBDIR)
! 	-${_PKG_SILENT}${_PKG_DEBUG}${RMDIR} ${_DISTDIR}  
  .endif
  .endif
  
--- 1610,1617 ----
  		${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES};	\
  		${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES};	\
  	fi)
! .if !defined(_DIST_SUBDIR_DOT)
! 	-${_PKG_SILENT}${_PKG_DEBUG}${RMDIR} ${_DISTDIR}
  .endif
  .endif