Re: [PATCH 10/14] rust: add a build.rs script for tests
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Oct 28, 2025, 09:18 UTC
- Message-ID
- <aQCKWtgcYQVPzIPz@pks.im>
- In-Reply-To
- <20251027004404.2152927-11-sandals@crustytoothpaste.net>
On Mon, Oct 27, 2025 at 12:44:00AM +0000, brian m. carlson wrote:
Show 11 quoted lines
> diff --git a/Makefile b/Makefile > index 7e5a735ca6..7c36302717 100644 > --- a/Makefile > +++ b/Makefile > @@ -2948,7 +2948,7 @@ scalar$X: scalar.o GIT-LDFLAGS $(GITLIBS) > $(LIB_FILE): $(LIB_OBJS) > $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^ > > -$(RUST_LIB): Cargo.toml $(RUST_SOURCES) > +$(RUST_LIB): Cargo.toml $(RUST_SOURCES) $(XDIFF_LIB) $(LIB_FILE) $(REFTABLE_LIB) > $(QUIET_CARGO)cargo build $(CARGO_ARGS)
We have recently removed the separare xdiff and reftable libraries, so it shouldn't be necessary to have these anymore.
But one thing I'm curious about: don't we have a circular dependency between the Rust and C library now? I guess that's somewhat expected, as we'll want to call Rust from C and vice versa. But on the Meson side I think we need to adjust our logic so that we don't pull the Rust library into libgit.a to break this cycle.
Show 27 quoted lines
> diff --git a/build.rs b/build.rs
> new file mode 100644
> index 0000000000..136d58c35a
> --- /dev/null
> +++ b/build.rs
> @@ -0,0 +1,21 @@
> +// This program is free software; you can redistribute it and/or modify
> +// it under the terms of the GNU General Public License as published by
> +// the Free Software Foundation: version 2 of the License, dated June 1991.
> +//
> +// This program is distributed in the hope that it will be useful,
> +// but WITHOUT ANY WARRANTY; without even the implied warranty of
> +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +// GNU General Public License for more details.
> +//
> +// You should have received a copy of the GNU General Public License along
> +// with this program; if not, see <https://www.gnu.org/licenses/>.
> +
> +fn main() {
> + println!("cargo::rustc-link-search=.");
> + println!("cargo::rustc-link-search=reftable");
> + println!("cargo::rustc-link-search=xdiff");
> + println!("cargo::rustc-link-lib=git");
> + println!("cargo::rustc-link-lib=reftable");
> + println!("cargo::rustc-link-lib=z");
> + println!("cargo::rustc-link-lib=xdiff");
> +}How do we ensure that the correct libraries are linked here? E.g. for libz, if there are multiple such libraries, which one gets precedence?
Patrick