mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-14 03:10:47 +00:00
cf13a62abc
This would relax the load of www.freebsd.org and let user fetch INDEX from a closer mirror. Approved by: bapt (portmgr) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D33871
224 lines
7.1 KiB
Makefile
224 lines
7.1 KiB
Makefile
SUBDIR += accessibility
|
||
SUBDIR += arabic
|
||
SUBDIR += archivers
|
||
SUBDIR += astro
|
||
SUBDIR += audio
|
||
SUBDIR += benchmarks
|
||
SUBDIR += biology
|
||
SUBDIR += cad
|
||
SUBDIR += chinese
|
||
SUBDIR += comms
|
||
SUBDIR += converters
|
||
SUBDIR += databases
|
||
SUBDIR += deskutils
|
||
SUBDIR += devel
|
||
SUBDIR += dns
|
||
SUBDIR += editors
|
||
SUBDIR += emulators
|
||
SUBDIR += finance
|
||
SUBDIR += french
|
||
SUBDIR += ftp
|
||
SUBDIR += games
|
||
SUBDIR += german
|
||
SUBDIR += graphics
|
||
SUBDIR += hebrew
|
||
SUBDIR += hungarian
|
||
SUBDIR += irc
|
||
SUBDIR += japanese
|
||
SUBDIR += java
|
||
SUBDIR += korean
|
||
SUBDIR += lang
|
||
SUBDIR += mail
|
||
SUBDIR += math
|
||
SUBDIR += misc
|
||
SUBDIR += multimedia
|
||
SUBDIR += net
|
||
SUBDIR += net-im
|
||
SUBDIR += net-mgmt
|
||
SUBDIR += net-p2p
|
||
SUBDIR += news
|
||
SUBDIR += polish
|
||
SUBDIR += ports-mgmt
|
||
SUBDIR += portuguese
|
||
SUBDIR += print
|
||
SUBDIR += russian
|
||
SUBDIR += science
|
||
SUBDIR += security
|
||
SUBDIR += shells
|
||
SUBDIR += sysutils
|
||
SUBDIR += textproc
|
||
SUBDIR += ukrainian
|
||
SUBDIR += vietnamese
|
||
SUBDIR += www
|
||
SUBDIR += x11
|
||
SUBDIR += x11-clocks
|
||
SUBDIR += x11-drivers
|
||
SUBDIR += x11-fm
|
||
SUBDIR += x11-fonts
|
||
SUBDIR += x11-servers
|
||
SUBDIR += x11-themes
|
||
SUBDIR += x11-toolkits
|
||
SUBDIR += x11-wm
|
||
|
||
PORTSTOP= yes
|
||
|
||
.include <bsd.port.subdir.mk>
|
||
|
||
index: ${INDEXDIR}/${INDEXFILE}
|
||
|
||
INDEX_COMPRESSION_FORMAT?= xz
|
||
|
||
.if ${INDEX_COMPRESSION_FORMAT} != xz && \
|
||
${INDEX_COMPRESSION_FORMAT} != bz2 && ${INDEX_COMPRESSION_FORMAT} != zst
|
||
.error "Invalid compression format: ${INDEX_COMPRESSION_FORMAT}, expecting xz, bz2 or zst"
|
||
.endif
|
||
|
||
fetchindex: ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT}
|
||
@if bsdcat < ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT} > ${INDEXDIR}/${INDEXFILE}.tmp ; then \
|
||
chmod a+r ${INDEXDIR}/${INDEXFILE}.tmp; \
|
||
${MV} ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
|
||
${RM} ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT} \
|
||
else ; \
|
||
${RM} ${INDEXDIR}/${INDEXFILE}.tmp ; \
|
||
fi
|
||
|
||
${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT}: .PHONY
|
||
${FETCHINDEX} ${INDEXDIR}/${INDEXFILE}.${INDEX_COMPRESSION_FORMAT} \
|
||
${MASTER_SITE_INDEX}${INDEXFILE}.${INDEX_COMPRESSION_FORMAT}
|
||
|
||
MASTER_SITE_INDEX?= https://download.FreeBSD.org/ports/index/
|
||
SETENV?= /usr/bin/env
|
||
FETCHINDEX?= ${SETENV} ${FETCH_ENV} fetch -am -o
|
||
|
||
.if !defined(INDEX_JOBS)
|
||
INDEX_JOBS!= ${SYSCTL} -n kern.smp.cpus
|
||
.endif
|
||
|
||
.if !defined(INDEX_VERBOSE)
|
||
INDEX_ECHO_MSG= true
|
||
INDEX_ECHO_1ST= echo -n
|
||
.else
|
||
INDEX_ECHO_MSG= echo 1>&2
|
||
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}: .PHONY
|
||
@${INDEX_ECHO_1ST} "Generating ${INDEXFILE} - please wait.."; \
|
||
if [ "${INDEX_PRISTINE}" != "" ]; then \
|
||
export LOCALBASE=/nonexistentlocal; \
|
||
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}; 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; \
|
||
echo "********************************************************************"; \
|
||
echo "Before reporting this error, verify that you are running a supported"; \
|
||
echo "version of FreeBSD (see https://www.FreeBSD.org/ports/) and that you"; \
|
||
echo "have a complete and up-to-date ports collection. (INDEX builds are"; \
|
||
echo "not supported with partial or out-of-date ports collections."; \
|
||
echo "If that is the case, then"; \
|
||
echo "report the failure to ports@FreeBSD.org together with relevant"; \
|
||
echo "details of your ports configuration (including FreeBSD version,"; \
|
||
echo "your architecture, your environment, and your /etc/make.conf"; \
|
||
echo "settings, especially compiler flags and OPTIONS_SET/UNSET settings)."; \
|
||
echo; \
|
||
echo "Note: the latest pre-generated version of INDEX may be fetched"; \
|
||
echo "automatically with \"make fetchindex\"."; \
|
||
echo "********************************************************************"; \
|
||
echo; \
|
||
fi; \
|
||
exit 1); \
|
||
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 '|' -k 2,3 | \
|
||
sed -Ee 's../.g' -e ':a' -e 's|/[^/]+/\.\.||; ta' \
|
||
-e 's|${PORTSDIR}|/usr/ports|g' \
|
||
-e 's|${.CURDIR}|/usr/ports|g' > ${INDEXDIR}/${INDEXFILE}.tmp; \
|
||
if [ "${INDEX_PRISTINE}" != "" ]; then \
|
||
sed -e "s,$${LOCALBASE},/usr/local," ${INDEXDIR}/${INDEXFILE}.tmp > ${INDEXDIR}/${INDEXFILE}; \
|
||
else \
|
||
mv ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
|
||
fi; \
|
||
rm -rf $${tmpdir}; \
|
||
echo " Done."
|
||
|
||
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}
|
||
|
||
GIT?= git
|
||
.if !defined(SVN) || empty(SVN)
|
||
. for _P in /usr/bin /usr/local/bin
|
||
. for _S in svn svnlite
|
||
. if exists(${_P}/${_S})
|
||
SVN= ${_P}/${_S}
|
||
. endif
|
||
. endfor
|
||
. endfor
|
||
.endif
|
||
RSYNC?= rsync
|
||
PORTSNAP?= portsnap
|
||
PORTSNAP_FLAGS?= -p ${.CURDIR}
|
||
.if !target(update)
|
||
update:
|
||
.if exists(${.CURDIR}/.svn)
|
||
@echo "--------------------------------------------------------------"
|
||
@echo ">>> Updating ${.CURDIR} using Subversion"
|
||
@echo "--------------------------------------------------------------"
|
||
cd ${.CURDIR}; ${SVN} update
|
||
.elif exists(${.CURDIR}/.git)
|
||
. if exists(${.CURDIR}/.git/svn)
|
||
@echo "--------------------------------------------------------------"
|
||
@echo ">>> Updating ${.CURDIR} from git+svn repository"
|
||
@echo "--------------------------------------------------------------"
|
||
cd ${.CURDIR}; ${GIT} svn rebase
|
||
. else
|
||
@echo "--------------------------------------------------------------"
|
||
@echo ">>> Updating ${.CURDIR} from git repository"
|
||
@echo "--------------------------------------------------------------"
|
||
cd ${.CURDIR}; ${GIT} pull --rebase
|
||
. endif
|
||
.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 "--------------------------------------------------------------"
|
||
@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
|