You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added Delphi 13.2 Florence, whose PAServer just went live at https://altd.embarcadero.com/releases/studio/37.0/132/LinuxPAServer37.0.tar.gz, and promote it to the default (37.0), following the repo's existing convention of moving the bare compiler alias to the newest point release.
Add 13.1 as its own explicit entry (previously the default).
Update README and help text to match.
URL guessing (try_guess_paserver_url)
Guessing logic (added in d8686a9) already predicts the correct flat {compiler}/{digits}/LinuxPAServer{compiler}.tar.gz with the assumption of future 13.x, 14.x, and 15.x versions.
CI Update
probes all hard coded PAServer URLs
Test installs the latest hard coded version on both Ubuntu and Red Hat
If URL guessing finds a newer version then it tests that too.
When a numeric version is requested that isn't in the explicit case list,
probe candidate URLs based on Embarcadero's observed path patterns:
- Tokyo/Rio (19.0/20.0): PAServer/Release{N}/ for updates
- Sydney (21.0): {N}/PAServer/ for updates
- Alexandria (22.0): {digits}1/ then {digits}/ for updates
- Athens/Florence+: {digits}/ then {digits}/{digits}1/
Probes are done with a HEAD request (curl -sI); the first 200 response
wins. Prints a warning so the user knows the URL was guessed rather than
verified. Falls through to the existing error path if no candidate hits.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Delphi 13.2 has been released with PAServer at
https://altd.embarcadero.com/releases/studio/37.0/132/LinuxPAServer37.0.tar.gz
which matches the flat {digits}/ pattern the URL-guessing logic already
predicts for Athens/Florence-era releases. Add it as an explicit case
(following the existing convention of moving the bare compiler alias to
the newest point release) so it no longer relies on guessing, and shift
13.1 to its own explicit entry.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q3a4oiwydRpUbFEJaxbCQU
jimmckeeth
changed the title
Add explicit Delphi 13.2 Florence URL and update from main
Add explicit Delphi 13.2 Florence URL and guessing for future versions
Sep 22, 2026
Copilot's review on PR #12 flagged that CI never validated the new
13.2 default because commit_test.yml hardcoded 13.1. Instead of
hand-maintaining that list, add a discover_versions job that greps
the script's own PRODUCT="..." entries, sorts them, and takes the
newest 5; ubuntu_test and rhel_test now run as a matrix over that
list. Adding a new explicit version to SetupLinux4Delphi.sh picks it
up in CI automatically.
Before Florence's release, the compiler-number-to-product mapping had
tracked 1:1 (19->20->21->22->23 for 10.2 through 12.x) until it jumped
+14 to 37.0 for 13.x. Since 14.0 is the plausible next release and
having to patch this table the moment it ships defeats the purpose of
guessing ahead of time, extend the mapping with 14.0->38.0 and
15.0->39.0, assuming the pre-jump +1-per-major pattern resumes.
This is explicitly labeled as unverified: probing still gates whether
the guess is actually used, and an extra warning fires whenever the
release codename is unknown, prompting a DocWiki double-check.
This probe hard-codes curl before the package-manager branch installs dependencies, while the RHEL path guarantees wget but not curl. On a minimal supported host with only wget, the guess path cannot probe any candidate and returns Unknown version before installation; select the available downloader (or install curl before probing) instead.
Running full docker installs for the 5 newest versions on both OSes
was overkill for what's really being validated. Replace it with:
- probe_urls: a cheap HEAD check against every hardcoded PASERVER_URL,
independent of the install jobs, so a stale link is caught without
needing a full install to notice.
- plan: installs/starts only the single newest hardcoded version, and
additionally probes try_guess_paserver_url for the next minor/major
version; if guessing finds a real not-yet-listed URL, that version
is added to the test matrix too and flagged via a workflow warning
so it gets added explicitly.
This drops the full-install job count from 5x2=10 down to typically
1-2 per OS, while still catching both dead links across the whole
table and a newly-released version the script hasn't been told about
yet.
Addresses two Copilot findings on PR #12:
- has_patch was set but never read (ShellCheck SC2034, fails the
severity:error job). Now it gates a real check instead.
- For eras 11-15 (Alexandria/Athens/Florence/guessed future), a
3-component input like "13.2.1" was silently probed as "13.2",
since patch was discarded when building product/digits. These eras
only ever ship as major.minor, unlike 10.x's Release1/2/3, so a
3-component input for them is rejected outright instead of quietly
resolving to a different version than what was typed.
Third Copilot finding on PR #12 (pre-existing, not introduced by this
branch): try_guess_paserver_url runs before the package-manager step
installs anything, so hardcoding curl meant a host with only wget (or
neither, yet) would hit "curl: command not found" under set -e and
abort the whole script instead of falling through to "Unknown
version". Mirror download_file's wget-then-curl fallback here too.
…ment
The URL-extraction regex matched any PASERVER_URL="..." assignment in
the script, including the literal `PASERVER_URL="$url"` line inside
try_guess_paserver_url()'s success path. That fed the literal string
"$url" to curl as a 21st "hardcoded URL", which always failed and
printed a useless "Broken PASERVER_URL (): $url" with no way to tell
it wasn't a real link.
Restrict the regex to actual http(s) literals, and also write failed
URLs to the job summary so a real failure is easy to spot instead of
only showing up as an inline ::error:: annotation.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
wget's -q flag suppressed --server-response output entirely, so the
guess probe never saw an HTTP status line and always fell through
(the curl branch was unreachable on hosts with wget, since it's
checked first). Drop -q; the existing awk filter already ignores the
non-HTTP-header noise this exposes.
test-local.ps1 still defaulted to 13.1 and claimed to match the CI
default, but CI now always targets whatever is newest (currently
13.2).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The default PARAM alias, the help text's [DEFAULT] marker, and
test-local.ps1's default -Version were three separate hardcoded
literals that all had to be bumped together whenever a new version
was promoted to default — exactly the kind of drift that got missed
going from 13.1 to 13.2.
Add KNOWN_VERSIONS (a plain array of the product versions already
covered by case branches) and compute LATEST_VERSION from it via
`sort -V | tail -1`. PARAM's default and the help text's [DEFAULT]
marker (via a new version_tag helper) both derive from that instead
of independent literals.
test-local.ps1 can't read a bash array directly, so it mirrors what
commit_test.yml's `plan` job already does: grep the script's own
PRODUCT="..." lines via WSL and sort -V for the newest one, falling
back to a literal only if WSL can't do the detection.
Document the extra KNOWN_VERSIONS/version_tag step in AGENTS.md's
version-mapping playbook so it isn't missed next time either.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
https://altd.embarcadero.com/releases/studio/37.0/132/LinuxPAServer37.0.tar.gz, and promote it to the default (37.0), following the repo's existing convention of moving the bare compiler alias to the newest point release.13.1as its own explicit entry (previously the default).URL guessing (
try_guess_paserver_url)Guessing logic (added in
d8686a9) already predicts the correct flat{compiler}/{digits}/LinuxPAServer{compiler}.tar.gzwith the assumption of future 13.x, 14.x, and 15.x versions.CI Update