[
https://issues.apache.org/jira/browse/THRIFT-6170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jens Geyer resolved THRIFT-6170.
--------------------------------
Fix Version/s: 0.25.0
Assignee: Jens Geyer
Resolution: Fixed
> Add a GitHub Actions CI job for the D library
> ---------------------------------------------
>
> Key: THRIFT-6170
> URL: https://issues.apache.org/jira/browse/THRIFT-6170
> Project: Thrift
> Issue Type: New Feature
> Components: Build Process, D - Library
> Reporter: Jens Geyer
> Assignee: Jens Geyer
> Priority: Major
> Fix For: 0.25.0
>
> Time Spent: 40m
> Remaining Estimate: 0h
>
> No CI job builds or tests the D binding.
> .github/workflows/build.yml has jobs for php, go, java-kotlin, netstd, haxe,
> rust, python, nodejs, cpp and ruby, but none for D, and its shared
> CONFIG_ARGS_FOR_LIBS passes --without-d. The docker.yml workflow only builds
> and validates the official images (docker/test.sh); it does not run any
> language test suite. So a change to lib/d gets no automated coverage at all,
> and a regression would only be found by someone building D by hand.
> That is not hypothetical: THRIFT-6168 (PR #3766) had to be verified by
> running lib/d's unittest binaries locally in the thrift:jammy image, because
> nothing in CI would have caught a break.
> Most of what a job needs already exists:
> * build/docker/ubuntu-{focal,jammy,noble}/Dockerfile already install dmd
> (D_VERSION 2.087.0) together with the deimos libevent and OpenSSL headers, so
> the toolchain is provisioned and pinned.
> * configure.ac already has AX_DMD, DMD_LIBEVENT_FLAGS and DMD_OPENSSL_FLAGS,
> and gates the libevent and OpenSSL parts behind with_d_event_tests /
> with_d_ssl_tests.
> * lib/d/Makefile.am already defines the unittest/debug/% and
> unittest/release/% rules and lists them in TESTS. `make -C lib/d check`
> builds and runs every module twice, debug and release -- 43 modules, 86
> binaries on a build with libevent and OpenSSL excluded.
> * lib/d/test/Makefile.am additionally builds the cross-test client and server
> and the transport/client-pool tests.
> So the work is roughly: a lib-d job that installs dmd plus the two deimos
> header sets the way the docker images do, runs ./bootstrap.sh, configures
> with --with-d and the other bindings off, and runs make -C lib/d check.
> Whether to also run lib/d/test (which needs libevent and OpenSSL) can be
> decided when it is written.
> Compare THRIFT-6002 (netstd) and THRIFT-6003 (haxe), which added the
> equivalent jobs for those bindings.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)