rust: Support `make dist` -> cargo vendor
authorColin Walters <walters@verbum.org>
Sat, 4 Feb 2017 16:29:20 +0000 (11:29 -0500)
committerAtomic Bot <atomic-devel@projectatomic.io>
Tue, 7 Feb 2017 16:50:37 +0000 (16:50 +0000)
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

Makefile-libostree.am
Makefile.am
rust/cargo-vendor-config [new file with mode: 0644]

index 63f0eb7d66ddd5fccbe52e0a39d9487f1fcf35fb..d40196d4eef7d679ba31338a73eb890266ffdd10 100644 (file)
@@ -25,7 +25,9 @@ noinst_LTLIBRARIES += libostree-kernel-args.la
 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
index 4660515acf8595bedcaa6ea4ffd66fd33bf61b64..31c412518b34d32b88daa56a8f6e1070db7e3d98 100644 (file)
@@ -73,6 +73,15 @@ check-local:
 
 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
diff --git a/rust/cargo-vendor-config b/rust/cargo-vendor-config
new file mode 100644 (file)
index 0000000..5407266
--- /dev/null
@@ -0,0 +1,8 @@
+# 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'