summaryrefslogtreecommitdiff
path: root/mk/bsd.pkg.mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk/bsd.pkg.mk')
-rw-r--r--mk/bsd.pkg.mk163
1 files changed, 72 insertions, 91 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk
index 701b4d79908..f118d0dbd17 100644
--- a/mk/bsd.pkg.mk
+++ b/mk/bsd.pkg.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.1216.2.15 2003/08/01 19:00:28 jlam Exp $
+# $NetBSD: bsd.pkg.mk,v 1.1216.2.16 2003/08/14 07:37:01 jlam Exp $
#
# This file is in the public domain.
#
@@ -32,32 +32,34 @@ MAKE_ENV+= USETOOLS="${USETOOLS}"
# This has to come first to avoid showing all BUILD_DEFS added by this
# Makefile, which are usually not customizable.
-.PHONY: pre-fetch build-defs-message
-pre-fetch: build-defs-message
-.if !target(build-defs-message)
+.PHONY: pre-extract build-defs-message
+pre-extract: build-defs-message
+.if ${PKGSRC_SHOW_BUILD_DEFS} != "YES" && ${PKGSRC_SHOW_BUILD_DEFS} != "yes"
+build-defs-message:
+.elif !target(build-defs-message)
build-defs-message: ${WRKDIR}
-.if defined(BUILD_DEFS) && !empty(BUILD_DEFS)
-.if !exists(${WRKDIR}/.bdm_done)
+. if defined(BUILD_DEFS) && !empty(BUILD_DEFS)
+. if !exists(${WRKDIR}/.bdm_done)
@${ECHO} "=========================================================================="
@${ECHO} "The following variables will affect the build process of this package,"
@${ECHO} "${PKGNAME}. Their current value is shown below:"
@${ECHO} ""
-. for var in ${BUILD_DEFS:O:u}
-. if !defined(${var})
+. for var in ${BUILD_DEFS:O}
+. if !defined(${var})
@${ECHO} " * ${var} (not defined)"
-. elif defined(${var}) && empty(${var})
+. elif defined(${var}) && empty(${var})
@${ECHO} " * ${var} (defined)"
-. else
+. else
@${ECHO} " * ${var} = ${${var}}"
-. endif
-. endfor
+. endif
+. endfor
@${ECHO} ""
@${ECHO} "You may want to abort the process now with CTRL+C and change their value"
@${ECHO} "before continuing. Be sure to run \`${MAKE} clean' after the changes."
@${ECHO} "=========================================================================="
@${TOUCH} ${WRKDIR}/.bdm_done
-.endif
-.endif
+. endif
+. endif
.endif
##### Some NetBSD platforms permitted the user to set the binary format while
@@ -89,11 +91,20 @@ INTERACTIVE_STAGE?= none
# that if no buildlink2.mk files are included, then they still point to
# where headers and libraries for installed packages and X11R6 may be found.
#
-USE_BUILDLINK2?= no # default to not using buildlink2
BUILDLINK_DIR?= ${LOCALBASE}
BUILDLINK_X11PKG_DIR?= ${X11BASE}
BUILDLINK_X11_DIR?= ${X11BASE}
+USE_BUILDLINK2?= no # default to not using buildlink2
+.if ${PKG_INSTALLATION_TYPE} == "pkgviews"
+_USE_BUILDLINK3= yes
+.else
+_USE_BUILDLINK3= no
+.endif
+.if empty(USE_BUILDLINK2:M[nN][oO]) && empty(_USE_BUILDLINK3:M[nN][oO])
+PKG_FAIL_REASON= "Please undefine USE_BUILDLINK2 when using pkgviews"
+.endif
+
.if defined(USE_IMAKE)
USE_X11BASE?= implied
PLIST_SUBST+= IMAKE_MAN_SOURCE_PATH=${IMAKE_MAN_SOURCE_PATH} \
@@ -340,7 +351,7 @@ X11_LDFLAGS= # empty
X11_LDFLAGS+= -Wl,${RPATH_FLAG}${X11BASE}/lib
X11_LDFLAGS+= -L${X11BASE}/lib
.endif
-.if !empty(USE_BUILDLINK2:M[nN][oO])
+.if !empty(USE_BUILDLINK2:M[nN][oO]) && !empty(_USE_BUILDLINK3:M[nN][oO])
. if ${PKG_INSTALLATION_TYPE} == "overwrite"
LDFLAGS+= -Wl,${RPATH_FLAG}${LOCALBASE}/lib
LDFLAGS+= -L${LOCALBASE}/lib
@@ -372,7 +383,7 @@ MAKE_ENV+= CC="${CC}"
.if defined(CXX)
MAKE_ENV+= CXX="${CXX}"
.endif
-.if defined(CPP)
+.if defined(CPP) && !defined(NO_EXPORT_CPP)
MAKE_ENV+= CPP="${CPP}"
.endif
@@ -580,12 +591,15 @@ PLIST_SUBST+= PERL5_SITEARCH=${PERL5_SITEARCH:S/^${LOCALBASE}\///}
PLIST_SUBST+= PERL5_ARCHLIB=${PERL5_ARCHLIB:S/^${LOCALBASE}\///}
.endif
-.if defined(USE_NEW_TEXINFO)
-INFO_FILES?=
+# base vs. GNU tools
+. include "../../mk/tools.mk"
+
+# Handle info files
+#
+INFO_FILES?= # default to no info files to handle
USE_MAKEINFO?= no # default to not using makeinfo
-. if !empty(INFO_FILES) || empty(USE_MAKEINFO:M[nN][oO])
-. include "../../mk/texinfo.mk"
-. endif
+.if !empty(INFO_FILES) || empty(USE_MAKEINFO:M[nN][oO])
+. include "../../mk/texinfo.mk"
.endif
.if defined(USE_PKGINSTALL) && !empty(USE_PKGINSTALL:M[yY][eE][sS])
@@ -1232,12 +1246,16 @@ SCRIPTS_ENV+= CURDIR=${.CURDIR} DISTDIR=${DISTDIR} \
SCRIPTS_ENV+= BATCH=yes
.endif
-.if !empty(USE_BUILDLINK2:M[nN][oO])
+.if !empty(USE_BUILDLINK2:M[nN][oO]) && !empty(_USE_BUILDLINK3:M[nN][oO])
NO_BUILDLINK= # defined
.endif
.if !defined(NO_BUILDLINK)
-. include "../../mk/buildlink2/bsd.buildlink2.mk"
+. if empty(_USE_BUILDLINK3:M[nN][oO])
+. include "../../mk/buildlink3/bsd.buildlink3.mk"
+. elif empty(USE_BUILDLINK2:M[nN][oO])
+. include "../../mk/buildlink2/bsd.buildlink2.mk"
+. endif
.endif
.MAIN: all
@@ -1415,7 +1433,7 @@ checksum: fetch
# Disable buildlink
.PHONY: buildlink
-.if defined(NO_BUILDLINK) && !target(configure)
+.if defined(NO_BUILDLINK) && !target(buildlink)
buildlink: patch
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${BUILDLINK_COOKIE}
.endif
@@ -1669,7 +1687,6 @@ show-depends-dirs:
# Show all build and run depends, reverse-breadth first, with options.
.if make(show-all-depends-dirs) || make(show-all-depends-dirs-excl) || make (show-root-dirs)
-.PHONY: show-all-depends-dirs show-all-depends-dirs-excl show-root-dirs
# "awk" macro to recurse over the dependencies efficiently, never running in
# the same same directory twice. You may set the following options via "-v":
@@ -2193,7 +2210,7 @@ do-pkgconfig-override:
. endfor
.endif
-.if empty(USE_BUILDLINK2:M[nN][oO])
+.if empty(USE_BUILDLINK2:M[nN][oO]) || empty(_USE_BUILDLINK3:M[nN][oO])
#
# By default, prevent invocation of GNU "auto*" driven by the generated
# Makefiles during the build process by touching various auto{conf,make}
@@ -2489,6 +2506,8 @@ real-su-install: ${MESSAGE}
${ECHO_MSG} "Warning: not superuser, can't run mtree."; \
${ECHO_MSG} "Become root and try again to ensure correct permissions."; \
fi
+.else
+ ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${PREFIX}
.endif # !NO_MTREE
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} pre-install-script
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} pre-install
@@ -2506,13 +2525,6 @@ real-su-install: ${MESSAGE}
${_PKG_SILENT}#
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} ${PLIST}
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} post-install-script
-.if !defined(USE_NEW_TEXINFO)
-. for f in ${INFO_FILES}
- ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} "${INSTALL_INFO} --info-dir=${PREFIX}/info ${PREFIX}/info/${f}"; \
- ${INSTALL_INFO} --remove --info-dir=${PREFIX}/info ${PREFIX}/info/${f}; \
- ${INSTALL_INFO} --info-dir=${PREFIX}/info ${PREFIX}/info/${f}
-. endfor
-.endif # !USE_NEW_TEXINFO
${_PKG_SILENT}${_PKG_DEBUG}newmanpages=`${EGREP} -h \
'^([^@/]*/)*man/([^/]*/)?(man[1-9ln]/.*\.[1-9ln]|cat[1-9ln]/.*\.0)(\.gz)?$$' \
${PLIST} 2>/dev/null || ${TRUE}`; \
@@ -2556,7 +2568,7 @@ real-su-install: ${MESSAGE}
fi
.if ${_DO_SHLIB_CHECKS} == "yes"
. if ${PKG_INSTALLATION_TYPE} == "overwrite"
- ${_PKG_SILENT}${_PKG_DEBUG}\
+ ${_PKG_SILENT}${_PKG_DEBUG} \
${MAKE} ${MAKEFLAGS} do-shlib-handling SHLIB_PLIST_MODE=0
. endif
.endif
@@ -2565,6 +2577,16 @@ real-su-install: ${MESSAGE}
@${ECHO_MSG} ""
@${CAT} ${MESSAGE}
@${ECHO_MSG} ""
+. if !empty(PKGSRC_MESSAGE_RECIPIENTS)
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ (${ECHO} "The ${PKGNAME} package was installed on `${HOSTNAME_CMD}` at `date`"; \
+ ${ECHO} ""; \
+ ${ECHO} "Please note the following:"; \
+ ${ECHO} ""; \
+ ${CAT} ${MESSAGE}; \
+ ${ECHO} "") | \
+ mail -s"Package ${PKGNAME} installed" ${PKGSRC_MESSAGE_RECIPIENTS}
+. endif
.endif
.if !defined(NO_PKG_REGISTER)
${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} ${PKG_DBDIR_MAKEFLAGS} fake-pkg
@@ -3453,7 +3475,7 @@ clean: pre-clean
clean-depends:
. if defined(BUILD_DEPENDS) || defined(DEPENDS)
${_PKG_SILENT}${_PKG_DEBUG} \
- for i in `${MAKE} ${MAKEFLAGS} CLEAN_DEPENDS_LIST_TOP=YES clean-depends-list | ${SED} -e 's;\.\./[^ ]*; ;g' | ${TR} -s "[:space:]" "\n" | ${SORT} -u` ;\
+ for i in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs-excl` ;\
do \
cd ${.CURDIR}/../../$$i && \
${MAKE} ${MAKEFLAGS} CLEANDEPENDS=NO clean; \
@@ -3461,48 +3483,6 @@ clean-depends:
. endif
.endif
-
-# The clean-depends-list target will produce a list of all
-# BUILD_DEPENDS and DEPENDS packages.
-# As each *DEPENDS package is visited, it is added to the
-# CLEAN_DEPENDS_LIST_SEEN variable. Once a pkg is in the list
-# it will not be visited again. This prevents traversing the same
-# part of the dependency tree multiple times. Each depending package
-# ends up in the list twice. Once as the relative path from the depending
-# package and once as the path from pkgsrc. Eg, "../../foo/bar foo/bar"
-# The "../../foo/bar" version is later removed from the list in the
-# clean-depends target. The remaining bit of redundancy is that some
-# packages list their depends as "../bar" instead of "../../foo/bar"
-# In this case its possible for a dependency to be visited twice.
-
-.PHONY: clean-depends-list
-.if !target(clean-depends-list)
-clean-depends-list:
-. if defined(BUILD_DEPENDS) || defined(DEPENDS)
- @for dir in `${ECHO} ${BUILD_DEPENDS:C/^[^:]*://:C/:.*//} \
- ${DEPENDS:C/^[^:]*://:C/:.*//} | \
- ${TR} '\040' '\012' `; do \
- case "$$CLEAN_DEPENDS_LIST_SEEN" in \
- *" "$$dir" "*) ;; \
- *) \
- CLEAN_DEPENDS_LIST_SEEN=" $$dir `cd ${.CURDIR} ; cd $$dir && ${MAKE} ${MAKEFLAGS} CLEAN_DEPENDS_LIST_SEEN="$$CLEAN_DEPENDS_LIST_SEEN" CLEAN_DEPENDS_LIST_TOP=NO clean-depends-list`";\
- ;; \
- esac \
- done ; \
- if [ "${CLEAN_DEPENDS_LIST_TOP}" != "YES" ]; then \
- ${ECHO} " ${PKGPATH} $$CLEAN_DEPENDS_LIST_SEEN"; \
- else \
- ${ECHO} " $$CLEAN_DEPENDS_LIST_SEEN"; \
- fi
-. else
- @if [ "${CLEAN_DEPENDS_LIST_TOP}" != "YES" ]; then \
- ${ECHO} " ${PKGPATH} $$CLEAN_DEPENDS_LIST_SEEN"; \
- else \
- ${ECHO} " $$CLEAN_DEPENDS_LIST_SEEN"; \
- fi
-. endif
-.endif
-
.PHONY: pre-distclean
.if !target(pre-distclean)
pre-distclean:
@@ -4306,18 +4286,19 @@ print-pkg-size-depends:
# Common (system) directories not to generate @dirrm statements for
# Reads MTREE_FILE and extracts a list of sed commands that will
# sort out which directories NOT to include into the PLIST @dirrm list
-SUBST_PLIST_REPLACEMENT=\
+SUBST_PLIST_REPLACEMENT1= \
-e 's@${OPSYS}@\$${OPSYS}@' \
-e 's@${OS_VERSION:S/./\./g}@\$${OS_VERSION}@' \
-e 's@${MACHINE_GNU_PLATFORM}@\$${MACHINE_GNU_PLATFORM}@' \
-e 's@${MACHINE_ARCH}@\$${MACHINE_ARCH}@' \
-e 's@${MACHINE_GNU_ARCH}@\$${MACHINE_GNU_ARCH}@' \
-e 's@${LOWER_VENDOR}@\$${LOWER_VENDOR}@' \
- -e 's@${LOWER_OPSYS}@\$${LOWER_OPSYS}@' \
- -e 's@${LOWER_OS_VERSION:S/./\./g}@\$${LOWER_OS_VERSION}@' \
- -e 's@${PKGNAME:S/./\./g}@\$${PKGNAME}@' \
+ -e 's@${LOWER_OS_VERSION:S/./\./g}@\$${LOWER_OS_VERSION}@' \
+ -e 's@${LOWER_OPSYS}@\$${LOWER_OPSYS}@'
+SUBST_PLIST_REPLACEMENT2= \
+ -e 's@${PKGNAME:S/./\./g}@\$${PKGNAME}@' \
-e 's@${PKGVERSION:S/./\./g}@\$${PKGVERSION}@' \
- -e 's@${PKGLOCALEDIR}/locale@\$${PKGLOCALEDIR}/locale@' \
+ -e 's@${PKGLOCALEDIR}/locale@\$${PKGLOCALEDIR}/locale@'
.if make(print-PLIST)
COMMON_DIRS!= ${AWK} 'BEGIN { \
@@ -4335,12 +4316,13 @@ COMMON_DIRS!= ${AWK} 'BEGIN { \
if ( i == 0 ){ \
cwd = $$1 ; \
} else { \
- cwd = cwd "\\\\/" $$1 ; \
+ cwd = cwd "\\/" $$1 ; \
} \
- print "-e \"/^" cwd "$$$$/d\""; \
+ print "/^" cwd "$$$$/ { next; }"; \
i=i+1 ; \
} \
} \
+ END { print "{ print $$$$0; }"; } \
' <${MTREE_FILE}
.endif
@@ -4364,9 +4346,8 @@ print-PLIST:
${FIND} ${PREFIX}/. -xdev -newer ${EXTRACT_COOKIE} \! -type d \
| ( ${GREP} -v emul/linux/proc || ${TRUE} ) \
| ${SORT} \
- | ${SED} \
- -e 's@${PREFIX}/./@@' \
- ${SUBST_PLIST_REPLACEMENT} \
+ | ${SED} -e 's@${PREFIX}/./@@' ${SUBST_PLIST_REPLACEMENT1} \
+ | ${SED} ${SUBST_PLIST_REPLACEMENT2} \
| ${AWK} ' \
/^@/ { print $$0; next } \
/.*\/lib[^\/]+\.so\.[0-9]+\.[0-9]+\.[0-9]+$$/ { \
@@ -4398,7 +4379,7 @@ print-PLIST:
| ${SED} \
-e 's@${PREFIX}/./@@' \
-e '/^${PREFIX:S/\//\\\//g}\/.$$/d' \
- | ${SORT} -r | ${SED} ${COMMON_DIRS}` ; \
+ | ${SORT} -r | ${AWK} '${COMMON_DIRS}'` ; \
do \
if [ `${LS} -la ${PREFIX}/$$i | ${WC} -l` = 3 ]; then \
${ECHO} @exec \$${MKDIR} %D/$$i ; \
@@ -4406,8 +4387,8 @@ print-PLIST:
${ECHO} @dirrm $$i ; \
done \
| ( ${GREP} -v emul/linux/proc || ${TRUE} ) \
- | ${SED} \
- ${SUBST_PLIST_REPLACEMENT}
+ | ${SED} ${SUBST_PLIST_REPLACEMENT1} \
+ | ${SED} ${SUBST_PLIST_REPLACEMENT2}
.endif # target(print-PLIST)
# By default, all packages attempt to link into the views.