1# $NetBSD: bsd.syspkg.mk,v 1.2 2002/03/29 20:56:28 jwise Exp $ 2# 3# This file is derived from: 4# 5# NetBSD: bsd.pkg.mk,v 1.636 2001/01/05 18:03:14 jlam Exp 6# 7# Plus many fixes and improvements from later revisions. 8# 9# However, it has been pared down to a minimum of targets, and 10# adapted to the standard bsd.*.mk world order. 11# 12# Portions of this code are copyright (c) 2000-2002 Jim Wise 13# 14 15.if !target(__initialized__) 16__initialized__: 17.if exists(${.CURDIR}/../Makefile.inc) 18.include "${.CURDIR}/../Makefile.inc" 19.endif 20.include <bsd.own.mk> 21.include <bsd.obj.mk> 22.MAIN: all 23.endif 24 25PREFIX:= ${DESTDIR}/${PREFIX} 26 27OPSYS= NetBSD 28OS_VERSION!= sh ${.PARSEDIR}/../../../sys/conf/osrelease.sh 29 30# keep bsd.own.mk from generating an install: target. 31NEED_OWN_INSTALL_TARGET=no 32 33##### Some overrides of defaults below on a per-OS basis. 34 35DEINSTALLDEPENDS?= NO # add -R to pkg_delete 36 37PKGSRCDIR?= ${.CURDIR:C|/[^/]*/[^/]*$||} 38PKGVERSION?= ${OS_VERSION}.${TINY_VERSION} 39PKGWILDCARD?= ${PKGBASE}-[0-9]* 40 41# For system packages, we set this here, as the version is auto-generated. 42PKGNAME?= ${PKGBASE}-${PKGVERSION} 43 44PACKAGES?= ${PKGSRCDIR}/../packages 45PKGDIR?= ${.CURDIR} 46 47# Don't change these!!! These names are built into the _TARGET_USE macro, 48# there is no way to refer to them cleanly from within the macro AFAIK. 49PACKAGE_COOKIE= ${WRKDIR}/.package_done 50 51# Miscellaneous overridable commands: 52SHCOMMENT?= ${ECHO_MSG} >/dev/null '***' 53 54MAKE_ENV+= PREFIX=${PREFIX} 55 56TOUCH_FLAGS?= -f 57 58# Debugging levels for this file, dependent on PKG_DEBUG_LEVEL definition 59# 0 == normal, default, quiet operation 60# 1 == all shell commands echoed before invocation 61# 2 == shell "set -x" operation 62PKG_DEBUG_LEVEL?= 0 63_PKG_SILENT= @ 64_PKG_DEBUG= 65 66.if ${PKG_DEBUG_LEVEL} > 0 67_PKG_SILENT= 68.endif 69 70.if ${PKG_DEBUG_LEVEL} > 1 71_PKG_DEBUG= set -x; 72.endif 73 74# In point of fact, this will often be ./obj, as per bsd.obj.mk 75WRKDIR?= . 76 77COMMENT?= ${PKGDIR}/COMMENT 78DESCR= ${PKGDIR}/DESCR 79PLIST= ${WRKDIR}/PLIST 80PLIST_SRC?= ${PKGDIR}/PLIST 81 82 83# Set PKG_INSTALL_FILE to be the name of any INSTALL file 84.if !defined(PKG_INSTALL_FILE) && exists(${PKGDIR}/INSTALL) 85PKG_INSTALL_FILE= ${PKGDIR}/INSTALL 86.endif 87 88# Set PKG_DEINSTALL_FILE to be the name of any DEINSTALL file 89.if !defined(PKG_DEINSTALL_FILE) && exists(${PKGDIR}/DEINSTALL) 90PKG_DEINSTALL_FILE= ${PKGDIR}/DEINSTALL 91.endif 92 93# Set MESSAGE_FILE to be the name of any MESSAGE file 94.if !defined(MESSAGE_FILE) && exists(${PKGDIR}/MESSAGE) 95MESSAGE_FILE= ${PKGDIR}/MESSAGE 96.endif 97 98AWK?= /usr/bin/awk 99CAT?= /bin/cat 100CP?= /bin/cp 101DC?= /usr/bin/dc 102ECHO?= echo # Shell builtin 103FALSE?= false # Shell builtin 104FIND?= /usr/bin/find 105GREP?= /usr/bin/grep 106IDENT?= /usr/bin/ident 107LN?= /bin/ln 108LS?= /bin/ls 109MKDIR?= /bin/mkdir -p 110MV?= /bin/mv 111PKG_TOOLS_BIN?= /usr/sbin 112RM?= /bin/rm 113SED?= /usr/bin/sed 114SETENV?= /usr/bin/env 115SH?= /bin/sh 116TEST?= test # Shell builtin 117TOUCH?= /usr/bin/touch 118TRUE?= true # Shell builtin 119 120PKG_ADD?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_add 121PKG_ADMIN?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_admin 122PKG_CREATE?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_create 123PKG_DELETE?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_delete 124PKG_INFO?= PKG_DBDIR=${PKG_DBDIR} ${PKG_TOOLS_BIN}/pkg_info 125 126.if !defined(PKGTOOLS_VERSION) 127.if !exists(${IDENT}) 128PKGTOOLS_VERSION=${PKGTOOLS_REQD} 129.else 130PKGTOOLS_VERSION!=${IDENT} ${PKG_TOOLS_BIN}/pkg_add ${PKG_TOOLS_BIN}/pkg_admin ${PKG_TOOLS_BIN}/pkg_create ${PKG_TOOLS_BIN}/pkg_delete ${PKG_TOOLS_BIN}/pkg_info | ${AWK} 'BEGIN {n = 0;}; $$1 ~ /\$$NetBSD/ && $$2 !~ /^crt0/ {gsub("/", "", $$4); if ($$4 > n) {n = $$4;}}; END {print n;}' 131.endif 132.endif 133MAKEFLAGS+= PKGTOOLS_VERSION="${PKGTOOLS_VERSION}" 134 135# Latest version of pkgtools required for this file. 136PKGTOOLS_REQD= 20000202 137 138# Check that we're using up-to-date pkg_* tools with this file. 139uptodate-pkgtools: 140 ${_PKG_SILENT}${_PKG_DEBUG} \ 141 if [ ${PKGTOOLS_VERSION} -lt ${PKGTOOLS_REQD} ]; then \ 142 case ${PKGNAME} in \ 143 pkg_install-*) \ 144 ;; \ 145 *) \ 146 ${ECHO} "Your package tools need to be updated to ${PKGTOOLS_REQD:C|(....)(..)(..)|\1/\2/\3|} versions."; \ 147 ${ECHO} "The installed package tools were last updated on ${PKGTOOLS_VERSION:C|(....)(..)(..)|\1/\2/\3|}."; \ 148 ${FALSE} ;; \ 149 esac \ 150 fi 151 152# Files to create for versioning and build information 153BUILD_VERSION_FILE= ${WRKDIR}/.build_version 154BUILD_INFO_FILE= ${WRKDIR}/.build_info 155 156# Files containing size of pkg w/o and w/ all required pkgs 157SIZE_PKG_FILE= ${WRKDIR}/.SizePkg 158SIZE_ALL_FILE= ${WRKDIR}/.SizeAll 159 160.ifndef PKG_ARGS_COMMON 161PKG_ARGS_COMMON= -v -c ${COMMENT} -d ${DESCR} -f ${PLIST} -l 162PKG_ARGS_COMMON+= -b ${BUILD_VERSION_FILE} -B ${BUILD_INFO_FILE} 163PKG_ARGS_COMMON+= -s ${SIZE_PKG_FILE} -S ${SIZE_ALL_FILE} 164PKG_ARGS_COMMON+= -P "`${MAKE} ${MAKEFLAGS} run-depends-list PACKAGE_DEPENDS_QUICK=true|sort -u`" 165.ifdef CONFLICTS 166PKG_ARGS_COMMON+= -C "${CONFLICTS}" 167.endif 168.ifdef PKG_INSTALL_FILE 169PKG_ARGS_COMMON+= -i ${PKG_INSTALL_FILE} 170.endif 171.ifdef PKG_DEINSTALL_FILE 172PKG_ARGS_COMMON+= -k ${PKG_DEINSTALL_FILE} 173.endif 174.ifdef MESSAGE_FILE 175PKG_ARGS_COMMON+= -D ${MESSAGE_FILE} 176.endif 177 178PKG_ARGS_INSTALL= -p ${PREFIX} ${PKG_ARGS_COMMON} 179PKG_ARGS_BINPKG= -p ${PREFIX:C/^${DESTDIR}//} -L ${PREFIX} ${PKG_ARGS_COMMON} 180.endif # !PKG_ARGS_COMMON 181 182PKG_SUFX?= .tgz 183#PKG_SUFX?= .tbz # bzip2(1) pkgs 184# where pkg_add records its dirty deeds. 185PKG_DBDIR?= ${DESTDIR}/var/db/syspkg 186 187# Define SMART_MESSAGES in /etc/mk.conf for messages giving the tree 188# of depencies for building, and the current target. 189.ifdef SMART_MESSAGES 190_PKGSRC_IN?= ===> ${.TARGET} [${PKGNAME}${_PKGSRC_DEPS}] === 191.else 192_PKGSRC_IN?= === 193.endif 194 195# Used to print all the '===>' style prompts - override this to turn them off. 196ECHO_MSG?= ${ECHO} 197 198# How to do nothing. Override if you, for some strange reason, would rather 199# do something. 200DO_NADA?= ${TRUE} 201 202.if !defined(PKGBASE) || !defined(SETNAME) 203.BEGIN: 204 @${ECHO_MSG} "PKGBASE and SETNAME are mandatory." 205 @${FALSE} 206.endif 207 208PKGREPOSITORY?= ${PACKAGES} 209PKGFILE?= ${PKGREPOSITORY}/${PKGNAME}${PKG_SUFX} 210 211.MAIN: all 212 213# Add these defs to the ones dumped into +BUILD_DEFS 214BUILD_DEFS+= OPSYS OS_VERSION MACHINE_ARCH OBJECT_FMT 215 216.if !target(all) 217# We don't build here 218all: 219.endif 220 221################################################################ 222# More standard targets start here. 223# 224# These are the body of the build/install framework. If you are 225# not happy with the default actions, and you can't solve it by 226# adding pre-* or post-* targets/scripts, override these. 227################################################################ 228 229.if !target(show-downlevel) 230show-downlevel: 231 ${_PKG_SILENT}${_PKG_DEBUG} \ 232 found="`${PKG_INFO} -e \"${PKGBASE}<${PKGVERSION}\" || ${TRUE}`";\ 233 if [ "X$$found" != "X" -a "X$$found" != "X${PKGNAME}" ]; then \ 234 ${ECHO} "${PKGBASE} package: $$found installed, pkgsrc version ${PKGNAME}"; \ 235 fi 236.endif 237 238# Package 239 240.if !target(do-package) 241do-package: ${PLIST} 242 ${_PKG_SILENT}${_PKG_DEBUG}\ 243 ${ECHO_MSG} "${_PKGSRC_IN}> Building binary package for ${PKGNAME}"; \ 244 if [ ! -d ${PKGREPOSITORY} ]; then \ 245 ${MKDIR} ${PKGREPOSITORY}; \ 246 if [ $$? -ne 0 ]; then \ 247 ${ECHO_MSG} "=> Can't create directory ${PKGREPOSITORY}."; \ 248 exit 1; \ 249 fi; \ 250 fi; \ 251 if ${PKG_CREATE} ${PKG_ARGS_BINPKG} ${PKGFILE}; then \ 252 (cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} package-links); \ 253 else \ 254 (cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} delete-package); \ 255 exit 1; \ 256 fi 257.endif 258 259# Some support rules for do-package 260 261.if !target(package-links) 262package-links: 263 ${_PKG_SILENT}${_PKG_DEBUG}(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} delete-package-links) 264 ${_PKG_SILENT}${_PKG_DEBUG}for cat in ${CATEGORIES}; do \ 265 if [ ! -d ${PACKAGES}/$$cat ]; then \ 266 ${MKDIR} ${PACKAGES}/$$cat; \ 267 if [ $$? -ne 0 ]; then \ 268 ${ECHO_MSG} "=> Can't create directory ${PACKAGES}/$$cat."; \ 269 exit 1; \ 270 fi; \ 271 fi; \ 272 ${RM} -f ${PACKAGES}/$$cat/${PKGNAME}${PKG_SUFX}; \ 273 ${LN} -s ../${PKGREPOSITORYSUBDIR}/${PKGNAME}${PKG_SUFX} ${PACKAGES}/$$cat; \ 274 done; 275.endif 276 277.if !target(delete-package-links) 278delete-package-links: 279 ${_PKG_SILENT}${_PKG_DEBUG}\ 280 ${FIND} ${PACKAGES} -type l -name ${PKGNAME}${PKG_SUFX} | xargs ${RM} -f 281.endif 282 283.if !target(delete-package) 284delete-package: 285 ${_PKG_SILENT}${_PKG_DEBUG}(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} delete-package-links) 286 ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PKGFILE} 287.endif 288 289################################################################ 290# This is the "generic" package target, actually a macro used from the 291# six main targets. See below for more. 292################################################################ 293 294real-package: 295 ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKEFLAGS} ${.TARGET:S/^real-/pre-/} 296 ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKEFLAGS} ${.TARGET:S/^real-/do-/} 297 ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKEFLAGS} ${.TARGET:S/^real-/post-/} 298 299################################################################ 300# Skeleton targets start here 301# 302# You shouldn't have to change these. Either add the pre-* or 303# post-* targets/scripts or redefine the do-* targets. These 304# targets don't do anything other than checking for cookies and 305# call the necessary targets/scripts. 306################################################################ 307 308.if !target(package) 309package: uptodate-pkgtools ${PACKAGE_COOKIE} 310.endif 311 312${PACKAGE_COOKIE}: 313 ${_PKG_SILENT}${_PKG_DEBUG}(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-package) 314 315# Empty pre-* and post-* targets, note we can't use .if !target() 316# in the _PORT_USE macro 317 318.for name in package 319 320.if !target(pre-${name}) 321pre-${name}: 322 @${DO_NADA} 323.endif 324 325.if !target(post-${name}) 326post-${name}: 327 @${DO_NADA} 328.endif 329 330.endfor 331 332# Deinstall 333# 334# Special target to remove installation 335 336.if !target(deinstall) 337deinstall: real-deinstall 338 339.if (${DEINSTALLDEPENDS} != "NO") 340.if (${DEINSTALLDEPENDS} != "ALL") 341# used for removing stuff in bulk builds 342real-su-deinstall-flags+= -r -R 343# used for "update" target 344.else 345real-su-deinstall-flags+= -r 346.endif 347.endif 348.ifdef PKG_VERBOSE 349real-su-deinstall-flags+= -v 350.endif 351 352real-deinstall: 353 ${_PKG_SILENT}${_PKG_DEBUG} \ 354 found="`${PKG_INFO} -e \"${PKGWILDCARD}\" || ${TRUE}`"; \ 355 if [ "$$found" != "" ]; then \ 356 ${ECHO} Running ${PKG_DELETE} ${real-su-deinstall-flags} $$found ; \ 357 ${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE} ; \ 358 fi 359.for pkg in ${BUILD_DEPENDS:C/:.*$//} 360 ${_PKG_SILENT}${_PKG_DEBUG} \ 361 found="`${PKG_INFO} -e \"${pkg}\" || ${TRUE}`"; \ 362 if [ "$$found" != "" ]; then \ 363 ${ECHO} Running ${PKG_DELETE} $$found ; \ 364 ${PKG_DELETE} ${real-su-deinstall-flags} $$found || ${TRUE} ; \ 365 fi 366.endfor 367.endif # target(deinstall) 368 369 370################################################################ 371# Some more targets supplied for users' convenience 372################################################################ 373 374# The 'info' target can be used to display information about a package. 375info: uptodate-pkgtools 376 ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} ${PKGWILDCARD} 377 378# The 'check' target can be used to check an installed package. 379check: uptodate-pkgtools 380 ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} check ${PKGWILDCARD} 381 382# Cleaning up 383 384.if !target(pre-clean) 385pre-clean: 386 @${DO_NADA} 387.endif 388 389.if !target(clean) 390clean: pre-clean 391 ${RM} -f ${PLIST} ${BUILD_VERSION_FILE} ${BUILD_INFO_FILE} ${SIZE_PKG_FILE} ${SIZE_ALL_FILE} 392.endif 393 394.if !target(cleandir) 395cleandir: clean 396.endif 397 398# Install binary pkg, without strict uptodate-check first 399# (XXX should be able to snarf via FTP. Later...) 400bin-install: 401 @if [ -f ${PKGFILE} ] ; then \ 402 ${ECHO_MSG} "Installing from binary pkg ${PKGFILE}" ; \ 403 ${PKG_ADD} ${PKGFILE} ; \ 404 else \ 405 ${SHCOMMENT} Cycle through some FTP server here ;\ 406 ${ECHO_MSG} "Installing from source" ; \ 407 (cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} package && \ 408 ${MAKE} ${MAKEFLAGS} clean) ; \ 409 fi 410 411 412################################################################ 413# The special package-building targets 414# You probably won't need to touch these 415################################################################ 416 417# Nobody should want to override this unless PKGNAME is simply bogus. 418 419.if !target(package-name) 420package-name: 421 @${ECHO} ${PKGNAME} 422.endif # !target(package-name) 423 424# Show (recursively) all the packages this package depends on. 425# If PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible) 426PACKAGE_DEPENDS_WITH_PATTERNS?=true 427# To be used (-> true) ONLY if the pkg in question is known to be installed 428# (i.e. when calling for pkg_create args, and for fake-pkg) 429# Will probably not work with PACKAGE_DEPENDS_WITH_PATTERNS=false ... 430PACKAGE_DEPENDS_QUICK?=false 431.if !target(run-depends-list) 432run-depends-list: 433.for dep in ${DEPENDS} 434 ${_PKG_SILENT}${_PKG_DEBUG} \ 435 pkg="${dep:C/:.*//}"; \ 436 dir="${dep:C/[^:]*://}"; \ 437 cd ${.CURDIR}; \ 438 if ${PACKAGE_DEPENDS_WITH_PATTERNS}; then \ 439 ${ECHO} "$$pkg"; \ 440 else \ 441 if cd $$dir 2>/dev/null; then \ 442 (cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} package-name; \ 443 else \ 444 ${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \ 445 fi; \ 446 fi; \ 447 if ${PACKAGE_DEPENDS_QUICK} ; then \ 448 ${PKG_INFO} -qf "$$pkg" | ${AWK} '/^@pkgdep/ {print $$2}'; \ 449 else \ 450 if cd $$dir 2>/dev/null; then \ 451 (cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} run-depends-list; \ 452 else \ 453 ${ECHO_MSG} "Warning: \"$$dir\" non-existent -- @pkgdep registration incomplete" >&2; \ 454 fi; \ 455 fi 456.endfor 457.endif # target(run-depends-list) 458 459# Build a package but don't check the package cookie 460 461.if !target(repackage) 462repackage: pre-repackage package 463 464pre-repackage: 465 ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${PACKAGE_COOKIE} 466.endif 467 468# Build a package but don't check the cookie for installation, also don't 469# install package cookie 470 471.if !target(package-noinstall) 472package-noinstall: 473 ${_PKG_SILENT}${_PKG_DEBUG}(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} PACKAGE_NOINSTALL=yes real-package) 474.endif 475 476################################################################ 477# Dependency checking 478################################################################ 479 480.if !target(install-depends) 481install-depends: 482.endif 483 484################################################################ 485# Everything after here are internal targets and really 486# shouldn't be touched by anybody but the release engineers. 487################################################################ 488 489.if !target(show-pkgtools-version) 490show-pkgtools-version: 491 @${ECHO} ${PKGTOOLS_VERSION} 492.endif 493 494# convenience target, to display make variables from command line 495# i.e. "make show-var VARNAME=var", will print var's value 496show-var: 497 @${ECHO} "${${VARNAME}}" 498 499# Stat all the files of one pkg and sum the sizes up. 500# 501# XXX This is intended to be run before pkg_create is called, so the 502# existence of ${PLIST} can be assumed. 503print-pkg-size-this: 504 @${SHCOMMENT} "This pkg's files" ; \ 505 ${AWK} 'BEGIN { base = "${PREFIX}/" } \ 506 /^@cwd/ { base = $$2 "/" } \ 507 /^@ignore/ { next } \ 508 NF == 1 { print base $$1 }' \ 509 <${PLIST} \ 510 | sort -u \ 511 | ${SED} -e 's, ,\\ ,g' \ 512 | xargs ${LS} -ld \ 513 | ${AWK} 'BEGIN { print("0 "); } \ 514 { print($$5, " + "); } \ 515 END { print("p"); }' \ 516 | ${DC} 517 518# Sizes of required pkgs (only) 519# 520# XXX This is intended to be run before pkg_create is called, so the 521# dependencies are all installed. 522print-pkg-size-depends: 523 @(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} run-depends-list PACKAGE_DEPENDS_QUICK=true) \ 524 | xargs -n 1 ${SETENV} ${PKG_INFO} -e \ 525 | sort -u \ 526 | xargs ${SETENV} ${PKG_INFO} -qs \ 527 | ${AWK} -- 'BEGIN { print("0 "); } \ 528 /^[0-9]+$$/ { print($$1, " + "); } \ 529 END { print("p"); }' \ 530 | ${DC} 531 532 533# Fake installation of package so that user can pkg_delete it later. 534# Also, make sure that an installed package is recognized correctly in 535# accordance to the @pkgdep directive in the packing lists 536 537.if !target(register) 538register: fake-pkg 539.endif 540 541.if !target(fake-pkg) 542fake-pkg: ${PLIST} 543 ${_PKG_SILENT}${_PKG_DEBUG}\ 544 if [ ! -f ${PLIST} -o ! -f ${COMMENT} -o ! -f ${DESCR} ]; then \ 545 ${ECHO} "** Missing package files for ${PKGNAME} - installation not recorded."; \ 546 exit 1; \ 547 fi 548 ${_PKG_SILENT}${_PKG_DEBUG}\ 549 if [ ! -d ${PKG_DBDIR} ]; then \ 550 ${RM} -f ${PKG_DBDIR}; \ 551 ${MKDIR} ${PKG_DBDIR}; \ 552 fi 553.if defined(FORCE_PKG_REGISTER) 554 ${_PKG_SILENT}${_PKG_DEBUG}${PKG_DELETE} -O ${PKGNAME} 555 ${_PKG_SILENT}${_PKG_DEBUG}${RM} -rf ${PKG_DBDIR}/${PKGNAME} 556.endif 557 ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${BUILD_VERSION_FILE} ${BUILD_INFO_FILE} 558 ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${SIZE_PKG_FILE} ${SIZE_ALL_FILE} 559 ${_PKG_SILENT}${_PKG_DEBUG}\ 560 files=""; \ 561 for f in ${.CURDIR}/Makefile ${FILESDIR}/* ${PKGDIR}/*; do \ 562 if [ -f $$f ]; then \ 563 files="$$files $$f"; \ 564 fi; \ 565 done; \ 566 ${GREP} '\$$NetBSD' $$files | ${SED} -e 's|^${PKGSRCDIR}/||' > ${BUILD_VERSION_FILE}; 567.for def in ${BUILD_DEFS} 568 @${ECHO} ${def}= ${${def}:Q} | ${SED} -e 's|^PATH=[^ ]*|PATH=...|' >> ${BUILD_INFO_FILE} 569.endfor 570 @${ECHO} "CC= ${CC}-`${CC} --version`" >> ${BUILD_INFO_FILE} 571 ${_PKG_SILENT}${_PKG_DEBUG} \ 572 ${ECHO} "_PKGTOOLS_VER=${PKGTOOLS_VERSION}" >> ${BUILD_INFO_FILE} 573 ${_PKG_SILENT}${_PKG_DEBUG} \ 574 size_this=`(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} print-pkg-size-this)`; \ 575 size_depends=`(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} print-pkg-size-depends)`; \ 576 ${ECHO} $$size_this >${SIZE_PKG_FILE}; \ 577 ${ECHO} $$size_this $$size_depends + p | ${DC} >${SIZE_ALL_FILE} 578 ${_PKG_SILENT}${_PKG_DEBUG} \ 579 if [ ! -d ${PKG_DBDIR}/${PKGNAME} ]; then \ 580 ${ECHO_MSG} "${_PKGSRC_IN}> Registering installation for ${PKGNAME}"; \ 581 ${MKDIR} ${PKG_DBDIR}/${PKGNAME}; \ 582 ${PKG_CREATE} ${PKG_ARGS_INSTALL} -O ${PKGFILE} > ${PKG_DBDIR}/${PKGNAME}/+CONTENTS; \ 583 ${CP} ${DESCR} ${PKG_DBDIR}/${PKGNAME}/+DESC; \ 584 ${CP} ${COMMENT} ${PKG_DBDIR}/${PKGNAME}/+COMMENT; \ 585 ${CP} ${BUILD_VERSION_FILE} ${PKG_DBDIR}/${PKGNAME}/+BUILD_VERSION; \ 586 ${CP} ${BUILD_INFO_FILE} ${PKG_DBDIR}/${PKGNAME}/+BUILD_INFO; \ 587 if ${TEST} -e ${SIZE_PKG_FILE}; then \ 588 ${CP} ${SIZE_PKG_FILE} ${PKG_DBDIR}/${PKGNAME}/+SIZE_PKG; \ 589 fi ; \ 590 if ${TEST} -e ${SIZE_ALL_FILE}; then \ 591 ${CP} ${SIZE_ALL_FILE} ${PKG_DBDIR}/${PKGNAME}/+SIZE_ALL; \ 592 fi ; \ 593 if [ -n "${PKG_INSTALL_FILE}" ]; then \ 594 if ${TEST} -e ${PKG_INSTALL_FILE}; then \ 595 ${CP} ${PKG_INSTALL_FILE} ${PKG_DBDIR}/${PKGNAME}/+INSTALL; \ 596 fi; \ 597 fi; \ 598 if [ -n "${PKG_DEINSTALL_FILE}" ]; then \ 599 if ${TEST} -e ${PKG_DEINSTALL_FILE}; then \ 600 ${CP} ${PKG_DEINSTALL_FILE} ${PKG_DBDIR}/${PKGNAME}/+DEINSTALL; \ 601 fi; \ 602 fi; \ 603 if [ -n "${MESSAGE_FILE}" ]; then \ 604 if ${TEST} -e ${MESSAGE_FILE}; then \ 605 ${CP} ${MESSAGE_FILE} ${PKG_DBDIR}/${PKGNAME}/+DISPLAY; \ 606 fi; \ 607 fi; \ 608 list="`(cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} run-depends-list PACKAGE_DEPENDS_QUICK=true ECHO_MSG=${TRUE} | sort -u)`" ; \ 609 for dep in $$list; do \ 610 realdep="`${PKG_INFO} -e \"$$dep\" || ${TRUE}`" ; \ 611 if [ `${ECHO} $$realdep | wc -w` -gt 1 ]; then \ 612 ${ECHO} '***' "WARNING: '$$dep' expands to several installed packages " ; \ 613 ${ECHO} " (" `${ECHO} $$realdep` ")." ; \ 614 ${ECHO} " Please check if this is really intended!" ; \ 615 continue ; \ 616 fi ; \ 617 done ; \ 618 for realdep in `echo $$list | xargs -n 1 ${SETENV} ${PKG_INFO} -e | sort -u`; do \ 619 if ${TEST} -z "$$realdep"; then \ 620 ${ECHO} "$$dep not installed - dependency NOT registered" ; \ 621 elif [ -d ${PKG_DBDIR}/$$realdep ]; then \ 622 if ${TEST} ! -e ${PKG_DBDIR}/$$realdep/+REQUIRED_BY; then \ 623 ${TOUCH} ${PKG_DBDIR}/$$realdep/+REQUIRED_BY; \ 624 fi; \ 625 ${AWK} 'BEGIN { found = 0; } \ 626 $$0 == "${PKGNAME}" { found = 1; } \ 627 { print $$0; } \ 628 END { if (!found) { printf("%s\n", "${PKGNAME}"); }}' \ 629 < ${PKG_DBDIR}/$$realdep/+REQUIRED_BY > ${PKG_DBDIR}/$$realdep/reqby.$$$$; \ 630 ${MV} ${PKG_DBDIR}/$$realdep/reqby.$$$$ ${PKG_DBDIR}/$$realdep/+REQUIRED_BY; \ 631 ${ECHO} "${PKGNAME} requires installed package $$realdep"; \ 632 fi; \ 633 done; \ 634 fi 635.endif 636 637# Depend is generally meaningless for arbitrary packages, but if someone wants 638# one they can override this. This is just to catch people who've gotten into 639# the habit of typing `${MAKE} depend all install' as a matter of course. 640# 641.if !target(depend) 642depend: 643.endif 644 645# Same goes for tags 646.if !target(tags) 647tags: 648.endif 649 650${PLIST}: 651 sh ${.CURDIR}/../../../../sets/makeplist ${SETNAME} ${PKGBASE} > ${PLIST} 652