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)