Skip to content

Commit df70039

Browse files
committed
new packages for pie and frankenphp too
1 parent f1a9c3c commit df70039

1 file changed

Lines changed: 47 additions & 7 deletions

File tree

.github/workflows/spc-download.yml

Lines changed: 47 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ jobs:
5858
run: |
5959
php vendor/bin/spc download --shallow-clone -e amqp,apcu,ast,bcmath,brotli,bz2,calendar,ctype,curl,dba,decimal,deepclone,dio,dom,ds,ev,event,excimer,exif,ffi,fileinfo,filter,ftp,gd,gettext,gmp,gmssl,grpc,iconv,igbinary,imagick,inotify,intl,ldap,libxml,lz4,maxminddb,mbregex,mbstring,memcache,memcached,mongodb,msgpack,mysqli,mysqlnd,mysqlnd_parsec,mysqlnd_ed25519,odbc,opcache,openssl,opentelemetry,parallel,password-argon2,pcov,pcntl,pdo,pdo_mysql,pdo_odbc,pdo_pgsql,pdo_sqlite,pdo_sqlsrv,pgsql,phar,posix,protobuf,rar,rdkafka,readline,redis,session,shmop,simdjson,simplexml,snappy,soap,sockets,sodium,spx,sqlite3,sqlsrv,ssh2,swoole,sysvmsg,sysvsem,sysvshm,tidy,tokenizer,trader,uuid,uv,xdebug,xhprof,xlswriter,xml,xmlreader,xmlwriter,xsl,xz,yac,yaml,zip,zlib,zstd
6060
61-
- name: Probe latest PHP versions
62-
id: probe-php
61+
- name: Probe upstream releases
62+
id: probe-upstream
6363
run: |
6464
set -euo pipefail
6565
new='{}'
@@ -73,8 +73,21 @@ jobs:
7373
echo "PHP ${v} latest: ${latest}"
7474
new=$(jq --arg v "$v" --arg l "$latest" '. + {($v): $l}' <<< "$new")
7575
done
76+
77+
pie_latest=$(curl -fsSL \
78+
-H "Authorization: Bearer $GITHUB_TOKEN" \
79+
-H "Accept: application/vnd.github+json" \
80+
"https://api.github.com/repos/php/pie/releases/latest" \
81+
| jq -r '.tag_name // empty')
82+
if [[ -z "$pie_latest" ]]; then
83+
echo "::error::Failed to fetch latest pie release"
84+
exit 1
85+
fi
86+
echo "pie latest: ${pie_latest}"
87+
7688
mkdir -p downloads
77-
jq --argjson v "$new" -n '{php_versions: $v}' > downloads/.spc-meta.json
89+
jq --argjson v "$new" --arg pie "$pie_latest" -n \
90+
'{php_versions: $v, pie_version: $pie}' > downloads/.spc-meta.json
7891
7992
- name: Diff state and compute triggers
8093
id: diff
@@ -84,13 +97,29 @@ jobs:
8497
set -euo pipefail
8598
8699
EXT_JSON=vendor/crazywhalecc/static-php-cli/config/ext.json
87-
src_to_ext=$(jq -c '
100+
ext_map=$(jq -c '
88101
to_entries
89102
| map(select(.value.source != null))
90103
| map({(.value.source): .key})
91104
| add // {}
92105
' "$EXT_JSON")
93-
echo "Source->ext map size: $(jq 'length' <<< "$src_to_ext")"
106+
107+
# Map SAPI source keys (frankenphp, ...) to their package name.
108+
# cli/cgi/fpm/embed live in php-src and ride php_versions bumps;
109+
# any SAPI in craft.yml whose name also appears as an SPC source
110+
# gets a 1:1 mapping here so its source bumps trigger a rebuild.
111+
SAPI_CSV=$(sed -n 's/^sapi: *//p' craft.yml | head -1)
112+
sapi_map=$(jq -nc \
113+
--arg s "$SAPI_CSV" \
114+
--slurpfile lock downloads/.lock.json '
115+
($lock[0] // {} | keys) as $keys |
116+
($s | split(",") | map(gsub("^\\s+|\\s+$"; ""))) as $sapis |
117+
[ $sapis[] | select(. as $n | $keys | index($n)) | {(.): .} ]
118+
| add // {}
119+
')
120+
121+
src_to_pkg=$(jq -nc --argjson e "$ext_map" --argjson s "$sapi_map" '$e + $s')
122+
echo "Source->package map size: $(jq 'length' <<< "$src_to_pkg") (ext=$(jq 'length' <<< "$ext_map"), sapi=$(jq 'length' <<< "$sapi_map"))"
94123
95124
changed_sources=$(jq -nc \
96125
--slurpfile prev .download-state/lock.prev.json \
@@ -102,10 +131,21 @@ jobs:
102131
')
103132
echo "Changed source keys: $(jq -c . <<< "$changed_sources")"
104133
105-
changed_exts=$(jq -nc --argjson s "$changed_sources" --argjson m "$src_to_ext" '
134+
changed_pkgs=$(jq -nc --argjson s "$changed_sources" --argjson m "$src_to_pkg" '
106135
$s | map($m[.]) | map(select(. != null)) | unique
107136
')
108-
pkgs=$(jq -r 'join(",")' <<< "$changed_exts")
137+
138+
# pie is downloaded outside SPC (src/package/pie.php pulls from
139+
# github.com/php/pie releases), so it never appears in lock.json.
140+
# Detect bumps via the version stashed in .spc-meta.json by probe-upstream.
141+
prev_pie=$(jq -r '.pie_version // ""' .download-state/meta.prev.json)
142+
cur_pie=$(jq -r '.pie_version // ""' downloads/.spc-meta.json)
143+
if [[ "$prev_pie" != "$cur_pie" ]]; then
144+
echo "pie version bump: ${prev_pie:-<none>} -> ${cur_pie}"
145+
changed_pkgs=$(jq -c '. + ["pie"] | unique' <<< "$changed_pkgs")
146+
fi
147+
148+
pkgs=$(jq -r 'join(",")' <<< "$changed_pkgs")
109149
echo "Changed packages: ${pkgs:-<none>}"
110150
111151
full_versions=$(jq -nrc \

0 commit comments

Comments
 (0)