pkgpath.mk 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. # $OpenBSD: pkgpath.mk,v 1.66 2017/05/17 11:16:38 espie Exp $
  2. # ex:ts=4 sw=4 filetype=make:
  3. # pkgpath.mk - 2003 Marc Espie
  4. # This file is in the public domain.
  5. # definitions common to bsd.port.mk and bsd.port.subdir.mk
  6. PORTSDIR_PATH ?= ${PORTSDIR}:${PORTSDIR}/mystuff
  7. TMPDIR ?= /tmp
  8. DANGEROUS ?= No
  9. _PERLSCRIPT = /usr/bin/perl ${PORTSDIR}/infrastructure/bin
  10. .if !defined(PKGPATH)
  11. PKGPATH != PORTSDIR_PATH=${PORTSDIR_PATH} \
  12. ${_PERLSCRIPT}/getpkgpath ${.CURDIR}
  13. . if empty(PKGPATH)
  14. ERRORS += "Fatal: can't figure out PKGPATH"
  15. PKGPATH =${.CURDIR}
  16. . endif
  17. .endif
  18. # Code to invoke to split dir,-multi,flavor
  19. _pflavor_fragment = \
  20. broken() { \
  21. echo 1>&2 ">> Broken dependency: $$@ $$extra_msg"; \
  22. reported=true; \
  23. } ; \
  24. multi=''; flavor=''; space=''; \
  25. reported=false; found_dir=false; sawmulti=false; \
  26. case "$$subdir" in \
  27. "") \
  28. broken "empty directory";; \
  29. *,*) \
  30. esubdir=$$subdir,; IFS=,; first=true; \
  31. for i in $$esubdir; do \
  32. if $$first; then \
  33. dir=$$i; first=false; continue; \
  34. fi; \
  35. case X"$$i" in \
  36. X-*) \
  37. if $$sawmulti; then \
  38. broken "several subpackages in $$subdir"; \
  39. fi; \
  40. multi="$$i"; sawmulti=true;; \
  41. ,) \
  42. sawflavor=true;; \
  43. *) \
  44. sawflavor=true; \
  45. flavor="$$flavor$$space$$i"; \
  46. space=' ';; \
  47. esac \
  48. done; \
  49. unset IFS;; \
  50. *) \
  51. dir=$$subdir;; \
  52. esac; \
  53. toset="PKGPATH=$$dir ARCH=${ARCH}"; \
  54. case X"$$multi" in \
  55. X) unset SUBPACKAGE || true;; \
  56. *) toset="$$toset SUBPACKAGE=\"$$multi\"";; \
  57. esac; \
  58. case $$dir in \
  59. */) broken "$$dir ends with /";; \
  60. *//*) broken "$$dir contains //";; \
  61. esac; \
  62. if $$sawflavor; then \
  63. toset="$$toset FLAVOR=\"$$flavor\""; \
  64. else \
  65. unset FLAVOR||true; \
  66. fi; \
  67. if ! $$reported; then \
  68. IFS=:; bases=${PORTSDIR_PATH}; \
  69. for base in $$bases; do \
  70. cd $$base 2>/dev/null || continue; \
  71. if [ -L $$dir ]; then \
  72. broken "$$base/$$dir is a symbolic link"; \
  73. break; \
  74. fi; \
  75. if cd $$dir 2>/dev/null; then \
  76. found_dir=true; \
  77. break; \
  78. fi; \
  79. done; unset IFS; \
  80. fi; \
  81. $$found_dir || $$reported || broken "$$dir non existent"; \
  82. $$found_dir
  83. _flavor_fragment = sawflavor=false; ${_pflavor_fragment}
  84. _depfile_fragment = \
  85. case X$${_DEPENDS_FILE} in \
  86. X) _DEPENDS_FILE=$$(mktemp ${TMPDIR}/depends.XXXXXXXXX|| exit 1); \
  87. export _DEPENDS_FILE; \
  88. trap "rm -f $${_DEPENDS_FILE}" 0; \
  89. trap 'exit 1' 1 2 3 13 15;; \
  90. esac
  91. GLOBAL_DEPENDS_CACHE ?=
  92. # XXX this is to speed up dpb builds beware of consequences !
  93. .if !empty(GLOBAL_DEPENDS_CACHE)
  94. _cache_fragment = \
  95. mkdir -p ${GLOBAL_DEPENDS_CACHE}; \
  96. _DEPENDS_CACHE=${GLOBAL_DEPENDS_CACHE}; \
  97. PKG_PATH=${PKGPATH}; \
  98. export _DEPENDS_CACHE PKGPATH
  99. .else
  100. _cache_fragment = \
  101. case X$${_DEPENDS_CACHE} in \
  102. X) _DEPENDS_CACHE=$$(mktemp -d ${TMPDIR}/dep_cache.XXXXXXXXX|| exit 1); \
  103. export _DEPENDS_CACHE; \
  104. trap "rm -rf 2>/dev/null $${_DEPENDS_CACHE}" 0; \
  105. trap 'exit 1' 1 2 3 13 15;; \
  106. esac; PKGPATH=${PKGPATH}; export PKGPATH
  107. .endif
  108. _MAKE = cd ${.CURDIR} && PKGPATH=${PKGPATH} exec ${MAKE}
  109. _SUDOMAKE = cd ${.CURDIR} && PKGPATH=${PKGPATH} exec ${SUDO} ${MAKE}
  110. _MAKESYS = cd ${.CURDIR} && PKGPATH=${PKGPATH} exec ${MAKE}
  111. _SUDOMAKESYS = cd ${.CURDIR} && umask 022 && PKGPATH=${PKGPATH} exec ${_FAKESUDO} ${MAKE}
  112. REPORT_PROBLEM_LOGFILE ?=
  113. .if !empty(REPORT_PROBLEM_LOGFILE)
  114. REPORT_PROBLEM ?= echo "$$subdir ($@)">>${REPORT_PROBLEM_LOGFILE}
  115. .else
  116. REPORT_PROBLEM ?= exit 1
  117. .endif
  118. _recursive_targets = \
  119. all build checksum configure deinstall distclean extract fake fetch \
  120. fetch-all full-all-depends full-build-depends \
  121. full-test-depends full-run-depends \
  122. install install-all \
  123. license-check manpages-check package patch \
  124. prepare show-prepare-results repackage test regress reinstall \
  125. update update-or-install update-or-install-all \
  126. describe dump-vars print-plist print-plist-all \
  127. print-plist-contents print-plist-libs \
  128. show verbose-show show-size show-fake-size \
  129. check-register check-register-all lock unlock show-prepare-test-results
  130. _dangerous_recursive_targets = \
  131. makesum plist update-patches update-plist
  132. _recursive_depends_targets = \
  133. all-dir-depends build-dir-depends test-dir-depends run-dir-depends
  134. _recursive_cache_targets = \
  135. print-plist-with-depends print-plist-libs-with-depends \
  136. print-plist-all-with-depends print-package-signature \
  137. print-update-signature port-lib-depends-check lib-depends-check \
  138. all-lib-depends-args lib-depends-args run-depends-args \
  139. port-wantlib-args print-package-args