diff options
author | tv <tv@pkgsrc.org> | 2004-11-23 18:25:35 +0000 |
---|---|---|
committer | tv <tv@pkgsrc.org> | 2004-11-23 18:25:35 +0000 |
commit | f6f45fbee76f3e7c5b273938469b4050d8a41a96 (patch) | |
tree | ac30f70665454c321603f53c867a90d7b625c793 | |
parent | 004c46c829ad19ce00b08b41c22334f03fbaaf16 (diff) | |
download | pkgsrc-f6f45fbee76f3e7c5b273938469b4050d8a41a96.tar.gz |
Factor out package data export bits which are not used in the normal build
process into a new fragment, bsd.pkg.data.mk.
Fix some include ordering so that most of the dependency logic works
correctly again (though fetch-list is still broken).
-rw-r--r-- | mk/bsd.pkg.data.mk | 541 | ||||
-rw-r--r-- | mk/bsd.pkg.mk | 690 | ||||
-rw-r--r-- | mk/bsd.prefs.mk | 10 | ||||
-rw-r--r-- | mk/buildlink3/bsd.buildlink3.mk | 4 | ||||
-rw-r--r-- | mk/wrapper/bsd.wrapper.mk | 10 |
5 files changed, 634 insertions, 621 deletions
diff --git a/mk/bsd.pkg.data.mk b/mk/bsd.pkg.data.mk new file mode 100644 index 00000000000..6c68a57a188 --- /dev/null +++ b/mk/bsd.pkg.data.mk @@ -0,0 +1,541 @@ +# $NetBSD: bsd.pkg.data.mk,v 1.1.2.1 2004/11/23 18:25:35 tv Exp $ +# +# bsd.pkg.mk fragments for exporting data in human-readable or machine +# parseable formats. +# +# These targets are not called internally by pkgsrc when building packages +# via the "normal" build mechanisms, but some are used by the bulk build +# system (BATCH/bsd.bulk-pkg.mk) or other external processes (README +# and README.html generation). +# +# Targets: +# +## check +## fetch-list +## fetch-list-recursive (internal only) +## fetch-list-one-pkg (internal only) +## info +## lint +## list +## show-all-depends-dirs +## show-depends-dirs +## show-distfiles +## show-downlevel +## show-installed-depends +## show-needs-update +## show-pkgsrc-dir +## show-root-dirs +# + +# show both build and run depends directories (non-recursively) +.PHONY: show-depends-dirs +show-depends-dirs: + @dlist=""; \ + thisdir=`${PWD_CMD}`; \ + for reldir in "" ${DEPENDS:C/^[^:]*://:C/:.*$//} ${BUILD_DEPENDS:C/^[^:]*://:C/:.*$//} ;\ + do \ + if [ "X$$reldir" = "X" ]; then continue; fi; \ + cd $$thisdir/$$reldir; \ + WD=`${PWD_CMD}`; \ + d=`dirname $$WD`; \ + absdir=`basename $$d`/`basename $$WD`; \ + dlist="$$dlist $$absdir"; \ + done; \ + cd $$thisdir; \ + ${ECHO} "$$dlist" + +# Show all build and run depends, reverse-breadth first, with options. + +# "awk" macro to recurse over the dependencies efficiently, never running in +# the same same directory twice. You may set the following options via "-v": +# +# NonSelf = 1 to not print own directory; +# RootsOnly = 1 to print only root directories (i.e. directories +# of packages with no dependencies), including possibly +# own directory +# +_RECURSE_DEPENDS_DIRS= \ + function append_dirs(dir) { \ + command = "cd ../../" dir " && ${MAKE} show-depends-dirs"; \ + command | getline tmp_dirs; \ + close(command); \ + if (tmp_dirs ~ /^$$/) \ + root_dirs[p++] = dir; \ + for (i = 1; i <= split(tmp_dirs, tmp_r); i++) \ + if (!(tmp_r[i] in hash_all_dirs)) { \ + all_dirs[n++] = tmp_r[i]; \ + hash_all_dirs[tmp_r[i]] = 1 \ + } \ + } \ + BEGIN { \ + command = "${PWD_CMD}"; \ + command | getline start_dir; \ + close(command); \ + i = split(start_dir, tmp_r, /\//); \ + all_dirs[n++] = tmp_r[i-1] "/" tmp_r[i]; \ + for (; m < n; ) \ + append_dirs(all_dirs[m++]); \ + if (RootsOnly) { \ + printf("%s", root_dirs[--p]); \ + for (; p > 0; ) \ + printf(" %s", root_dirs[--p]) \ + } \ + else { \ + if (m > NonSelf) \ + printf("%s", all_dirs[--m]); \ + for (; m > NonSelf; ) \ + printf(" %s", all_dirs[--m]) \ + } \ + print \ + } + +_SHOW_ALL_DEPENDS_DIRS_EXCL= ${AWK} -v NonSelf=1 '${_RECURSE_DEPENDS_DIRS}' + +.PHONY: show-all-depends-dirs +show-all-depends-dirs: + @${AWK} '${_RECURSE_DEPENDS_DIRS}' + +.PHONY: show-root-dirs +show-root-dirs: + ${_PKG_SILENT}${_PKG_DEBUG}${AWK} -v RootsOnly=1 '${_RECURSE_DEPENDS_DIRS}' + +.PHONY: show-distfiles +show-distfiles: +.if !defined(PKG_FAIL_REASON) + ${_PKG_SILENT}${_PKG_DEBUG} \ + for file in "" ${_CKSUMFILES}; do \ + if [ "X$$file" = "X" ]; then continue; fi; \ + ${ECHO} $$file; \ + done +.endif + +.PHONY: show-downlevel +show-downlevel: +.if !defined(PKG_FAIL_REASON) + ${_PKG_SILENT}${_PKG_DEBUG} \ + found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \ + if [ "X$$found" != "X" -a "X$$found" != "X${PKGNAME}" ]; then \ + ${ECHO} "${PKGBASE} package: $$found installed, pkgsrc version ${PKGNAME}"; \ + if [ "X$$STOP_DOWNLEVEL_AFTER_FIRST" != "X" ]; then \ + ${ECHO} "stopping after first downlevel pkg found"; \ + exit 1; \ + fi; \ + fi +.endif + +.PHONY: show-installed-depends +show-installed-depends: +.if !empty(DEPENDS) + ${_PKG_SILENT}${_PKG_DEBUG} \ + for i in ${DEPENDS:C/:.*$//:Q:S/\ / /g} ; do \ + echo "$$i =>" `${PKG_BEST_EXISTS} "$$i"` ; \ + done +.endif + +.PHONY: show-needs-update +show-needs-update: +.if !empty(DEPENDS) + ${_PKG_SILENT}${_PKG_DEBUG} \ + for i in `${MAKE} show-all-depends-dirs`; do \ + cd ${PKGSRCDIR}/$$i; \ + want=`${MAKE} show-var-noeval VARNAME=PKGNAME`; \ + wild=`${MAKE} show-var-noeval VARNAME=PKGWILDCARD`; \ + have=`${PKG_BEST_EXISTS} "$$wild" || ${TRUE}`; \ + if [ -z "$$have" ]; then \ + ${ECHO} "$$i => (none) => needs install of $$want"; \ + elif [ "$$have" != "$$want" ]; then \ + ${ECHO} "$$i => $$have => needs update to $$want"; \ + fi; \ + done +.endif + +.PHONY: show-pkgsrc-dir +show-pkgsrc-dir: +.if !defined(PKG_FAIL_REASON) + ${_PKG_SILENT}${_PKG_DEBUG} \ + found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \ + if [ "X$$found" != "X" ]; then \ + ${ECHO} ${PKGPATH}; \ + fi +.endif + +# The 'info' target can be used to display information about a package. +.PHONY: info +info: + ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} "${PKGWILDCARD}" + +# The 'check' target can be used to check an installed package. +.PHONY: check +check: + ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} check "${PKGWILDCARD}" + +# The 'list' target can be used to list the files installed by a package. +.PHONY: list +list: + ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} -L "${PKGWILDCARD}" + +# Run pkglint: +.PHONY: lint +lint: + ${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint | ${GREP} -v ^OK + +# Prints out a script to fetch all needed files (no checksumming). +.PHONY: fetch-list +fetch-list: + @${ECHO} '#!/bin/sh' + @${ECHO} '#' + @${ECHO} '# This is an auto-generated script, the result of running' + @${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"' + @${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".' + @${ECHO} '#' + @${MAKE} ${MAKEFLAGS} fetch-list-recursive + +.PHONY: fetch-list-recursive +fetch-list-recursive: + ${_PKG_SILENT}${_PKG_DEBUG} \ + for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do \ + (cd ../../$$dir && \ + ${MAKE} ${MAKEFLAGS} fetch-list-one-pkg \ + | ${AWK} ' \ + /^[^#]/ { FoundSomething = 1 } \ + /^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \ + /^echo/ { gsub(/;[[:space:]]+/, "\n") } \ + { block[line_c++] = $$0 } \ + END { if (FoundSomething) \ + for (line = 0; line < line_c; line++) \ + print block[line] } \ + ') \ + done + +.PHONY: fetch-list-one-pkg +fetch-list-one-pkg: +.if !empty(_ALLFILES) + @${ECHO} + @${ECHO} '#' + @location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \ + ${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...' + @${ECHO} '#' + @${MKDIR} ${_DISTDIR} +. for fetchfile in ${_ALLFILES} +. if defined(_FETCH_MESSAGE) + @(cd ${_DISTDIR}; \ + if [ ! -f ${fetchfile:T} ]; then \ + ${ECHO}; \ + filesize=`${AWK} ' \ + /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ + ' ${DISTINFO_FILE}` || true; \ + ${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \ + ${ECHO} '#'; \ + ${ECHO} ${_FETCH_MESSAGE:Q}; \ + fi) +. elif defined(DYNAMIC_MASTER_SITES) + @(cd ${_DISTDIR}; \ + if [ ! -f ${fetchfile:T} ]; then \ + ${ECHO}; \ + filesize=`${AWK} ' \ + /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ + ' ${DISTINFO_FILE}` || true; \ + ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \ + ${ECHO} '#'; \ + ${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |('; \ + ${CAT} ${FILESDIR}/getsite.sh; \ + ${ECHO} EOF; \ + ${ECHO} read unsorted_sites; \ + ${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \ + ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \ + ${ECHO} "${MKDIR} ${_DISTDIR}"; \ + ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \ + ${ECHO} 'for site in $$sites; do'; \ + ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \ + ${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \ + ${ECHO} done; \ + ${ECHO} ')'; \ + fi) +. else + @(cd ${_DISTDIR}; \ + if [ ! -f ${fetchfile:T} ]; then \ + ${ECHO}; \ + filesize=`${AWK} ' \ + /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ + ' ${DISTINFO_FILE}` || true; \ + ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \ + ${ECHO} '#'; \ + ${ECHO} 'unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \ + ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \ + ${ECHO} "${MKDIR} ${_DISTDIR}"; \ + ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \ + ${ECHO} 'for site in $$sites; do'; \ + ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \ + ${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \ + ${ECHO} done; \ + fi) +. endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES) +. endfor +.endif # !empty(_ALLFILES) + +# Set to "html" by the README.html target to generate HTML code, +# or to "svr4" to print SVR4 (Solaris, ...) short package names, from +# SVR4_PKGNAME variable. +# This variable is passed down via build-depends-list and run-depends-list +PACKAGE_NAME_TYPE?= name + +# Nobody should want to override this unless PKGNAME is simply bogus. +HTML_PKGNAME=<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A> + +.PHONY: package-name +package-name: +.if (${PACKAGE_NAME_TYPE} == "html") + @${ECHO} '<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A>' +.elif (${PACKAGE_NAME_TYPE} == "svr4") + @${ECHO} ${SVR4_PKGNAME} +.else + @${ECHO} ${PKGNAME} +.endif # PACKAGE_NAME_TYPE + +.PHONY: make-readme-html-help +make-readme-html-help: + @${ECHO} '${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</a>: <TD>'${COMMENT:S/&/\&/g:S/>/\>/g:S/</\</g:Q} + +# If PACKAGES is set to the default (../../pkgsrc/packages), the current +# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory +# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed. +# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on +# the target used to generate the README.html file. +.PHONY: binpkg-list +binpkg-list: + @if ${TEST} -d ${PACKAGES}; then \ + cd ${PACKAGES}; \ + case ${.CURDIR} in \ + */pkgsrc/packages) \ + for pkg in ${PKGREPOSITORYSUBDIR}/${PKGWILDCARD}${PKG_SUFX} ; \ + do \ + if [ -f "$$pkg" ] ; then \ + pkgname=`${ECHO} $$pkg | ${SED} 's@.*/@@'`; \ + ${ECHO} "<TR><TD>${MACHINE_ARCH}:<TD><a href=\"${PKG_URL}/$$pkg\">$$pkgname</a><TD>(${OPSYS} ${OS_VERSION})"; \ + fi ; \ + done ; \ + ;; \ + *) \ + cd ${PACKAGES}/../..; \ + for i in [1-9].*/*; do \ + if cd ${PACKAGES}/../../$$i/${PKGREPOSITORYSUBDIR} 2>/dev/null; then \ + for j in ${PKGWILDCARD}${PKG_SUFX}; \ + do \ + if [ -f "$$j" ]; then \ + ${ECHO} $$i/$$j;\ + fi; \ + done; \ + fi; \ + done | ${AWK} -F/ ' \ + { \ + release = $$1; \ + arch = $$2; \ + pkg = $$3; \ + gsub("\\.tgz","", pkg); \ + if (arch != "m68k" && arch != "mipsel") { \ + if (arch in urls) \ + urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a>, " urls[arch]; \ + else \ + urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a> "; \ + } \ + } \ + END { \ + for (av in urls) { \ + split(av, ava, "/"); \ + arch=ava[1]; \ + pkg=ava[2]; \ + release=ava[3]; \ + print "<TR><TD>" arch ":<TD>" urls[av] "<TD>(${OPSYS} " release ")"; \ + } \ + }' | ${SORT} \ + ;; \ + esac; \ + fi + +# This target generates an index entry suitable for aggregation into +# a large index. Format is: +# +# distribution-name|package-path|installation-prefix|comment| \ +# description-file|maintainer|categories|build deps|run deps|for arch| \ +# not for opsys +# +.PHONY: describe +describe: + @${ECHO_N} "${PKGNAME}|${.CURDIR}|"; \ + ${ECHO_N} "${PREFIX}|"; \ + ${ECHO_N} ${COMMENT:Q}; \ + if [ -f ${DESCR_SRC} ]; then \ + ${ECHO_N} "|${DESCR_SRC}"; \ + else \ + ${ECHO_N} "|/dev/null"; \ + fi; \ + ${ECHO_N} "|${MAINTAINER}|${CATEGORIES}|"; \ + case "A${BUILD_DEPENDS}B${DEPENDS}C" in \ + ABC) ;; \ + *) cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`;; \ + esac; \ + ${ECHO_N} "|"; \ + if [ "${DEPENDS}" != "" ]; then \ + cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`; \ + fi; \ + ${ECHO_N} "|"; \ + if [ "${ONLY_FOR_ARCHS}" = "" ]; then \ + ${ECHO_N} "any"; \ + else \ + ${ECHO_N} "${ONLY_FOR_ARCHS}"; \ + fi; \ + ${ECHO_N} "|"; \ + if [ "${NOT_FOR_OPSYS}" = "" ]; then \ + ${ECHO_N} "any"; \ + else \ + ${ECHO_N} "not ${NOT_FOR_OPSYS}"; \ + fi; \ + ${ECHO} "" + +# This target is used to generate README.html files +FTP_PKG_URL_HOST?= ftp://ftp.NetBSD.org +FTP_PKG_URL_DIR?= /pub/NetBSD/packages + +.PHONY: readme readmes +readme readmes: + @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${FTP_PKG_URL_HOST}${FTP_PKG_URL_DIR} + +# This target is used to generate README.html files, very like "readme" +# However, a different target was used for ease of use. +CDROM_PKG_URL_HOST?= file://localhost +CDROM_PKG_URL_DIR?= /usr/pkgsrc/packages + +.PHONY: cdrom-readme +cdrom-readme: + @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${CDROM_PKG_URL_HOST}${CDROM_PKG_URL_DIR} + +README_NAME= ${TEMPLATES}/README.pkg + +# set up the correct license information as a sed expression +.ifdef LICENSE +SED_LICENSE_EXPR= -e 's|%%LICENSE%%|<p>Please note that this package has a ${LICENSE} license.</p>|' +.else +SED_LICENSE_EXPR= -e 's|%%LICENSE%%||' +.endif + +# set up the "more info URL" information as a sed expression +.ifdef HOMEPAGE +SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%|<p>This package has a home page at <a HREF="${HOMEPAGE}">${HOMEPAGE}</a>.</p>|' +.else +SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%||' +.endif + +.PHONY: show-vulnerabilities-html +show-vulnerabilities-html: + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \ + ${AWK} '/^${PKGBASE}[-<>=]+[0-9]/ { gsub("\<", "\\<", $$1); \ + gsub("\>", "\\>", $$1); \ + printf("<LI><STRONG>%s has a %s exploit (see <a href=\"%s\">%s</a> for more details)</STRONG></LI>\n", $$1, $$2, $$3, $$3) }' \ + ${PKGVULNDIR}/pkg-vulnerabilities; \ + fi + +# If PACKAGES is set to the default (../../packages), the current +# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory +# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed. +# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on +# the target used to generate the README.html file. +.PHONY: README.html +README.html: .PRECIOUS + @${SETENV} AWK=${AWK} BMAKE=${MAKE} ../../mk/scripts/mkdatabase -f $@.tmp1 + @if ${TEST} -d ${PACKAGES}; then \ + cd ${PACKAGES}; \ + case `${PWD_CMD}` in \ + ${PKGSRCDIR}/packages) \ + MULTIARCH=no; \ + ;; \ + *) \ + MULTIARCH=yes; \ + ;; \ + esac; \ + cd ${.CURDIR} ; \ + fi; \ + ${AWK} -f ../../mk/scripts/genreadme.awk \ + builddependsfile=/dev/null \ + dependsfile=/dev/null \ + DISTDIR=${DISTDIR} \ + MACHINE_ARCH=${MACHINE_ARCH} \ + MULTIARCH=$$MULTIARCH \ + OPSYS=${OPSYS} \ + OS_VERSION=${OS_VERSION} \ + PACKAGES=${PACKAGES} \ + PKG_SUFX=${PKG_SUFX} \ + PKG_URL=${PKG_URL} \ + PKGREPOSITORYSUBDIR=${PKGREPOSITORYSUBDIR} \ + PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||} \ + TMPDIR=${TMPDIR:U/tmp} \ + SINGLEPKG=${PKGPATH} \ + $@.tmp1 + @${RM} $@.tmp1 + +.PHONY: show-pkgtools-version +show-pkgtools-version: + @${ECHO} ${PKGTOOLS_VERSION} + +.PHONY: print-build-depends-list +print-build-depends-list: +.if !empty(BUILD_DEPENDS) || !empty(DEPENDS) + @${ECHO_N} 'This package requires package(s) "' + @${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u` + @${ECHO} '" to build.' +.endif + +.PHONY: print-run-depends-list +print-run-depends-list: +.if !empty(DEPENDS) + @${ECHO_N} 'This package requires package(s) "' + @${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u` + @${ECHO} '" to run.' +.endif + +# This target is used by the mk/scripts/mkreadme script to generate +# README.html files +.PHONY: print-summary-data +print-summary-data: + @${ECHO} "depends ${PKGPATH} ${DEPENDS}" + @${ECHO} "build_depends ${PKGPATH} ${BUILD_DEPENDS}" + @${ECHO} "conflicts ${PKGPATH} ${CONFLICTS}" + @${ECHO} "index ${PKGPATH} ${PKGNAME}" + @${ECHO} htmlname ${PKGPATH} ${HTML_PKGNAME:Q} + @${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q} + @${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q} + @${ECHO} comment ${PKGPATH} ${COMMENT:Q} + @${ECHO} license ${PKGPATH} ${LICENSE:Q} + @if [ "${ONLY_FOR_ARCHS}" = "" ]; then \ + ${ECHO} "onlyfor ${PKGPATH} any"; \ + else \ + ${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_ARCHS}"; \ + fi; + @if [ "${NOT_FOR_OPSYS}" = "" ]; then \ + ${ECHO} "notfor ${PKGPATH} any"; \ + else \ + ${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_OPSYS}"; \ + fi; + @${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}" + @${ECHO} "categories ${PKGPATH} ${CATEGORIES}" + @if [ -f ${DESCR_SRC} ]; then \ + ${ECHO} "descr ${PKGPATH} ${DESCR_SRC:S;${PKGSRCDIR}/;;g}"; \ + else \ + ${ECHO} "descr ${PKGPATH} /dev/null"; \ + fi + @${ECHO} "prefix ${PKGPATH} ${PREFIX}" + +.PHONY: show-license show-licence +show-license show-licence: + @if [ "${LICENSE}" != "" ]; then \ + if ${TEST} -f ${PKGSRCDIR}/licenses/${LICENSE}; then \ + if [ "${PAGER}" != "" ]; then \ + ${PAGER} ${PKGSRCDIR}/licenses/${LICENSE};\ + else \ + ${CAT} ${PKGSRCDIR}/licenses/${LICENSE};\ + fi \ + else \ + ${ECHO} "Generic ${LICENSE} information not available"; \ + ${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \ + fi \ + fi diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk index c1344eb9297..bbf20a1c7f6 100644 --- a/mk/bsd.pkg.mk +++ b/mk/bsd.pkg.mk @@ -1,19 +1,12 @@ -# $NetBSD: bsd.pkg.mk,v 1.1540.2.4 2004/11/23 17:15:22 tv Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1540.2.5 2004/11/23 18:25:35 tv Exp $ # # This file is in the public domain. # # This file is derived from bsd.port.mk - 940820 Jordan K. Hubbard. # -# Please see the NetBSD packages(7) manual page for details on the +# Please see the pkgsrc/doc/guide manual for details on the # variables used in this make file template. # -# Some interesting targets: -# -# all: Recurses to "make test". -# show-var: Show the value of the variable named by VARNAME. -# show-var-noeval: Same as show-var, but skips phase-specific evaluations. -# show-vars: Show the value of the variables named by VARNAMES. -# show-vars-noeval: Same as show-vars, but skips phase-specific evaluations. ############################################################################ # Include any preferences, if not already included, and common definitions @@ -48,7 +41,7 @@ NOCLEAN?= NO # don't clean up after update REINSTALL?= NO # reinstall upon update SHLIB_HANDLING?= YES # do automatic shared lib handling -### Variant spellings +##### Variant spellings .if defined(LICENCE) && !defined(LICENSE) LICENSE= ${LICENCE} @@ -57,7 +50,7 @@ LICENSE= ${LICENCE} ACCEPTABLE_LICENSES= ${ACCEPTABLE_LICENCES} .endif -### PKGBASE, PKGNAME[_NOREV], PKGVERSION +##### PKGBASE, PKGNAME[_NOREV], PKGVERSION PKGBASE?= ${PKGNAME:C/-[^-]*$//} PKGVERSION?= ${PKGNAME:C/^.*-//} @@ -74,7 +67,7 @@ PKGNAME?= ${DISTNAME} PKGNAME_NOREV= ${PKGNAME} .endif -### PLIST +##### PLIST .if ${PKG_INSTALLATION_TYPE} == "pkgviews" PLIST_TYPE?= dynamic @@ -95,7 +88,7 @@ PLIST_SRC+= ${PKGDIR}/PLIST.common_end . endif .endif # !PLIST_SRC -### Others +##### Others _DISTDIR?= ${DISTDIR}/${DIST_SUBDIR} ALL_TARGET?= all @@ -111,6 +104,8 @@ CONFIGURE_DIRS?= ${WRKSRC} CONFIGURE_SCRIPT?= ./configure EXTRACT_ONLY?= ${DISTFILES} EXTRACT_SUFX?= .tar.gz +INSTALL_DIRS?= ${BUILD_DIRS} +INSTALL_MAKE_FLAGS?= ${MAKE_FLAGS} INSTALL_TARGET?= install INTERACTIVE_STAGE?= none MAINTAINER?= tech-pkg@NetBSD.org @@ -135,7 +130,7 @@ BUILD_DEFS_FIXED+= NO_SRC_ON_FTP NO_SRC_ON_CDROM BUILD_DEFS_FIXED+= NO_BIN_ON_FTP NO_BIN_ON_CDROM BUILD_DEFS_FIXED+= ${OSVERSION_SPECIFIC:DOSVERSION_SPECIFIC} -### Non-overridable constants +##### Non-overridable constants # Latest versions of tools required for correct pkgsrc operation. DIGEST_REQD= 20010302 @@ -161,7 +156,7 @@ PRESERVE_FILE= ${WRKDIR}/.PRESERVE ${targ}_COOKIE= ${WRKDIR}/.${targ}_done .endfor -### Transform USE_* into dependencies +##### Transform USE_* into dependencies .include "../../mk/bsd.pkg.use.mk" @@ -245,12 +240,12 @@ PKG_FAIL_REASON+='ONLY/NOT_FOR_ARCHS/OPSYS are deprecated and must be replaced w .endif .if (${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once") -. if !defined(OBJHOSTNAME) +. if !defined(OBJHOSTNAME) PKG_FAIL_REASON+='PKGSRC_LOCKTYPE needs OBJHOSTNAME defined.' -. elif !exists(${SHLOCK}) +. elif !exists(${SHLOCK}) PKG_FAIL_REASON+='The ${SHLOCK} utility does not exist, and is necessary for locking.' PKG_FAIL_REASON+='Please "${MAKE} install" in ../../pkgtools/shlock.' -. endif +. endif .endif # @@ -437,6 +432,22 @@ _ULIMIT_CMD+= ${ULIMIT_CMD_${res}:D${ULIMIT_CMD_${res}} ; } . endfor . endif +# if automatic manual page compression is done by the package according +# to MANZ's value, set MANCOMPRESSED if MANZ is set +. if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ) +MANCOMPRESSED= yes +MAKE_ENV+= MANZ=${MANZ} +. endif + +# CONF_DEPENDS notes a dependency where the config directory for the +# package matches the dependency's config directory. CONF_DEPENDS is +# only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews". +# +CONF_DEPENDS?= # empty +. if !empty(CONF_DEPENDS) +USE_PKGINSTALL= YES +. endif + .endif # !_PKG_SKIPPED ############################################################################ @@ -537,20 +548,11 @@ PKG_ARGS_BINPKG= -p ${PREFIX:S/^${DESTDIR}//} -L ${PREFIX} ${PKG_ARGS_COMMON} .endif # !_PKG_SKIPPED ############################################################################ -# External bsd.pkg.mk fragments +# External bsd.pkg.mk fragments needing to perform overrides ############################################################################ .if !defined(_PKG_SKIPPED) -# CONF_DEPENDS notes a dependency where the config directory for the -# package matches the dependency's config directory. CONF_DEPENDS is -# only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews". -# -CONF_DEPENDS?= # empty -. if !empty(CONF_DEPENDS) -USE_PKGINSTALL= YES -. endif - USE_PKGINSTALL?= NO . if !empty(USE_PKGINSTALL:M[yY][eE][sS]) . include "../../mk/bsd.pkg.install.mk" @@ -614,7 +616,7 @@ MESSAGE_SUBST+= X11PREFIX=${X11PREFIX} MESSAGE_SUBST_SED= ${MESSAGE_SUBST:S/=/}!/:S/$/!g/:S/^/ -e s!\\\${/} . endif -### Config file related settings - see Packages.txt +##### Config file related settings - see doc/guide PKG_SYSCONFVAR?= ${PKGBASE} PKG_SYSCONFSUBDIR?= # empty @@ -651,7 +653,7 @@ BUILD_DEFS_FIXED+= PKG_SYSCONFBASEDIR PKG_SYSCONFDIR .endif # !_PKG_SKIPPED -### Checksum and other file handling support +##### Checksum and other file handling support # not skipped by _PKG_SKIPPED ALLFILES?= ${DISTFILES} ${PATCHFILES} @@ -864,16 +866,33 @@ BUILD_DEFS_FIXED+= IGNORE_RECOMMENDED . endif . endif +. include "../../mk/tools.mk" + +# If NO_BUILD is defined, default to not needing a compiler. +. if defined(NO_BUILD) +USE_LANGUAGES?= # empty +. endif +. include "../../mk/compiler.mk" + +# USE_BUILDLINK3 == "no" implies NO_BUILDLINK +. if !empty(USE_BUILDLINK3:M[nN][oO]) +NO_BUILDLINK= yes +. endif +. if !defined(NO_BUILDLINK) +. include "../../mk/buildlink3/bsd.buildlink3.mk" +. endif + +##### "depends" target implementation + # Remove some redundant dependencies from the DEPENDS list. . include "../../mk/reduce-depends.mk" _REAL_TARGETS.depends+= depends-message -#===> "install-depends" +#===> "do-depends" -_REAL_TARGETS.depends+= install-depends -.PHONY: install-depends -#install-depends: +_REAL_TARGETS.depends+= do-depends +.PHONY: do-depends .endif # !empty(PKG_PHASES:Mdepends) && !defined(_PKG_SKIPPED) @@ -1045,8 +1064,6 @@ _REAL_TARGETS.patch+= patch-message pre-patch do-patch post-patch do-tools: .OPTIONAL .if !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED) -. include "../../mk/tools.mk" - _REAL_TARGETS.tools+= tools-message pre-tools do-tools post-tools .endif # !empty(PKG_PHASES:Mtools) && !defined(_PKG_SKIPPED) @@ -1058,11 +1075,6 @@ _REAL_TARGETS.tools+= tools-message pre-tools do-tools post-tools do-wrapper: .OPTIONAL .if !empty(PKG_PHASES:Mwrapper) && !defined(_PKG_SKIPPED) -# If NO_BUILD is defined, default to not needing a compiler. -. if defined(NO_BUILD) -USE_LANGUAGES?= # empty -. endif -. include "../../mk/compiler.mk" . include "../../mk/wrapper/bsd.wrapper.mk" _REAL_TARGETS.wrapper+= wrapper-message pre-wrapper do-wrapper post-wrapper @@ -1311,6 +1323,13 @@ pre-install: .OPTIONAL #===> "do-install" _REAL_TARGETS.su-install+= do-install +.PHONY: do-install +.if !target(do-install) +do-install: +. for DIR in ${INSTALL_DIRS} + ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET} +. endfor +.endif #===> "post-install" @@ -1448,6 +1467,17 @@ _REAL_TARGETS.undo-replace+= do-su-undo-replace # Phase `package' ############################################################################ +.PHONY: descr +descr: ${DESCR} +${DESCR}: ${DESCR_SRC} + @${CAT} ${DESCR_SRC} >${DESCR} +.if defined(HOMEPAGE) + @\ + ${ECHO} >>${DESCR} ; \ + ${ECHO} "Homepage:" >>${DESCR} ; \ + ${ECHO} '${HOMEPAGE}' >>${DESCR} +.endif + _REAL_TARGETS.package+= do-su-package _REAL_TARGETS.su-package+= @@ -1516,6 +1546,17 @@ _PKG_ALL_TARGET= test .MAIN: all all dependall: recurse-${_PKG_ALL_TARGET:Ubuild} +# Depend is generally meaningless for arbitrary packages, but if someone wants +# one they can override this. This is just to catch people who've gotten into +# the habit of typing `${MAKE} depend all install' as a matter of course. + +.PHONY: depend +depend: .OPTIONAL + +# Same goes for tags +.PHONY: tags +tags: .OPTIONAL + ##### If this package will be skipped, use placebo targets. .if defined(_PKG_SKIPPED) @@ -2012,138 +2053,6 @@ do-fetch: . endif # !empty(_ALLFILES) .endif -# show both build and run depends directories (non-recursively) -.PHONY: show-depends-dirs -show-depends-dirs: - @dlist=""; \ - thisdir=`${PWD_CMD}`; \ - for reldir in "" ${DEPENDS:C/^[^:]*://:C/:.*$//} ${BUILD_DEPENDS:C/^[^:]*://:C/:.*$//} ;\ - do \ - if [ "X$$reldir" = "X" ]; then continue; fi; \ - cd $$thisdir/$$reldir; \ - WD=`${PWD_CMD}`; \ - d=`dirname $$WD`; \ - absdir=`basename $$d`/`basename $$WD`; \ - dlist="$$dlist $$absdir"; \ - done; \ - cd $$thisdir; \ - ${ECHO} "$$dlist" - -# Show all build and run depends, reverse-breadth first, with options. - -# "awk" macro to recurse over the dependencies efficiently, never running in -# the same same directory twice. You may set the following options via "-v": -# -# NonSelf = 1 to not print own directory; -# RootsOnly = 1 to print only root directories (i.e. directories -# of packages with no dependencies), including possibly -# own directory -# -_RECURSE_DEPENDS_DIRS= \ - function append_dirs(dir) { \ - command = "cd ../../" dir " && ${MAKE} show-depends-dirs"; \ - command | getline tmp_dirs; \ - close(command); \ - if (tmp_dirs ~ /^$$/) \ - root_dirs[p++] = dir; \ - for (i = 1; i <= split(tmp_dirs, tmp_r); i++) \ - if (!(tmp_r[i] in hash_all_dirs)) { \ - all_dirs[n++] = tmp_r[i]; \ - hash_all_dirs[tmp_r[i]] = 1 \ - } \ - } \ - BEGIN { \ - command = "${PWD_CMD}"; \ - command | getline start_dir; \ - close(command); \ - i = split(start_dir, tmp_r, /\//); \ - all_dirs[n++] = tmp_r[i-1] "/" tmp_r[i]; \ - for (; m < n; ) \ - append_dirs(all_dirs[m++]); \ - if (RootsOnly) { \ - printf("%s", root_dirs[--p]); \ - for (; p > 0; ) \ - printf(" %s", root_dirs[--p]) \ - } \ - else { \ - if (m > NonSelf) \ - printf("%s", all_dirs[--m]); \ - for (; m > NonSelf; ) \ - printf(" %s", all_dirs[--m]) \ - } \ - print \ - } - -_SHOW_ALL_DEPENDS_DIRS_EXCL= ${AWK} -v NonSelf=1 '${_RECURSE_DEPENDS_DIRS}' - -.PHONY: show-all-depends-dirs -show-all-depends-dirs: - @${AWK} '${_RECURSE_DEPENDS_DIRS}' - -.PHONY: show-root-dirs -show-root-dirs: - ${_PKG_SILENT}${_PKG_DEBUG}${AWK} -v RootsOnly=1 '${_RECURSE_DEPENDS_DIRS}' - -.PHONY: show-distfiles -show-distfiles: -.if !defined(PKG_FAIL_REASON) - ${_PKG_SILENT}${_PKG_DEBUG} \ - for file in "" ${_CKSUMFILES}; do \ - if [ "X$$file" = "X" ]; then continue; fi; \ - ${ECHO} $$file; \ - done -.endif - -.PHONY: show-downlevel -show-downlevel: -.if !defined(PKG_FAIL_REASON) - ${_PKG_SILENT}${_PKG_DEBUG} \ - found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \ - if [ "X$$found" != "X" -a "X$$found" != "X${PKGNAME}" ]; then \ - ${ECHO} "${PKGBASE} package: $$found installed, pkgsrc version ${PKGNAME}"; \ - if [ "X$$STOP_DOWNLEVEL_AFTER_FIRST" != "X" ]; then \ - ${ECHO} "stopping after first downlevel pkg found"; \ - exit 1; \ - fi; \ - fi -.endif - -.PHONY: show-installed-depends -show-installed-depends: -.if !empty(DEPENDS) - ${_PKG_SILENT}${_PKG_DEBUG} \ - for i in ${DEPENDS:C/:.*$//:Q:S/\ / /g} ; do \ - echo "$$i =>" `${PKG_BEST_EXISTS} "$$i"` ; \ - done -.endif - -.PHONY: show-needs-update -show-needs-update: -.if !empty(DEPENDS) - ${_PKG_SILENT}${_PKG_DEBUG} \ - for i in `${MAKE} show-all-depends-dirs`; do \ - cd ${PKGSRCDIR}/$$i; \ - want=`${MAKE} show-var-noeval VARNAME=PKGNAME`; \ - wild=`${MAKE} show-var-noeval VARNAME=PKGWILDCARD`; \ - have=`${PKG_BEST_EXISTS} "$$wild" || ${TRUE}`; \ - if [ -z "$$have" ]; then \ - ${ECHO} "$$i => (none) => needs install of $$want"; \ - elif [ "$$have" != "$$want" ]; then \ - ${ECHO} "$$i => $$have => needs update to $$want"; \ - fi; \ - done -.endif - -.PHONY: show-pkgsrc-dir -show-pkgsrc-dir: -.if !defined(PKG_FAIL_REASON) - ${_PKG_SILENT}${_PKG_DEBUG} \ - found="`${PKG_BEST_EXISTS} \"${PKGWILDCARD}\" || ${TRUE}`"; \ - if [ "X$$found" != "X" ]; then \ - ${ECHO} ${PKGPATH}; \ - fi -.endif - # Extract ${WRKDIR}: @@ -2650,19 +2559,6 @@ do-test: . endif .endif -# Install - -INSTALL_DIRS?= ${BUILD_DIRS} -INSTALL_MAKE_FLAGS?= ${MAKE_FLAGS} - -.PHONY: do-install -.if !target(do-install) -do-install: -. for DIR in ${INSTALL_DIRS} - ${_PKG_SILENT}${_PKG_DEBUG}${_ULIMIT_CMD}cd ${DIR} && ${SETENV} ${MAKE_ENV} ${MAKE_PROGRAM} ${INSTALL_MAKE_FLAGS} -f ${MAKEFILE} ${INSTALL_TARGET} -. endfor -.endif - # Package .PHONY: real-su-package @@ -2996,26 +2892,6 @@ ${DLIST}: ${WRKDIR} ${AWK} '{ l[NR]=$$0 } END { for (i=NR;i>0;--i) print l[i] }' \ || ${TRUE}; } > ${DLIST} -# The 'info' target can be used to display information about a package. -.PHONY: info -info: - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} "${PKGWILDCARD}" - -# The 'check' target can be used to check an installed package. -.PHONY: check -check: - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_ADMIN} check "${PKGWILDCARD}" - -# The 'list' target can be used to list the files installed by a package. -.PHONY: list -list: - ${_PKG_SILENT}${_PKG_DEBUG}${PKG_INFO} -L "${PKGWILDCARD}" - -# Run pkglint: -.PHONY: lint -lint: - ${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint | ${GREP} -v ^OK - # Create a binary package from an install package using "pkg_tarup" .PHONY: tarup tarup: @@ -3145,100 +3021,6 @@ distclean: pre-distclean clean .endif -${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html -# Prints out a script to fetch all needed files (no checksumming). -.PHONY: fetch-list -fetch-list: - @${ECHO} '#!/bin/sh' - @${ECHO} '#' - @${ECHO} '# This is an auto-generated script, the result of running' - @${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"' - @${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".' - @${ECHO} '#' - @${MAKE} ${MAKEFLAGS} fetch-list-recursive - -.PHONY: fetch-list-recursive -fetch-list-recursive: - ${_PKG_SILENT}${_PKG_DEBUG} \ - for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do \ - (cd ../../$$dir && \ - ${MAKE} ${MAKEFLAGS} fetch-list-one-pkg \ - | ${AWK} ' \ - /^[^#]/ { FoundSomething = 1 } \ - /^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \ - /^echo/ { gsub(/;[[:space:]]+/, "\n") } \ - { block[line_c++] = $$0 } \ - END { if (FoundSomething) \ - for (line = 0; line < line_c; line++) \ - print block[line] } \ - ') \ - done - -.PHONY: fetch-list-one-pkg -fetch-list-one-pkg: -.if !empty(_ALLFILES) - @${ECHO} - @${ECHO} '#' - @location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \ - ${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...' - @${ECHO} '#' - @${MKDIR} ${_DISTDIR} -. for fetchfile in ${_ALLFILES} -. if defined(_FETCH_MESSAGE) - @(cd ${_DISTDIR}; \ - if [ ! -f ${fetchfile:T} ]; then \ - ${ECHO}; \ - filesize=`${AWK} ' \ - /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ - ' ${DISTINFO_FILE}` || true; \ - ${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \ - ${ECHO} '#'; \ - ${ECHO} ${_FETCH_MESSAGE:Q}; \ - fi) -. elif defined(DYNAMIC_MASTER_SITES) - @(cd ${_DISTDIR}; \ - if [ ! -f ${fetchfile:T} ]; then \ - ${ECHO}; \ - filesize=`${AWK} ' \ - /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ - ' ${DISTINFO_FILE}` || true; \ - ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \ - ${ECHO} '#'; \ - ${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |('; \ - ${CAT} ${FILESDIR}/getsite.sh; \ - ${ECHO} EOF; \ - ${ECHO} read unsorted_sites; \ - ${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \ - ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \ - ${ECHO} "${MKDIR} ${_DISTDIR}"; \ - ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \ - ${ECHO} 'for site in $$sites; do'; \ - ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \ - ${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \ - ${ECHO} done; \ - ${ECHO} ')'; \ - fi) -. else - @(cd ${_DISTDIR}; \ - if [ ! -f ${fetchfile:T} ]; then \ - ${ECHO}; \ - filesize=`${AWK} ' \ - /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \ - ' ${DISTINFO_FILE}` || true; \ - ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \ - ${ECHO} '#'; \ - ${ECHO} 'unsorted_sites="${SITES_${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \ - ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \ - ${ECHO} "${MKDIR} ${_DISTDIR}"; \ - ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \ - ${ECHO} 'for site in $$sites; do'; \ - ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \ - ${ECHO} ' ${ECHO} ${fetchfile} not fetched'; \ - ${ECHO} done; \ - fi) -. endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES) -. endfor -.endif # !empty(_ALLFILES) - # List of sites carrying binary pkgs. Variables "rel" and "arch" are # replaced with OS release ("1.5", ...) and architecture ("mipsel", ...) BINPKG_SITES?= \ @@ -3295,36 +3077,11 @@ bin-install: action="binary install"; \ ${_SU_TARGET} - - ################################################################ # The special package-building targets # You probably won't need to touch these ################################################################ -# Set to "html" by the README.html target to generate HTML code, -# or to "svr4" to print SVR4 (Solaris, ...) short package names, from -# SVR4_PKGNAME variable. -# This variable is passed down via build-depends-list and run-depends-list -PACKAGE_NAME_TYPE?= name - -# Nobody should want to override this unless PKGNAME is simply bogus. -HTML_PKGNAME=<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A> - -.PHONY: package-name -package-name: -.if (${PACKAGE_NAME_TYPE} == "html") - @${ECHO} '<a href="../../${PKGPATH:S/&/\&/g:S/>/\>/g:S/</\</g}/README.html">${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</A>' -.elif (${PACKAGE_NAME_TYPE} == "svr4") - @${ECHO} ${SVR4_PKGNAME} -.else - @${ECHO} ${PKGNAME} -.endif # PACKAGE_NAME_TYPE - -.PHONY: make-readme-html-help -make-readme-html-help: - @${ECHO} '${PKGNAME:S/&/\&/g:S/>/\>/g:S/</\</g}</a>: <TD>'${COMMENT:S/&/\&/g:S/>/\>/g:S/</\</g:Q} - # Show (recursively) all the packages this package depends on. # If PACKAGE_DEPENDS_WITH_PATTERNS is set, print as pattern (if possible) PACKAGE_DEPENDS_WITH_PATTERNS?=true @@ -3365,12 +3122,11 @@ package-noinstall: # Dependency checking ################################################################ -.PHONY: install-depends # Tells whether to halt execution if the object formats differ FATAL_OBJECT_FMT_SKEW?= yes WARN_NO_OBJECT_FMT?= yes -install-depends: +do-depends: .for dep in ${DEPENDS} ${BUILD_DEPENDS} ${_PKG_SILENT}${_PKG_DEBUG} \ pkg="${dep:C/:.*//}"; \ @@ -3419,256 +3175,6 @@ build-depends-list: ${MAKE} ${MAKEFLAGS} package-name) \ done -# If PACKAGES is set to the default (../../pkgsrc/packages), the current -# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory -# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed. -# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on -# the target used to generate the README.html file. -.PHONY: binpkg-list -binpkg-list: - @if ${TEST} -d ${PACKAGES}; then \ - cd ${PACKAGES}; \ - case ${.CURDIR} in \ - */pkgsrc/packages) \ - for pkg in ${PKGREPOSITORYSUBDIR}/${PKGWILDCARD}${PKG_SUFX} ; \ - do \ - if [ -f "$$pkg" ] ; then \ - pkgname=`${ECHO} $$pkg | ${SED} 's@.*/@@'`; \ - ${ECHO} "<TR><TD>${MACHINE_ARCH}:<TD><a href=\"${PKG_URL}/$$pkg\">$$pkgname</a><TD>(${OPSYS} ${OS_VERSION})"; \ - fi ; \ - done ; \ - ;; \ - *) \ - cd ${PACKAGES}/../..; \ - for i in [1-9].*/*; do \ - if cd ${PACKAGES}/../../$$i/${PKGREPOSITORYSUBDIR} 2>/dev/null; then \ - for j in ${PKGWILDCARD}${PKG_SUFX}; \ - do \ - if [ -f "$$j" ]; then \ - ${ECHO} $$i/$$j;\ - fi; \ - done; \ - fi; \ - done | ${AWK} -F/ ' \ - { \ - release = $$1; \ - arch = $$2; \ - pkg = $$3; \ - gsub("\\.tgz","", pkg); \ - if (arch != "m68k" && arch != "mipsel") { \ - if (arch in urls) \ - urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a>, " urls[arch]; \ - else \ - urls[arch "/" pkg "/" release] = "<a href=\"${PKG_URL}/" release "/" arch "/${PKGREPOSITORYSUBDIR}/" pkg "${PKG_SUFX}\">" pkg "</a> "; \ - } \ - } \ - END { \ - for (av in urls) { \ - split(av, ava, "/"); \ - arch=ava[1]; \ - pkg=ava[2]; \ - release=ava[3]; \ - print "<TR><TD>" arch ":<TD>" urls[av] "<TD>(${OPSYS} " release ")"; \ - } \ - }' | ${SORT} \ - ;; \ - esac; \ - fi - -################################################################ -# Everything after here are internal targets and really -# shouldn't be touched by anybody but the release engineers. -################################################################ - -# This target generates an index entry suitable for aggregation into -# a large index. Format is: -# -# distribution-name|package-path|installation-prefix|comment| \ -# description-file|maintainer|categories|build deps|run deps|for arch| \ -# not for opsys -# -.PHONY: describe -describe: - @${ECHO_N} "${PKGNAME}|${.CURDIR}|"; \ - ${ECHO_N} "${PREFIX}|"; \ - ${ECHO_N} ${COMMENT:Q}; \ - if [ -f ${DESCR_SRC} ]; then \ - ${ECHO_N} "|${DESCR_SRC}"; \ - else \ - ${ECHO_N} "|/dev/null"; \ - fi; \ - ${ECHO_N} "|${MAINTAINER}|${CATEGORIES}|"; \ - case "A${BUILD_DEPENDS}B${DEPENDS}C" in \ - ABC) ;; \ - *) cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u`;; \ - esac; \ - ${ECHO_N} "|"; \ - if [ "${DEPENDS}" != "" ]; then \ - cd ${.CURDIR} && ${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u`; \ - fi; \ - ${ECHO_N} "|"; \ - if [ "${ONLY_FOR_ARCHS}" = "" ]; then \ - ${ECHO_N} "any"; \ - else \ - ${ECHO_N} "${ONLY_FOR_ARCHS}"; \ - fi; \ - ${ECHO_N} "|"; \ - if [ "${NOT_FOR_OPSYS}" = "" ]; then \ - ${ECHO_N} "any"; \ - else \ - ${ECHO_N} "not ${NOT_FOR_OPSYS}"; \ - fi; \ - ${ECHO} "" - -# This target is used to generate README.html files -FTP_PKG_URL_HOST?= ftp://ftp.NetBSD.org -FTP_PKG_URL_DIR?= /pub/NetBSD/packages - -.PHONY: readme readmes -readme readmes: - @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${FTP_PKG_URL_HOST}${FTP_PKG_URL_DIR} - -# This target is used to generate README.html files, very like "readme" -# However, a different target was used for ease of use. -CDROM_PKG_URL_HOST?= file://localhost -CDROM_PKG_URL_DIR?= /usr/pkgsrc/packages - -.PHONY: cdrom-readme -cdrom-readme: - @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} README.html PKG_URL=${CDROM_PKG_URL_HOST}${CDROM_PKG_URL_DIR} - -README_NAME= ${TEMPLATES}/README.pkg - -# set up the correct license information as a sed expression -.ifdef LICENSE -SED_LICENSE_EXPR= -e 's|%%LICENSE%%|<p>Please note that this package has a ${LICENSE} license.</p>|' -.else -SED_LICENSE_EXPR= -e 's|%%LICENSE%%||' -.endif - -# set up the "more info URL" information as a sed expression -.ifdef HOMEPAGE -SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%|<p>This package has a home page at <a HREF="${HOMEPAGE}">${HOMEPAGE}</a>.</p>|' -.else -SED_HOMEPAGE_EXPR= -e 's|%%HOMEPAGE%%||' -.endif - -.PHONY: show-vulnerabilities-html -show-vulnerabilities-html: - ${_PKG_SILENT}${_PKG_DEBUG} \ - if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \ - ${AWK} '/^${PKGBASE}[-<>=]+[0-9]/ { gsub("\<", "\\<", $$1); \ - gsub("\>", "\\>", $$1); \ - printf("<LI><STRONG>%s has a %s exploit (see <a href=\"%s\">%s</a> for more details)</STRONG></LI>\n", $$1, $$2, $$3, $$3) }' \ - ${PKGVULNDIR}/pkg-vulnerabilities; \ - fi - - -# If PACKAGES is set to the default (../../packages), the current -# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory -# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed. -# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on -# the target used to generate the README.html file. -.PHONY: README.html -README.html: .PRECIOUS - @${SETENV} AWK=${AWK} BMAKE=${MAKE} ../../mk/scripts/mkdatabase -f $@.tmp1 - @if ${TEST} -d ${PACKAGES}; then \ - cd ${PACKAGES}; \ - case `${PWD_CMD}` in \ - ${PKGSRCDIR}/packages) \ - MULTIARCH=no; \ - ;; \ - *) \ - MULTIARCH=yes; \ - ;; \ - esac; \ - cd ${.CURDIR} ; \ - fi; \ - ${AWK} -f ../../mk/scripts/genreadme.awk \ - builddependsfile=/dev/null \ - dependsfile=/dev/null \ - DISTDIR=${DISTDIR} \ - MACHINE_ARCH=${MACHINE_ARCH} \ - MULTIARCH=$$MULTIARCH \ - OPSYS=${OPSYS} \ - OS_VERSION=${OS_VERSION} \ - PACKAGES=${PACKAGES} \ - PKG_SUFX=${PKG_SUFX} \ - PKG_URL=${PKG_URL} \ - PKGREPOSITORYSUBDIR=${PKGREPOSITORYSUBDIR} \ - PKGSRCDIR=${.CURDIR:C|/[^/]*/[^/]*$||} \ - TMPDIR=${TMPDIR:U/tmp} \ - SINGLEPKG=${PKGPATH} \ - $@.tmp1 - @${RM} $@.tmp1 - -.PHONY: show-pkgtools-version -show-pkgtools-version: - @${ECHO} ${PKGTOOLS_VERSION} - -.PHONY: print-build-depends-list -print-build-depends-list: -.if !empty(BUILD_DEPENDS) || !empty(DEPENDS) - @${ECHO_N} 'This package requires package(s) "' - @${ECHO_N} `${MAKE} ${MAKEFLAGS} build-depends-list | ${SORT} -u` - @${ECHO} '" to build.' -.endif - -.PHONY: print-run-depends-list -print-run-depends-list: -.if !empty(DEPENDS) - @${ECHO_N} 'This package requires package(s) "' - @${ECHO_N} `${MAKE} ${MAKEFLAGS} run-depends-list | ${SORT} -u` - @${ECHO} '" to run.' -.endif - -# This target is used by the mk/scripts/mkreadme script to generate -# README.html files -.PHONY: print-summary-data -print-summary-data: - @${ECHO} "depends ${PKGPATH} ${DEPENDS}" - @${ECHO} "build_depends ${PKGPATH} ${BUILD_DEPENDS}" - @${ECHO} "conflicts ${PKGPATH} ${CONFLICTS}" - @${ECHO} "index ${PKGPATH} ${PKGNAME}" - @${ECHO} htmlname ${PKGPATH} ${HTML_PKGNAME:Q} - @${ECHO} homepage ${PKGPATH} ${HOMEPAGE:Q} - @${ECHO} wildcard ${PKGPATH} ${PKGWILDCARD:Q} - @${ECHO} comment ${PKGPATH} ${COMMENT:Q} - @${ECHO} license ${PKGPATH} ${LICENSE:Q} - @if [ "${ONLY_FOR_ARCHS}" = "" ]; then \ - ${ECHO} "onlyfor ${PKGPATH} any"; \ - else \ - ${ECHO} "onlyfor ${PKGPATH} ${ONLY_FOR_ARCHS}"; \ - fi; - @if [ "${NOT_FOR_OPSYS}" = "" ]; then \ - ${ECHO} "notfor ${PKGPATH} any"; \ - else \ - ${ECHO} "notfor ${PKGPATH} not ${NOT_FOR_OPSYS}"; \ - fi; - @${ECHO} "maintainer ${PKGPATH} ${MAINTAINER}" - @${ECHO} "categories ${PKGPATH} ${CATEGORIES}" - @if [ -f ${DESCR_SRC} ]; then \ - ${ECHO} "descr ${PKGPATH} ${DESCR_SRC:S;${PKGSRCDIR}/;;g}"; \ - else \ - ${ECHO} "descr ${PKGPATH} /dev/null"; \ - fi - @${ECHO} "prefix ${PKGPATH} ${PREFIX}" - -.PHONY: show-license show-licence -show-license show-licence: - @if [ "${LICENSE}" != "" ]; then \ - if ${TEST} -f ${PKGSRCDIR}/licenses/${LICENSE}; then \ - if [ "${PAGER}" != "" ]; then \ - ${PAGER} ${PKGSRCDIR}/licenses/${LICENSE};\ - else \ - ${CAT} ${PKGSRCDIR}/licenses/${LICENSE};\ - fi \ - else \ - ${ECHO} "Generic ${LICENSE} information not available"; \ - ${ECHO} "See the package description (pkg_info -d ${PKGNAME}) for more information."; \ - fi \ - fi - # Stat all the files of one pkg and sum the sizes up. # # XXX This is intended to be run before pkg_create is called, so the @@ -3976,35 +3482,7 @@ real-su-remove-views: done .endif -# Depend is generally meaningless for arbitrary packages, but if someone wants -# one they can override this. This is just to catch people who've gotten into -# the habit of typing `${MAKE} depend all install' as a matter of course. -# -.PHONY: depend -depend: .OPTIONAL - -# Same goes for tags -.PHONY: tags -tags: .OPTIONAL - -# if automatic manual page compression is done by the package according -# to MANZ's value, set MANCOMPRESSED if MANZ is set -.if defined(MANCOMPRESSED_IF_MANZ) && defined(MANZ) -MANCOMPRESSED= yes -MAKE_ENV+= MANZ="${MANZ}" -.endif - -.PHONY: descr -descr: ${DESCR} -${DESCR}: ${DESCR_SRC} - @${CAT} ${DESCR_SRC} >${DESCR} -.if defined(HOMEPAGE) - @\ - ${ECHO} >>${DESCR} ; \ - ${ECHO} "Homepage:" >>${DESCR} ; \ - ${ECHO} '${HOMEPAGE}' >>${DESCR} -.endif - +.include "../../mk/bsd.pkg.data.mk" .include "../../mk/subst.mk" # diff --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk index caf92bb6e9c..9302a43e2bc 100644 --- a/mk/bsd.prefs.mk +++ b/mk/bsd.prefs.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.prefs.mk,v 1.177.2.2 2004/11/23 17:15:22 tv Exp $ +# $NetBSD: bsd.prefs.mk,v 1.177.2.3 2004/11/23 18:25:35 tv Exp $ # # Make file, included to get the site preferences, if any. Should # only be included by package Makefiles before any .if defined() @@ -289,7 +289,7 @@ PKGDIRMODE?= 755 .if make(package) || make(real-su-package) || \ make(show-var) || make(show-vars) PKG_PHASES= fetch checksum depends extract patch tools wrapper configure build test install package -.elif make(install) || make (real-su-install) || \ +.elif make(install) || make(real-su-install) || \ make(replace) || make(real-su-replace) || \ make(plist) || make(do-shlib-handling) PKG_PHASES= fetch checksum depends extract patch tools wrapper configure build test install @@ -307,11 +307,13 @@ PKG_PHASES= fetch checksum depends extract patch tools PKG_PHASES= fetch checksum depends extract patch .elif make(extract) PKG_PHASES= fetch checksum depends extract -.elif make(depends) +.elif make(depends) || \ + make(show-depends-dirs) PKG_PHASES= fetch checksum depends .elif make(checksum) PKG_PHASES= fetch checksum -.elif make(fetch) +.elif make(fetch) || \ + make(fetch-list-one-pkg) PKG_PHASES= fetch .else PKG_PHASES= # empty diff --git a/mk/buildlink3/bsd.buildlink3.mk b/mk/buildlink3/bsd.buildlink3.mk index 39dfd551ae2..7800b2042aa 100644 --- a/mk/buildlink3/bsd.buildlink3.mk +++ b/mk/buildlink3/bsd.buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.buildlink3.mk,v 1.163.2.1 2004/11/22 22:48:05 tv Exp $ +# $NetBSD: bsd.buildlink3.mk,v 1.163.2.2 2004/11/23 18:25:35 tv Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. @@ -184,7 +184,7 @@ BUILDLINK_DEPMETHOD.${_pkg_}?= full # use the dependency information. # #_BLNK_DEPENDS_LIST= ${_BLNK_RECURSIVE_DEPENDS} # XXXTV PR 24721 -.if !empty(PKG_PHASES:Mextract) +.if !empty(PKG_PHASES:Mdepends) _BLNK_DEPENDS_LIST= ${_BLNK_DEPENDS} .else _BLNK_DEPENDS_LIST= # empty diff --git a/mk/wrapper/bsd.wrapper.mk b/mk/wrapper/bsd.wrapper.mk index c8b6e3c9e46..04e25997eb8 100644 --- a/mk/wrapper/bsd.wrapper.mk +++ b/mk/wrapper/bsd.wrapper.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.wrapper.mk,v 1.12.2.1 2004/11/22 22:48:05 tv Exp $ +# $NetBSD: bsd.wrapper.mk,v 1.12.2.2 2004/11/23 18:25:35 tv Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. @@ -49,14 +49,6 @@ _WRAP_VARS_MK= ${WRAPPER_DIR}/vars.mk .PHONY: do-wrapper -# USE_BUILDLINK3 == "no" implies NO_BUILDLINK -.if !empty(USE_BUILDLINK3:M[nN][oO]) -NO_BUILDLINK= yes -.endif -.if !defined(NO_BUILDLINK) -. include "../../mk/buildlink3/bsd.buildlink3.mk" -.endif - # Create the saved variables Makefile fragment to pass variables # through to sub-make processes invoked on the same Makefile. # |