All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Le Cuirot <chewi@gentoo.org>
To: gitster@pobox.com
Cc: chewi@gentoo.org, git@vger.kernel.org
Subject: [PATCH v2] rust: respect CARGO_BUILD_TARGET when locating build output
Date: Tue,  8 Sep 2026 22:53:45 +0100	[thread overview]
Message-ID: <20260908215344.24843-2-chewi@gentoo.org> (raw)
In-Reply-To: <xmqqo6e7yaw1.fsf@gitster.g>

When cross-compiling, Cargo always writes to a target-tuple subdirectory
determined by CARGO_BUILD_TARGET, even when it matches the native tuple.
The build looked in $BUILD_DIR/$BUILD_TYPE directly, so it failed to
locate the freshly built library.

Respect CARGO_BUILD_TARGET in the output path so the correct artifact
is located.

Signed-off-by: James Le Cuirot <chewi@gentoo.org>
---

> Nowhere in the above description I see mention of meson, but the
> patch is only to cargo-meson that is referenced by src/meson.build
> which invites a few questions:
>
>  * Does "make" work fine without any change similar to this?
>
>  * Shouldn't the commit title say "meson" somewhere if this change
>    is only for "meson" driven build?

Good point. I hadn't realised that Make is still supported. I have now
amended the Makefile and tested both the native and cross cases.

 Makefile           | 4 ++--
 src/cargo-meson.sh | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 1cec251..5cd5889 100644
--- a/Makefile
+++ b/Makefile
@@ -940,9 +940,9 @@ TEST_SHELL_PATH = $(SHELL_PATH)
 LIB_FILE = libgit.a

 ifdef DEBUG
-RUST_TARGET_DIR = target/debug
+RUST_TARGET_DIR = target/$(CARGO_BUILD_TARGET)/debug
 else
-RUST_TARGET_DIR = target/release
+RUST_TARGET_DIR = target/$(CARGO_BUILD_TARGET)/release
 endif

 ifeq ($(uname_S),Windows)
diff --git a/src/cargo-meson.sh b/src/cargo-meson.sh
index 75f3cd1..3a558aa 100755
--- a/src/cargo-meson.sh
+++ b/src/cargo-meson.sh
@@ -38,7 +38,7 @@ then
 	exit $RET
 fi

-if ! cmp "$BUILD_DIR/$BUILD_TYPE/$LIBNAME" "$BUILD_DIR/libgitcore.a" >/dev/null 2>&1
+if ! cmp "$BUILD_DIR/${CARGO_BUILD_TARGET-}/$BUILD_TYPE/$LIBNAME" "$BUILD_DIR/libgitcore.a" >/dev/null 2>&1
 then
-	cp "$BUILD_DIR/$BUILD_TYPE/$LIBNAME" "$BUILD_DIR/libgitcore.a"
+	cp "$BUILD_DIR/${CARGO_BUILD_TARGET-}/$BUILD_TYPE/$LIBNAME" "$BUILD_DIR/libgitcore.a"
 fi
--
2.55.0

  reply	other threads:[~2026-09-08 21:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-08 15:24 [PATCH] rust: respect CARGO_BUILD_TARGET when locating build output James Le Cuirot
2026-09-08 16:18 ` Junio C Hamano
2026-09-08 21:53   ` James Le Cuirot [this message]
2026-09-09 20:07     ` [PATCH v2] " Junio C Hamano
2026-09-10 10:20       ` [PATCH v3] " James Le Cuirot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260908215344.24843-2-chewi@gentoo.org \
    --to=chewi@gentoo.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.