aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2021-11-08 14:58:02 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2021-11-08 14:59:55 +0000
commitcd8518854f3e96fb86dd7ed7b8f1c0258e839157 (patch)
treebb483829a506fa4eefe675c026c2913487c6bf41
parent5c19309678ed5756df17245b0ef7dd9dbb92c405 (diff)
downloadports-cd8518854f3e96fb86dd7ed7b8f1c0258e839157.tar.gz
ports-cd8518854f3e96fb86dd7ed7b8f1c0258e839157.zip
fetchindex: do not leave a corrupted INDEX
When extracting the fetched index, do it in a temporary file, and only when extraction succeed, move it to the final file, it makes it more atomic and less likely to live a corrupted file behind PR: 224871
-rw-r--r--Makefile9
1 files changed, 7 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index b32de32b747f..b2e17255f8ae 100644
--- a/Makefile
+++ b/Makefile
@@ -67,8 +67,13 @@ PORTSTOP= yes
index: ${INDEXDIR}/${INDEXFILE}
fetchindex: ${INDEXDIR}/${INDEXFILE}.bz2
- @bunzip2 < ${INDEXDIR}/${INDEXFILE}.bz2 > ${INDEXDIR}/${INDEXFILE} && \
- chmod a+r ${INDEXDIR}/${INDEXFILE} && ${RM} ${INDEXDIR}/${INDEXFILE}.bz2
+ @if bunzip2 < ${INDEXDIR}/${INDEXFILE}.bz2 > ${INDEXDIR}/${INDEXFILE}.tmp ; then \
+ chmod a+r ${INDEXDIR}/${INDEXFILE}.tmp; \
+ ${MV} ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
+ ${RM} ${INDEXDIR}/${INDEXFILE}.bz2 \
+ else ; \
+ ${RM} ${INDEXDIR}/${INDEXFILE}.tmp ; \
+ fi
${INDEXDIR}/${INDEXFILE}.bz2: .PHONY
${FETCHINDEX} ${INDEXDIR}/${INDEXFILE}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2