]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Modify rust build to share target dir w/ cargo test
authorDavid Mulder <dmulder@samba.org>
Mon, 12 Aug 2024 20:25:12 +0000 (14:25 -0600)
committerDavid Mulder <dmulder@samba.org>
Wed, 23 Oct 2024 14:21:33 +0000 (14:21 +0000)
The build needs to share the target directory
with the cargo test command to prevent duplicate
dependency downloads.

Signed-off-by: David Mulder <dmulder@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
buildtools/wafsamba/samba_rust.py
rust/himmelblaud/wscript_build [deleted file]
rust/nss/wscript_build [deleted file]
rust/pam/wscript_build [deleted file]
rust/wscript_build

index c58bf89428a471b2fb9cbd6a5b3722fbd8b4b65e..8f5a97dbaee3c6c12a20d098c283258c70d91ad4 100644 (file)
@@ -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 (file)
index 5997ab0..0000000
+++ /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 (file)
index 7ac2c97..0000000
+++ /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 (file)
index 2ab73d9..0000000
+++ /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')
index abca867f9473c3612614dd09823d5fd6fecd5866..7bd8fcf5d65e57b57a2d52e4b2210fddc87213a4 100644 (file)
@@ -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')