Date: Mon, 20 Dec 2004 05:49:30 GMT From: Mark Linimon <linimon@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/75286: [patch] add master/slave port Makevars to bsd.port.mk Message-ID: <200412200549.iBK5nUrO096129@freefall.freebsd.org> Resent-Message-ID: <200412200550.iBK5oLSN097122@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 75286 >Category: ports >Synopsis: [patch] add master/slave port Makevars to bsd.port.mk >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon Dec 20 05:50:21 GMT 2004 >Closed-Date: >Last-Modified: >Originator: Mark Linimon >Release: FreeBSD 4.10-STABLE i386 >Organization: FreeBSD >Environment: System: FreeBSD freefall.freebsd.org 4.10-STABLE FreeBSD 4.10-STABLE #14: Sun Nov 21 01:22:46 GMT 2004 kensmith@freefall.freebsd.org:/c/src/sys/compile/FREEFALL i386 >Description: It is not currently possible to quickly find out if any given port is a master or slave port. Both FreshPorts and portsmon need this information to quickly update their port metadata when a change is committed to CVS. (It is infeasible to use 'make index' for this purpose since it can take tens of minutes; it is undesirable to wait for the daily index build before doing the updates, as the databases quickly become stale. The following patch introduces two new Makevars, IS_SLAVE_PORT and MASTERPORT, to fill this purpose, which can quickly be queried with 'make -V'. In all but a few cases these defaults are accurate. However, for a few ports with very problematic Makefiles, patches are needed to set these variables. (Some of the various port Makefile that were at one time problematic with this patch have over the last few months been reworked to be "proper" master/slave ports in accordance with the suggestions of "best practices" in the Porter's Handbook.) There are probably a few pathological cases that this technology will not correctly detect; this is a tradeoff done for performance. (The alternative would be to keep a tree-structured parsing of all port Makefiles up-to-date -- this would have the advantage of always being exactly correct, but at a cost of much added complexity. In practice, a careful examination of the state of the various Makefile .include statements suggest that such cases are quite rare -- and arguably, shouldn't be allowed in the Ports Collection in any case.) Further, it should be noted that the results from these variables is only used as "advisory" information -- i.e. not to actually update installed ports or the CVS repository itself, so the tradeoff of performance vs. complexity is probably a good one. Finally, both FreshPorts and portsmon have been running with the bsd.port.mk patch for a number of months without any problems. A regression test on the lonesome.com machines shows that a recursive evaluation of these variables throughout the entire ports collection produces the expected results. A note on performance measurements: Here is how much extra time is added to 'make index' with the bsd.port.mk changes: Without change: 1977.10 real 1295.92 user 652.95 sys With changes: 1991.24 real 1308.68 user 656.84 sys As measured on quatloo on 12/12/2004 (12061 ports). ~1msec/port; not quite 1%. CPU: Intel(R) Pentium(R) 4 CPU 1500MHz (1495.16-MHz 686-class CPU) real memory = 536870912 (512 MB) avail memory = 515706880 (491 MB) >How-To-Repeat: (n/a) >Fix: Index: Mk/bsd.port.mk =================================================================== RCS file: /home/FreeBSD/pcvs/ports/Mk/bsd.port.mk,v retrieving revision 1.501 diff -u -r1.501 bsd.port.mk --- Mk/bsd.port.mk 9 Dec 2004 21:44:48 -0000 1.501 +++ Mk/bsd.port.mk 20 Dec 2004 00:41:35 -0000 @@ -1006,6 +1006,16 @@ MASTERDIR?= ${.CURDIR} +# Try to determine if we are a slave port. These variables are used by +# FreshPorts and portsmon, but not yet by the ports framework itself. +.if ${MASTERDIR} != ${.CURDIR} +IS_SLAVE_PORT?= yes +MASTERPORT?= ${MASTERDIR:C/[^\/]+\/\.\.\///:C/[^\/]+\/\.\.\///:C/^.*\/([^\/]+\/[^\/]+)$/\\1/} +.else +IS_SLAVE_PORT?= no +MASTERPORT?= +.endif + # If they exist, include Makefile.inc, then architecture/operating # system specific Makefiles, then local Makefile.local. Index: chinese/xemacs21/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/chinese/xemacs21/Makefile,v retrieving revision 1.10 diff -u -r1.10 Makefile --- chinese/xemacs21/Makefile 15 Nov 2003 10:29:35 -0000 1.10 +++ chinese/xemacs21/Makefile 11 Jun 2004 03:55:10 -0000 @@ -20,6 +20,9 @@ # xemacs21-mule-common needs this. WRKDIR= ${WRKDIRPREFIX}${.CURDIR}/../../editors/xemacs21-mule/work +IS_SLAVE_PORT= yes +MASTERPORT= editors/xemacs21-mule + post-install:: @${MKDIR} ${PREFIX}/lib/xemacs-${XEMACS_VER}/etc/app-defaults/zh_TW.Big5 @${INSTALL_DATA} ${.CURDIR}/../xemacs/files/Emacs ${PREFIX}/lib/xemacs-${XEMACS_VER}/etc/app-defaults/zh_TW.Big5 Index: databases/db42/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/db42/Makefile,v retrieving revision 1.61 diff -u -r1.61 Makefile --- databases/db42/Makefile 26 Jun 2004 11:13:16 -0000 1.61 +++ databases/db42/Makefile 5 Jul 2004 23:55:26 -0000 @@ -18,6 +18,8 @@ MASTERDIR?= ${.CURDIR} +IS_SLAVE_PORT= FALSE + .include <${MASTERDIR}/Makefile.db> .include <bsd.port.pre.mk> Index: databases/p5-postgresql-plperl/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/p5-postgresql-plperl/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- databases/p5-postgresql-plperl/Makefile 6 Dec 2004 03:59:43 -0000 1.14 +++ databases/p5-postgresql-plperl/Makefile 17 Dec 2004 06:15:00 -0000 @@ -17,6 +17,9 @@ POSTGRESQL_SUBPORT=YES .include "../../${POSTGRESQL_PORT}/Makefile" +IS_SLAVE_PORT= yes +MASTERPORT= ${POSTGRESQL_PORT} + RUN_DEPENDS= postgres:${PORTSDIR}/${POSTGRESQL_PORT} USE_PERL5= yes Index: databases/postgresql-contrib/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/postgresql-contrib/Makefile,v retrieving revision 1.7 diff -u -r1.7 Makefile --- databases/postgresql-contrib/Makefile 6 Dec 2004 03:59:47 -0000 1.7 +++ databases/postgresql-contrib/Makefile 17 Dec 2004 06:15:01 -0000 @@ -18,6 +18,9 @@ POSTGRESQL_SUBPORT=YES .include <${.CURDIR}/../../${POSTGRESQL_PORT}/Makefile> +IS_SLAVE_PORT= yes +MASTERPORT= ${POSTGRESQL_PORT} + INSTALLS_SHLIB= yes USE_BISON= yes Index: databases/postgresql-docs/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/postgresql-docs/Makefile,v retrieving revision 1.10 diff -u -r1.10 Makefile --- databases/postgresql-docs/Makefile 6 Dec 2004 03:59:49 -0000 1.10 +++ databases/postgresql-docs/Makefile 17 Dec 2004 06:15:02 -0000 @@ -19,6 +19,9 @@ .undef GNU_CONFIGURE NO_BUILD= YES +IS_SLAVE_PORT= yes +MASTERPORT= ${POSTGRESQL_PORT} + do-install: @ $(MKDIR) ${DOCSDIR}/html; \ ${GZIP_CMD} -dc ${WRKSRC}/doc/postgres.tar.gz | \ Index: databases/postgresql-jdbc/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/postgresql-jdbc/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- databases/postgresql-jdbc/Makefile 6 Dec 2004 03:59:49 -0000 1.14 +++ databases/postgresql-jdbc/Makefile 17 Dec 2004 06:15:02 -0000 @@ -18,6 +18,9 @@ POSTGRESQL_SUBPORT=YES .include <${.CURDIR}/../../${POSTGRESQL_PORT}/Makefile> +IS_SLAVE_PORT= yes +MASTERPORT= ${POSTGRESQL_PORT} + CONFIGURE_ARGS= --with-java USE_JAVA= 1.1+ Index: databases/postgresql-pltcl/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/postgresql-pltcl/Makefile,v retrieving revision 1.13 diff -u -r1.13 Makefile --- databases/postgresql-pltcl/Makefile 6 Dec 2004 03:59:49 -0000 1.13 +++ databases/postgresql-pltcl/Makefile 17 Dec 2004 06:15:03 -0000 @@ -16,6 +16,9 @@ POSTGRESQL_SUBPORT=YES .include "../../${POSTGRESQL_PORT}/Makefile" +IS_SLAVE_PORT= yes +MASTERPORT= ${POSTGRESQL_PORT} + LIB_DEPENDS= tcl${TCLVERSION:S/.//}:${PORTSDIR}/lang/tcl${TCLVERSION:S/.//} RUN_DEPENDS= postgres:${PORTSDIR}/${POSTGRESQL_PORT} Index: databases/postgresql-tcltk/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/postgresql-tcltk/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- databases/postgresql-tcltk/Makefile 6 Dec 2004 03:59:50 -0000 1.14 +++ databases/postgresql-tcltk/Makefile 17 Dec 2004 06:15:03 -0000 @@ -16,6 +16,9 @@ POSTGRESQL_SUBPORT=YES .include <${.CURDIR}/../../${POSTGRESQL_PORT}/Makefile> +IS_SLAVE_PORT= yes +MASTERPORT= ${POSTGRESQL_PORT} + LIB_DEPENDS= tcl${TCLVERSION:S/.//}:${PORTSDIR}/lang/tcl${TCLVERSION:S/.//} \ pq:${PORTSDIR}/${POSTGRESQL_PORT} Index: databases/ruby-dbd_interbase/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_interbase/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- databases/ruby-dbd_interbase/Makefile 18 Feb 2003 04:37:37 -0000 1.3 +++ databases/ruby-dbd_interbase/Makefile 14 Jun 2004 06:41:41 -0000 @@ -23,6 +23,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=lib/${PORTNAME} Index: databases/ruby-dbd_msql/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_msql/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- databases/ruby-dbd_msql/Makefile 18 Feb 2003 04:37:37 -0000 1.3 +++ databases/ruby-dbd_msql/Makefile 14 Jun 2004 06:41:15 -0000 @@ -23,6 +23,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=lib/${PORTNAME} Index: databases/ruby-dbd_mysql/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_mysql/Makefile,v retrieving revision 1.6 diff -u -r1.6 Makefile --- databases/ruby-dbd_mysql/Makefile 18 Feb 2003 04:37:37 -0000 1.6 +++ databases/ruby-dbd_mysql/Makefile 14 Jun 2004 06:40:36 -0000 @@ -23,6 +23,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=lib/${PORTNAME} Index: databases/ruby-dbd_odbc/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_odbc/Makefile,v retrieving revision 1.3 diff -u -r1.3 Makefile --- databases/ruby-dbd_odbc/Makefile 18 Feb 2003 04:37:37 -0000 1.3 +++ databases/ruby-dbd_odbc/Makefile 14 Jun 2004 06:40:15 -0000 @@ -23,6 +23,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=lib/${PORTNAME} Index: databases/ruby-dbd_pg/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_pg/Makefile,v retrieving revision 1.5 diff -u -r1.5 Makefile --- databases/ruby-dbd_pg/Makefile 4 Feb 2004 05:19:08 -0000 1.5 +++ databases/ruby-dbd_pg/Makefile 14 Jun 2004 06:39:48 -0000 @@ -24,6 +24,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=lib/${PORTNAME} Index: databases/ruby-dbd_proxy/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_proxy/Makefile,v retrieving revision 1.5 diff -u -r1.5 Makefile --- databases/ruby-dbd_proxy/Makefile 31 Oct 2003 18:52:19 -0000 1.5 +++ databases/ruby-dbd_proxy/Makefile 14 Jun 2004 06:39:18 -0000 @@ -23,6 +23,9 @@ USE_RUBY_FEATURES= drb USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=bin/proxyserver,lib/${PORTNAME} Index: databases/ruby-dbd_sqlite/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_sqlite/Makefile,v retrieving revision 1.7 diff -u -r1.7 Makefile --- databases/ruby-dbd_sqlite/Makefile 18 Feb 2003 04:37:38 -0000 1.7 +++ databases/ruby-dbd_sqlite/Makefile 14 Jun 2004 06:38:43 -0000 @@ -23,6 +23,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=ext/${PORTNAME} Index: databases/ruby-dbd_sqlrelay/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/databases/ruby-dbd_sqlrelay/Makefile,v retrieving revision 1.5 diff -u -r1.5 Makefile --- databases/ruby-dbd_sqlrelay/Makefile 4 Feb 2004 05:19:08 -0000 1.5 +++ databases/ruby-dbd_sqlrelay/Makefile 14 Jun 2004 06:38:21 -0000 @@ -24,6 +24,9 @@ USE_RUBY= yes USE_RUBY_SETUP= yes +IS_SLAVE_PORT= yes +MASTERPORT= databases/ruby-dbi + WRKSRC= ${RUBY_DBI_WRKSRC} CONFIGURE_ARGS= --with=lib/${PORTNAME} Index: german/linux-eagle/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/german/linux-eagle/Makefile,v retrieving revision 1.10 diff -u -r1.10 Makefile --- german/linux-eagle/Makefile 13 Dec 2004 10:16:37 -0000 1.10 +++ german/linux-eagle/Makefile 17 Dec 2004 06:18:20 -0000 @@ -14,4 +14,7 @@ CONFLICTS= linux-eagle-* +IS_SLAVE_PORT= yes +MASTERPORT= cad/linux-eagle + .include "../../cad/linux-eagle/Makefile" Index: graphics/ruby-gdk_imlib/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/graphics/ruby-gdk_imlib/Makefile,v retrieving revision 1.10 diff -u -r1.10 Makefile --- graphics/ruby-gdk_imlib/Makefile 4 Feb 2004 05:21:05 -0000 1.10 +++ graphics/ruby-gdk_imlib/Makefile 14 Jun 2004 06:37:33 -0000 @@ -25,6 +25,9 @@ USE_XLIB= yes USE_GNOME= imlib +IS_SLAVE_PORT= yes +MASTERPORT= x11/ruby-gnome + .include "${.CURDIR}/../../x11/ruby-gnome/Makefile.common" WRKSRC= ${RUBY_GNOME_WRKSRC}/${PORTNAME} Index: graphics/ruby-gdk_pixbuf/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/graphics/ruby-gdk_pixbuf/Makefile,v retrieving revision 1.11 diff -u -r1.11 Makefile --- graphics/ruby-gdk_pixbuf/Makefile 4 Feb 2004 05:21:05 -0000 1.11 +++ graphics/ruby-gdk_pixbuf/Makefile 14 Jun 2004 06:43:00 -0000 @@ -25,6 +25,9 @@ USE_XLIB= yes USE_GNOME= glib12 libcapplet gdkpixbuf +IS_SLAVE_PORT= yes +MASTERPORT= x11/ruby-gnome + .include "${.CURDIR}/../../x11/ruby-gnome/Makefile.common" WRKSRC= ${RUBY_GNOME_WRKSRC}/${PORTNAME} Index: graphics/ruby-gnomecanvas2/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/graphics/ruby-gnomecanvas2/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- graphics/ruby-gnomecanvas2/Makefile 15 Nov 2004 06:18:33 -0000 1.14 +++ graphics/ruby-gnomecanvas2/Makefile 27 Nov 2004 10:00:26 -0000 @@ -25,6 +25,9 @@ USE_GNOME= libgnomecanvas USE_RUBY_EXTCONF= yes +IS_SLAVE_PORT= yes +MASTERPORT= x11/ruby-gnome + .include "${.CURDIR}/../../x11/ruby-gnome2/Makefile.common" WRKSRC= ${RUBY_GNOME_WRKSRC}/gnomecanvas Index: graphics/ruby-libart/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/graphics/ruby-libart/Makefile,v retrieving revision 1.4 diff -u -r1.4 Makefile --- graphics/ruby-libart/Makefile 18 Feb 2003 11:13:56 -0000 1.4 +++ graphics/ruby-libart/Makefile 14 Jun 2004 06:54:03 -0000 @@ -24,6 +24,9 @@ USE_RUBY= yes USE_RUBY_EXTCONF= yes +IS_SLAVE_PORT= yes +MASTERPORT= x11/ruby-gnome + .include "${.CURDIR}/../../x11/ruby-gnome/Makefile.common" WRKSRC= ${RUBY_GNOME_WRKSRC}/${PORTNAME} Index: mail/qmail-ldap/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/mail/qmail-ldap/Makefile,v retrieving revision 1.33 diff -u -r1.33 Makefile --- mail/qmail-ldap/Makefile 13 Apr 2004 23:26:09 -0000 1.33 +++ mail/qmail-ldap/Makefile 6 Jun 2004 20:30:13 -0000 @@ -49,6 +49,9 @@ QMAIL_PORT_PREFIX!= cd ${QMAIL_PORT} && ${MAKE} -V PREFIX QMAIL_PORT_PATCHDIR!= cd ${QMAIL_PORT} && ${MAKE} -V PATCHDIR +IS_SLAVE_PORT= yes +MASTERPORT= mail/qmail + DOCFILES+= ${WRKSRC}/QLDAPINSTALL ${WRKSRC}/QLDAPNEWS \ ${WRKSRC}/POPBEFORESMTP \ ${WRKSRC}/QLDAPTODO ${WRKSRC}/QLDAPPICTURE Index: mail/qmail-mysql/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/mail/qmail-mysql/Makefile,v retrieving revision 1.11 diff -u -r1.11 Makefile --- mail/qmail-mysql/Makefile 7 Mar 2004 21:08:27 -0000 1.11 +++ mail/qmail-mysql/Makefile 6 Jun 2004 20:30:36 -0000 @@ -36,6 +36,9 @@ QMAIL_PORT= ${.CURDIR}/../qmail QMAIL_PORT_PREFIX!= cd ${QMAIL_PORT} && ${MAKE} -V PREFIX +IS_SLAVE_PORT= yes +MASTERPORT= mail/qmail + # Yet anther ugly hack (works due to code inside the main qmail port) slaveport-post-patch: qmail-mysql-post-patch Index: mail/qmail-tls/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/mail/qmail-tls/Makefile,v retrieving revision 1.14 diff -u -r1.14 Makefile --- mail/qmail-tls/Makefile 7 Mar 2004 21:08:27 -0000 1.14 +++ mail/qmail-tls/Makefile 6 Jun 2004 20:30:58 -0000 @@ -28,6 +28,9 @@ PREFIX?= ${QMAIL_PORT_PREFIX} #PREFIX= /var/qmail-tls +IS_SLAVE_PORT= yes +MASTERPORT= mail/qmail + .if !defined(PRE_MK_INCLUDED) .include <bsd.port.pre.mk> .endif Index: mail/squirrelmail/Makefile =================================================================== RCS file: /home/FreeBSD/pcvs/ports/mail/squirrelmail/Makefile,v retrieving revision 1.32 diff -u -r1.32 Makefile --- mail/squirrelmail/Makefile 19 Dec 2004 20:38:22 -0000 1.32 +++ mail/squirrelmail/Makefile 20 Dec 2004 00:51:34 -0000 @@ -45,10 +45,6 @@ PLIST_SUB+= PORTVERSION=${PORTVERSION} \ SQUIRRELDIR="${SQUIRRELDIR:S,^${PREFIX}/,,}" -.if !defined(MASTERDIR) -MASTERDIR= ${.CURDIR} -.endif - pre-everything:: @${ECHO_CMD} "SquirrelMail is installed into ${SQUIRRELDIR}" @${ECHO_CMD} "To use the old location ${PREFIX}/squirrelmail define" >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412200549.iBK5nUrO096129>