docs: record the compat.openssl windows gap as a TODO with its evidence - #152
Merged
Conversation
windows support was attempted (#150, now a draft — it cannot be merged as it stands: it turns tests/examples/openssl on windows from a passing no-op main() into a failing build) and did not land. Rather than leave that as six rounds of CI archaeology, what was learned is written down. Settled, and not worth re-investigating: * OpenSSL 3.5.1 leaves exactly one x64 windows path — VC-WIN64A, whose build_scheme is an NMAKE makefile; the clang-cl configs are Windows-on-ARM. * That brings two HOST requirements the package cannot supply: perl (xim:perl ships no windows build — "The Windows answer is Strawberry Perl") and a VS C++ toolset for nmake. Declaring xim:perl in a windows xpm block would fail resolution BEFORE install() runs — the same trap compat.openssl already documents for xim:make on macosx. Where it stops: vswhere finds the toolset correctly, and then running vcvars in ANY form takes the whole process chain down — plain `call`, a child `cmd /c`, and the standard `cmd /c "vcvars & set"` environment dump all stop at that line with no RESULT and no error. That no longer looks like a mistake in the descriptor, so the doc recommends running `perl Configure VC-WIN64A && nmake` by hand on a windows machine inside the mcpp sandbox before writing more code. All six rounds so far were blind CI iterations at ~10 minutes each. The old "requires prebuilt MSVC libs uploaded to xlings-res" line in the descriptor is replaced: that is not the blocker, and leaving it would send the next person after the wrong thing. The doc also carries five findings that apply to ANY install() hook: log.error never reaches the job (only a self-made mcpp_*_build.log does), the xlings sandbox exposes a SUBSET of xmake's Lua API and calling outside it kills the hook silently (os.curdir, path.absolute), os.exec can report success for a script that did nothing, the log must exist before anything that can fail, and io.writefile does not translate line endings while cmd's batch parsing assumes CRLF.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
compat.opensslwindows support was attempted in #150 and did not land. That PR is nowa draft — as it stands it would be a windows regression:
tests/examples/opensslgoesfrom a passing no-op
main()to a failing build.Rather than leave six rounds of CI archaeology in a closed branch, this writes down what
was learned so the next attempt starts where this one stopped.
Settled — not worth re-investigating
VC-WIN64A(Configurations/10-main.conf); the clang-cl configs are Windows-on-ARMbuild_schemeVC-common→ an NMAKE makefile, which GNU make cannot drivexim:perlships no windows build ("The Windows answer is Strawberry Perl")xim:makeis GNU make and linux-onlyxim:perlin a windows xpm block would fail resolution beforeinstall()runs — the same trap
compat.opensslalready documents forxim:makeon macosx.Where it stops
vswhere finds the toolset correctly:
…and then running vcvars in any form takes the whole process chain down. Three shapes,
identical behaviour — stop at that line, no RESULT, no error:
call "%VCVARS%"from the batchcmd /c <inner.bat>(the outer script dies too)cmd /c ""%VCVARS%" & set"— the standard environment-dump techniqueThat no longer looks like a mistake in the descriptor, so the doc recommends running
perl Configure VC-WIN64A && nmakeby hand on a windows machine inside the mcppsandbox before writing more code. All six rounds so far were blind CI iterations at ~10
minutes each.
Also replaced
The descriptor's old note said windows "requires prebuilt MSVC libs uploaded to
xlings-res". That is not the blocker, and leaving it would send the next person after
the wrong thing.
Five findings that apply to any
install()hookNot specific to openssl, and each cost a CI round to find:
log.errornever reaches the job — failure is a bareE_INTERNAL: [openssl] failed:.The only surviving channel is a self-made log;
validate.yml's dump step findsmcpp_*_build.log.the hook silently — no error, no traceback. Confirmed unavailable:
os.curdir(),path.absolute().os.execcan report success for a script that did nothing and wrote nothing.build logs found" and you have zero information.
io.writefiledoes not translate line endings, while cmd's batch parsing assumes CRLF.Blocked on this
mcpplibs.grpc(#151) is linux + macOS for this reason alone. grpc-m already carries itswindows compile/link flags; when this lands, restoring it is: grpc-m's windows CI leg,
pkgs/g/grpc.lua's windows xpm block, andtests/examples/grpc-module's windows gate.