1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

Vendor the rust sources for CI tests

Signed-off-by: David Mulder <dmulder@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
This commit is contained in:
David Mulder 2024-08-13 08:53:33 -06:00
parent 5a8b8a7799
commit 43971bbada
3 changed files with 39 additions and 1 deletions

View File

@ -7,6 +7,36 @@ def SAMBA_CHECK_RUST(conf):
conf.find_program('cargo', var='CARGO', conf.find_program('cargo', var='CARGO',
mandatory=not conf.env.disable_rust) mandatory=not conf.env.disable_rust)
def vendor_sources(bld, 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:
enabled = False
# Save time, no need to build rust when fuzzing
if bld.env.enable_fuzzing:
enabled = False
# Determine the vendor directory
vendor = bld.path.find_or_declare('./vendor')
# WAF dependencies can only be explicit files, not directories, so we touch
# a file to indicate vendoring has been completed.
vendor_exists = '%s.exists' % vendor
# Locate the source manifest file
source_manifest = bld.path.find_or_declare('../../../rust/Cargo.toml')
rule = ['${CARGO}', 'vendor',
'--manifest-path=${SRC[0].abspath(env)}',
'%s' % vendor,
'&& touch %s' % vendor_exists]
bld.SAMBA_GENERATOR('vendor.exists',
' '.join(rule),
source=source_manifest,
target=vendor_exists,
group='final',
enabled=enabled)
Build.BuildContext.vendor_sources = vendor_sources
def find_sources(source_dir, dep_crate): def find_sources(source_dir, dep_crate):
sources = [] sources = []
for root, dirs, files in os.walk(os.path.join(source_dir, dep_crate)): for root, dirs, files in os.walk(os.path.join(source_dir, dep_crate)):
@ -50,7 +80,8 @@ def SAMBA_RUST(bld, rust_subdir, target_name, dep_crates=[], enabled=True):
release_flag] release_flag]
bld.SAMBA_GENERATOR(target_name, bld.SAMBA_GENERATOR(target_name,
' '.join(rule), ' '.join(rule),
source='%s/Cargo.toml %s' % (rust_subdir, ' '.join(sources)), source='%s/Cargo.toml vendor.exists %s' % \
(rust_subdir, ' '.join(sources)),
target=target, target=target,
group='final', group='final',
enabled=enabled) enabled=enabled)

5
rust/.cargo/config.toml Normal file
View File

@ -0,0 +1,5 @@
[source.crates-io]
replace-with = "vendored-sources"
[source.vendored-sources]
directory = "../bin/default/rust/vendor"

View File

@ -1,5 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
bld.vendor_sources()
if conf.env.enable_himmelblau: if conf.env.enable_himmelblau:
bld.SAMBA_RUST_BINARY('himmelblaud', 'himmelblaud', bld.SAMBA_RUST_BINARY('himmelblaud', 'himmelblaud',
['param', ['param',