git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 02/13] meson: undo Patrick's changes concerning Rust

From
Ezekiel Newren via GitGitGadget <gitgitgadget@gmail.com>
Date
Nov 27, 2025, 01:10 UTC
Message-ID
<dd8787e3e07a567acf56c23c69599aaefd87b3b0.1764205835.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.2110.git.git.1764205835.gitgitgadget@gmail.com>
From: Ezekiel Newren <ezekielnewren@gmail.com>
Signed-off-by: Ezekiel Newren <ezekielnewren@gmail.com>
---
 meson.build        | 19 ++-----------------
 meson_options.txt  |  4 ++--
 src/cargo-meson.sh | 39 ---------------------------------------
 src/meson.build    | 41 -----------------------------------------
 4 files changed, 4 insertions(+), 99 deletions(-)
 delete mode 100755 src/cargo-meson.sh
 delete mode 100644 src/meson.build
diff --git a/meson.build b/meson.build
index 2b763f7c53..8966596ee8 100644
--- a/meson.build
+++ b/meson.build
@@ -220,7 +220,7 @@ project('git', 'c',
   # learned to define __STDC_VERSION__ with C11 and later. We thus require
   # GNU C99 and fall back to C11. Meson only learned to handle the fallback
   # with version 1.3.0, so on older versions we use GNU C99 unconditionally.
-  default_options: meson.version().version_compare('>=1.3.0') ? ['rust_std=2018', 'c_std=gnu99,c11'] : ['rust_std=2018', 'c_std=gnu99'],
+  default_options: meson.version().version_compare('>=1.3.0') ? ['c_std=gnu99,c11'] : ['c_std=gnu99'],
 )
 
 fs = import('fs')
@@ -1709,21 +1709,6 @@ version_def_h = custom_target(
 )
 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')
-  libgit_c_args += '-DWITH_RUST'
-
-  if host_machine.system() == 'windows'
-    libgit_dependencies += compiler.find_library('userenv')
-  endif
-else
-  libgit_sources += [
-    'varint.c',
-  ]
-endif
-
 libgit = declare_dependency(
   link_with: static_library('git',
     sources: libgit_sources,
@@ -2270,7 +2255,7 @@ summary({
   'pcre2': pcre2,
   'perl': perl_features_enabled,
   'python': target_python.found(),
-  'rust': rust_option.allowed(),
+  'rust': get_option('with_rust'),
 }, section: 'Auto-detected features', bool_yn: true)
 
 summary({
diff --git a/meson_options.txt b/meson_options.txt
index 143dee9237..0059b7c7df 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -71,8 +71,8 @@ option('zlib_backend', type: 'combo', choices: ['auto', 'zlib', 'zlib-ng'], valu
 # Build tweaks.
 option('breaking_changes', type: 'boolean', value: false,
   description: 'Enable upcoming breaking changes.')
-option('rust', type: 'feature', value: 'auto',
-  description: 'Enable building with Rust.')
+option('with_rust', type: 'boolean', value: true,
+  description: 'Enable building with Rust, true by default.')
 option('macos_use_homebrew_gettext', type: 'boolean', value: true,
   description: 'Use gettext from Homebrew instead of the slightly-broken system-provided one.')
 
diff --git a/src/cargo-meson.sh b/src/cargo-meson.sh
deleted file mode 100755
index 3998db0435..0000000000
--- a/src/cargo-meson.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-if test "$#" -lt 2
-then
-	exit 1
-fi
-
-SOURCE_DIR="$1"
-BUILD_DIR="$2"
-BUILD_TYPE=debug
-
-shift 2
-
-for arg
-do
-	case "$arg" in
-	--release)
-		BUILD_TYPE=release;;
-	esac
-done
-
-cargo build --lib --quiet --manifest-path="$SOURCE_DIR/Cargo.toml" --target-dir="$BUILD_DIR" "$@"
-RET=$?
-if test $RET -ne 0
-then
-	exit $RET
-fi
-
-case "$(cargo -vV | sed -s 's/^host: \(.*\)$/\1/')" in
-	*-windows-*)
-		LIBNAME=gitcore.lib;;
-	*)
-		LIBNAME=libgitcore.a;;
-esac
-
-if ! cmp "$BUILD_DIR/$BUILD_TYPE/$LIBNAME" "$BUILD_DIR/libgitcore.a" >/dev/null 2>&1
-then
-	cp "$BUILD_DIR/$BUILD_TYPE/$LIBNAME" "$BUILD_DIR/libgitcore.a"
-fi
diff --git a/src/meson.build b/src/meson.build
deleted file mode 100644
index 25b9ad5a14..0000000000
--- a/src/meson.build
+++ /dev/null
@@ -1,41 +0,0 @@
-libgit_rs_sources = [
-  'lib.rs',
-  'varint.rs',
-]
-
-# Unfortunately we must use a wrapper command to move the output file into the
-# current build directory. This can fixed once `cargo build --artifact-dir`
-# stabilizes. See https://github.com/rust-lang/cargo/issues/6790 for that
-# effort.
-cargo_command = [
-  shell,
-  meson.current_source_dir() / 'cargo-meson.sh',
-  meson.project_source_root(),
-  meson.current_build_dir(),
-]
-if get_option('buildtype') == 'release'
-  cargo_command += '--release'
-endif
-
-libgit_rs = custom_target('git_rs',
-  input: libgit_rs_sources + [
-    meson.project_source_root() / 'Cargo.toml',
-  ],
-  output: 'libgitcore.a',
-  command: cargo_command,
-)
-libgit_dependencies += declare_dependency(link_with: libgit_rs)
-
-if get_option('tests')
-  test('rust', cargo,
-    args: [
-      'test',
-      '--manifest-path',
-      meson.project_source_root() / 'Cargo.toml',
-      '--target-dir',
-      meson.current_build_dir() / 'target',
-    ],
-    timeout: 0,
-    protocol: 'rust',
-  )
-endif
-- 
gitgitgadget
Previous: Ezekiel Newren via GitGitGadgetNext: Ezekiel Newren via GitGitGadget
Message 3 of 14 in “RFC: Convert to Cargo workspace”
  1. 00/13 RFC: Convert to Cargo workspaceEzekiel Newren via GitGitGadget, Nov 27, 2025
  2. 01/13 make: undo Patrick's changes concerning RustEzekiel Newren via GitGitGadget, Nov 27, 2025
  3. 02/13 meson: undo Patrick's changes concerning RustEzekiel Newren via GitGitGadget, Nov 27, 2025
  4. 03/13 cargo: convert from a crate to a workspaceEzekiel Newren via GitGitGadget, Nov 27, 2025
  5. 04/13 build: build Rust with Makefile and MesonEzekiel Newren via GitGitGadget, Nov 27, 2025
  6. 05/13 .gitignore: ignore /generated/Ezekiel Newren via GitGitGadget, Nov 27, 2025
  7. 06/13 cargo: create crate generate-headersEzekiel Newren via GitGitGadget, Nov 27, 2025
  8. 07/13 cargo: create crate link-with-cEzekiel Newren via GitGitGadget, Nov 27, 2025
  9. 08/13 rust/gitcore: link with cEzekiel Newren via GitGitGadget, Nov 27, 2025
  10. 09/13 varint.h: unsigned char -> uint8_tEzekiel Newren via GitGitGadget, Nov 27, 2025
  11. 10/13 make: delete files in generated/Ezekiel Newren via GitGitGadget, Nov 27, 2025
  12. 11/13 github-workflows: unify with rust parameters in make and mesonEzekiel Newren via GitGitGadget, Nov 27, 2025
  13. 12/13 github workflows: install RustEzekiel Newren via GitGitGadget, Nov 27, 2025
  14. 13/13 rust/build-rust.sh: update dir_git_root variable instantiationEzekiel Newren via GitGitGadget, Nov 27, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.