Fri Jan 26 12:42:02 2024 UTC (142d)
mk: Update `pkg_add -m' syntax in two more places.

(Why is anything outside mk/pkgformat/pkg using pkg_add?)

Gated on USE_CROSS_COMPILE=yes, so no impact on native builds.


(riastradh)
diff -r1.30 -r1.31 pkgsrc/mk/install/bin-install.mk
diff -r1.8 -r1.9 pkgsrc/mk/pkgformat/pkg/replace.mk

cvs diff -r1.30 -r1.31 pkgsrc/mk/install/bin-install.mk (switch to unified diff)

--- pkgsrc/mk/install/bin-install.mk 2022/07/06 18:53:58 1.30
+++ pkgsrc/mk/install/bin-install.mk 2024/01/26 12:42:01 1.31
@@ -1,119 +1,119 @@ @@ -1,119 +1,119 @@
1# $NetBSD: bin-install.mk,v 1.30 2022/07/06 18:53:58 rillig Exp $ 1# $NetBSD: bin-install.mk,v 1.31 2024/01/26 12:42:01 riastradh Exp $
2# 2#
3 3
4# This file provides the following targets: 4# This file provides the following targets:
5# 5#
6# bin-install: 6# bin-install:
7# Tries to install a package from a prebuilt binary package, and 7# Tries to install a package from a prebuilt binary package, and
8# if that doesn't work, builds the package from source. 8# if that doesn't work, builds the package from source.
9# 9#
10# User-settable variables: 10# User-settable variables:
11# 11#
12# PACKAGES 12# PACKAGES
13# This directory is searched before BINPKG_SITES when trying to 13# This directory is searched before BINPKG_SITES when trying to
14# install binary packages. 14# install binary packages.
15# 15#
16# BINPKG_SITES 16# BINPKG_SITES
17# A list of URLs where binary packages can be found. 17# A list of URLs where binary packages can be found.
18# See mk/defaults/mk.conf for details. 18# See mk/defaults/mk.conf for details.
19# 19#
20# === Command line variables === 20# === Command line variables ===
21# 21#
22# PKGNAME_REQD 22# PKGNAME_REQD
23# The package pattern that is required to be installed. By default, 23# The package pattern that is required to be installed. By default,
24# any version of this package will do, but when installing 24# any version of this package will do, but when installing
25# dependencies, a special version may be needed. 25# dependencies, a special version may be needed.
26 26
27# XXX: This file contains implementation details from the "pkg" format, 27# XXX: This file contains implementation details from the "pkg" format,
28# for example the All/ directory and the @cwd. 28# for example the All/ directory and the @cwd.
29 29
30# List of sites carrying binary packages. Shell Variables "rel" and 30# List of sites carrying binary packages. Shell Variables "rel" and
31# "arch" are replaced with OS release ("1.5", ...) and architecture 31# "arch" are replaced with OS release ("1.5", ...) and architecture
32# ("mipsel", ...). 32# ("mipsel", ...).
33.if ${OPSYS} == "NetBSD" 33.if ${OPSYS} == "NetBSD"
34BINPKG_SITES?= \ 34BINPKG_SITES?= \
35 http://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/$${arch}/$${rel} \ 35 http://cdn.NetBSD.org/pub/pkgsrc/packages/NetBSD/$${arch}/$${rel} \
36 http://ftp6.NetBSD.org/pub/pkgsrc/packages/NetBSD/$${arch}/$${rel} 36 http://ftp6.NetBSD.org/pub/pkgsrc/packages/NetBSD/$${arch}/$${rel}
37.elif ${OPSYS} == "Minix" 37.elif ${OPSYS} == "Minix"
38BINPKG_SITES?= \ 38BINPKG_SITES?= \
39 http://www.minix3.org/pkgsrc/packages/$$(${UNAME} -r)/$${arch} 39 http://www.minix3.org/pkgsrc/packages/$$(${UNAME} -r)/$${arch}
40.elif ${OPSYS} == "DragonFly" 40.elif ${OPSYS} == "DragonFly"
41BINPKG_SITES?= \ 41BINPKG_SITES?= \
42 http://mirror-master.dragonflybsd.org/packages/$${arch}/DragonFly-$${rel}/stable 42 http://mirror-master.dragonflybsd.org/packages/$${arch}/DragonFly-$${rel}/stable
43.else 43.else
44BINPKG_SITES?= 44BINPKG_SITES?=
45.endif 45.endif
46 46
47PKGNAME_REQD?= ${PKGNAME} 47PKGNAME_REQD?= ${PKGNAME}
48 48
49.PHONY: bin-install 49.PHONY: bin-install
50.PHONY: do-bin-install do-bin-install-from-source 50.PHONY: do-bin-install do-bin-install-from-source
51.PHONY: su-do-bin-install 51.PHONY: su-do-bin-install
52.PHONY: acquire-bin-install-lock locked-su-do-bin-install release-bin-install-lock 52.PHONY: acquire-bin-install-lock locked-su-do-bin-install release-bin-install-lock
53 53
54bin-install: \ 54bin-install: \
55 do-bin-install \ 55 do-bin-install \
56 do-bin-install-from-source 56 do-bin-install-from-source
57 57
58.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 58.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
59do-bin-install: su-do-bin-install 59do-bin-install: su-do-bin-install
60.else 60.else
61do-bin-install: su-target 61do-bin-install: su-target
62.endif 62.endif
63 @${PHASE_MSG} "Binary install for "${PKGNAME_REQD:Q} 63 @${PHASE_MSG} "Binary install for "${PKGNAME_REQD:Q}
64 64
65su-do-bin-install: \ 65su-do-bin-install: \
66 acquire-bin-install-lock \ 66 acquire-bin-install-lock \
67 locked-su-do-bin-install \ 67 locked-su-do-bin-install \
68 release-bin-install-lock 68 release-bin-install-lock
69 69
70acquire-bin-install-lock: \ 70acquire-bin-install-lock: \
71 acquire-localbase-lock 71 acquire-localbase-lock
72 72
73release-bin-install-lock: \ 73release-bin-install-lock: \
74 release-localbase-lock 74 release-localbase-lock
75 75
76# Note: PKGREPOSITORY is usually ${PACKAGES}/All 76# Note: PKGREPOSITORY is usually ${PACKAGES}/All
77_BIN_INSTALL_PREPARE_CMD= \ 77_BIN_INSTALL_PREPARE_CMD= \
78 found=`${PKG_BEST_EXISTS} "${PKGWILDCARD}" || ${TRUE}`; \ 78 found=`${PKG_BEST_EXISTS} "${PKGWILDCARD}" || ${TRUE}`; \
79 if [ "$$found" != "" ]; then \ 79 if [ "$$found" != "" ]; then \
80 ${ERROR_MSG} "$$found is already installed - perhaps an older version?"; \ 80 ${ERROR_MSG} "$$found is already installed - perhaps an older version?"; \
81 ${ERROR_MSG} "If so, you may wish to \`\`pkg_delete $$found'' and install"; \ 81 ${ERROR_MSG} "If so, you may wish to \`\`pkg_delete $$found'' and install"; \
82 ${ERROR_MSG} "this package again by \`\`${MAKE} bin-install'' to upgrade it properly."; \ 82 ${ERROR_MSG} "this package again by \`\`${MAKE} bin-install'' to upgrade it properly."; \
83 exit 1; \ 83 exit 1; \
84 fi; \ 84 fi; \
85 rel=${_SHORT_UNAME_R:Q}; \ 85 rel=${_SHORT_UNAME_R:Q}; \
86 arch=${MACHINE_ARCH:Q}; \ 86 arch=${MACHINE_ARCH:Q}; \
87 pkg_path=${PKGREPOSITORY:Q}; \ 87 pkg_path=${PKGREPOSITORY:Q}; \
88 set args ${BINPKG_SITES}; shift; \ 88 set args ${BINPKG_SITES}; shift; \
89 for i in "$$@"; do \ 89 for i in "$$@"; do \
90 pkg_path="$$pkg_path;$$i/All"; \ 90 pkg_path="$$pkg_path;$$i/All"; \
91 done; 91 done;
92 92
93locked-su-do-bin-install: 93locked-su-do-bin-install:
94.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 94.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
95 ${RUN} ${_BIN_INSTALL_PREPARE_CMD} \ 95 ${RUN} ${_BIN_INSTALL_PREPARE_CMD} \
96 ${STEP_MSG} "Installing ${PKGNAME} from $$pkg_path"; \ 96 ${STEP_MSG} "Installing ${PKGNAME} from $$pkg_path"; \
97 if ${PKGSRC_SETENV} PKG_PATH="$$pkg_path" ${PKGTOOLS_ENV} ${PKG_ADD} -m ${MACHINE_ARCH} -I -p ${_CROSS_DESTDIR}${PREFIX} ${_BIN_INSTALL_FLAGS} ${PKGNAME_REQD:Q}${PKG_SUFX}; then \ 97 if ${PKGSRC_SETENV} PKG_PATH="$$pkg_path" ${PKGTOOLS_ENV} ${PKG_ADD} -m ${OPSYS:Q}/${MACHINE_ARCH:Q}\ ${OS_VERSION:Q} -I -p ${_CROSS_DESTDIR}${PREFIX} ${_BIN_INSTALL_FLAGS} ${PKGNAME_REQD:Q}${PKG_SUFX}; then \
98 ${ECHO} "Fixing recorded cwd..."; \ 98 ${ECHO} "Fixing recorded cwd..."; \
99 ${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp; \ 99 ${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp; \
100 ${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS; \ 100 ${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS; \
101 ${ECHO} "`${PKG_INFO} -e ${PKGNAME_REQD:Q}` successfully installed."; \ 101 ${ECHO} "`${PKG_INFO} -e ${PKGNAME_REQD:Q}` successfully installed."; \
102 fi 102 fi
103.else 103.else
104 ${RUN} ${_BIN_INSTALL_PREPARE_CMD} \ 104 ${RUN} ${_BIN_INSTALL_PREPARE_CMD} \
105 pkgpattern=${PKGNAME_REQD:Q}; \ 105 pkgpattern=${PKGNAME_REQD:Q}; \
106 ${STEP_MSG} "Installing $$pkgpattern from $$pkg_path"; \ 106 ${STEP_MSG} "Installing $$pkgpattern from $$pkg_path"; \
107 if ${PKGSRC_SETENV} PKG_PATH="$$pkg_path" ${PKGTOOLS_ENV} ${PKG_ADD} ${_BIN_INSTALL_FLAGS} "$$pkgpattern"; then \ 107 if ${PKGSRC_SETENV} PKG_PATH="$$pkg_path" ${PKGTOOLS_ENV} ${PKG_ADD} ${_BIN_INSTALL_FLAGS} "$$pkgpattern"; then \
108 installed=`${PKG_INFO} -e "$$pkgpattern"`; \ 108 installed=`${PKG_INFO} -e "$$pkgpattern"`; \
109 ${ECHO} "$$installed successfully installed."; \ 109 ${ECHO} "$$installed successfully installed."; \
110 fi 110 fi
111.endif 111.endif
112 112
113do-bin-install-from-source: 113do-bin-install-from-source:
114 ${RUN} pkgpattern=${PKGNAME_REQD:Q}; \ 114 ${RUN} pkgpattern=${PKGNAME_REQD:Q}; \
115 ${PKG_INFO} -qe "$$pkgpattern" || { \ 115 ${PKG_INFO} -qe "$$pkgpattern" || { \
116 ${STEP_MSG} "No binary package found for $$pkgpattern; installing from source."; \ 116 ${STEP_MSG} "No binary package found for $$pkgpattern; installing from source."; \
117 ${RECURSIVE_MAKE} ${MAKEFLAGS} DEPENDS_TARGET=${DEPENDS_TARGET:Q} package-install \ 117 ${RECURSIVE_MAKE} ${MAKEFLAGS} DEPENDS_TARGET=${DEPENDS_TARGET:Q} package-install \
118 && ${RECURSIVE_MAKE} ${MAKEFLAGS} clean; \ 118 && ${RECURSIVE_MAKE} ${MAKEFLAGS} clean; \
119 } 119 }

cvs diff -r1.8 -r1.9 pkgsrc/mk/pkgformat/pkg/replace.mk (switch to unified diff)

--- pkgsrc/mk/pkgformat/pkg/replace.mk 2021/01/17 20:18:42 1.8
+++ pkgsrc/mk/pkgformat/pkg/replace.mk 2024/01/26 12:42:01 1.9
@@ -1,217 +1,217 @@ @@ -1,217 +1,217 @@
1# $NetBSD: replace.mk,v 1.8 2021/01/17 20:18:42 rhialto Exp $ 1# $NetBSD: replace.mk,v 1.9 2024/01/26 12:42:01 riastradh Exp $
2# 2#
3 3
4# _pkgformat-destdir-replace: 4# _pkgformat-destdir-replace:
5# Updates a package in-place on the system. 5# Updates a package in-place on the system.
6# 6#
7# See also: 7# See also:
8# replace 8# replace
9# 9#
10# XXX: The whole replacement, from deinstalling the old package up 10# XXX: The whole replacement, from deinstalling the old package up
11# to installing the new package, should be one transaction. 11# to installing the new package, should be one transaction.
12# 12#
13_pkgformat-replace: \ 13_pkgformat-replace: \
14 replace-tarup \ 14 replace-tarup \
15 replace-preserve-installed-info \ 15 replace-preserve-installed-info \
16 replace-preserve-required-by \ 16 replace-preserve-required-by \
17 deinstall \ 17 deinstall \
18 install-clean \ 18 install-clean \
19 install \ 19 install \
20 replace-fixup-required-by \ 20 replace-fixup-required-by \
21 replace-fixup-installed-info \ 21 replace-fixup-installed-info \
22 .PHONY 22 .PHONY
23 23
24# tarup is omitted for DESTDIR, because the benefits are very small 24# tarup is omitted for DESTDIR, because the benefits are very small
25_pkgformat-destdir-replace: \ 25_pkgformat-destdir-replace: \
26 replace-destdir \ 26 replace-destdir \
27 .PHONY 27 .PHONY
28 28
29# _pkgformat-undo-replace: 29# _pkgformat-undo-replace:
30# Undoes the actions from a previous _pkgformat-replace. 30# Undoes the actions from a previous _pkgformat-replace.
31# 31#
32# See also: 32# See also:
33# undo-replace 33# undo-replace
34# 34#
35_pkgformat-undo-replace: \ 35_pkgformat-undo-replace: \
36 undo-replace-check \ 36 undo-replace-check \
37 replace-preserve-installed-info \ 37 replace-preserve-installed-info \
38 replace-preserve-required-by \ 38 replace-preserve-required-by \
39 deinstall \ 39 deinstall \
40 undo-replace-install \ 40 undo-replace-install \
41 replace-fixup-required-by \ 41 replace-fixup-required-by \
42 replace-clean \ 42 replace-clean \
43 .PHONY 43 .PHONY
44 44
45_pkgformat-destdir-undo-replace: \ 45_pkgformat-destdir-undo-replace: \
46 undo-replace-check \ 46 undo-replace-check \
47 undo-destdir-replace-install \ 47 undo-destdir-replace-install \
48 replace-clean \ 48 replace-clean \
49 .PHONY 49 .PHONY
50 50
51_INSTALLED_INFO_FILE= ${WRKDIR}/.replace-+INSTALLED_INFO 51_INSTALLED_INFO_FILE= ${WRKDIR}/.replace-+INSTALLED_INFO
52_REQUIRED_BY_FILE= ${WRKDIR}/.replace-+REQUIRED_BY 52_REQUIRED_BY_FILE= ${WRKDIR}/.replace-+REQUIRED_BY
53 53
54_COOKIE.replace= ${WRKDIR}/.replace_done 54_COOKIE.replace= ${WRKDIR}/.replace_done
55_REPLACE_OLDNAME_FILE= ${WRKDIR}/.replace_oldname 55_REPLACE_OLDNAME_FILE= ${WRKDIR}/.replace_oldname
56_REPLACE_NEWNAME_FILE= ${WRKDIR}/.replace_newname 56_REPLACE_NEWNAME_FILE= ${WRKDIR}/.replace_newname
57 57
58_REPLACE_OLDNAME_CMD= \ 58_REPLACE_OLDNAME_CMD= \
59 [ -f ${_REPLACE_OLDNAME_FILE} ] \ 59 [ -f ${_REPLACE_OLDNAME_FILE} ] \
60 || ${FAIL_MSG} "[${.TARGET}] ${_REPLACE_OLDNAME_FILE}: File not found"; \ 60 || ${FAIL_MSG} "[${.TARGET}] ${_REPLACE_OLDNAME_FILE}: File not found"; \
61 oldname=`${CAT} ${_REPLACE_OLDNAME_FILE}` 61 oldname=`${CAT} ${_REPLACE_OLDNAME_FILE}`
62 62
63_REPLACE_NEWNAME_CMD= \ 63_REPLACE_NEWNAME_CMD= \
64 [ -f ${_REPLACE_NEWNAME_FILE} ] \ 64 [ -f ${_REPLACE_NEWNAME_FILE} ] \
65 || ${FAIL_MSG} "[${.TARGET}] ${_REPLACE_NEWNAME_FILE}: File not found"; \ 65 || ${FAIL_MSG} "[${.TARGET}] ${_REPLACE_NEWNAME_FILE}: File not found"; \
66 newname=`${CAT} ${_REPLACE_NEWNAME_FILE}` 66 newname=`${CAT} ${_REPLACE_NEWNAME_FILE}`
67 67
68# Verifies that there was a previous "replace" action performed that can be undone. 68# Verifies that there was a previous "replace" action performed that can be undone.
69# 69#
70undo-replace-check: .PHONY 70undo-replace-check: .PHONY
71 ${RUN} [ -f ${_COOKIE.replace} ] \ 71 ${RUN} [ -f ${_COOKIE.replace} ] \
72 || ${FAIL_MSG} "No replacement to undo!" 72 || ${FAIL_MSG} "No replacement to undo!"
73 73
74# Generates a binary package for the (older) installed package using pkg_tarup. 74# Generates a binary package for the (older) installed package using pkg_tarup.
75# 75#
76replace-tarup: .PHONY 76replace-tarup: .PHONY
77 ${RUN} [ -x ${_PKG_TARUP_CMD:Q} ] \ 77 ${RUN} [ -x ${_PKG_TARUP_CMD:Q} ] \
78 || ${FAIL_MSG} ${_PKG_TARUP_CMD:Q}" was not found."; \ 78 || ${FAIL_MSG} ${_PKG_TARUP_CMD:Q}" was not found."; \
79 ${_REPLACE_OLDNAME_CMD}; \ 79 ${_REPLACE_OLDNAME_CMD}; \
80 ${PKGSRC_SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \ 80 ${PKGSRC_SETENV} PKG_DBDIR=${_PKG_DBDIR} PKG_SUFX=${PKG_SUFX} \
81 PKGREPOSITORY=${WRKDIR} \ 81 PKGREPOSITORY=${WRKDIR} \
82 ${_PKG_TARUP_CMD} $${oldname} || \ 82 ${_PKG_TARUP_CMD} $${oldname} || \
83 ${FAIL_MSG} "Could not pkg_tarup $${oldname}". 83 ${FAIL_MSG} "Could not pkg_tarup $${oldname}".
84 84
85# Re-installs the old package that has been saved by replace-tarup. 85# Re-installs the old package that has been saved by replace-tarup.
86# 86#
87undo-replace-install: .PHONY 87undo-replace-install: .PHONY
88 @${PHASE_MSG} "Re-adding ${PKGNAME} from saved tar-up package." 88 @${PHASE_MSG} "Re-adding ${PKGNAME} from saved tar-up package."
89 ${RUN} ${_REPLACE_OLDNAME_CMD}; \ 89 ${RUN} ${_REPLACE_OLDNAME_CMD}; \
90 ${ECHO} "Installing saved package ${WRKDIR}/$${oldname}${PKG_SUFX}"; \ 90 ${ECHO} "Installing saved package ${WRKDIR}/$${oldname}${PKG_SUFX}"; \
91 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} ${WRKDIR}/$${oldname}${PKG_SUFX} 91 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} ${WRKDIR}/$${oldname}${PKG_SUFX}
92 92
93undo-destdir-replace-install: .PHONY 93undo-destdir-replace-install: .PHONY
94 @${PHASE_MSG} "Re-adding ${PKGNAME} from saved tar-up package." 94 @${PHASE_MSG} "Re-adding ${PKGNAME} from saved tar-up package."
95 ${RUN} ${_REPLACE_OLDNAME_CMD}; \ 95 ${RUN} ${_REPLACE_OLDNAME_CMD}; \
96 ${ECHO} "Installing saved package ${WRKDIR}/$${oldname}${PKG_SUFX}"; \ 96 ${ECHO} "Installing saved package ${WRKDIR}/$${oldname}${PKG_SUFX}"; \
97 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -U -D ${WRKDIR}/$${oldname}${PKG_SUFX} 97 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -U -D ${WRKDIR}/$${oldname}${PKG_SUFX}
98 98
99# Computes and saves the full names of the installed package to be replaced 99# Computes and saves the full names of the installed package to be replaced
100# (oldname) and the package that will be installed (newname), so that these 100# (oldname) and the package that will be installed (newname), so that these
101# names are available later. 101# names are available later.
102# 102#
103replace-names: .PHONY 103replace-names: .PHONY
104 ${RUN} if [ x"${OLDNAME}" = x ]; then \ 104 ${RUN} if [ x"${OLDNAME}" = x ]; then \
105 wildcard=${PKGWILDCARD:Q}; \ 105 wildcard=${PKGWILDCARD:Q}; \
106 else \ 106 else \
107 wildcard="${OLDNAME}-[0-9]*"; \ 107 wildcard="${OLDNAME}-[0-9]*"; \
108 fi; \ 108 fi; \
109 ${_PKG_BEST_EXISTS} "$${wildcard}" > ${_REPLACE_OLDNAME_FILE} 109 ${_PKG_BEST_EXISTS} "$${wildcard}" > ${_REPLACE_OLDNAME_FILE}
110 ${RUN} ${ECHO} ${PKGNAME} > ${_REPLACE_NEWNAME_FILE} 110 ${RUN} ${ECHO} ${PKGNAME} > ${_REPLACE_NEWNAME_FILE}
111 ${RUN} ${CP} -f ${_REPLACE_NEWNAME_FILE} ${_COOKIE.replace} 111 ${RUN} ${CP} -f ${_REPLACE_NEWNAME_FILE} ${_COOKIE.replace}
112 112
113# Saves and removes the +INSTALLED_INFO file from the installed package. 113# Saves and removes the +INSTALLED_INFO file from the installed package.
114# 114#
115replace-preserve-installed-info: .PHONY 115replace-preserve-installed-info: .PHONY
116 @${STEP_MSG} "Preserving existing +INSTALLED_INFO file." 116 @${STEP_MSG} "Preserving existing +INSTALLED_INFO file."
117 ${RUN} ${_REPLACE_OLDNAME_CMD}; \ 117 ${RUN} ${_REPLACE_OLDNAME_CMD}; \
118 installed_info="${_PKG_DBDIR}/$$oldname/+INSTALLED_INFO"; \ 118 installed_info="${_PKG_DBDIR}/$$oldname/+INSTALLED_INFO"; \
119 ${TEST} ! -f "$$installed_info" || \ 119 ${TEST} ! -f "$$installed_info" || \
120 ${MV} $$installed_info ${_INSTALLED_INFO_FILE} 120 ${MV} $$installed_info ${_INSTALLED_INFO_FILE}
121 121
122# Saves and removes the +REQUIRED_BY file from the installed package. 122# Saves and removes the +REQUIRED_BY file from the installed package.
123# 123#
124replace-preserve-required-by: .PHONY 124replace-preserve-required-by: .PHONY
125 @${STEP_MSG} "Preserving existing +REQUIRED_BY file." 125 @${STEP_MSG} "Preserving existing +REQUIRED_BY file."
126 ${RUN} ${_REPLACE_OLDNAME_CMD}; \ 126 ${RUN} ${_REPLACE_OLDNAME_CMD}; \
127 required_by="${_PKG_DBDIR}/$$oldname/+REQUIRED_BY"; \ 127 required_by="${_PKG_DBDIR}/$$oldname/+REQUIRED_BY"; \
128 ${TEST} ! -f "$$required_by" || \ 128 ${TEST} ! -f "$$required_by" || \
129 ${MV} $$required_by ${_REQUIRED_BY_FILE} 129 ${MV} $$required_by ${_REQUIRED_BY_FILE}
130 130
131# Fixes the +CONTENTS files of dependent packages to refer to the 131# Fixes the +CONTENTS files of dependent packages to refer to the
132# replacement package, and puts the +REQUIRED_BY file back into place. 132# replacement package, and puts the +REQUIRED_BY file back into place.
133# It also sets the unsafe_depends_strict tag on each dependent package, 133# It also sets the unsafe_depends_strict tag on each dependent package,
134# and sets the unsafe_depends tag if the replaced package has a different 134# and sets the unsafe_depends tag if the replaced package has a different
135# version. 135# version.
136# 136#
137# XXX Only set unsafe_depends if there is an ABI change. 137# XXX Only set unsafe_depends if there is an ABI change.
138# 138#
139replace-fixup-required-by: .PHONY 139replace-fixup-required-by: .PHONY
140 @${STEP_MSG} "Fixing @pkgdep entries in dependent packages." 140 @${STEP_MSG} "Fixing @pkgdep entries in dependent packages."
141 ${RUN} ${_REPLACE_OLDNAME_CMD}; \ 141 ${RUN} ${_REPLACE_OLDNAME_CMD}; \
142 ${_REPLACE_NEWNAME_CMD}; \ 142 ${_REPLACE_NEWNAME_CMD}; \
143 ${TEST} -f ${_REQUIRED_BY_FILE} || exit 0; \ 143 ${TEST} -f ${_REQUIRED_BY_FILE} || exit 0; \
144 ${CAT} ${_REQUIRED_BY_FILE} | \ 144 ${CAT} ${_REQUIRED_BY_FILE} | \
145 while read pkg; do \ 145 while read pkg; do \
146 case $$pkg in \ 146 case $$pkg in \
147 "") continue ;; \ 147 "") continue ;; \
148 /*) pkgdir="$$pkg" ;; \ 148 /*) pkgdir="$$pkg" ;; \
149 *) pkgdir="${_PKG_DBDIR}/$$pkg" ;; \ 149 *) pkgdir="${_PKG_DBDIR}/$$pkg" ;; \
150 esac; \ 150 esac; \
151 contents="$$pkgdir/+CONTENTS"; \ 151 contents="$$pkgdir/+CONTENTS"; \
152 newcontents="$$contents.$$$$"; \ 152 newcontents="$$contents.$$$$"; \
153 ${PKGSRC_SETENV} OLDNAME="$$oldname" NEWNAME="$$newname" \ 153 ${PKGSRC_SETENV} OLDNAME="$$oldname" NEWNAME="$$newname" \
154 ${AWK} '($$0 ~ "^@pkgdep " ENVIRON["OLDNAME"]) \ 154 ${AWK} '($$0 ~ "^@pkgdep " ENVIRON["OLDNAME"]) \
155 { print "@pkgdep " ENVIRON["NEWNAME"]; next } \ 155 { print "@pkgdep " ENVIRON["NEWNAME"]; next } \
156 { print }' \ 156 { print }' \
157 $$contents > $$newcontents; \ 157 $$contents > $$newcontents; \
158 ${MV} -f $$newcontents $$contents; \ 158 ${MV} -f $$newcontents $$contents; \
159 ${PKG_ADMIN} set unsafe_depends_strict=YES $$pkg; \ 159 ${PKG_ADMIN} set unsafe_depends_strict=YES $$pkg; \
160 if ${TEST} "$$oldname" != "$$newname"; then \ 160 if ${TEST} "$$oldname" != "$$newname"; then \
161 ${PKG_ADMIN} set unsafe_depends=YES $$pkg; \ 161 ${PKG_ADMIN} set unsafe_depends=YES $$pkg; \
162 fi; \ 162 fi; \
163 done; \ 163 done; \
164 ${MV} ${_REQUIRED_BY_FILE} ${_PKG_DBDIR}/$$newname/+REQUIRED_BY 164 ${MV} ${_REQUIRED_BY_FILE} ${_PKG_DBDIR}/$$newname/+REQUIRED_BY
165 165
166# Removes unsafe_depends*, rebuild and mismatch tags from this package. 166# Removes unsafe_depends*, rebuild and mismatch tags from this package.
167# 167#
168replace-fixup-installed-info: .PHONY 168replace-fixup-installed-info: .PHONY
169 @${STEP_MSG} "Removing unsafe_depends and rebuild tags." 169 @${STEP_MSG} "Removing unsafe_depends and rebuild tags."
170 ${RUN} ${_REPLACE_NEWNAME_CMD}; \ 170 ${RUN} ${_REPLACE_NEWNAME_CMD}; \
171 [ ! -f ${_INSTALLED_INFO_FILE} ] || \ 171 [ ! -f ${_INSTALLED_INFO_FILE} ] || \
172 ${MV} ${_INSTALLED_INFO_FILE} ${_PKG_DBDIR}/$$newname/+INSTALLED_INFO; \ 172 ${MV} ${_INSTALLED_INFO_FILE} ${_PKG_DBDIR}/$$newname/+INSTALLED_INFO; \
173 for var in unsafe_depends unsafe_depends_strict rebuild mismatch; do \ 173 for var in unsafe_depends unsafe_depends_strict rebuild mismatch; do \
174 ${PKG_ADMIN} unset $$var $$newname; \ 174 ${PKG_ADMIN} unset $$var $$newname; \
175 done 175 done
176 176
177# Removes the state files for the "replace" target, so that it may be re-invoked. 177# Removes the state files for the "replace" target, so that it may be re-invoked.
178# 178#
179replace-clean: .PHONY 179replace-clean: .PHONY
180 ${RUN} ${_REPLACE_OLDNAME_CMD}; \ 180 ${RUN} ${_REPLACE_OLDNAME_CMD}; \
181 ${_REPLACE_NEWNAME_CMD}; \ 181 ${_REPLACE_NEWNAME_CMD}; \
182 ${RM} -f ${WRKDIR}/$$oldname${PKG_SUFX}; \ 182 ${RM} -f ${WRKDIR}/$$oldname${PKG_SUFX}; \
183 ${RM} -f ${WRKDIR}/$$newname${PKG_SUFX}; \ 183 ${RM} -f ${WRKDIR}/$$newname${PKG_SUFX}; \
184 ${RM} -f ${_REPLACE_OLDNAME_FILE} ${_REPLACE_NEWNAME_FILE} \ 184 ${RM} -f ${_REPLACE_OLDNAME_FILE} ${_REPLACE_NEWNAME_FILE} \
185 ${_COOKIE.replace} 185 ${_COOKIE.replace}
186 186
187# Logically we would like to do a "pkg_add -U". However, that fails 187# Logically we would like to do a "pkg_add -U". However, that fails
188# if there is a depending package that exactly depends on the package 188# if there is a depending package that exactly depends on the package
189# being replaced, so we override that check with -D. Historically, 189# being replaced, so we override that check with -D. Historically,
190# 'make replace' would replace a package regardless of whether that 190# 'make replace' would replace a package regardless of whether that
191# broke depending packages (typically due to shlib ABI changes, 191# broke depending packages (typically due to shlib ABI changes,
192# especially major version bumps). Therefore, make replace in DESTDIR 192# especially major version bumps). Therefore, make replace in DESTDIR
193# mode should behave the same way. unsafe_depends will be set on 193# mode should behave the same way. unsafe_depends will be set on
194# depending packages, and then those may be rebuilt via a manual 194# depending packages, and then those may be rebuilt via a manual
195# process or by pkg_rolling-replace. 195# process or by pkg_rolling-replace.
196replace-destdir: .PHONY 196replace-destdir: .PHONY
197 @${PHASE_MSG} "Updating using binary package of "${PKGNAME:Q} 197 @${PHASE_MSG} "Updating using binary package of "${PKGNAME:Q}
198.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS]) 198.if !empty(USE_CROSS_COMPILE:M[yY][eE][sS])
199 @${MKDIR} ${_CROSS_DESTDIR}${PREFIX} 199 @${MKDIR} ${_CROSS_DESTDIR}${PREFIX}
200 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -U -D -m ${MACHINE_ARCH} -I -p ${_CROSS_DESTDIR}${PREFIX} ${STAGE_PKGFILE} 200 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -U -D -m ${OPSYS:Q}/${MACHINE_ARCH:Q}\ ${OS_VERSION:Q} -I -p ${_CROSS_DESTDIR}${PREFIX} ${STAGE_PKGFILE}
201 @${ECHO} "Fixing recorded cwd..." 201 @${ECHO} "Fixing recorded cwd..."
202 @${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp 202 @${SED} -e 's|@cwd ${_CROSS_DESTDIR}|@cwd |' ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS > ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp
203 @${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS 203 @${MV} ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS.tmp ${_PKG_DBDIR}/${PKGNAME:Q}/+CONTENTS
204.else 204.else
205 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -U -D ${STAGE_PKGFILE} 205 ${SETENV} ${PKGTOOLS_ENV} ${PKG_ADD} -U -D ${STAGE_PKGFILE}
206.endif 206.endif
207 ${RUN}${_REPLACE_OLDNAME_CMD}; \ 207 ${RUN}${_REPLACE_OLDNAME_CMD}; \
208 ${PKG_INFO} -qR ${PKGNAME:Q} | while read pkg; do \ 208 ${PKG_INFO} -qR ${PKGNAME:Q} | while read pkg; do \
209 [ -n "$$pkg" ] || continue; \ 209 [ -n "$$pkg" ] || continue; \
210 ${PKG_ADMIN} set unsafe_depends_strict=YES "$$pkg"; \ 210 ${PKG_ADMIN} set unsafe_depends_strict=YES "$$pkg"; \
211 if [ "$$oldname" != ${PKGNAME:Q} ]; then \ 211 if [ "$$oldname" != ${PKGNAME:Q} ]; then \
212 ${PKG_ADMIN} set unsafe_depends=YES "$$pkg"; \ 212 ${PKG_ADMIN} set unsafe_depends=YES "$$pkg"; \
213 fi; \ 213 fi; \
214 done 214 done
215 ${RUN}for var in unsafe_depends unsafe_depends_strict rebuild mismatch; do \ 215 ${RUN}for var in unsafe_depends unsafe_depends_strict rebuild mismatch; do \
216 ${PKG_ADMIN} unset $$var ${PKGNAME:Q}; \ 216 ${PKG_ADMIN} unset $$var ${PKGNAME:Q}; \
217 done 217 done