[BACK]Return to Makefile CVS log [TXT][DIR] Up to [local] / ports

File: [local] / ports / Makefile (download)

Revision 1.55, Sat Jul 28 12:58:34 2007 UTC (16 years, 9 months ago) by espie
Branch: MAIN
CVS Tags: OPENBSD_4_2_BASE, OPENBSD_4_2
Changes since 1.54: +2 -2 lines

make mirror-maker sturdier:
- pass an argument for the file into which we want to save the result, to
avoid getting it polluted with error messages (defaults to /dev/stdout for
debug).
- create the makefile fragment as a temp file and only copy it when complete.
- copy it in one chunk, so that one can read a partial mirror-maker file
and have it be usable.

This does allow for people to start a make mirror-maker in one shell, and
start fetching stuff right away, before mirror-maker is finished.

This also produces usable mirror-maker Makefiles even if the ports tree
contains bogus entries.

# $OpenBSD: Makefile,v 1.55 2007/07/28 12:58:34 espie Exp $
# $FreeBSD: Makefile,v 1.36 1997/10/04 15:54:31 jkh Exp $
#

PKGPATH =
MIRROR_MK ?= ${.CURDIR}/distfiles/Makefile
PORTSTOP ?= yes
DISTFILES_DB ?= ${.CURDIR}/infrastructure/db/locate.database


.if defined(SUBDIR)
# nothing to do
.elif defined(key) || defined(name) || defined(category) || defined(author)

# set up subdirs from the index, assume it's up-to-date
_CMD = perl ${.CURDIR}/infrastructure/build/index-retrieve index='${.CURDIR}/INDEX'
.  if defined(key)
_CMD += key='${key}'
.  endif
.  if defined(name)
_CMD += maintainer='${name}'
.  endif
.  if defined(category)
_CMD += category='${category}'
.  endif
.  if defined(maintainer)
_CMD += maintainer='${maintainer}'
.  endif
SUBDIR != ${_CMD}
.elif defined(SUBDIRLIST)
SUBDIR != sed -e 's,[ 	]*\#.*,,' -e '/^[ 	]*$$/d' ${SUBDIRLIST}
.else
SUBDIR += archivers
SUBDIR += astro
SUBDIR += audio
SUBDIR += benchmarks
SUBDIR += biology
SUBDIR += books
SUBDIR += cad
SUBDIR += chinese
SUBDIR += comms
SUBDIR += converters
SUBDIR += databases
SUBDIR += devel
SUBDIR += editors
SUBDIR += education
SUBDIR += emulators
SUBDIR += games
SUBDIR += geo
SUBDIR += graphics
SUBDIR += inputmethods
SUBDIR += japanese
SUBDIR += java
SUBDIR += korean
SUBDIR += lang
SUBDIR += mail
SUBDIR += math
SUBDIR += misc
SUBDIR += multimedia
SUBDIR += net
SUBDIR += news
SUBDIR += palm
SUBDIR += plan9
SUBDIR += print
SUBDIR += productivity
SUBDIR += russian
SUBDIR += security
SUBDIR += shells
SUBDIR += sysutils
SUBDIR += telephony
SUBDIR += textproc
SUBDIR += www
SUBDIR += x11
.endif

.include <bsd.port.subdir.mk>

index:
	@rm -f ${.CURDIR}/INDEX
	@${MAKE} ${.CURDIR}/INDEX

${.CURDIR}/INDEX:
	@echo "Generating INDEX..."
	@${MAKE} describe ECHO_MSG="echo 1>&2" > ${.CURDIR}/INDEX
	@echo "Done."

print-index:	${.CURDIR}/INDEX
	@awk -F\| '{ printf("Port:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nL-deps:\t%s\nB-deps:\t%s\nR-deps:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$10); }' < ${.CURDIR}/INDEX

print-licenses: ${.CURDIR}/INDEX
	@printf "Port                                    PC PF DC DF Maint\n"
	@awk -F\| '{printf("%-40.39s%-3.2s%-3.2s%-3.2s%-3.2s%-25.25s\n",$$2,$$12,$$13,$$14,$$15,$$6);}' < ${.CURDIR}/INDEX

search:	${.CURDIR}/INDEX
.if !defined(key) && !defined(name)
	@echo "The search target requires a keyword or name parameter,"
	@echo "e.g.: \"make search key=somekeyword\" \"make search name=somename\""
.else
.  if defined(key)
	@egrep -i -- "${key}" ${.CURDIR}/INDEX | awk -F\| '{ printf("Port:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nL-deps:\t%s\nB-deps:\t%s\nR-deps:\t%s\nArchs:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$10, $$11); }'
.  else
	@awk -F\| '$$1 ~ /${name}/ { printf("Port:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nL-deps:\t%s\nB-deps:\t%s\nR-deps:\t%s\nArchs:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$10, $$11); }' ${.CURDIR}/INDEX
.  endif
.endif


mirror-maker:
	@mkdir -p ${MIRROR_MK:H}
# Indirection needed for broken OSes that don't grok this exec
	@echo "EXEC=exec" >${MIRROR_MK}
	@echo "default:: ftp cdrom" >>${MIRROR_MK}
	@echo ".PHONY: default all ftp cdrom" >>${MIRROR_MK}
	@_DONE_FILES=`mktemp /tmp/depends.XXXXXXXXX|| exit 1`; \
	export _DONE_FILES; \
	trap "rm -f $${_DONE_FILES}" 0 1 2 3 13 15; \
	${MAKE} fetch-makefile \
		ECHO_MSG='echo >&2' \
		_FETCH_MAKEFILE=${MIRROR_MK}

homepages.html:
	@echo '<html><ul>' >$@
	@${MAKE} homepage-links ECHO_MSG='echo >&2' >>$@
	@echo '</ul></html>' >>$@

distfiles-update-locatedb:
	@PORTSDIR=${.CURDIR} /bin/sh ${.CURDIR}/infrastructure/fetch/distfiles-update-locatedb ${DISTFILES_DB}

pkglocatedb:
	@pkg_mklocatedb ${.CURDIR}/packages/${MACHINE_ARCH}/all/* \
	    >${.CURDIR}/packages/${MACHINE_ARCH}/ftp/pkglocatedb

.PHONY: mirror-maker index search distfiles-update-locatedb \
	pkglocatedb print-licenses print-index