From: David Mulder Date: Mon, 12 Aug 2024 20:25:12 +0000 (-0600) Subject: Modify rust build to share target dir w/ cargo test X-Git-Tag: tdb-1.4.13~897 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4a4304ecf7828ef80daa2134dcff234e32dc5caf;p=thirdparty%2Fsamba.git Modify rust build to share target dir w/ cargo test The build needs to share the target directory with the cargo test command to prevent duplicate dependency downloads. Signed-off-by: David Mulder Reviewed-by: Alexander Bokovoy --- diff --git a/buildtools/wafsamba/samba_rust.py b/buildtools/wafsamba/samba_rust.py index c58bf89428a..8f5a97dbaee 100644 --- a/buildtools/wafsamba/samba_rust.py +++ b/buildtools/wafsamba/samba_rust.py @@ -7,7 +7,7 @@ def SAMBA_CHECK_RUST(conf): conf.find_program('cargo', var='CARGO', mandatory=not conf.env.disable_rust) -def SAMBA_RUST(bld, name, source, enabled=True): +def SAMBA_RUST(bld, rust_subdir, target_name, source, enabled=True): # force-disable when we can't build rust modules, so # every single call doesn't need to pass this in. if bld.env.disable_rust: @@ -19,18 +19,21 @@ def SAMBA_RUST(bld, name, source, enabled=True): release_flag = '' if bld.env.debug or bld.env.developer: - target = os.path.join('debug', name) + target = os.path.join('debug', target_name) else: release_flag = '--release' - target = os.path.join('release', name) + target = os.path.join('release', target_name) target = bld.path.find_or_declare(target) - rust_vars = 'CARGO_TARGET_DIR=%s' % bld.path.find_or_declare('./') + # The Rust target directory is one directory above the located target + target_dir = os.path.join(os.path.dirname('%s' % target), '../') - rule = [rust_vars, '${CARGO}', 'build', - '--manifest-path=${SRC[0].abspath(env)}', release_flag] - bld.SAMBA_GENERATOR(name, + rule = ['${CARGO}', 'build', + '--manifest-path=${SRC[0].abspath(env)}', + '--target-dir=%s' % target_dir, + release_flag] + bld.SAMBA_GENERATOR(target_name, ' '.join(rule), - source='Cargo.toml %s' % source, + source='%s/Cargo.toml %s' % (rust_subdir, source), target=target, group='final', enabled=enabled) diff --git a/rust/himmelblaud/wscript_build b/rust/himmelblaud/wscript_build deleted file mode 100644 index 5997ab0ccfc..00000000000 --- a/rust/himmelblaud/wscript_build +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env python -import os - -bld.SAMBA_RUST_BINARY('himmelblaud', - source='src/main.rs ../param/src/lib.rs ../chelps/src/lib.rs ../dbg/src/lib.rs ../ntstatus_gen/src/lib.rs ../sock/src/lib.rs ../tdb/src/lib.rs ../version/src/lib.rs') diff --git a/rust/nss/wscript_build b/rust/nss/wscript_build deleted file mode 100644 index 7ac2c979b74..00000000000 --- a/rust/nss/wscript_build +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env python - -bld.SAMBA_RUST_LIBRARY('libnss_himmelblau.so', - source='src/lib.rs ../sock/src/lib.rs ../ntstatus_gen/src/lib.rs ../param/src/lib.rs ../version/src/lib.rs') diff --git a/rust/pam/wscript_build b/rust/pam/wscript_build deleted file mode 100644 index 2ab73d94bc1..00000000000 --- a/rust/pam/wscript_build +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env python - -bld.SAMBA_RUST_LIBRARY('libpam_himmelblau.so', - source='src/lib.rs src/pam/constants.rs src/pam/conv.rs src/pam/items.rs src/pam/items.rs src/pam/macros.rs src/pam/mod.rs src/pam/module.rs ../sock/src/lib.rs ../ntstatus_gen/src/lib.rs ../param/src/lib.rs ../version/src/lib.rs') diff --git a/rust/wscript_build b/rust/wscript_build index abca867f947..7bd8fcf5d65 100644 --- a/rust/wscript_build +++ b/rust/wscript_build @@ -1,6 +1,6 @@ #!/usr/bin/env python if conf.env.enable_himmelblau: - bld.RECURSE('himmelblaud') - bld.RECURSE('nss') - bld.RECURSE('pam') + bld.SAMBA_RUST_BINARY('himmelblaud', 'himmelblaud', 'himmelblaud/src/main.rs param/src/lib.rs chelps/src/lib.rs dbg/src/lib.rs ntstatus_gen/src/lib.rs sock/src/lib.rs tdb/src/lib.rs version/src/lib.rs') + bld.SAMBA_RUST_LIBRARY('nss', 'libnss_himmelblau.so', 'nss/src/lib.rs sock/src/lib.rs ntstatus_gen/src/lib.rs param/src/lib.rs version/src/lib.rs') + bld.SAMBA_RUST_LIBRARY('pam', 'libpam_himmelblau.so', 'pam/src/lib.rs pam/src/pam/constants.rs pam/src/pam/conv.rs pam/src/pam/items.rs pam/src/pam/items.rs pam/src/pam/macros.rs pam/src/pam/mod.rs pam/src/pam/module.rs sock/src/lib.rs ntstatus_gen/src/lib.rs param/src/lib.rs version/src/lib.rs')