[Midnightbsd-cvs] mports [17103] trunk/Makefile: speed improvements and fix make update

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Sep 14 13:01:12 EDT 2014


Revision: 17103
          http://svnweb.midnightbsd.org/mports/?rev=17103
Author:   laffer1
Date:     2014-09-14 13:01:11 -0400 (Sun, 14 Sep 2014)
Log Message:
-----------
speed improvements and fix make update

Modified Paths:
--------------
    trunk/Makefile

Modified: trunk/Makefile
===================================================================
--- trunk/Makefile	2014-09-14 16:53:53 UTC (rev 17102)
+++ trunk/Makefile	2014-09-14 17:01:11 UTC (rev 17103)
@@ -42,8 +42,8 @@
 SUBDIR += x11
 SUBDIR += x11-clocks
 SUBDIR += x11-drivers
+SUBDIR += x11-fm
 SUBDIR += x11-fonts
-SUBDIR += x11-fm
 SUBDIR += x11-servers
 SUBDIR += x11-themes
 SUBDIR += x11-toolkits
@@ -61,20 +61,23 @@
 	@rm -f ${INDEXDIR}/${INDEXFILE}.bz2
 	@bzip2 ${INDEXDIR}/${INDEXFILE}
 
-fetchindex: ${INDEXDIR}/{INDEXFILE}.bz2
+fetchindex: ${INDEXDIR}/${INDEXFILE}.bz2
 	@bunzip2 < ${INDEXDIR}/${INDEXFILE}.bz2 > ${INDEXDIR}/${INDEXFILE} && \
-	chmod a+r ${INDEXDIR}/${INDEXFILE}
+	chmod a+r ${INDEXDIR}/${INDEXFILE} && ${RM} -f ${INDEXDIR}/${INDEXFILE}.bz2
 
-${INDEXDIR}/{INDEXFILE}.bz2: .PHONY
+${INDEXDIR}/${INDEXFILE}.bz2: .PHONY
 	@${FETCHINDEX} ${INDEXDIR}/${INDEXFILE}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2
 
 MASTER_SITE_INDEX?=	http://www.MidnightBSD.org/ports/
 SETENV?=	/usr/bin/env
 FETCHINDEX?=	${SETENV} ${FETCH_ENV} fetch -am -o
-INDEX_JOBS?=	2
 
+.if !defined(INDEX_JOBS)
+INDEX_JOBS!=	${SYSCTL} -n kern.smp.cpus
+.endif
+
 .if !defined(INDEX_VERBOSE)
-INDEX_ECHO_MSG=		echo > /dev/null
+INDEX_ECHO_MSG=		true
 INDEX_ECHO_1ST=		echo -n
 .else
 INDEX_ECHO_MSG=		echo 1>&2
@@ -81,6 +84,25 @@
 INDEX_ECHO_1ST=		echo
 .endif
 
+# /rescue/sh is statically linked and much faster to execute than the
+# dynamically linked /bin/sh.  This is significant for targets like
+# make index that execute the shell tens of thousands of times.
+.if exists(/rescue/sh)
+INDEX_SHELL=		/rescue/sh
+.else
+INDEX_SHELL=		/bin/sh
+.endif
+
+.if !defined(INDEX_PORTS)
+INDEX_PORTS=.
+.endif
+
+.if exists(/usr/libexec/make_index)
+MAKE_INDEX=	/usr/libexec/make_index /dev/stdin
+.else
+MAKE_INDEX=	perl ${.CURDIR}/Tools/make_index
+.endif
+
 ${INDEXDIR}/${INDEXFILE}:
 	@${INDEX_ECHO_1ST} "Generating ${INDEXFILE} - please wait.."; \
 	if [ "${INDEX_PRISTINE}" != "" ]; then \
@@ -88,8 +110,9 @@
 	fi; \
 	tmpdir=`/usr/bin/mktemp -d -t index` || exit 1; \
 	trap "rm -rf $${tmpdir}; exit 1" 1 2 3 5 10 13 15; \
-	( cd ${.CURDIR} && make -j${INDEX_JOBS} INDEX_TMPDIR=$${tmpdir} BUILDING_INDEX=1 \
-		ECHO_MSG="${INDEX_ECHO_MSG}" describe ) || \
+	( cd ${.CURDIR}; for i in ${INDEX_PORTS}; do (cd $${i} && ${MAKE} -j${INDEX_JOBS} INDEX_TMPDIR=$${tmpdir} BUILDING_INDEX=1 \
+		__MAKE_SHELL=${INDEX_SHELL} \
+		ECHO_MSG="${INDEX_ECHO_MSG}" describe); done ) || \
 		(rm -rf $${tmpdir} ; \
 		if [ "${INDEX_QUIET}" = "" ]; then \
 			echo; \
@@ -102,13 +125,16 @@
 			echo; \
 		fi; \
 		exit 1); \
-	cat $${tmpdir}/${INDEXFILE}.desc.* | (cd ${.CURDIR} ; perl ${.CURDIR}/Tools/make_index) | \
+	cat $${tmpdir}/${INDEXFILE}.desc.* | \
+		sed -e 's|${.CURDIR}|${PORTSDIR}|g' | \
+		(cd ${.CURDIR} ; ${MAKE_INDEX}) | \
 		sed -e 's/  */ /g' -e 's/|  */|/g' -e 's/  *|/|/g' -e 's./..g' | \
 		sort -t '|' +1 -2 | \
-		sed -e 's../.g' > ${INDEXDIR}/${INDEXFILE}.tmp; \
+		sed -Ee 's../.g' -e ':a' -e 's|/[^/]+/\.\.||; ta' \
+		-e 's|${PORTSDIR}|/usr/mports|g' \
+		-e 's|${.CURDIR}|/usr/mports|g' > ${INDEXDIR}/${INDEXFILE}.tmp; \
 	if [ "${INDEX_PRISTINE}" != "" ]; then \
-		sed -e "s,$${LOCALBASE},/usr/local," \
-			${INDEXDIR}/${INDEXFILE}.tmp > ${INDEXDIR}/${INDEXFILE}; \
+		sed -e "s,$${LOCALBASE},/usr/local," ${INDEXDIR}/${INDEXFILE}.tmp > ${INDEXDIR}/${INDEXFILE}; \
 	else \
 		mv ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
 	fi; \
@@ -118,25 +144,39 @@
 print-index:	${INDEXDIR}/${INDEXFILE}
 	@awk -F\| '{ printf("Port:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nB-deps:\t%s\nR-deps:\t%s\nE-deps:\t%s\nP-deps:\t%s\nF-deps:\t%s\nWWW:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$11, $$12, $$13, $$10); }' < ${INDEXDIR}/${INDEXFILE}
 
-CVS?= cvs
-SUP?= csup
-.if defined(SUPHOST)
-SUPFLAGS+=	-h ${SUPHOST}
-.endif
+GIT?= git
+SVN?= svn
+RSYNC?= rsync
+PORTSNAP?= portsnap
+PORTSNAP_FLAGS?= -p ${.CURDIR}
+.if !target(update)
 update:
-.if defined(SUP_UPDATE) && defined(PORTSSUPFILE)
+.if exists(${.CURDIR}/.svn)
 	@echo "--------------------------------------------------------------"
-	@echo ">>> Running ${SUP}"
+	@echo ">>> Updating ${.CURDIR} using Subversion"
 	@echo "--------------------------------------------------------------"
-	@${SUP} ${SUPFLAGS} ${PORTSSUPFILE}
-.elif defined(CVS_UPDATE)
+	cd ${.CURDIR}; ${SVN} update
+.elif exists(${.CURDIR}/.git)
 	@echo "--------------------------------------------------------------"
-	@echo ">>> Updating ${.CURDIR} from cvs repository" ${CVSROOT}
+	@echo ">>> Updating ${.CURDIR} from git+svn repository"
 	@echo "--------------------------------------------------------------"
-	cd ${.CURDIR}; ${CVS} -R -q update -A -P -d -I!
-.elif defined(SUP_UPDATE) && !defined(PORTSSUPFILE)
-	@${ECHO_MSG} "Error: Please define PORTSSUPFILE before doing make update."
-	@exit 1
+	cd ${.CURDIR}; ${GIT} svn rebase
+.elif defined(RSYNC_UPDATE) && defined(PORTS_RSYNC_SOURCE)
+	@echo "--------------------------------------------------------------"
+	@echo ">>> Updating with ${RSYNC} from ${PORTS_RSYNC_SOURCE}"
+	@echo "--------------------------------------------------------------"
+	@${RSYNC} ${RSYNC_FLAGS} ${PORTS_RSYNC_SOURCE}/ ${.CURDIR}/
 .else
-	@${ECHO_MSG} "Error: Please define either PORTSNAP_UPDATE, SUP_UPDATE, or CVS_UPDATE first."
+	@echo "--------------------------------------------------------------"
+	@echo ">>> Running ${PORTSNAP}"
+	@echo "--------------------------------------------------------------"
+.if !exists(${PORTSDIR}/.portsnap.INDEX)
+	@echo "Error: 'make update' uses portsnap(8) by default and"
+	@echo "needs ${PORTSDIR} to be created by portsnap on its first run."
+	@echo "Please run 'portsnap fetch extract' first."
+.else
+	@${PORTSNAP} ${PORTSNAP_FLAGS} fetch
+	@${PORTSNAP} ${PORTSNAP_FLAGS} update
 .endif
+.endif
+.endif



More information about the Midnightbsd-cvs mailing list