Tue Jun 13 14:43:49 2023 UTC ()
lang/php: properly passing PHP_VERSION_REQD

Properly passing PHP_VERSION_REQD, fixing some dependency problem noted by
wen@ via private mail.


(taca)
diff -r1.400 -r1.401 pkgsrc/lang/php/phpversion.mk

cvs diff -r1.400 -r1.401 pkgsrc/lang/php/phpversion.mk (switch to unified diff)

--- pkgsrc/lang/php/phpversion.mk 2023/06/09 13:18:55 1.400
+++ pkgsrc/lang/php/phpversion.mk 2023/06/13 14:43:49 1.401
@@ -1,248 +1,250 @@ @@ -1,248 +1,250 @@
1# $NetBSD: phpversion.mk,v 1.400 2023/06/09 13:18:55 taca Exp $ 1# $NetBSD: phpversion.mk,v 1.401 2023/06/13 14:43:49 taca Exp $
2# 2#
3# This file selects a PHP version, based on the user's preferences and 3# This file selects a PHP version, based on the user's preferences and
4# the installed packages. It does not add a dependency on the PHP 4# the installed packages. It does not add a dependency on the PHP
5# package. 5# package.
6# 6#
7# === User-settable variables === 7# === User-settable variables ===
8# 8#
9# PHP_VERSION_DEFAULT 9# PHP_VERSION_DEFAULT
10# The PHP version to choose when more than one is acceptable to 10# The PHP version to choose when more than one is acceptable to
11# the package. 11# the package.
12# 12#
13# Possible: 56 74 80 81 82 13# Possible: 56 74 80 81 82
14# Default: 74 14# Default: 74
15# 15#
16# === Infrastructure variables === 16# === Infrastructure variables ===
17# 17#
18# PHP_VERSION_REQD 18# PHP_VERSION_REQD
19# PHP version to use. This variable should not be set in 19# PHP version to use. This variable should not be set in
20# packages. Normally it is used by bulk build tools. 20# packages. Normally it is used by bulk build tools.
21# 21#
22# Possible: ${PHP_VERSIONS_ACCEPTED} 22# Possible: ${PHP_VERSIONS_ACCEPTED}
23# Default: ${PHP_VERSION_DEFAULT} 23# Default: ${PHP_VERSION_DEFAULT}
24# 24#
25# === Package-settable variables === 25# === Package-settable variables ===
26# 26#
27# PHP_VERSIONS_ACCEPTED 27# PHP_VERSIONS_ACCEPTED
28# The PHP versions that are accepted by the package. 28# The PHP versions that are accepted by the package.
29# 29#
30# Possible: 56 74 80 81 82 30# Possible: 56 74 80 81 82
31# Default: 74 56 80 81 82 31# Default: 74 56 80 81 82
32# 32#
33# PHP_VERSIONS_INCOMPATIBLE 33# PHP_VERSIONS_INCOMPATIBLE
34# The PHP versions that are not supported by the package. 34# The PHP versions that are not supported by the package.
35# 35#
36# Possible: 56 74 80 81 82 36# Possible: 56 74 80 81 82
37# Default: (empty) 37# Default: (empty)
38# 38#
39# PHP_CHECK_INSTALLED 39# PHP_CHECK_INSTALLED
40# Check installed version of PHP. Should be used by lang/php56, 40# Check installed version of PHP. Should be used by lang/php56,
41# lang/php74, lang/php80, and lang/php81 only. 41# lang/php74, lang/php80, and lang/php81 only.
42# 42#
43# Possible: Yes No 43# Possible: Yes No
44# Default: Yes 44# Default: Yes
45# 45#
46# === Variables defined by this file === 46# === Variables defined by this file ===
47# 47#
48# PKG_PHP_VERSION 48# PKG_PHP_VERSION
49# The selected PHP version. 49# The selected PHP version.
50# 50#
51# Possible: 56 74 80 81 82 51# Possible: 56 74 80 81 82
52# Default: ${PHP_VERSION_DEFAULT} 52# Default: ${PHP_VERSION_DEFAULT}
53# 53#
54# PHP_BASE_VERS 54# PHP_BASE_VERS
55# The selected PHP's full version depends on PKG_PHP_VERSION 55# The selected PHP's full version depends on PKG_PHP_VERSION
56# 56#
57# PKG_PHP_MAJOR_VERS 57# PKG_PHP_MAJOR_VERS
58# The selected PHP's major version. 58# The selected PHP's major version.
59# 59#
60# Possible: 5 7 8 60# Possible: 5 7 8
61# Default: 7 61# Default: 7
62# 62#
63# PKG_PHP 63# PKG_PHP
64# The same as ${PKG_PHP_VERSION}, prefixed with "php-". 64# The same as ${PKG_PHP_VERSION}, prefixed with "php-".
65# 65#
66# PHPPKGSRCDIR 66# PHPPKGSRCDIR
67# The directory of the PHP implementation, relative to the 67# The directory of the PHP implementation, relative to the
68# package directory. 68# package directory.
69# 69#
70# Example: ../../lang/php74 70# Example: ../../lang/php74
71# 71#
72# PHP_PKG_PREFIX 72# PHP_PKG_PREFIX
73# The prefix that is prepended to the package name. 73# The prefix that is prepended to the package name.
74# 74#
75# Example: php56 php74 php80 php81 75# Example: php56 php74 php80 php81
76# 76#
77# PHP_EXTENSION_DIR 77# PHP_EXTENSION_DIR
78# Relative path to ${PREFIX} for PHP's extensions. It is derived from 78# Relative path to ${PREFIX} for PHP's extensions. It is derived from
79# initial release of major version. 79# initial release of major version.
80# 80#
81# Example: lib/php/20181200 81# Example: lib/php/20181200
82# 82#
83# Keywords: php 83# Keywords: php
84# 84#
85 85
86.if !defined(PHPVERSION_MK) 86.if !defined(PHPVERSION_MK)
87PHPVERSION_MK= defined 87PHPVERSION_MK= defined
88 88
89# Define each PHP's version. 89# Define each PHP's version.
90PHP56_VERSION= 5.6.40 90PHP56_VERSION= 5.6.40
91PHP74_VERSION= 7.4.33 91PHP74_VERSION= 7.4.33
92PHP80_VERSION= 8.0.29 92PHP80_VERSION= 8.0.29
93PHP81_VERSION= 8.1.20 93PHP81_VERSION= 8.1.20
94PHP82_VERSION= 8.2.7 94PHP82_VERSION= 8.2.7
95 95
96# Define API version or initial release of major version. 96# Define API version or initial release of major version.
97PHP56_RELDATE= 20140828 97PHP56_RELDATE= 20140828
98PHP74_RELDATE= 20191128 98PHP74_RELDATE= 20191128
99PHP80_RELDATE= 20201124 99PHP80_RELDATE= 20201124
100PHP81_RELDATE= 20211125 100PHP81_RELDATE= 20211125
101PHP82_RELDATE= 20220829 101PHP82_RELDATE= 20220829
102 102
103_VARGROUPS+= php 103_VARGROUPS+= php
104_USER_VARS.php= PHP_VERSION_DEFAULT 104_USER_VARS.php= PHP_VERSION_DEFAULT
105_PKG_VARS.php= PHP_VERSIONS_ACCEPTED PHP_VERSION_REQD 105_PKG_VARS.php= PHP_VERSIONS_ACCEPTED PHP_VERSION_REQD
106_SYS_VARS.php= PKG_PHP_VERSION PKG_PHP PHPPKGSRCDIR PHP_PKG_PREFIX \ 106_SYS_VARS.php= PKG_PHP_VERSION PKG_PHP PHPPKGSRCDIR PHP_PKG_PREFIX \
107 PKG_PHP_MAJOR_VERS 107 PKG_PHP_MAJOR_VERS
108 108
109.include "../../mk/bsd.prefs.mk" 109.include "../../mk/bsd.prefs.mk"
110 110
111PHP_VERSION_DEFAULT?= 74 111PHP_VERSION_DEFAULT?= 74
112PHP_VERSIONS_ACCEPTED?= 74 56 80 81 82 112PHP_VERSIONS_ACCEPTED?= 74 56 80 81 82
113.for pv in ${PHP_VERSIONS_ACCEPTED} 113.for pv in ${PHP_VERSIONS_ACCEPTED}
114. if empty(PHP_VERSIONS_INCOMPATIBLE:M${pv}) 114. if empty(PHP_VERSIONS_INCOMPATIBLE:M${pv})
115_PHP_VERSIONS_ACCEPTED+= ${pv} 115_PHP_VERSIONS_ACCEPTED+= ${pv}
116. endif 116. endif
117.endfor 117.endfor
118 118
119# transform the list into individual variables 119# transform the list into individual variables
120.for pv in ${_PHP_VERSIONS_ACCEPTED} 120.for pv in ${_PHP_VERSIONS_ACCEPTED}
121_PHP_VERSION_${pv}_OK= yes 121_PHP_VERSION_${pv}_OK= yes
122.endfor 122.endfor
123 123
124# check what is installed 124# check what is installed
125.if exists(${LOCALBASE}/lib/php/${PHP82_RELDATE}) 125.if exists(${LOCALBASE}/lib/php/${PHP82_RELDATE})
126_PHP_VERSION_82_INSTALLED= yes 126_PHP_VERSION_82_INSTALLED= yes
127_PHP_INSTALLED= yes 127_PHP_INSTALLED= yes
128.elif exists(${LOCALBASE}/lib/php/${PHP81_RELDATE}) 128.elif exists(${LOCALBASE}/lib/php/${PHP81_RELDATE})
129_PHP_VERSION_81_INSTALLED= yes 129_PHP_VERSION_81_INSTALLED= yes
130_PHP_INSTALLED= yes 130_PHP_INSTALLED= yes
131.elif exists(${LOCALBASE}/lib/php/${PHP80_RELDATE}) 131.elif exists(${LOCALBASE}/lib/php/${PHP80_RELDATE})
132_PHP_VERSION_80_INSTALLED= yes 132_PHP_VERSION_80_INSTALLED= yes
133_PHP_INSTALLED= yes 133_PHP_INSTALLED= yes
134.elif exists(${LOCALBASE}/lib/php/${PHP74_RELDATE}) 134.elif exists(${LOCALBASE}/lib/php/${PHP74_RELDATE})
135_PHP_VERSION_74_INSTALLED= yes 135_PHP_VERSION_74_INSTALLED= yes
136_PHP_INSTALLED= yes 136_PHP_INSTALLED= yes
137.elif exists(${LOCALBASE}/lib/php/${PHP56_RELDATE}) 137.elif exists(${LOCALBASE}/lib/php/${PHP56_RELDATE})
138_PHP_VERSION_56_INSTALLED= yes 138_PHP_VERSION_56_INSTALLED= yes
139_PHP_INSTALLED= yes 139_PHP_INSTALLED= yes
140.endif 140.endif
141 141
142# if a version is explicitly required, take it 142# if a version is explicitly required, take it
143.if defined(PHP_VERSION_REQD) 143.if defined(PHP_VERSION_REQD)
144_PHP_VERSION= ${PHP_VERSION_REQD} 144_PHP_VERSION= ${PHP_VERSION_REQD}
145.endif 145.endif
146# if the default is already installed, it is first choice 146# if the default is already installed, it is first choice
147.if !defined(_PHP_VERSION) 147.if !defined(_PHP_VERSION)
148.if defined(_PHP_VERSION_${PHP_VERSION_DEFAULT}_OK) 148.if defined(_PHP_VERSION_${PHP_VERSION_DEFAULT}_OK)
149.if defined(_PHP_VERSION_${PHP_VERSION_DEFAULT}_INSTALLED) 149.if defined(_PHP_VERSION_${PHP_VERSION_DEFAULT}_INSTALLED)
150_PHP_VERSION= ${PHP_VERSION_DEFAULT} 150_PHP_VERSION= ${PHP_VERSION_DEFAULT}
151.endif 151.endif
152.endif 152.endif
153.endif 153.endif
154# prefer an already installed version, in order of "accepted" 154# prefer an already installed version, in order of "accepted"
155.if !defined(_PHP_VERSION) 155.if !defined(_PHP_VERSION)
156.for pv in ${_PHP_VERSIONS_ACCEPTED} 156.for pv in ${_PHP_VERSIONS_ACCEPTED}
157.if defined(_PHP_VERSION_${pv}_INSTALLED) 157.if defined(_PHP_VERSION_${pv}_INSTALLED)
158_PHP_VERSION?= ${pv} 158_PHP_VERSION?= ${pv}
159.else 159.else
160# keep information as last resort - see below 160# keep information as last resort - see below
161_PHP_VERSION_FIRSTACCEPTED?= ${pv} 161_PHP_VERSION_FIRSTACCEPTED?= ${pv}
162.endif 162.endif
163.endfor 163.endfor
164.endif 164.endif
165# if the default is OK for the add-on pkg, take this 165# if the default is OK for the add-on pkg, take this
166.if !defined(_PHP_VERSION) 166.if !defined(_PHP_VERSION)
167.if defined(_PHP_VERSION_${PHP_VERSION_DEFAULT}_OK) 167.if defined(_PHP_VERSION_${PHP_VERSION_DEFAULT}_OK)
168_PHP_VERSION= ${PHP_VERSION_DEFAULT} 168_PHP_VERSION= ${PHP_VERSION_DEFAULT}
169.endif 169.endif
170.endif 170.endif
171# take the first one accepted by the package 171# take the first one accepted by the package
172.if !defined(_PHP_VERSION) 172.if !defined(_PHP_VERSION)
173_PHP_VERSION= ${_PHP_VERSION_FIRSTACCEPTED} 173_PHP_VERSION= ${_PHP_VERSION_FIRSTACCEPTED}
174.endif 174.endif
175 175
176# 176#
177# Variable assignment for multi-PHP packages 177# Variable assignment for multi-PHP packages
178MULTI+= PHP_VERSION_REQD=${_PHP_VERSION} 178MULTI+= PHP_VERSION_REQD=${_PHP_VERSION}
179 179
180# export some of the internal variables 180# export some of the internal variables
181PKG_PHP_VERSION:= ${_PHP_VERSION:C/\.[0-9]//} 181PKG_PHP_VERSION:= ${_PHP_VERSION:C/\.[0-9]//}
182PKG_PHP:= PHP${_PHP_VERSION:C/([0-9])([0-9])/\1.\2/} 182PKG_PHP:= PHP${_PHP_VERSION:C/([0-9])([0-9])/\1.\2/}
183 183
184# Major version 184# Major version
185PKG_PHP_MAJOR_VERS:= ${_PHP_VERSION:C/^([0-9]).*/\1/} 185PKG_PHP_MAJOR_VERS:= ${_PHP_VERSION:C/^([0-9]).*/\1/}
186 186
187PHP_CHECK_INSTALLED?= Yes 187PHP_CHECK_INSTALLED?= Yes
188 188
189# if installed PHP isn't compatible with required PHP, bail out 189# if installed PHP isn't compatible with required PHP, bail out
190.if empty(PHP_CHECK_INSTALLED:M[nN][oO]) 190.if empty(PHP_CHECK_INSTALLED:M[nN][oO])
191.if defined(_PHP_INSTALLED) && !defined(_PHP_VERSION_${_PHP_VERSION}_INSTALLED) 191.if defined(_PHP_INSTALLED) && !defined(_PHP_VERSION_${_PHP_VERSION}_INSTALLED)
192PKG_FAIL_REASON+= "Package accepts ${PKG_PHP}, but a different version is installed" 192PKG_FAIL_REASON+= "Package accepts ${PKG_PHP}, but a different version is installed"
193.endif 193.endif
194.endif 194.endif
195 195
196MESSAGE_SUBST+= PKG_PHP_VERSION=${PKG_PHP_VERSION} \ 196MESSAGE_SUBST+= PKG_PHP_VERSION=${PKG_PHP_VERSION} \
197 PKG_PHP=${PKG_PHP} 197 PKG_PHP=${PKG_PHP}
198PLIST_SUBST+= PHP_PKG_PREFIX=${PHP_PKG_PREFIX} \ 198PLIST_SUBST+= PHP_PKG_PREFIX=${PHP_PKG_PREFIX} \
199 PKG_PHP_VERSION=${PKG_PHP_VERSION} \ 199 PKG_PHP_VERSION=${PKG_PHP_VERSION} \
200 PKG_PHP_MAJOR_VERS=${PKG_PHP_MAJOR_VERS} \ 200 PKG_PHP_MAJOR_VERS=${PKG_PHP_MAJOR_VERS} \
201 PHP_EXTENSION_DIR=${PHP_EXTENSION_DIR} 201 PHP_EXTENSION_DIR=${PHP_EXTENSION_DIR}
202 202
203# force the selected PHP version for recursive builds 203# force the selected PHP version for recursive builds
204PHP_VERSION_REQD:= ${PKG_PHP_VERSION} 204PHP_VERSION_REQD:= ${PKG_PHP_VERSION}
205 205
206# 206#
207# set variables for the version we decided to use: 207# set variables for the version we decided to use:
208# 208#
209.if ${_PHP_VERSION} == "56" 209.if ${_PHP_VERSION} == "56"
210PHP_VERSION= ${PHP56_VERSION} 210PHP_VERSION= ${PHP56_VERSION}
211PHP_INITIAL_TEENY= 3 211PHP_INITIAL_TEENY= 3
212PHP_EXTENSION_DIR= lib/php/${PHP56_RELDATE} 212PHP_EXTENSION_DIR= lib/php/${PHP56_RELDATE}
213.elif ${_PHP_VERSION} == "74" 213.elif ${_PHP_VERSION} == "74"
214PHP_VERSION= ${PHP74_VERSION} 214PHP_VERSION= ${PHP74_VERSION}
215PHP_EXTENSION_DIR= lib/php/${PHP74_RELDATE} 215PHP_EXTENSION_DIR= lib/php/${PHP74_RELDATE}
216.elif ${_PHP_VERSION} == "80" 216.elif ${_PHP_VERSION} == "80"
217PHP_VERSION= ${PHP80_VERSION} 217PHP_VERSION= ${PHP80_VERSION}
218PHP_EXTENSION_DIR= lib/php/${PHP80_RELDATE} 218PHP_EXTENSION_DIR= lib/php/${PHP80_RELDATE}
219.elif ${_PHP_VERSION} == "81" 219.elif ${_PHP_VERSION} == "81"
220PHP_VERSION= ${PHP81_VERSION} 220PHP_VERSION= ${PHP81_VERSION}
221PHP_EXTENSION_DIR= lib/php/${PHP81_RELDATE} 221PHP_EXTENSION_DIR= lib/php/${PHP81_RELDATE}
222.elif ${_PHP_VERSION} == "82" 222.elif ${_PHP_VERSION} == "82"
223PHP_VERSION= ${PHP82_VERSION} 223PHP_VERSION= ${PHP82_VERSION}
224PHP_EXTENSION_DIR= lib/php/${PHP82_RELDATE} 224PHP_EXTENSION_DIR= lib/php/${PHP82_RELDATE}
225.else 225.else
226# force an error 226# force an error
227PKG_FAIL_REASON+= "${PKG_PHP} is not a valid package" 227PKG_FAIL_REASON+= "${PKG_PHP} is not a valid package"
228.endif 228.endif
229 229
230PHP_INITIAL_TEENY?= 0 230PHP_INITIAL_TEENY?= 0
231PHPPKGSRCDIR= ../../lang/php${PKG_PHP_VERSION} 231PHPPKGSRCDIR= ../../lang/php${PKG_PHP_VERSION}
232PHP_PKG_PREFIX= php${PKG_PHP_VERSION} 232PHP_PKG_PREFIX= php${PKG_PHP_VERSION}
233 233
234_PHP_VER_MAJOR= ${PHP_VERSION:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\1/} 234_PHP_VER_MAJOR= ${PHP_VERSION:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\1/}
235_PHP_VER_MINOR= ${PHP_VERSION:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\2/} 235_PHP_VER_MINOR= ${PHP_VERSION:C/([0-9]+)\.([0-9]+)\.([0-9]+)/\2/}
236 236
237PHP_BASE_VERS= ${_PHP_VER_MAJOR}.${_PHP_VER_MINOR}.${PHP_INITIAL_TEENY} 237PHP_BASE_VERS= ${_PHP_VER_MAJOR}.${_PHP_VER_MINOR}.${PHP_INITIAL_TEENY}
238 238
239# 239#
240# check installed version against required: 240# check installed version against required:
241# 241#
242.if !empty(PHP_CHECK_INSTALLED:M[nN][oO]) 242.if !empty(PHP_CHECK_INSTALLED:M[nN][oO])
243.if defined(_PHP_VERSION_INSTALLED) && ${_PHP_VERSION} != ${_PHP_VERSION_INSTALLED} 243.if defined(_PHP_VERSION_INSTALLED) && ${_PHP_VERSION} != ${_PHP_VERSION_INSTALLED}
244PKG_FAIL_REASON+= "${PKGBASE} requires ${PKG_PHP}, but php-${_PHP_VERSION_INSTALLED} is already installed." 244PKG_FAIL_REASON+= "${PKGBASE} requires ${PKG_PHP}, but php-${_PHP_VERSION_INSTALLED} is already installed."
245.endif 245.endif
246.endif 246.endif
247 247
 248MAKEFLAGS+= PHP_VERSION_REQD=${PHP_VERSION_REQD}
 249
248.endif # PHPVERSION_MK 250.endif # PHPVERSION_MK