diff options
author | Mark Linimon <linimon@FreeBSD.org> | 2006-01-22 03:09:01 +0000 |
---|---|---|
committer | Mark Linimon <linimon@FreeBSD.org> | 2006-01-22 03:09:01 +0000 |
commit | d27380ce77b312d1d83717118a6df65ff8f61a87 (patch) | |
tree | a7d719c23e2cf6c2e1f94708867654bcc5c0e106 /ports-mgmt | |
parent | 508b8d82f4fdfc6889fe17931ef30f047501dfd6 (diff) | |
download | ports-d27380ce77b312d1d83717118a6df65ff8f61a87.tar.gz ports-d27380ce77b312d1d83717118a6df65ff8f61a87.zip |
Notes
Diffstat (limited to 'ports-mgmt')
-rw-r--r-- | ports-mgmt/portmk/Mk/bsd.port.mk | 63 | ||||
-rw-r--r-- | ports-mgmt/portmk/Mk/bsd.port.subdir.mk | 448 |
2 files changed, 476 insertions, 35 deletions
diff --git a/ports-mgmt/portmk/Mk/bsd.port.mk b/ports-mgmt/portmk/Mk/bsd.port.mk index edcf013da9f8..0878463fdf24 100644 --- a/ports-mgmt/portmk/Mk/bsd.port.mk +++ b/ports-mgmt/portmk/Mk/bsd.port.mk @@ -348,6 +348,9 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # Some installations may wish to override the default # to specify a version without X11 and/or localized # versions for their nationality. +# WITH_GHOSTSCRIPT_GPL +# - If set, this port uses the GPL version of the ghostscript +# software instead of the GNU version, which is used otherwise. # WITH_GHOSTSCRIPT_AFPL # - If set, this port uses the AFPL version of the ghostscript # software instead of the GNU version, which is used otherwise. @@ -364,7 +367,6 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # USE_FREETYPE - If set, this port uses the freetype print libraries. # USE_GL - If set, this port uses libGL (not needed with XFree86 4.x # which already includes this functionality). -# USE_MESA - If set, this port uses libGL/libglut (deprecated). # USE_MOTIF - If set, this port uses a Motif toolkit. Implies USE_XPM. # NO_OPENMOTIF - If set, this port uses a custom Motif toolkit # instead of Openmotif. @@ -992,14 +994,8 @@ NOPRECIOUSSOFTMAKEVARS= yes AWK?= /usr/bin/awk BASENAME?= /usr/bin/basename BRANDELF?= /usr/bin/brandelf -.if exists(/usr/bin/bzip2) BZCAT?= /usr/bin/bzcat BZIP2_CMD?= /usr/bin/bzip2 -.else -BZCAT?= ${LOCALBASE}/bin/bzcat -BZIP2_CMD?= ${LOCALBASE}/bin/bzip2 -BZIP2DEPENDS= yes -.endif CAT?= /bin/cat CHGRP?= /usr/bin/chgrp CHMOD?= /bin/chmod @@ -1225,6 +1221,7 @@ X11BASE?= ${DESTDIR}/usr/X11R6 LINUXBASE?= ${DESTDIR}/compat/linux DISTDIR?= ${PORTSDIR}/distfiles _DISTDIR?= ${DISTDIR}/${DIST_SUBDIR} +INDEXDIR?= ${PORTSDIR} .if ${OSVERSION} >= 500036 INDEXFILE?= INDEX-${OSVERSION:C/([0-9]).*/\1/} .else @@ -1359,7 +1356,7 @@ PERL= ${LOCALBASE}/bin/perl .endif .endif -.if defined(EMACS_PORT_NAME) +.if defined(USE_EMACS) || defined(EMACS_PORT_NAME) .if exists(${DEVELPORTSDIR}/Mk/bsd.emacs.mk) .include "${DEVELPORTSDIR}/Mk/bsd.emacs.mk" .else @@ -1548,17 +1545,11 @@ MANCOMPRESSED?= no .endif .if defined(PATCHFILES) -.if ${PATCHFILES:M*.bz2}x != x && defined(BZIP2DEPENDS) -PATCH_DEPENDS+= bzip2:${PORTSDIR}/archivers/bzip2 -.endif .if ${PATCHFILES:M*.zip}x != x PATCH_DEPENDS+= unzip:${PORTSDIR}/archivers/unzip .endif .endif -.if defined(USE_BZIP2) && defined(BZIP2DEPENDS) -EXTRACT_DEPENDS+= bzip2:${PORTSDIR}/archivers/bzip2 -.endif .if defined(USE_ZIP) EXTRACT_DEPENDS+= unzip:${PORTSDIR}/archivers/unzip .endif @@ -1807,10 +1798,6 @@ PKG_IGNORE_DEPENDS?= 'this_port_does_not_exist' PLIST_SUB+= XAWVER=${XAWVER} -.if defined(USE_MESA) -LIB_DEPENDS+= glut.3:${PORTSDIR}/graphics/libglut -.endif - .if defined(USE_BISON) BUILD_DEPENDS+= bison:${PORTSDIR}/devel/bison .endif @@ -1960,21 +1947,17 @@ CONFIGURE_ARGS+=--x-libraries=${X11BASE}/lib --x-includes=${X11BASE}/include # compatible functionality. .if !defined(WITHOUT_X11) .if defined(WITH_GHOSTSCRIPT_AFPL) -.if ${WITH_GHOSTSCRIPT_AFPL} == yes GHOSTSCRIPT_PORT?= print/ghostscript-afpl -.else -GHOSTSCRIPT_PORT?= print/ghostscript-gnu -.endif +.elif defined(WITH_GHOSTSCRIPT_GPL) +GHOSTSCRIPT_PORT?= print/ghostscript-gpl .else GHOSTSCRIPT_PORT?= print/ghostscript-gnu .endif .else .if defined(WITH_GHOSTSCRIPT_AFPL) -.if ${WITH_GHOSTSCRIPT_AFPL} == yes GHOSTSCRIPT_PORT?= print/ghostscript-afpl-nox11 -.else -GHOSTSCRIPT_PORT?= print/ghostscript-gnu-nox11 -.endif +.elif defined(WITH_GHOSTSCRIPT_GPL) +GHOSTSCRIPT_PORT?= print/ghostscript-gpl-nox11 .else GHOSTSCRIPT_PORT?= print/ghostscript-gnu-nox11 .endif @@ -2109,7 +2092,11 @@ EXTRACT_BEFORE_ARGS?= -qo EXTRACT_AFTER_ARGS?= -d ${WRKDIR} .else EXTRACT_BEFORE_ARGS?= -dc +.if defined(EXTRACT_PRESERVE_OWNERSHIP) +EXTRACT_AFTER_ARGS?= | ${TAR} -xf - --no-same-owner +.else EXTRACT_AFTER_ARGS?= | ${TAR} -xf - +.endif .if defined(USE_BZIP2) EXTRACT_CMD?= ${BZIP2_CMD} .else @@ -2190,7 +2177,11 @@ _PORTDIRNAME= ${.CURDIR:T} PORTDIRNAME?= ${_PORTDIRNAME} PKGORIGIN?= ${PKGCATEGORY}/${PORTDIRNAME} -.if exists(${LOCALBASE}/sbin/pkg_info) + +.if (${OSVERSION} < 491101 && ${PKGORIGIN} != "sysutils/pkg_install") || exists(${LOCALBASE}/sbin/pkg_info) +.if ${OSVERSION} < 491101 && ${PKGORIGIN} != "sysutils/pkg_install" +EXTRACT_DEPENDS+= ${LOCALBASE}/sbin/pkg_info:${PORTSDIR}/sysutils/pkg_install +.endif PKG_CMD?= ${LOCALBASE}/sbin/pkg_create PKG_ADD?= ${LOCALBASE}/sbin/pkg_add PKG_DELETE?= ${LOCALBASE}/sbin/pkg_delete @@ -2686,7 +2677,7 @@ VALID_CATEGORIES+= accessibility afterstep arabic archivers astro audio \ deskutils devel dns editors elisp emulators finance french ftp \ games geography german gnome graphics hamradio haskell hebrew hungarian \ ipv6 irc japanese java kde korean lang linux lisp \ - mail math mbone misc multimedia net net-im net-mgmt news \ + mail math mbone misc multimedia net net-im net-mgmt net-p2p news \ palm parallel pear perl5 picobsd plan9 polish portuguese print \ python ruby rubygems russian \ scheme science security shells spanish sysutils \ @@ -2968,7 +2959,7 @@ clean: .if defined(IGNORE_SILENT) IGNORECMD= ${DO_NADA} .else -IGNORECMD= ${ECHO_MSG} "===> ${PKGNAME} "${IGNORE:Q}. +IGNORECMD= ${ECHO_MSG} "===> ${PKGNAME} "${IGNORE:Q}.;exit 1 .endif .for target in check-sanity fetch checksum extract patch configure all build install reinstall package @@ -3494,10 +3485,12 @@ check-conflicts: @found=`${PKG_INFO} -I ${CONFLICTS:C/.+/'&'/} 2>/dev/null | ${AWK} '{print $$1}'`; \ conflicts_with=; \ for entry in $${found}; do \ - prfx=`${PKG_INFO} -q -p "$${entry}" 2> /dev/null | ${SED} -ne '1s/^@cwd //p'`; \ - orgn=`${PKG_INFO} -q -o "$${entry}" 2> /dev/null`; \ - if [ "/${PREFIX}" = "/$${prfx}" -a "/${PKGORIGIN}" != "/$${orgn}" ]; then \ - conflicts_with="$${conflicts_with} $${entry}"; \ + if ${PKG_INFO} -e $${entry} ; then \ + prfx=`${PKG_INFO} -q -p "$${entry}" 2> /dev/null | ${SED} -ne '1s/^@cwd //p'`; \ + orgn=`${PKG_INFO} -q -o "$${entry}" 2> /dev/null`; \ + if [ "/${PREFIX}" = "/$${prfx}" -a "/${PKGORIGIN}" != "/$${orgn}" ]; then \ + conflicts_with="$${conflicts_with} $${entry}"; \ + fi; \ fi; \ done; \ if [ -n "$${conflicts_with}" ]; then \ @@ -5025,11 +5018,11 @@ ${.CURDIR}/README.html: # The following two targets require an up-to-date INDEX in ${PORTSDIR} _PRETTY_PRINT_DEPENDS_LIST=\ - if [ ! -r ${PORTSDIR}/${INDEXFILE} ] ; then \ + if [ ! -r ${INDEXDIR}/${INDEXFILE} ] ; then \ ${ECHO_CMD} "${.TARGET} requires an INDEX file (${INDEXFILE}). Please run make index or make fetchindex."; \ else \ ${ECHO_CMD} -n 'This port requires package(s) "' ; \ - ${ECHO_CMD} -n `${AWK} -F\| '$$1 ~ /^${PKGNAME}/ {print $$8;}' ${PORTSDIR}/${INDEXFILE}` ; \ + ${ECHO_CMD} -n `${AWK} -F\| '$$1 ~ /^${PKGNAME}/ {print $$8;}' ${INDEXDIR}/${INDEXFILE}` ; \ ${ECHO_CMD} '" to ${.TARGET:C/pretty-print-(.*)-depends-list/\1/}.'; \ fi; diff --git a/ports-mgmt/portmk/Mk/bsd.port.subdir.mk b/ports-mgmt/portmk/Mk/bsd.port.subdir.mk new file mode 100644 index 000000000000..914263340ff2 --- /dev/null +++ b/ports-mgmt/portmk/Mk/bsd.port.subdir.mk @@ -0,0 +1,448 @@ +# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91 +# $FreeBSD$ +# +# The include file <bsd.port.subdir.mk> contains the default targets +# for building ports subdirectories. +# +# +# +++ variables +++ +# +# STRIP The flag passed to the install program to cause the binary +# to be stripped. This is to be used when building your +# own install script so that the entire system can be made +# stripped/not-stripped using a single knob. [-s] +# +# ECHO_MSG Used to print all the '===>' style prompts - override this +# to turn them off [echo]. +# +# OPSYS Get the operating system type [`uname -s`] +# +# SUBDIR A list of subdirectories that should be built as well. +# Each of the targets will execute the same target in the +# subdirectories. +# +# +# +++ targets +++ +# +# README.html: +# Creating README.html for package. +# +# afterinstall, all, beforeinstall, build, checksum, clean, +# clean-for-cdrom, clean-restricted, +# clean-for-cdrom-list, clean-restricted-list, +# configure, deinstall, +# depend, depends, describe, extract, fetch, fetch-list, ignorelist, +# install, maintainer, makesum, package, readmes, realinstall, reinstall, +# tags +# +# search: +# Search for ports using either 'make search key=<keyword>' +# or 'make search name=<keyword>'. + + +.MAIN: all + +.if !defined(DEBUG_FLAGS) +STRIP?= -s +.endif + +.if !defined(NOPRECIOUSMAKEVARS) +.if !defined(ARCH) +ARCH!= /usr/bin/uname -p +.endif +.if !defined(OSREL) +OSREL!= /usr/bin/uname -r | sed -e 's/[-(].*//' +.endif +.if !defined(OSVERSION) +.if exists(/sbin/sysctl) +OSVERSION!= /sbin/sysctl -n kern.osreldate +.else +OSVERSION!= /usr/sbin/sysctl -n kern.osreldate +.endif +.endif +.if !defined(PORTOBJFORMAT) +PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout +.endif +.endif + +ID?= /usr/bin/id +UID!= ${ID} -u +LOCALBASE?= ${DESTDIR}/usr/local +.if exists(${LOCALBASE}/sbin/pkg_info) +PKG_INFO?= ${LOCALBASE}/sbin/pkg_info +.else +PKG_INFO?= /usr/sbin/pkg_info +.endif +SED?= /usr/bin/sed +PKGINSTALLVER!= ${PKG_INFO} -P 2>/dev/null | ${SED} -e 's/.*: //' + +.if !defined(OPSYS) +OPSYS!= /usr/bin/uname -s +.endif + +ECHO_MSG?= echo + +# local customization of the ports tree +.if exists(${.CURDIR}/Makefile.local) +.include "${.CURDIR}/Makefile.local" +.endif + +TARGETS+= all +TARGETS+= build +TARGETS+= checksum +TARGETS+= clean +TARGETS+= clean-for-cdrom +TARGETS+= clean-for-cdrom-list +TARGETS+= clean-restricted +TARGETS+= clean-restricted-list +TARGETS+= configure +TARGETS+= deinstall +TARGETS+= depend +TARGETS+= depends +TARGETS+= distclean +TARGETS+= extract +TARGETS+= fetch +TARGETS+= fetch-list +TARGETS+= ignorelist +TARGETS+= makesum +TARGETS+= maintainer +TARGETS+= package +TARGETS+= package-recursive +TARGETS+= realinstall +TARGETS+= reinstall +TARGETS+= tags + +.for __target in ${TARGETS} +.if !target(${__target}) +.if defined(SUBDIR) && !empty(SUBDIR) +${__target}: ${SUBDIR:S/^/_/:S/$/.${__target}/} +.else +${__target}: +.endif +.endif +.endfor + +.if defined(SUBDIR) && !empty(SUBDIR) + +.for __target in ${TARGETS} checksubdirs describe readmes +${SUBDIR:S/^/_/:S/$/.${__target}/}: _SUBDIRUSE +.endfor + +_SUBDIRUSE: .USE + @OK=""; sub=${.TARGET:S/^_//:R}; \ + for dud in $$DUDS; do \ + if [ $${dud} = $$sub ]; then \ + OK="false"; \ + ${ECHO_MSG} "===> ${DIRPRFX}$$sub skipped"; \ + fi; \ + done; \ + if test -d ${.CURDIR}/$${sub}.${MACHINE_ARCH}; then \ + edir=$${sub}.${MACHINE_ARCH}; \ + elif test -d ${.CURDIR}/$${sub}; then \ + edir=$${sub}; \ + else \ + OK="false"; \ + ${ECHO_MSG} "===> ${DIRPRFX}$${sub} non-existent"; \ + fi; \ + if [ "$$OK" = "" ]; then \ + ${ECHO_MSG} "===> ${DIRPRFX}$${edir}"; \ + cd ${.CURDIR}/$${edir}; \ + ${MAKE} -B ${.TARGET:E:realinstall=install} \ + DIRPRFX=${DIRPRFX}$$edir/; \ + fi + +.for _subdir in ${SUBDIR:S/^/_/} +${_subdir}:: ${_subdir:S/$/.all/} +.endfor + +.endif + +.if !target(install) +.if !target(beforeinstall) +beforeinstall: +.endif +.if !target(afterinstall) +afterinstall: +.endif +install: afterinstall +afterinstall: realinstall +realinstall: beforeinstall ${SUBDIR:S/^/_/:S/$/.realinstall/} +.endif + +IGNOREDIR= CVS Mk Templates Tools distfiles packages pkg + +.if !target(checksubdirs) +.if defined(PORTSTOP) +checksubdirs: checksubdir ${SUBDIR:S/^/_/:S/$/.checksubdirs/} +.else +checksubdirs: checksubdir +.endif +.endif + +.if !target(checksubdir) +checksubdir: + @for d in *; do \ + if [ -d "$$d" ]; then \ + found=0; \ + for s in ${SUBDIR} ${IGNOREDIR}; do \ + if [ "x$$s" = "x$$d" ]; then \ + found=1; \ + break; \ + fi; \ + done; \ + if [ $$found = 0 ]; then \ + ${ECHO} "Warning: directory $$d not in SUBDIR"; \ + fi; \ + fi; \ + done + @for s in ${SUBDIR}; do \ + if ! [ -d ${.CURDIR}/$$s ]; then \ + ${ECHO} "Warning: directory $$s in SUBDIR does not exist"; \ + fi \ + done +.endif + +.if !target(describe) +.if defined(PORTSTOP) +# This is a bit convoluted to deal with the fact that make will overlap I/O from child make processes +# if they write more than 2k: this will corrupt the INDEX file. make -P does not do this, but it adds +# extraneous output and redirects stderr, so we lose error reporting from child makes. Instead we have +# to roll our own implementation of make -P and make sure that each child make writes to their own file, +# which we will combine at the end. This gives substantial performance benefits over doing a make -j1 + +.if defined(BUILDING_INDEX) +describe: ${SUBDIR:S/^/describe./} + +.for i in ${SUBDIR} +describe.$i: + @cd ${.CURDIR}; ${MAKE} -B ${i:S/^/_/:S/$/.describe/} > ${INDEX_TMPDIR}/${INDEXFILE}.desc.${i} +.endfor +.else +describe: ${SUBDIR:S/^/_/:S/$/.describe/} +.endif +.else +describe: + @for sub in ${SUBDIR}; do \ + if test -d ${.CURDIR}/$${sub}; then \ + ${ECHO_MSG} "===> ${DIRPRFX}$${sub}"; \ + cd ${.CURDIR}/$${sub}; \ + ${MAKE} -B describe || \ + (echo "===> ${DIRPRFX}$${sub} failed" >&2; \ + exit 1) ;\ + else \ + ${ECHO_MSG} "===> ${DIRPRFX}$${sub} non-existent"; \ + fi; \ + done +.endif +.endif + +.if !target(readmes) +.if defined(PORTSTOP) +readmes: readme ${SUBDIR:S/^/_/:S/$/.readmes/} + @${ECHO_MSG} "===> Creating README.html for all ports" + @perl ${PORTSDIR}/Tools/make_readmes < ${INDEXDIR}/${INDEXFILE} +.else +readmes: readme +.endif +.endif + +.if !target(readme) +readme: + @rm -f README.html + @make README.html +.endif + +.if (${OPSYS} == "NetBSD") +PORTSDIR ?= /usr/opt +.else +PORTSDIR ?= /usr/ports +.endif +TEMPLATES ?= ${PORTSDIR}/Templates +.if defined(PORTSTOP) +README= ${TEMPLATES}/README.top +.else +README= ${TEMPLATES}/README.category +.endif +COMMENTFILE?= ${.CURDIR}/pkg/COMMENT +DESCR?= ${.CURDIR}/pkg/DESCR +INDEXDIR?= ${PORTSDIR} +.if ${OSVERSION} >= 500036 +INDEXFILE?= INDEX-${OSVERSION:C/([0-9]).*/\1/} +.else +INDEXFILE?= INDEX +.endif + +HTMLIFY= sed -e 's/&/\&/g' -e 's/>/\>/g' -e 's/</\</g' + +package-name: + @echo ${.CURDIR} | sed -e 's^.*/^^' + +README.html: + @echo "===> Creating README.html" + @> $@.tmp +.for entry in ${SUBDIR} +.if exists(${entry}) +.if defined(PORTSTOP) + @echo -n '<a href="'${entry}/README.html'">'"`echo ${entry} | ${HTMLIFY}`"'</a>: ' >> $@.tmp +.else + @echo -n '<a href="'${entry}/README.html'">'"`cd ${entry}; make package-name | ${HTMLIFY}`</a>: " >> $@.tmp +.endif + @echo `cd ${entry}; make -V COMMENT` | ${HTMLIFY} >> $@.tmp +.endif +.endfor + @sort -t '>' +1 -2 $@.tmp > $@.tmp2 +.if exists(${DESCR}) + @${HTMLIFY} ${DESCR} > $@.tmp3 +.else + @> $@.tmp3 +.endif +.if defined(COMMENT) + @echo "${COMMENT}" | ${HTMLIFY} > $@.tmp4 +.else +.if exists(${COMMENTFILE}) + @${HTMLIFY} ${COMMENTFILE} > $@.tmp4 +.else + @> $@.tmp4 +.endif +.endif + @cat ${README} | \ + sed -e 's/%%CATEGORY%%/'"`basename ${.CURDIR}`"'/g' \ + -e '/%%COMMENT%%/r$@.tmp4' \ + -e '/%%COMMENT%%/d' \ + -e '/%%DESCR%%/r$@.tmp3' \ + -e '/%%DESCR%%/d' \ + -e '/%%SUBDIR%%/r$@.tmp2' \ + -e '/%%SUBDIR%%/d' \ + > $@ + @rm -f $@.tmp $@.tmp2 $@.tmp3 $@.tmp4 + +.if !defined(NOPRECIOUSMAKEVARS) +.MAKEFLAGS: \ + ARCH="${ARCH:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ + OPSYS="${OPSYS:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ + OSREL="${OSREL:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ + OSVERSION="${OSVERSION:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ + PORTOBJFORMAT="${PORTOBJFORMAT:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ + UID="${UID:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \ + PKGINSTALLVER="${PKGINSTALLVER:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" +.endif + +PORTSEARCH_DISPLAY_FIELDS?=name,path,info,maint,index,bdeps,rdeps,www +PORTSEARCH_KEYLIM?=0 +PORTSEARCH_XKEYLIM?=0 +PORTSEARCH_IGNORECASE?=1 + +_PORTSEARCH= \ + here=${.CURDIR}; \ + if [ ! -r ${INDEXDIR}/${INDEXFILE} ] ; then \ + echo "The ${.TARGET} target requires ${INDEXFILE}. Please run make index or make fetchindex."; \ + else \ + cd ${PORTSDIR}; \ + if [ -z "$$key" -a -z "$$xkey" -a \ + -z "$$name" -a -z "$$xname" -a \ + -z "$$path" -a -z "$$xpath" -a \ + -z "$$info" -a -z "$$xinfo" -a \ + -z "$$maint" -a -z "$$xmaint" -a \ + -z "$$cat" -a -z "$$xcat" -a \ + -z "$$bdeps" -a -z "$$xbdeps" -a \ + -z "$$rdeps" -a -z "$$xrdeps" -a \ + -z "$$www" -a -z "$$xwww" ]; \ + then \ + echo "The ${.TARGET} target requires a keyword parameter or name parameter,"; \ + echo "e.g.: \"make ${.TARGET} key=somekeyword\""; \ + echo "or \"make ${.TARGET} name=somekeyword\""; \ + exit; \ + fi; \ + awk -F\| -v there="$$here/" -v top="$$(pwd -P)" \ + -v key="$$key" -v xkey="$$xkey" \ + -v name="$$name" -v xname="$$xname" \ + -v path="$$path" -v xpath="$$xpath" \ + -v info="$$info" -v xinfo="$$xinfo" \ + -v maint="$$maint" -v xmaint="$$xmaint" \ + -v cat="$$cat" -v xcat="$$xcat" \ + -v bdeps="$$bdeps" -v xbdeps="$$xbdeps" \ + -v rdeps="$$rdeps" -v xrdeps="$$xrdeps" \ + -v www="$$www" -v xwww="$$xwww" \ + -v icase="$${icase:-${PORTSEARCH_IGNORECASE}}" \ + -v keylim="$${keylim:-${PORTSEARCH_KEYLIM}}" \ + -v xkeylim="$${xkeylim:-${PORTSEARCH_XKEYLIM}}" \ + -v display="$${display:-${PORTSEARCH_DISPLAY_FIELDS}}" \ + -v xdisplay="$$xdisplay" \ + 'BEGIN { \ + gsub(/\+/,"\\+",name); \ + if (substr(there, 1, length(top)) == top) \ + there = "${PORTSDIR}" substr(there, 1 + length(top)); \ + therelen = length(there); \ + keylen = length(key); keylim = keylim && keylen; \ + if (!keylim && keylen) \ + parms[0] = (icase ? tolower(key) : key); \ + xkeylen = length(xkey); xkeylim = xkeylim && xkeylen; \ + if (!xkeylim && xkeylen) \ + xparms[0] = (icase ? tolower(xkey) : xkey); \ + if (icase) { \ + if (length(name)) parms[1] = tolower(name); if (length(xname)) xparms[1] = tolower(xname); \ + if (length(path)) parms[2] = tolower(path); if (length(xpath)) xparms[2] = tolower(xpath); \ + if (length(info)) parms[4] = tolower(info); if (length(xinfo)) xparms[4] = tolower(xinfo); \ + if (length(maint)) parms[6] = tolower(maint); if (length(xmaint)) xparms[6] = tolower(xmaint); \ + if (length(cat)) parms[7] = tolower(cat); if (length(xcat)) xparms[7] = tolower(xcat); \ + if (length(bdeps)) parms[8] = tolower(bdeps); if (length(xbdeps)) xparms[8] = tolower(xbdeps); \ + if (length(rdeps)) parms[9] = tolower(rdeps); if (length(xrdeps)) xparms[9] = tolower(xrdeps); \ + if (length(www)) parms[10] = tolower(www); if (length(xwww)) xparms[10] = tolower(xwww); \ + } else { \ + if (length(name)) parms[1] = name; if (length(xname)) xparms[1] = xname; \ + if (length(path)) parms[2] = path; if (length(xpath)) xparms[2] = xpath; \ + if (length(info)) parms[4] = info; if (length(xinfo)) xparms[4] = xinfo; \ + if (length(maint)) parms[6] = maint; if (length(xmaint)) xparms[6] = xmaint; \ + if (length(cat)) parms[7] = cat; if (length(xcat)) xparms[7] = xcat; \ + if (length(bdeps)) parms[8] = bdeps; if (length(xbdeps)) xparms[8] = xbdeps; \ + if (length(rdeps)) parms[9] = rdeps; if (length(xrdeps)) xparms[9] = xrdeps; \ + if (length(www)) parms[10] = www; if (length(xwww)) xparms[10] = xwww; \ + } \ + fields["name"] = 1; names[1] = "Port"; \ + fields["path"] = 2; names[2] = "Path"; \ + fields["info"] = 4; names[4] = "Info"; \ + fields["maint"] = 6; names[6] = "Maint"; \ + fields["cat"] = 7; names[7] = "Index"; \ + fields["bdeps"] = 8; names[8] = "B-deps"; \ + fields["rdeps"] = 9; names[9] = "R-deps"; \ + fields["www"] = 10; names[10] = "WWW"; \ + split(display, d, /,[ \t]*/); \ + for (i in d) { \ + disp[fields[d[i]]] = 1; \ + } \ + split(xdisplay, xd, /,[ \t]*/); \ + for (i in xd) { \ + delete disp[fields[xd[i]]]; \ + } \ + } \ + { \ + if (substr($$2, 1, therelen) != there) \ + next; \ + for (i in parms) \ + if ((icase ? tolower($$i) : $$i) !~ parms[i]) \ + next; \ + for (i in xparms) \ + if ((icase ? tolower($$i) : $$i) ~ xparms[i]) \ + next; \ + found = 0; \ + for (i = 1; i < 11; i++) \ + if (i in disp) { \ + if (xkeylim && (icase ? tolower($$i) : $$i) ~ xkey) \ + next; \ + if (!found && keylim && (icase ? tolower($$i) : $$i) ~ key) \ + found = 1; \ + } \ + if (keylim && !found) \ + next; \ + for (i = 1; i < 11; i++) \ + if (i in disp) \ + printf("%s:\t%s\n", names[i], $$i); \ + print(""); \ + }' ${INDEXDIR}/${INDEXFILE} + +search: + @${_PORTSEARCH} + +quicksearch: + @export display="name,path,info" ; \ + ${_PORTSEARCH} |