From: Josh Steadmon <steadmon@google.com>
To: git@vger.kernel.org
Cc: "brian m. carlson" <sandals@crustytoothpaste.net>,
Phillip Wood <phillip.wood123@gmail.com>
Subject: [PATCH v2 0/5] Fix `cargo package` for libgit-sys
Date: Fri, 21 Mar 2025 15:14:06 -0700 [thread overview]
Message-ID: <cover.1742594960.git.steadmon@google.com> (raw)
In-Reply-To: <cover.1742339107.git.josh@steadmon.net>
Fix `cargo package` for the libgit-sys crate by providing a pristine
copy of the Git source tree at package time, and by building object
files and other generated files outside of this tree. While we're at it,
improve parallel builds by plumbing Cargo's make flags to the make
command invoked in our build.rs script.
We also fix a few problems that would prevent us from publishing the
libgit-sys crate: we add a license and description to Cargo.toml, and we
exclude unnecessary files from the packaged source, to stay below
crates.io's 10 MB limit.
`cargo package` for the libgit-rs crate is still broken for now, because
it will require publishing the libgit-sys crate first.
Changes from V1:
* Reworked patch #2 to build outside of the source tree rather than
running `make clean` after the build.
* Simplified patch #4 now that cleaning is no longer necessary.
* Added patch #5 to add some required Cargo.toml fields.
Josh Steadmon (5):
libgitpub: move to separate contrib/ directory
libgit-sys: add symlink to git repo root and build out of tree
libgit-sys: parallelize build with Cargo's jobserver
libgit-sys: exclude unnecessary directories in git-src
libgit-{sys,rs}: add license and description fields
Makefile | 145 +++++++++++-------
contrib/libgit-rs/Cargo.toml | 2 +
contrib/libgit-sys/Cargo.toml | 13 ++
contrib/libgit-sys/build.rs | 12 +-
contrib/libgit-sys/git-src | 1 +
.../public_symbol_export.c | 2 +-
.../public_symbol_export.h | 0
shared.mak | 5 +
8 files changed, 117 insertions(+), 63 deletions(-)
create mode 120000 contrib/libgit-sys/git-src
rename contrib/{libgit-sys => libgitpub}/public_symbol_export.c (96%)
rename contrib/{libgit-sys => libgitpub}/public_symbol_export.h (100%)
Range-diff against v1:
1: 28e10e1092 = 1: 28e10e1092 libgitpub: move to separate contrib/ directory
2: 58111043a1 < -: ---------- libgit-sys: add symlink to git repo root and clean after build
-: ---------- > 2: 6befc95a2d libgit-sys: add symlink to git repo root and build out of tree
3: 4cf9996096 ! 3: a34e23a83d libgit-sys: parallelize build with Cargo's jobserver
@@ contrib/libgit-sys/build.rs: pub fn main() -> std::io::Result<()> {
let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap());
+ let makeflags = env::var_os("CARGO_MAKEFLAGS").unwrap();
- let make_output = make_cmd::gnu_make()
- .env("DEVELOPER", "1")
-+ .env("MAKEFLAGS", &makeflags)
- .env_remove("PROFILE")
- .current_dir(git_root.clone())
- .args([
-@@ contrib/libgit-sys/build.rs: pub fn main() -> std::io::Result<()> {
-
let make_output = make_cmd::gnu_make()
.env("DEVELOPER", "1")
+ .env("MAKEFLAGS", &makeflags)
4: 9b5d4aa140 < -: ---------- libgit-sys: exclude unnecessary directories in git-src
-: ---------- > 4: 390695ac1f libgit-sys: exclude unnecessary directories in git-src
-: ---------- > 5: 3a87f54693 libgit-{sys,rs}: add license and description fields
base-commit: 683c54c999c301c2cd6f715c411407c413b1d84e
--
2.49.0.395.g12beb8f557-goog
next prev parent reply other threads:[~2025-03-21 22:14 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-18 23:24 [RFC PATCH v1 0/4] Fix `cargo package` for libgit-sys Josh Steadmon
2025-03-18 23:24 ` [RFC PATCH v1 1/4] libgitpub: move to separate contrib/ directory Josh Steadmon
2025-03-18 23:24 ` [RFC PATCH v1 2/4] libgit-sys: add symlink to git repo root and clean after build Josh Steadmon
2025-03-19 22:23 ` Josh Steadmon
2025-03-20 11:10 ` Phillip Wood
2025-03-21 19:49 ` Josh Steadmon
2025-03-18 23:24 ` [RFC PATCH v1 3/4] libgit-sys: parallelize build with Cargo's jobserver Josh Steadmon
2025-03-18 23:24 ` [RFC PATCH v1 4/4] libgit-sys: exclude unnecessary directories in git-src Josh Steadmon
2025-03-21 22:14 ` Josh Steadmon [this message]
2025-03-21 22:14 ` [PATCH v2 1/5] libgitpub: move to separate contrib/ directory Josh Steadmon
2025-03-21 22:14 ` [PATCH v2 2/5] libgit-sys: add symlink to git repo root and build out of tree Josh Steadmon
2025-03-23 1:46 ` Eric Sunshine
2025-03-24 15:42 ` Junio C Hamano
2025-03-25 17:57 ` Josh Steadmon
2025-03-25 23:08 ` Junio C Hamano
2025-03-27 18:58 ` Josh Steadmon
2025-03-29 10:46 ` Junio C Hamano
2025-03-31 14:52 ` Johannes Schindelin
2025-03-21 22:14 ` [PATCH v2 3/5] libgit-sys: parallelize build with Cargo's jobserver Josh Steadmon
2025-03-21 22:14 ` [PATCH v2 4/5] libgit-sys: exclude unnecessary directories in git-src Josh Steadmon
2025-03-21 22:14 ` [PATCH v2 5/5] libgit-{sys,rs}: add license and description fields Josh Steadmon
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=cover.1742594960.git.steadmon@google.com \
--to=steadmon@google.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood123@gmail.com \
--cc=sandals@crustytoothpaste.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).