From owner-freebsd-ports Sat Apr 28 0: 5:15 2001 Delivered-To: freebsd-ports@freebsd.org Received: from parkinson.uol.com.br (parkinson.uol.com.br [200.231.206.187]) by hub.freebsd.org (Postfix) with ESMTP id 4774037B42C for ; Sat, 28 Apr 2001 00:05:04 -0700 (PDT) (envelope-from lioux@uol.com.br) Received: from ppp053-bsace7020.telebrasilia.net.br (ppp053-bsace7020.telebrasilia.net.br [200.181.48.53] (may be forged)) by parkinson.uol.com.br (8.9.1/8.9.1) with ESMTP id EAA11479 for ; Sat, 28 Apr 2001 04:05:53 -0300 (BRT) Received: (qmail 8261 invoked by uid 1001); 28 Apr 2001 07:05:29 -0000 From: "Mario Sergio Fujikawa Ferreira" Date: Sat, 28 Apr 2001 04:05:07 -0300 To: freebsd-ports@freebsd.org Subject: RFC: New port target fetch-check (bsd.port.mk patch) Message-ID: <20010428040507.A8145@Fedaykin.here> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="pf9I7BMVVzbSWLtt" Content-Disposition: inline User-Agent: Mutt/1.2.5i Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org --pf9I7BMVVzbSWLtt Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi, I would like some comments on this new target. One the most common problems we have when either creating or updating ports is verifying if the DISTFILES exist under the MASTER_SITES. Some of us have automated tools to do that but the ports system could use an automated target. Are my port DISTFILES available under my MASTER_SITES? I wrote a simple fetch-check target that does exactly that. It is pretty naive in which it currently depends on the existence of fetch in the target system but we can improve it in the future. A sample output $ cd /usr/ports/mail/qpopper $ make fetch-check >> checking URI ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.1.tar.gz >>> URI OK. qpopper4.0.1.tar.gz exists under ftp://ftp.qualcomm.com/eudora/servers/unix/popper/ with 2382486 bytes >> checking URI ftp://sunsite.doc.ic.ac.uk/Mirrors/ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.1.tar.gz >>> URI OK. qpopper4.0.1.tar.gz exists under ftp://sunsite.doc.ic.ac.uk/Mirrors/ftp.qualcomm.com/eudora/servers/unix/popper/ with 2382486 bytes >> checking URI ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/qpopper4.0.1.tar.gz >>> URI not OK. qpopper4.0.1.tar.gz does not exist under ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ >> checking URI http://www.imasy.or.jp/~ume/ipv6/qpopper4.0-ipv6-20010418.diff.gz >>> URI OK. qpopper4.0-ipv6-20010418.diff.gz exists under http://www.imasy.or.jp/~ume/ipv6/ with 20649 bytes >> checking URI ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/qpopper4.0-ipv6-20010418.diff.gz >>> URI not OK. qpopper4.0-ipv6-20010418.diff.gz does not exist under ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ A think fenner is the most appropriate reviewer for this since he has been "our" distfiles meister. And, as such, has experience with all sort of fetching problems. But the whole port community is more than welcome. I am contributing this in the hope that I can quit using perl scripting when I could be benefiting of internal port building tools like makesum. And, that others might find it helpful. :) I wrote it in less than an hour so I am pretty sure that others can help me improve it. Regards, -- Mario S F Ferreira - UnB - Brazil - "I guess this is a signature." lioux at ( freebsd dot org | linf dot unb dot br ) flames to beloved devnull@someotherworldbeloworabove.org --pf9I7BMVVzbSWLtt Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="patch-bsd.port.mk" --- bsd.port.mk.orig Sat Apr 28 02:17:06 2001 +++ bsd.port.mk Sat Apr 28 03:52:46 2001 @@ -946,15 +946,17 @@ .endif .if exists(/usr/bin/fetch) +FETCH= /usr/bin/fetch # avoid -A for 2.2 -- it's not ported to that branch .if ${OSVERSION} < 300000 -FETCH_CMD?= /usr/bin/fetch +FETCH_CMD?= ${FETCH} .else -FETCH_CMD?= /usr/bin/fetch -A +FETCH_CMD?= ${FETCH} -A .endif #FETCH_BEFORE_ARGS+= $${CKSIZE:+-S $$CKSIZE} .else -FETCH_CMD?= /usr/bin/ftp +FTP= /usr/bin/ftp +FETCH_CMD?= ${FTP} .endif TOUCH?= /usr/bin/touch @@ -2339,6 +2341,50 @@ done; \ ${ECHO} "echo $${file} not fetched" ; \ fi \ + done) +.endif +.endif + +# Checks if MASTER_SITES contain the DISTFILES + +.if !target(fetch-check) +fetch-check: +.if defined(FETCH) + @(for file in ${DISTFILES}; do \ + for site in `${SORTED_MASTER_SITES_CMD}`; do \ + DIR=${DIST_SUBDIR}; \ + CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + case $${file} in \ + */*) args="-o $${file} $${site}$${file}";; \ + *) args=$${site}$${file};; \ + esac; \ + ${ECHO_MSG} ">> checking URI $${args}" ; \ + FETCH_CHECK_FILE_SIZE=`if ${SETENV} ${FETCH_ENV} ${FETCH} -as $${args} 2>/dev/null; then continue 2; fi`; \ + if [ -n "$${FETCH_CHECK_FILE_SIZE}" ] ; then \ + ${ECHO_MSG} ">>> URI OK. $${file} exists under $${site} with $${FETCH_CHECK_FILE_SIZE} bytes" ; \ + else \ + ${ECHO_MSG} ">>> URI not OK. $${file} does not exist under $${site}" ; \ + fi \ + done; \ + done) +.endif +.if defined(PATCHFILES) + @(for file in ${PATCHFILES}; do \ + for site in `${SORTED_PATCH_SITES_CMD}`; do \ + DIR=${DIST_SUBDIR}; \ + CKSIZE=`${GREP} "^SIZE ($${DIR:+$$DIR/}$$file)" ${MD5_FILE} | ${AWK} '{print $$4}'`; \ + case $${file} in \ + */*) args="-o $${file} $${site}$${file}";; \ + *) args=$${site}$${file};; \ + esac; \ + ${ECHO_MSG} ">> checking URI $${args}" ; \ + FETCH_CHECK_FILE_SIZE=`if ${SETENV} ${FETCH_ENV} ${FETCH} -as $${args} 2>/dev/null; then continue 2; fi`; \ + if [ -n "$${FETCH_CHECK_FILE_SIZE}" ] ; then \ + ${ECHO_MSG} ">>> URI OK. $${file} exists under $${site} with $${FETCH_CHECK_FILE_SIZE} bytes" ; \ + else \ + ${ECHO_MSG} ">>> URI not OK. $${file} does not exist under $${site}" ; \ + fi \ + done; \ done) .endif .endif --pf9I7BMVVzbSWLtt-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message