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/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}/README.html">${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}</A>
+
+.PHONY: package-name
+package-name:
+.if (${PACKAGE_NAME_TYPE} == "html")
+       @${ECHO} '<a href="../../${PKGPATH:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/g}/README.html">${PKGNAME:S/&/\&amp;/g:S/>/\&gt;/g:S/</\&lt;/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