[ 
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)

Reply via email to