From: Mike Hommey Date: Mon, 09 Feb 2026 22:48:47 GMT Subject: [PATCH v2] Move rust gitcore crate to a different subdirectory Message-ID: <20260209224847.1416916-1-mh@glandium.org> In-Reply-To: <20260204232208.1615320-1-mh@glandium.org> While `src/` is the default directory convention for Rust projects, it is too generic in the context of a multi-language project that is barely starting to (optionally) use Rust code. Additionally, having `Cargo.toml` at the top-level of the repository implies that one can run `cargo build` directly, but this doesn't produce anything useful on its own. Moving all Rust-specific files into a dedicated `rust/` subdirectory makes things clearer. Signed-off-by: Mike Hommey --- .gitignore | 2 ++ Makefile | 12 ++++++------ meson.build | 2 +- Cargo.toml => rust/Cargo.toml | 0 {src => rust}/cargo-meson.sh | 0 {src => rust}/meson.build | 6 +++--- {src => rust/src}/lib.rs | 0 {src => rust/src}/varint.rs | 0 8 files changed, 12 insertions(+), 10 deletions(-) rename Cargo.toml => rust/Cargo.toml (100%) rename {src => rust}/cargo-meson.sh (100%) rename {src => rust}/meson.build (87%) rename {src => rust/src}/lib.rs (100%) rename {src => rust/src}/varint.rs (100%) diff --git a/.gitignore b/.gitignore index 78a45cb5be..c7453b6fb2 100644 --- a/.gitignore +++ b/.gitignore @@ -258,3 +258,5 @@ Release/ /contrib/buildsystems/out /contrib/libgit-rs/target /contrib/libgit-sys/target +/rust/target +/rust/Cargo.lock diff --git a/Makefile b/Makefile index 8aa489f3b6..b60af704ed 100644 --- a/Makefile +++ b/Makefile @@ -939,9 +939,9 @@ TEST_SHELL_PATH = $(SHELL_PATH) LIB_FILE = libgit.a ifdef DEBUG -RUST_TARGET_DIR = target/debug +RUST_TARGET_DIR = rust/target/debug else -RUST_TARGET_DIR = target/release +RUST_TARGET_DIR = rust/target/release endif ifeq ($(uname_S),Windows) @@ -1545,8 +1545,8 @@ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o -RUST_SOURCES += src/lib.rs -RUST_SOURCES += src/varint.rs +RUST_SOURCES += rust/src/lib.rs +RUST_SOURCES += rust/src/varint.rs GIT-VERSION-FILE: FORCE @OLD=$$(cat $@ 2>/dev/null || :) && \ @@ -3007,8 +3007,8 @@ scalar$X: scalar.o GIT-LDFLAGS $(GITLIBS) $(LIB_FILE): $(LIB_OBJS) $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^ -$(RUST_LIB): Cargo.toml $(RUST_SOURCES) - $(QUIET_CARGO)cargo build $(CARGO_ARGS) +$(RUST_LIB): rust/Cargo.toml $(RUST_SOURCES) + $(QUIET_CARGO)cargo build --manifest-path rust/Cargo.toml $(CARGO_ARGS) .PHONY: rust rust: $(RUST_LIB) diff --git a/meson.build b/meson.build index dd52efd1c8..3a92936241 100644 --- a/meson.build +++ b/meson.build @@ -1723,7 +1723,7 @@ libgit_sources += version_def_h cargo = find_program('cargo', dirs: program_path, native: true, required: get_option('rust')) rust_option = get_option('rust').disable_auto_if(not cargo.found()) if rust_option.allowed() - subdir('src') + subdir('rust/src') libgit_c_args += '-DWITH_RUST' if host_machine.system() == 'windows' diff --git a/Cargo.toml b/rust/Cargo.toml similarity index 100% rename from Cargo.toml rename to rust/Cargo.toml diff --git a/src/cargo-meson.sh b/rust/cargo-meson.sh similarity index 100% rename from src/cargo-meson.sh rename to rust/cargo-meson.sh diff --git a/src/meson.build b/rust/meson.build similarity index 87% rename from src/meson.build rename to rust/meson.build index 25b9ad5a14..9490272521 100644 --- a/src/meson.build +++ b/rust/meson.build @@ -10,7 +10,7 @@ libgit_rs_sources = [ cargo_command = [ shell, meson.current_source_dir() / 'cargo-meson.sh', - meson.project_source_root(), + meson.current_source_dir(), meson.current_build_dir(), ] if get_option('buildtype') == 'release' @@ -19,7 +19,7 @@ endif libgit_rs = custom_target('git_rs', input: libgit_rs_sources + [ - meson.project_source_root() / 'Cargo.toml', + meson.current_source_dir() / 'Cargo.toml', ], output: 'libgitcore.a', command: cargo_command, @@ -31,7 +31,7 @@ if get_option('tests') args: [ 'test', '--manifest-path', - meson.project_source_root() / 'Cargo.toml', + meson.current_source_dir() / 'Cargo.toml', '--target-dir', meson.current_build_dir() / 'target', ], diff --git a/src/lib.rs b/rust/src/lib.rs similarity index 100% rename from src/lib.rs rename to rust/src/lib.rs diff --git a/src/varint.rs b/rust/src/varint.rs similarity index 100% rename from src/varint.rs rename to rust/src/varint.rs -- 2.52.0