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

Re: [PATCH v2 2/5] libgit-sys: add symlink to git repo root and build out of tree

From
Josh Steadmon <steadmon@google.com>
Date
Mar 27, 2025, 18:58 UTC
Message-ID
<xnjgoym6makh7q64sp5efvkmcubslklkjeidja45rtl2wjm4jd@xfww2a52hj34>
In-Reply-To
<xmqqy0wslndp.fsf@gitster.g>
On 2025.03.25 16:08, Junio C Hamano wrote:
Show 38 quoted lines
> Josh Steadmon <steadmon@google.com> writes:
> 
> > 2) keeping the top-level clean of any Rust code or configuration.
> >
> > If we're willing to have a Cargo.toml file in the repo root, ...
> 
> If it is more like adding a new build configuration file whereever
> we have Makefile (or meson.build), and is not like we are adding one
> new file per one existing source file, then I see no reason why we
> want to avoid adding a few files to the root-level.
> 
> > ... we could
> > create a "Cargo workspace", but I'm not sure yet if that avoids the same
> > problem with accessing sources outside of the crates themselves. I'll be
> > able to test it out later this week.
> 
> Yeah, that would probably be a reasonable thing to try.  Thanks.
> 
> 
> > If the workspace approach doesn't work, the alternatives are:
> >
> > 1) avoid the issue for now; anyone who wants to experiment with
> > libgit-rs can do so by building from source (but it will prevent them
> > from creating their own packaged crates IIUC).
> >
> > 2) move libgit-sys and libgit-rs to separate repos and depend on the Git
> > source via submodules. This is what I've seen done in other -sys crates
> > such as zlib-sys (https://github.com/rust-lang/libz-sys).
> >
> > Of those alternatives, I prefer #1 for now. If we build enough momentum
> > on libification and expanding the coverage of these crates, then we
> > could think about switching to #2.
> 
> Yeah, or putting it another way, #1 would help us gather enough Rust
> minded folks who are familiar enough to come up with ideas and offer
> better ways to manage this part of the system.
> 
> Thanks.

Unfortunately creating a workspace doesn't provide access to the top-level source. Symlinks seem to be the only recommended approach [1] for embedded crates, but since that breaks Windows CI let's just drop the series for now.

[1] https://users.rust-lang.org/t/including-files-from-parent-directory-in-package/88969
Previous: Junio C HamanoNext: Junio C Hamano
Message 16 of 21 in “Fix `cargo package` for libgit-sys”
  1. 0/4 Fix `cargo package` for libgit-sysJosh Steadmon, Mar 18, 2025
  2. 1/4 libgitpub: move to separate contrib/ directoryJosh Steadmon, Mar 18, 2025
  3. 2/4 libgit-sys: add symlink to git repo root and clean after buildJosh Steadmon, Mar 18, 2025
  4. Josh SteadmonMar 19, 2025
  5. Phillip WoodMar 20, 2025
  6. Josh SteadmonMar 21, 2025
  7. 3/4 libgit-sys: parallelize build with Cargo's jobserverJosh Steadmon, Mar 18, 2025
  8. 4/4 libgit-sys: exclude unnecessary directories in git-srcJosh Steadmon, Mar 18, 2025
  9. 0/5 Fix `cargo package` for libgit-sysJosh Steadmon, Mar 21, 2025
  10. 1/5 libgitpub: move to separate contrib/ directoryJosh Steadmon, Mar 21, 2025
  11. 2/5 libgit-sys: add symlink to git repo root and build out of treeJosh Steadmon, Mar 21, 2025
  12. Eric SunshineMar 23, 2025
  13. Junio C HamanoMar 24, 2025
  14. Josh SteadmonMar 25, 2025
  15. Junio C HamanoMar 25, 2025
  16. Josh SteadmonMar 27, 2025
  17. Junio C HamanoMar 29, 2025
  18. Johannes SchindelinMar 31, 2025
  19. 3/5 libgit-sys: parallelize build with Cargo's jobserverJosh Steadmon, Mar 21, 2025
  20. 4/5 libgit-sys: exclude unnecessary directories in git-srcJosh Steadmon, Mar 21, 2025
  21. 5/5 libgit-{sys,rs}: add license and description fieldsJosh Steadmon, Mar 21, 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.