What we do here basically is set things up in a `dist-hook` so that our Rust
sources are vendored at `dist` time. This gives us a single tarball still, and
ideally should be transparent to downstream builders, as long as they have the
`cargo/rust` toolchain.
Closes: #669
Approved by: jlebon
if ENABLE_RUST
bupsplitpath = @abs_top_builddir@/target/@RUST_TARGET_SUBDIR@/libbupsplit_rs.a
.PHONY: $(bupsplitpath)
-$(bupsplitpath): Makefile rust/src/bupsplit.rs
+BUPSPLIT_RUST_SOURCES = rust/src/bupsplit.rs
+EXTRA_DIST += $(BUPSPLIT_RUST_SOURCES)
+$(bupsplitpath): Makefile $(BUPSPLIT_RUST_SOURCES)
cd $(top_srcdir)/rust && CARGO_TARGET_DIR=@abs_top_builddir@/target cargo build --verbose $(CARGO_RELEASE_ARGS)
else
bupsplitpath = libbupsplit.la
clean-local:
cd $(srcdir)/rust && CARGO_TARGET_DIR=$(abs_top_builddir)/target cargo clean
+
+dist-hook:
+ (cd $(distdir)/rust && \
+ cp $(abs_top_srcdir)/rust/Cargo.lock . && \
+ cargo vendor -q && \
+ mkdir .cargo && \
+ cp cargo-vendor-config .cargo/config)
+
+EXTRA_DIST += $(srcdir)/rust/Cargo.toml $(srcdir)/rust/cargo-vendor-config
endif # end ENABLE_RUST
libglnx_srcpath := $(srcdir)/libglnx
--- /dev/null
+# This is used after `cargo vendor` is run from `make dist`
+
+[source.crates-io]
+registry = 'https://github.com/rust-lang/crates.io-index'
+replace-with = 'vendored-sources'
+
+[source.vendored-sources]
+directory = './vendor'