From ade82b9b63560101a4a5d3106fbd52821bd30475 Mon Sep 17 00:00:00 2001 From: Satoshi Asami Date: Fri, 18 Aug 1995 10:06:28 +0000 Subject: [PATCH] Merge all the "skeleton" target into one macro. This is an enormous change, but I've been testing this on thud and silvia for quite a while, also I haven't gotten any bug reports from the ports list, so I'm going to let it loose! It cleans up this file quite a bit, now I can go in and start adding some more "interesting" things.... ;) --- share/mk/bsd.port.mk | 408 +++++++++++++++++-------------------------- 1 file changed, 160 insertions(+), 248 deletions(-) diff --git a/share/mk/bsd.port.mk b/share/mk/bsd.port.mk index 3d2d88075e5d..46994c4a5bfb 100644 --- a/share/mk/bsd.port.mk +++ b/share/mk/bsd.port.mk @@ -3,7 +3,7 @@ # bsd.port.mk - 940820 Jordan K. Hubbard. # This file is in the public domain. # -# $Id: bsd.port.mk,v 1.173 1995/07/17 16:20:58 jkh Exp $ +# $Id: bsd.port.mk,v 1.174 1995/07/24 08:02:07 asami Exp $ # # Please view me with 4 column tabs! @@ -209,7 +209,8 @@ EXEC_DEPENDS+= gmake:${PORTSDIR}/devel/gmake .include "${PORTSDIR}/../Makefile.inc" .endif -# Change these if you'd prefer to keep the cookies someplace else. +# Don't change these!!! These names are built into the _TARGET_USE macro, +# there is no way to refer to them cleanly from within the macro AFAIK. EXTRACT_COOKIE?= ${WRKDIR}/.extract_done CONFIGURE_COOKIE?= ${WRKDIR}/.configure_done INSTALL_COOKIE?= ${WRKDIR}/.install_done @@ -608,6 +609,100 @@ do-install: .endif .endif +# Package + +.if !target(do-package) +do-package: + @if [ -e ${PKGDIR}/PLIST ]; then \ + ${ECHO_MSG} "===> Building package for ${PKGNAME}"; \ + if [ -d ${PACKAGES} ]; then \ + if [ ! -d ${PKGREPOSITORY} ]; then \ + if ! /bin/mkdir -p ${PKGREPOSITORY}; then \ + ${ECHO_MSG} ">> Can't create directory ${PKGREPOSITORY}."; \ + exit 1; \ + fi; \ + fi; \ + fi; \ + if ${PKG_CMD} ${PKG_ARGS} ${PKGFILE}; then \ + if [ -d ${PACKAGES} ]; then \ + ${MAKE} ${.MAKEFLAGS} package-links; \ + fi; \ + else \ + ${MAKE} ${.MAKEFLAGS} delete-package; \ + exit 1; \ + fi; \ + fi +.endif + +# Some support rules for do-package + +.if !target(package-links) +package-links: + @${MAKE} ${.MAKEFLAGS} delete-package-links + @for cat in ${CATEGORIES}; do \ + if [ ! -d ${PACKAGES}/$$cat ]; then \ + if ! /bin/mkdir -p ${PACKAGES}/$$cat; then \ + ${ECHO_MSG} ">> Can't create directory ${PACKAGES}/$$cat."; \ + exit 1; \ + fi; \ + fi; \ + ln -s ../${PKGREPOSITORYSUBDIR}/${PKGNAME}${PKG_SUFX} ${PACKAGES}/$$cat; \ + done; +.endif + +.if !target(delete-package-links) +delete-package-links: + @/bin/rm -f ${PACKAGES}/[a-z]*/${PKGNAME}${PKG_SUFX}; +.endif + +.if !target(delete-package) +delete-package: + @${MAKE} ${.MAKEFLAGS} delete-package-links + @/bin/rm -f ${PKGFILE} +.endif + +################################################################ +# This is the "generic" port target, actually a macro used from the +# six main targets. See below for more. +################################################################ + +_PORT_USE: .USE +.if make(real-install) +.if !defined(NO_MTREE) + @if [ `id -u` = 0 ]; then \ + ${MTREE_CMD} ${MTREE_ARGS} ${PREFIX}/; \ + else \ + ${ECHO_MSG} "Warning: not superuser, can't run mtree."; \ + ${ECHO_MSG} "Become root and try again to ensure correct permissions."; \ + fi +.endif +.endif + @${MAKE} ${.MAKEFLAGS} ${.TARGET:S/^real-/pre-/} + @if [ -f ${SCRIPTDIR}/${.TARGET:S/^real-/pre-/} ]; then \ + /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ + WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ + FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ + DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ + /bin/sh ${SCRIPTDIR}/${.TARGET:S/^real-/pre-/}; \ + fi + @${MAKE} ${.MAKEFLAGS} ${.TARGET:S/^real-/do-/} + @${MAKE} ${.MAKEFLAGS} ${.TARGET:S/^real-/post-/} + @if [ -f ${SCRIPTDIR}/${.TARGET:S/^real-/post-/} ]; then \ + /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ + WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ + FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ + DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ + /bin/sh ${SCRIPTDIR}/${.TARGET:S/^real-/post-/}; \ + fi +.if make(real-install) + @${MAKE} ${.MAKEFLAGS} fake-pkg +.endif +.if !make(real-fetch) \ + && (!make(real-patch) || !defined(PATCH_CHECK_ONLY)) \ + && (!make(real-package) || !defined(PACKAGE_NOINSTALL)) + @${TOUCH} ${TOUCH_FLAGS} ${WRKDIR}/.${.TARGET:S/^real-//}_done +.endif + ################################################################ # Skeleton targets start here # @@ -617,97 +712,80 @@ do-install: # call the necessary targets/scripts. ################################################################ -# Fetch - .if !target(fetch) fetch: depends -.if target(pre-fetch) - @${MAKE} ${.MAKEFLAGS} pre-fetch + @${MAKE} ${.MAKEFLAGS} real-fetch .endif - @if [ -f ${SCRIPTDIR}/pre-fetch ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/pre-fetch; \ - fi - @${MAKE} ${.MAKEFLAGS} do-fetch -.if target(post-fetch) - @${MAKE} ${.MAKEFLAGS} post-fetch -.endif - @if [ -f ${SCRIPTDIR}/post-fetch ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/post-fetch; \ - fi -.endif - -# Extract .if !target(extract) extract: checksum ${EXTRACT_COOKIE} - -${EXTRACT_COOKIE}: - @${ECHO_MSG} "===> Extracting for ${PKGNAME}" -.if target(pre-extract) - @${MAKE} ${.MAKEFLAGS} pre-extract .endif - @if [ -f ${SCRIPTDIR}/pre-extract ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/pre-extract; \ - fi - @${MAKE} ${.MAKEFLAGS} do-extract -.if target(post-extract) - @${MAKE} ${.MAKEFLAGS} post-extract -.endif - @if [ -f ${SCRIPTDIR}/post-extract ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/post-extract; \ - fi - @${TOUCH} ${TOUCH_FLAGS} ${EXTRACT_COOKIE} -.endif - -# Patch .if !target(patch) patch: extract ${PATCH_COOKIE} +.endif +.if !target(configure) +configure: patch ${CONFIGURE_COOKIE} +.endif + +.if !target(build) +build: configure ${BUILD_COOKIE} +.endif + +.if !target(install) +install: build ${INSTALL_COOKIE} +.endif + +.if !target(package) +package: install ${PACKAGE_COOKIE} +.endif + +${EXTRACT_COOKIE}: + @${MAKE} ${.MAKEFLAGS} real-extract ${PATCH_COOKIE}: + @${MAKE} ${.MAKEFLAGS} real-patch +${CONFIGURE_COOKIE}: + @${MAKE} ${.MAKEFLAGS} real-configure +${BUILD_COOKIE}: + @${MAKE} ${.MAKEFLAGS} real-build +${INSTALL_COOKIE}: + @${MAKE} ${.MAKEFLAGS} real-install +${PACKAGE_COOKIE}: + @${MAKE} ${.MAKEFLAGS} real-package + +# And call the macros + +real-fetch: _PORT_USE +real-extract: _PORT_USE + @${ECHO_MSG} "===> Extracting for ${PKGNAME}" +real-patch: _PORT_USE @${ECHO_MSG} "===> Patching for ${PKGNAME}" -.if target(pre-patch) - @${MAKE} ${.MAKEFLAGS} pre-patch -.endif - @if [ -f ${SCRIPTDIR}/pre-patch ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/pre-patch; \ - fi - @${MAKE} ${.MAKEFLAGS} do-patch -.if target(post-patch) - @${MAKE} ${.MAKEFLAGS} post-patch -.endif - @if [ -f ${SCRIPTDIR}/post-patch ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/post-patch; \ - fi -.if !defined(PATCH_CHECK_ONLY) - @${TOUCH} ${TOUCH_FLAGS} ${PATCH_COOKIE} +real-configure: _PORT_USE + @${ECHO_MSG} "===> Configuring for ${PKGNAME}" +real-build: _PORT_USE + @${ECHO_MSG} "===> Building for ${PKGNAME}" +real-install: _PORT_USE + @${ECHO_MSG} "===> Installing for ${PKGNAME}" +real-package: _PORT_USE + +# Empty pre-* and post-* targets, note we can't use .if !target() +# in the _PORT_USE macro + +.for name in fetch extract patch configure build install package + +.if !target(pre-${name}) +pre-${name}: + @${DO_NADA} .endif + +.if !target(post-${name}) +post-${name}: + @${DO_NADA} .endif +.endfor + # Checkpatch # # Special target to verify patches @@ -717,111 +795,9 @@ checkpatch: @${MAKE} PATCH_CHECK_ONLY=yes ${.MAKEFLAGS} patch .endif -# Configure - -.if !target(configure) -configure: patch ${CONFIGURE_COOKIE} - -${CONFIGURE_COOKIE}: - @${ECHO_MSG} "===> Configuring for ${PKGNAME}" -.if target(pre-configure) - @${MAKE} ${.MAKEFLAGS} pre-configure -.endif - @if [ -f ${SCRIPTDIR}/pre-configure ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/pre-configure; \ - fi - @${MAKE} ${.MAKEFLAGS} do-configure -.if target(post-configure) - @${MAKE} ${.MAKEFLAGS} post-configure -.endif - @if [ -f ${SCRIPTDIR}/post-configure ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/post-configure; \ - fi - @${TOUCH} ${TOUCH_FLAGS} ${CONFIGURE_COOKIE} -.endif - -# Build - -.if !target(build) -build: configure ${BUILD_COOKIE} - -${BUILD_COOKIE}: - @${ECHO_MSG} "===> Building for ${PKGNAME}" -.if target(pre-build) - @${MAKE} ${.MAKEFLAGS} pre-build -.endif - @if [ -f ${SCRIPTDIR}/pre-build ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/pre-build; \ - fi - @${MAKE} ${.MAKEFLAGS} do-build -.if target(post-build) - @${MAKE} ${.MAKEFLAGS} post-build -.endif - @if [ -f ${SCRIPTDIR}/post-build ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/post-build; \ - fi - @${TOUCH} ${TOUCH_FLAGS} ${BUILD_COOKIE} -.endif - -# Install - -.if !target(install) -install: build ${INSTALL_COOKIE} - -${INSTALL_COOKIE}: - @${ECHO_MSG} "===> Installing for ${PKGNAME}" -.if !defined(NO_MTREE) - @if [ `id -u` = 0 ]; then \ - ${MTREE_CMD} ${MTREE_ARGS} ${PREFIX}/; \ - else \ - ${ECHO_MSG} "Warning: not superuser, can't run mtree."; \ - ${ECHO_MSG} "Become root and try again to ensure correct permissions."; \ - fi -.endif -.if target(pre-install) - @${MAKE} ${.MAKEFLAGS} pre-install -.endif - @if [ -f ${SCRIPTDIR}/pre-install ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/pre-install; \ - fi - @${MAKE} ${.MAKEFLAGS} do-install -.if target(post-install) - @${MAKE} ${.MAKEFLAGS} post-install -.endif - @if [ -f ${SCRIPTDIR}/post-install ]; then \ - /usr/bin/env CURDIR=${.CURDIR} DISTDIR=${DISTDIR} WRKDIR=${WRKDIR} \ - WRKSRC=${WRKSRC} PATCHDIR=${PATCHDIR} SCRIPTDIR=${SCRIPTDIR} \ - FILESDIR=${FILESDIR} PORTSDIR=${PORTSDIR} PREFIX=${PREFIX} \ - DEPENDS="${DEPENDS}" X11BASE=${X11BASE} \ - /bin/sh ${SCRIPTDIR}/post-install; \ - fi - @${MAKE} ${.MAKEFLAGS} fake-pkg - @${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE} -.endif - # Reinstall # -# This is a special target to re-run install +# Special target to re-run install .if !target(reinstall) reinstall: pre-reinstall install @@ -921,11 +897,12 @@ checksum: fetch .endif ################################################################ -# The package-building targets +# The special package-building targets # You probably won't need to touch these ################################################################ # Nobody should want to override this unless PKGNAME is simply bogus. + .if !target(package-name) package-name: .if !defined(NO_PACKAGE) @@ -934,6 +911,7 @@ package-name: .endif # Show (recursively) all the packages this package depends on. + .if !target(package-depends) package-depends: @for i in ${EXEC_DEPENDS} ${LIB_DEPENDS} ${DEPENDS}; do \ @@ -942,19 +920,6 @@ package-depends: done .endif -# Build a package - -.if !target(package) -package: install ${PACKAGE_COOKIE} - -${PACKAGE_COOKIE}: -.if target(pre-package) - @${MAKE} ${.MAKEFLAGS} pre-package -.endif - @${MAKE} ${.MAKEFLAGS} do-package - @${TOUCH} ${TOUCH_FLAGS} ${PACKAGE_COOKIE} -.endif - # Build a package but don't check the package cookie .if !target(repackage) @@ -969,60 +934,7 @@ pre-repackage: .if !target(package-noinstall) package-noinstall: -.if target(pre-package) - @${MAKE} ${.MAKEFLAGS} pre-package -.endif - @${MAKE} ${.MAKEFLAGS} do-package -.endif - -# The body of the package-building target - -.if !target(do-package) -do-package: - @if [ -e ${PKGDIR}/PLIST ]; then \ - ${ECHO_MSG} "===> Building package for ${PKGNAME}"; \ - if [ -d ${PACKAGES} ]; then \ - if [ ! -d ${PKGREPOSITORY} ]; then \ - if ! /bin/mkdir -p ${PKGREPOSITORY}; then \ - ${ECHO_MSG} ">> Can't create directory ${PKGREPOSITORY}."; \ - exit 1; \ - fi; \ - fi; \ - fi; \ - if ${PKG_CMD} ${PKG_ARGS} ${PKGFILE}; then \ - if [ -d ${PACKAGES} ]; then \ - ${MAKE} ${.MAKEFLAGS} package-links; \ - fi; \ - else \ - ${MAKE} ${.MAKEFLAGS} delete-package; \ - exit 1; \ - fi; \ - fi -.endif - -.if !target(package-links) -package-links: - @${MAKE} ${.MAKEFLAGS} delete-package-links - @for cat in ${CATEGORIES}; do \ - if [ ! -d ${PACKAGES}/$$cat ]; then \ - if ! /bin/mkdir -p ${PACKAGES}/$$cat; then \ - ${ECHO_MSG} ">> Can't create directory ${PACKAGES}/$$cat."; \ - exit 1; \ - fi; \ - fi; \ - ln -s ../${PKGREPOSITORYSUBDIR}/${PKGNAME}${PKG_SUFX} ${PACKAGES}/$$cat; \ - done; -.endif - -.if !target(delete-package-links) -delete-package-links: - @/bin/rm -f ${PACKAGES}/[a-z]*/${PKGNAME}${PKG_SUFX}; -.endif - -.if !target(delete-package) -delete-package: - @${MAKE} ${.MAKEFLAGS} delete-package-links - @/bin/rm -f ${PKGFILE} + @${MAKE} ${.MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package .endif ################################################################