ports/89809: Ports INDEX cannot be moved out of ports tree
Peter Jeremy
PeterJeremy at optushome.com.au
Thu Dec 1 18:40:04 UTC 2005
>Number: 89809
>Category: ports
>Synopsis: Ports INDEX cannot be moved out of ports tree
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Thu Dec 01 18:40:02 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Peter Jeremy
>Release: FreeBSD 7.0-CURRENT i386
>Organization:
n/a
>Environment:
System: FreeBSD server.vk2pj.dyndns.org 7.0-CURRENT FreeBSD 7.0-CURRENT #13: Mon Nov 14 19:37:17 EST 2005 root at server.vk2pj.dyndns.org:/var/obj/k7/usr/src/sys/server i386
>Description:
As well as the ports sources, the ports tree (/usr/ports) stores the
following files, most of which can be moved:
- INDEX-* This is hard-wired in the Makefile infrastructure
- Compilation/work directories - overridable with WRKDIRPREFIX
- distfiles - overridable with DISTDIR
- packages - overridable with PACKAGES
- portupgrade's INDEX*.db - overridable with PORTS_DBDIR
The INDEX file can be renamed by setting INDEXFILE but it is always
prepended with ${.CURDIR} or ${PORTSDIR}. This means you can change
it's name but you can't move it out of the ports tree. Symlinks
won't work because 'make index' begins with
rm -f ${.CURDIR}/${INDEXFILE}
(though 'make INDEX' avoids this).
For consistency it would be nice if the INDEX also has an over-
ridable directory path (eg INDEXDIRcvs). Note that portupgrade
already allows the INDEX pathname to be overridden with PORTS_INDEX
>How-To-Repeat:
Code inspection in ports/Makefile and ports/Mk/bsd.ports.mk
>Fix:
The following may work. I'm waiting for 'make index' to complete.
Index: Makefile
===================================================================
RCS file: /usr/ncvs/ports/Makefile,v
retrieving revision 1.91
diff -u -r1.91 Makefile
--- Makefile 8 Nov 2005 13:32:54 -0000 1.91
+++ Makefile 1 Dec 2005 18:21:38 -0000
@@ -67,11 +67,11 @@
.include <bsd.port.subdir.mk>
index:
- @rm -f ${.CURDIR}/${INDEXFILE}
- @cd ${.CURDIR} && make ${.CURDIR}/${INDEXFILE}
+ @rm -f ${INDEXDIR}/${INDEXFILE}
+ @cd ${.CURDIR} && make ${INDEXDIR}/${INDEXFILE}
fetchindex:
- @cd ${.CURDIR} && ${FETCHINDEX} ${MASTER_SITE_INDEX}/${INDEXFILE}.bz2 && bunzip2 -f ${INDEXFILE}.bz2 && chmod a+r ${INDEXFILE}
+ @cd ${INDEXDIR} && ${FETCHINDEX} ${MASTER_SITE_INDEX}/${INDEXFILE}.bz2 && bunzip2 -f ${INDEXFILE}.bz2 && chmod a+r ${INDEXFILE}
MASTER_SITE_INDEX?= http://www.FreeBSD.org/ports/
FETCHINDEX?= fetch -am
@@ -85,7 +85,7 @@
INDEX_ECHO_1ST= echo
.endif
-${.CURDIR}/${INDEXFILE}:
+${INDEXDIR}/${INDEXFILE}:
@${INDEX_ECHO_1ST} "Generating ${INDEXFILE} - please wait.."; \
if [ "${INDEX_PRISTINE}" != "" ]; then \
export LOCALBASE=/nonexistentlocal; \
@@ -119,18 +119,18 @@
cat $${tmpdir}/${INDEXFILE}.desc.* | perl ${.CURDIR}/Tools/make_index | \
sed -e 's/ */ /g' -e 's/| */|/g' -e 's/ *|/|/g' -e 's./..g' | \
sort -t '|' +1 -2 | \
- sed -e 's../.g' > ${.CURDIR}/${INDEXFILE}.tmp; \
+ sed -e 's../.g' > ${INDEXDIR}/${INDEXFILE}.tmp; \
if [ "${INDEX_PRISTINE}" != "" ]; then \
sed -e "s,$${LOCALBASE},/usr/local," -e "s,$${X11BASE},/usr/X11R6," \
- ${.CURDIR}/${INDEXFILE}.tmp > ${.CURDIR}/${INDEXFILE}; \
+ ${INDEXDIR}/${INDEXFILE}.tmp > ${INDEXDIR}/${INDEXFILE}; \
else \
- mv ${.CURDIR}/${INDEXFILE}.tmp ${.CURDIR}/${INDEXFILE}; \
+ mv ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \
fi; \
rm -rf $${tmpdir}; \
echo " Done."
-print-index: ${.CURDIR}/${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); }' < ${.CURDIR}/${INDEXFILE}
+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}
CVS?= cvs
SUP?= cvsup
Index: Mk/bsd.port.mk
===================================================================
RCS file: /usr/ncvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.518
diff -u -r1.518 bsd.port.mk
--- Mk/bsd.port.mk 8 Nov 2005 09:02:51 -0000 1.518
+++ Mk/bsd.port.mk 1 Dec 2005 18:22:55 -0000
@@ -1204,6 +1204,7 @@
LINUXBASE?= ${DESTDIR}/compat/linux
DISTDIR?= ${PORTSDIR}/distfiles
_DISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
+INDEXDIR?= ${PORTSDIR}
.if ${OSVERSION} >= 500036
INDEXFILE?= INDEX-${OSVERSION:C/([0-9]).*/\1/}
.else
@@ -4790,7 +4791,7 @@
defined(FETCH_DEPENDS) || defined(BUILD_DEPENDS) || \
defined(LIB_DEPENDS) || defined(DEPENDS)
@${ECHO_CMD} -n 'This port requires package(s) "'
- @${ECHO_CMD} -n `${GREP} '^${PKGNAME}|' ${PORTSDIR}/${INDEXFILE} | ${AWK} -F\| '{print $$8;}'`
+ @${ECHO_CMD} -n `${GREP} '^${PKGNAME}|' ${INDEXDIR}/${INDEXFILE} | ${AWK} -F\| '{print $$8;}'`
@${ECHO_CMD} '" to build.'
.endif
.endif
@@ -4799,7 +4800,7 @@
pretty-print-run-depends-list:
.if defined(RUN_DEPENDS) || defined(LIB_DEPENDS) || defined(DEPENDS)
@${ECHO_CMD} -n 'This port requires package(s) "'
- @${ECHO_CMD} -n `${GREP} '^${PKGNAME}|' ${PORTSDIR}/${INDEXFILE} | ${AWK} -F\| '{print $$9;}'`
+ @${ECHO_CMD} -n `${GREP} '^${PKGNAME}|' ${INDEXDIR}/${INDEXFILE} | ${AWK} -F\| '{print $$9;}'`
@${ECHO_CMD} '" to run.'
.endif
.endif
Index: Mk/bsd.port.subdir.mk
===================================================================
RCS file: /usr/ncvs/ports/Mk/bsd.port.subdir.mk,v
retrieving revision 1.61
diff -u -r1.61 bsd.port.subdir.mk
--- Mk/bsd.port.subdir.mk 8 Nov 2005 09:02:51 -0000 1.61
+++ Mk/bsd.port.subdir.mk 1 Dec 2005 18:22:56 -0000
@@ -240,7 +240,7 @@
.if defined(PORTSTOP)
readmes: readme ${SUBDIR:S/^/_/:S/$/.readmes/}
@${ECHO_MSG} "===> Creating README.html for all ports"
- @perl ${PORTSDIR}/Tools/make_readmes < ${PORTSDIR}/${INDEXFILE}
+ @perl ${PORTSDIR}/Tools/make_readmes < ${INDEXDIR}/${INDEXFILE}
.else
readmes: readme
.endif
@@ -333,7 +333,7 @@
PORTSEARCH_XKEYLIM?=0
PORTSEARCH_IGNORECASE?=1
-search: ${PORTSDIR}/${INDEXFILE}
+search: ${INDEXDIR}/${INDEXFILE}
@here=${.CURDIR}; \
cd ${PORTSDIR}; \
if [ -z "$$key" -a -z "$$xkey" -a \
@@ -431,4 +431,4 @@
if (i in disp) \
printf("%s:\t%s\n", names[i], $$i); \
print(""); \
- }' ${PORTSDIR}/${INDEXFILE}
+ }' ${INDEXDIR}/${INDEXFILE}
Index: ports.7
===================================================================
RCS file: /usr/ncvs/src/share/man/man7/ports.7,v
retrieving revision 1.52
diff -u -r1.52 ports.7
--- ports.7 20 Jul 2005 22:22:53 -0000 1.52
+++ ports.7 1 Dec 2005 18:28:40 -0000
@@ -359,6 +359,10 @@
Useful if
.Va PORTSDIR
is read-only (perhaps mounted from a CD-ROM).
+.It Va INDEXDIR
+Where to create or locate the ports INDEX file.
+It is normally set to
+.Va PORTSDIR .
.It Va DISTDIR
Where to find/put distfiles, normally
.Pa distfiles/
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list