thrift icon indicating copy to clipboard operation
thrift copied to clipboard

Refresh msvc2017 Dockerfile and add windows workflow

Open zsy056 opened this issue 2 months ago • 8 comments

Refresh msvc2017 Dockerfile and add windows workflow

  • [ ] Did you create an Apache Jira ticket? (Request account here, not required for trivial changes)
  • [ ] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"?
  • [x] Did you squash your changes to a single commit? (not required, but preferred)
  • [x] Did you do your best to avoid breaking changes? If one was needed, did you label the Jira ticket with "Breaking-Change"?
  • [ ] If your change does not involve any code, include [skip ci] anywhere in the commit message to free up build resources.

zsy056 avatar Nov 13 '25 07:11 zsy056

FYI: I am also looking at a Windows Action but taking a bit of a different approach: https://github.com/CJCombrink/thrift/pull/7

CJCombrink avatar Nov 13 '25 07:11 CJCombrink

FYI: I am also looking at a Windows Action but taking a bit of a different approach: CJCombrink#7

Cool! Your workflow runs much faster :D. The part I like about using docker is that it publishes a thrift-build image that can help folks get started with a ready-to-use environment. Maybe I can rename the workflow to something like msvc.yml.

zsy056 avatar Nov 13 '25 18:11 zsy056

does that include net10?

Jens-G avatar Nov 13 '25 20:11 Jens-G

does that include net10?

I don't think so, I can try to add the support.

zsy056 avatar Nov 13 '25 21:11 zsy056

does that include net10?

I don't think so, I can try to add the support.

I'm not so sure if this is really needed, sorry. Not sure what I had in mind when I asked that question.

Jens-G avatar Nov 14 '25 20:11 Jens-G

workflow failed as expected, I think the failed python test is being fixed in https://github.com/apache/thrift/pull/3231

Write-Error: Tests failed - check LastTest.log artifact for details
 Executing individual test scripts with various generated code directories
 Directories to be tested: gen-py-default, gen-py-slots, gen-py-oldstyle, gen-py-no_utf8strings, gen-py-dynamic, gen-py-dynamicslots, gen-py-enum, gen-py-type_hints
 Scripts to be tested: FastbinaryTest.py, TestFrozen.py, TestRenderedDoubleConstants.py, TSimpleJSONProtocolTest.py, SerializationTest.py, TestEof.py, TestSyntax.py, TestSocket.py, TestTypes.py
----------------
Traceback (most recent call last):
  File "C:\thrift\test\py\RunClientServer.py", line 334, in <module>
    sys.exit(main())
             ~~~~^^
  File "C:\thrift\test\py\RunClientServer.py", line 313, in main
    runScriptTest(options.libdir, options.gen_base, genpydir, script)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\thrift\test\py\RunClientServer.py", line 93, in runScriptTest
    env = setup_pypath(libdir, os.path.join(genbase, genpydir))
  File "C:\thrift\test\py\RunClientServer.py", line 86, in setup_pypath
    env['PYTHONPATH'] = os.pathsep.join(dirs)
                        ~~~~~~~~~~~~~~~^^^^^^
TypeError: sequence item 0: expected str instance, NoneType found
<end of output>
Test time =   0.20 sec
----------------------------------------------------------
Test Failed.

zsy056 avatar Nov 14 '25 21:11 zsy056

The part I like about using docker is that it publishes a thrift-build image that can help folks get started with a ready-to-use environment.

Sure it does have some benefit and it builds on top of what is already existing. Although I am not sure who is brave enough to do local docker based development on Windows :P

Just regarding the approach: I opted to use conan as a package manager instead of building dependencies manually. I think conan is more inclined to keep dependencies building and up to data compared to trying to maintain basically the same logic here. Conan also provides some pre-build packages that can speed up the build.

CJCombrink avatar Nov 17 '25 05:11 CJCombrink

The part I like about using docker is that it publishes a thrift-build image that can help folks get started with a ready-to-use environment.

Sure it does have some benefit and it builds on top of what is already existing. Although I am not sure who is brave enough to do local docker based development on Windows :P

Just regarding the approach: I opted to use conan as a package manager instead of building dependencies manually. I think conan is more inclined to keep dependencies building and up to data compared to trying to maintain basically the same logic here. Conan also provides some pre-build packages that can speed up the build.

I totally agree using Conan or vcpkg would be much better. I can switch the build script to use Conan after your change got merged.

Just curious, what is wrong about local docker based development on Windows? 🤣

zsy056 avatar Nov 17 '25 06:11 zsy056

publishes a thrift-build image

Except that we may not publish it. https://www.apache.org/legal/release-policy.html#release-definition

Jens-G avatar Dec 10 '25 22:12 Jens-G