Files
ports/Makefile
2023-12-04 19:29:28 +00:00

165 lines
6.0 KiB
Makefile
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SUBDIR += misc
SUBDIR += sience
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