Date: Mon, 16 May 2011 10:02:57 +0300 From: Andriy Gapon <avg@FreeBSD.org> To: ports@FreeBSD.org Subject: patch for force fetch Message-ID: <4DD0CC21.5050305@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
I've noticed the following problem. If a distfile is updated by a distributor without renaming it (so that checksum and possibly size change), then more often than not the port build system would fail to fetch the distfile. An example: ... => SHA256 Checksum mismatch for eclipse/javax.servlet.jsp_2.0.0.v200806031607.jar. ... => javax.servlet.jsp_2.0.0.v200806031607.jar doesn't seem to exist in /usr/ports/distfiles/eclipse. => Attempting to fetch http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/bundles/javax.servlet.jsp_2.0.0.v200806031607.jar fetch: http://download.eclipse.org/tools/orbit/downloads/drops/R20100519200754/bundles/javax.servlet.jsp_2.0.0.v200806031607.jar: Requested Range Not Satisfiable => Attempting to fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/eclipse/javax.servlet.jsp_2.0.0.v200806031607.jar fetch: ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/eclipse/javax.servlet.jsp_2.0.0.v200806031607.jar: size mismatch: expected 63889, actual 62707 => Couldn't fetch it - please try to retrieve this => port manually into /usr/ports/distfiles/eclipse and try again. *** Error code 1 I think that this happens because the old version of the distfile is still present in download target location and fetch(1) thinks that it has a partially downloaded file and tries to be smart. The following patch simply tries to remove the stale distfile before calling fetch. Maybe there is a smarter way about this, like e.g. passing some option to fetch. --- /usr/ports/Mk/bsd.port.mk.orig 2011-05-16 09:53:49.461968872 +0300 +++ /usr/ports/Mk/bsd.port.mk 2011-05-16 09:56:47.995971662 +0300 @@ -3562,6 +3562,9 @@ ${ECHO_MSG} "=> ${DISTDIR} is not writable by you; cannot fetch."; \ exit 1; \ fi; \ + if [ "$$force_fetch" = "true" ]; then \ + rm -f $$file $$filebasename \ + fi \ if [ ! -z "$$select" ] ; then \ __MASTER_SITES_TMP= ; \ for group in $$select; do \ -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4DD0CC21.5050305>