Jens Geyer created THRIFT-6170:
----------------------------------

             Summary: 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: D - Library, Build Process
            Reporter: Jens Geyer


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)

Reply via email to