pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/tv-derecurse]: pkgsrc/mk Factor out package data export bits which ar...
details: https://anonhg.NetBSD.org/pkgsrc/rev/9e578a71f700
branches: tv-derecurse
changeset: 483967:9e578a71f700
user: tv <tv%pkgsrc.org@localhost>
date: Tue Nov 23 18:25:35 2004 +0000
description:
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).
diffstat:
mk/bsd.pkg.data.mk | 541 +++++++++++++++++++++++++++++++
mk/bsd.pkg.mk | 692 ++++-----------------------------------
mk/bsd.prefs.mk | 10 +-
mk/buildlink3/bsd.buildlink3.mk | 4 +-
mk/wrapper/bsd.wrapper.mk | 10 +-
5 files changed, 635 insertions(+), 622 deletions(-)
diffs (truncated from 1530 to 300 lines):
diff -r 9405fc4838dd -r 9e578a71f700 mk/bsd.pkg.data.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mk/bsd.pkg.data.mk Tue Nov 23 18:25:35 2004 +0000
@@ -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:
Home |
Main Index |
Thread Index |
Old Index