git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  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).