From: Remi Gacogne Date: Wed, 20 Sep 2023 11:55:54 +0000 (+0200) Subject: build-and-test-all: Build Quiche, and enable DoQ for dnsdist X-Git-Tag: rec-5.0.0-alpha2~6^2~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3e5c7a76420d24fc7e2711e47c71d06aa9d1b25a;p=thirdparty%2Fpdns.git build-and-test-all: Build Quiche, and enable DoQ for dnsdist --- diff --git a/.github/workflows/build-and-test-all.yml b/.github/workflows/build-and-test-all.yml index 6e25bc0d12..b5eb3772e5 100644 --- a/.github/workflows/build-and-test-all.yml +++ b/.github/workflows/build-and-test-all.yml @@ -236,6 +236,10 @@ jobs: path: ~/.ccache key: dnsdist-${{ matrix.features }}-${{ matrix.sanitizers }}-ccache-${{ steps.get-stamp.outputs.stamp }} restore-keys: dnsdist-${{ matrix.features }}-${{ matrix.sanitizers }}-ccache- + - run: inv ci-install-rust ${{ env.REPO_HOME }} + working-directory: ./pdns/dnsdistdist/ + - run: inv ci-build-and-install-quiche + working-directory: ./pdns/dnsdistdist/ - run: inv ci-autoconf working-directory: ./pdns/dnsdistdist/ - run: inv ci-dnsdist-configure ${{ matrix.features }} diff --git a/tasks.py b/tasks.py index 97b7335247..8846c3052f 100644 --- a/tasks.py +++ b/tasks.py @@ -9,6 +9,8 @@ auth_backend_ip_addr = os.getenv('AUTH_BACKEND_IP_ADDR', '127.0.0.1') clang_version = os.getenv('CLANG_VERSION', '13') rust_version = 'rust-1.72.0-x86_64-unknown-linux-gnu' +quiche_version = '0.18.0' +quiche_hash = 'eb242a14c4d801a90b57b6021dd29f7a62099f3a4d7a7ba889e105f8328e6c1f' all_build_deps = [ 'ccache', @@ -490,6 +492,7 @@ def ci_dnsdist_configure(c, features): --enable-dnscrypt \ --enable-dns-over-tls \ --enable-dns-over-https \ + --enable-dns-over-quic \ --enable-systemd \ --prefix=/opt/dnsdist \ --with-gnutls \ @@ -885,6 +888,28 @@ def coverity_upload(c, email, project, tarball): --form description="master build" \ https://scan.coverity.com/builds?project={project}', hide=True) +@task +def ci_build_and_install_quiche(c): + # we have to pass -L because GitHub will do a redirect, sadly + c.run(f'curl -L -o quiche-{quiche_version}.tar.gz https://github.com/cloudflare/quiche/archive/{quiche_version}.tar.gz') + # Line below should echo two spaces between digest and name + c.run(f'echo {quiche_hash}" "quiche-{quiche_version}.tar.gz | sha256sum -c -') + c.run(f'tar xf quiche-{quiche_version}.tar.gz') + with c.cd(f'quiche-{quiche_version}'): + c.run('cargo build --release --no-default-features --features ffi,pkg-config-meta,qlog,boringssl-boring-crate --package quiche') + c.run('ls quiche/include/quiche.h target/release/libquiche.a /usr/include /usr/lib /usr/lib/pkgconfig') + # cannot use c.sudo() inside a cd() context, see https://github.com/pyinvoke/invoke/issues/687 + c.run('sudo install -Dm644 quiche/include/quiche.h /usr/include') + c.run('sudo install -Dm644 target/release/libquiche.a /usr/lib') + c.run("""sudo install -Dm644 /dev/stdin /usr/lib/pkgconfig/quiche.pc <