aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--Mk/bsd.port.subdir.mk21
2 files changed, 21 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 9a151e0c6063..574860414da0 100644
--- a/Makefile
+++ b/Makefile
@@ -70,14 +70,6 @@ ${.CURDIR}/INDEX:
print-index: ${.CURDIR}/INDEX
@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\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9); }' < ${.CURDIR}/INDEX
-search: ${.CURDIR}/INDEX
-.if !defined(key)
- @echo "The search target requires a keyword parameter,"
- @echo "e.g.: \"make search key=somekeyword\""
-.else
- @grep -i "${key}" ${.CURDIR}/INDEX | 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\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9); }'
-.endif
-
parallel: ${.CURDIR}/INDEX
.for dir in ${SUBDIR}
@echo "all:: ${dir}-all"
diff --git a/Mk/bsd.port.subdir.mk b/Mk/bsd.port.subdir.mk
index a84a02060d8a..8887b3102fe8 100644
--- a/Mk/bsd.port.subdir.mk
+++ b/Mk/bsd.port.subdir.mk
@@ -34,6 +34,9 @@
# depend, depends, describe, extract, fetch, fetch-list, ignorelist,
# install, package, package-loop, readmes, realinstall, reinstall, tags
#
+# search:
+# Search for ports using either 'make search key=<keyword>'
+# or 'make search name=<keyword>'.
.MAIN: all
@@ -235,3 +238,21 @@ README.html:
OSVERSION="${OSVERSION:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}" \
PORTOBJFORMAT="${PORTOBJFORMAT:S/"/"'"'"/g:S/\$/\$\$/g:S/\\/\\\\/g}"
.endif
+
+# Ports may be symlinked to somewhere else. Convert the directory path
+# back into one that lives within the ports collection.
+PORTSACTUALDIR!=perl -e '($$subdir = "${.CURDIR}") =~ s!.*/([^/]+)!$$1/!; \
+ print "${PORTSACTUALDIR}/"; print $$subdir unless "${PORTSTOP}";'
+search: ${PORTSDIR}/INDEX
+.if !defined(key) && !defined(name)
+ @echo "The search target requires a keyword parameter or name parameter,"
+ @echo "e.g.: \"make search key=somekeyword\""
+ @echo "or \"make search name=somekeyword\""
+.else
+.if defined(key)
+ @grep ${PORTSACTUALDIR} ${PORTSDIR}/INDEX | grep -i "${key}" | 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\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9); }'
+.endif
+.if defined(name)
+ @grep ${PORTSACTUALDIR} ${PORTSDIR}/INDEX | grep -i "^[^|]*${name}[^|]*|" | 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\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9); }'
+.endif
+.endif