(1) Add new variables LOOP_VAR and LOOP_OPTIONS to implement building several

packages from a single port.  LOOP_VAR is the name of the variable
    and LOOP_OPTIONS is a space-separated list of values it should
    take.  When these are set, the target "package-loop" will go
    through a clean and package loop for all the options.  The
    "package-loop" target is defined as "package" when LOOP_VAR is not
    defined, so if you are in the business for building packages, you
    should use "package-loop" all the time.  (This target is added to
    bsd.port.subdir.mk too.)

    Also, the "describe" target prints out multiple lines so that all
    options will go into the INDEX.  (In other words, if you define
    these variables, INDEX is going to look real silly if you don't
    put ${${LOOP_VAR}} in PKGNAME.)

Seconded by:	obrien ("ANYTHING")

(2) Turn off regexp support for LIB_DEPENDS.  It is a fixed string of
    the form <NAME>.<VER> now.
Tested by:	several rounds of complete package builds

(3) Check checksum even if NO_EXTRACT is defined.

(4) Cosmetic fix for message in MANUAL_PACKAGE_BUILD case.
This commit is contained in:
Satoshi Asami 1998-10-30 08:28:02 +00:00
parent 36159e3d1e
commit fc006fb4ee
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=40754
2 changed files with 54 additions and 7 deletions

View file

@ -1,7 +1,7 @@
#-*- mode: Fundamental; tab-width: 4; -*-
# ex:ts=4
#
# $Id: bsd.port.mk,v 1.292 1998/10/06 21:12:14 asami Exp $
# $Id: bsd.port.mk,v 1.293 1998/10/09 01:27:21 asami Exp $
# $NetBSD: $
#
# bsd.port.mk - 940820 Jordan K. Hubbard.
@ -246,6 +246,18 @@ OpenBSD_MAINTAINER= imp@OpenBSD.ORG
# is set and NO_INSTALL_MANPAGES is not set, and
# "no" otherwise.
#
# If your port wants the package to be built with several options,
# set the following variables.
#
# LOOP_VAR - The name of the variable.
# LOOP_OPTIONS - The value of the options.
#
# If they are set, there will be a target "package-loop" which will
# iterate several times, each time cleaning up afterwards, with the
# value of ${LOOP_VAR} set to one of ${LOOP_OPTIONS}. In addition,
# the "describe" target will print out multiple lines with the variable
# set accordingly.
#
# Default targets and their behaviors:
#
# fetch - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined)
@ -1034,7 +1046,7 @@ IGNORE= "is marked as broken: ${BROKEN}"
.endif
.if (defined(MANUAL_PACKAGE_BUILD) && defined(PACKAGE_BUILDING))
IGNORE= "package has to be built manually: ${MANUAL_PACKAGE_BUILD}"
IGNORE= "has to be built manually: ${MANUAL_PACKAGE_BUILD}"
clean:
@${IGNORECMD}
.endif
@ -1109,6 +1121,7 @@ checksum: fetch
# Disable extract
.if defined(NO_EXTRACT) && !target(extract)
extract: fetch
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} checksum REAL_EXTRACT=yes
@${TOUCH} ${TOUCH_FLAGS} ${EXTRACT_COOKIE}
.endif
@ -1761,6 +1774,26 @@ package-noinstall:
@cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package
.endif
# Loop through several options for package building
.if !target(package-loop)
.if defined(LOOP_VAR)
package-loop:
.if !exists(${PACKAGE_COOKIE})
.for option in ${LOOP_OPTIONS}
@cd ${.CURDIR} && ${SETENV} ${LOOP_VAR}=${option} LOOP=yes \
${MAKE} ${.MAKEFLAGS} clean
@cd ${.CURDIR} && ${SETENV} ${LOOP_VAR}=${option} LOOP=yes \
${MAKE} ${.MAKEFLAGS} package
.endfor
.else
@${DO_NADA}
.endif
.else
package-loop: package
.endif
.endif
################################################################
# Dependency checking
################################################################
@ -1843,7 +1876,7 @@ lib-depends:
else \
target=${DEPENDS_TARGET}; \
fi; \
if ${LDCONFIG} -r | ${GREP} -q -e "-l$$lib"; then \
if ${LDCONFIG} -r | ${GREP} -qwF -e "-l$$lib"; then \
${ECHO_MSG} "===> ${PKGNAME} depends on shared library: $$lib - found"; \
else \
${ECHO_MSG} "===> ${PKGNAME} depends on shared library: $$lib - not found"; \
@ -1853,7 +1886,7 @@ lib-depends:
else \
(cd $$dir; ${MAKE} ${.MAKEFLAGS} $$target) ; \
${ECHO_MSG} "===> Returning to build of ${PKGNAME}"; \
if ${LDCONFIG} -r | ${GREP} -q -e "-l$$lib"; then \
if ${LDCONFIG} -r | ${GREP} -qwF -e "-l$$lib"; then \
${TRUE}; \
else \
${ECHO_MSG} "Error: shared library \"$$lib\" does not exist"; \
@ -1934,8 +1967,22 @@ depends-list:
# distribution-name|port-path|installation-prefix|comment| \
# description-file|maintainer|categories|build deps|run deps
#
# If LOOP_VAR is set, multiple lines will be printed with the
# variable set to each value of LOOP_OPTIONS.
.if !target(describe)
describe:
.if !defined(LOOP_VAR)
@cd ${.CURDIR} && ${MAKE} do-describe
.else
.for option in ${LOOP_OPTIONS}
@cd ${.CURDIR} && ${SETENV} ${LOOP_VAR}=${option} ${MAKE} do-describe
.endfor
.endif
.endif
.if !target(do-describe)
do-describe:
@${ECHO} -n "${PKGNAME}|${.CURDIR}|"; \
${ECHO} -n "${PREFIX}|"; \
if [ -f ${COMMENT} ]; then \

View file

@ -1,5 +1,5 @@
# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
# $Id: bsd.port.subdir.mk,v 1.23 1997/11/20 05:31:44 asami Exp $
# $Id: bsd.port.subdir.mk,v 1.24 1998/08/26 23:46:13 asami Exp $
#
# The include file <bsd.port.subdir.mk> contains the default targets
# for building ports subdirectories.
@ -29,7 +29,7 @@
#
# afterinstall, all, beforeinstall, build, checksum, clean,
# configure, deinstall, depend, describe, extract, fetch, fetch-list,
# install, package, readmes, realinstall, reinstall, tags
# install, package, package-loop, readmes, realinstall, reinstall, tags
#
@ -78,7 +78,7 @@ ${SUBDIR}::
fi; \
${MAKE} all
.for __target in all fetch fetch-list package extract configure \
.for __target in all fetch fetch-list package package-loop extract configure \
build clean deinstall depend describe distclean \
reinstall tags checksum
.if !target(${__target})