Re: Video conference libification eng discussion, this Thursday 17:00 UTC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi folks, the notes from today follow:

*   (asynchronous) What's cooking in libification?
    *   Patches we sent regarding libification
        *   WIP v3 of unit test project plan is on list
(https://lore.kernel.org/git/c7729b66a42b77dfe9ef61ba7c81e78e00b4021d.1686352386.git.steadmon@xxxxxxxxxx/)
    *   Patches for review related to the libification effort
*   (asynchronous) What happened in the past 1-2 weeks that interested
parties or intermittent contributors need to know?
    *   [calvinwan] I stuck git-std-lib into Google's monorepo and
built it, Glen built his config patches on top of git-std-lib in
Google's monorepo too, it works, we can call some stuff from our
internal VFS, so yay!
    *   Patch available upstream Soon(™)
*   (asynchronous) Where are you stuck? What eng discussions do we
want to have? (We'll choose a topic from this list at the beginning of
the meeting.)
    *   (see calvin's topic below)
*   [calvinwan] How should compatibility files interact with libraries
in the Makefile? Most files in compat/ only have a dependency on
git-compat-util.h, but there are some files that have higher level
dependencies. For example, on Linux, git-std-lib only needs
compat/strlcpy.c and compat/fopen.c. In the Makefile, COMPAT\_OBJS
already exists and correctly contains the set of files, but also
contains compat/linux/procinfo.c and compat/qsort\_s.c. Neither of
these files are necessary for git-std-lib and while qsort\_s.c is a
harmless inclusion, procinfo.c contains problematic trace2
dependencies. Therefore if a user of git-std-lib attempts to call a
problematic function in procinfo.c, they would encounter build errors.
Under different build settings (eg. on different OSes), it is entirely
possible that certain functions in git-std-lib would break and users
would have to supply their own implementation. To summarize the
problem, I would like to piggyback off existing Makefile logic for
compat files, but also ensure that no problematic files are included
across OSes.
    *   Currently git-std-lib is a set of files by itself, compat
library is another set built by itself, link against it to make
git-std-lib run
    *   How do we keep using correct compat libs, make it work across
OS and build system boundaries, without including too much that breaks
in libified world?
    *   Config.mac.uname could take a flag for git-std-lib for linux,
and we'd have to add another flag for every OS, and then do the same
for every other library, so doesn't scale very nicely.
    *   Emily: should COMPAT\_OBJS be split into smaller multiple sets?
        *   Calvin: yeah basically
    *   Emily: can we just not expose procinfo/qsort\_s via that API
boundary? Is it ok to include too much if it's not used?
    *   Calvin: I'm worried about git-std-lib working on Linux and
breaking on another system because of the compat stuff not being
populated
    *   Glen: I suspect we don't want to target all of COMPAT\_OBJS -
stuff like fsmonitor doesn't ever need to go into the std-lib. I think
that's the set of platform-specific stuff we need for the Git binary,
so can we distinguish the set of platform-specific stuff that's needed
for the std lib?
    *   Calvin: yes, but we'd have to do the same distinguishing for
config, objstore, other libraries. And we'd have to do that across
each OS.
    *   Glen: but for platforms which don't implement the thing we
want, they'd already have to reimplement the library even to build
normal git?
    *   E.g. for linux and darwin we can ship the compat stuff with
the git-std-lib and our users can use it; platforms that don't have
the impls will have the same problem they have today.
    *   If we're correctly defining COMPAT\_OBJS\_LIB in the makefile
then there's not really any makefile modification that needs to happen
    *   Emily: does git-std-lib + compat-lib cover 100% of business
logic libraries?
    *   Calvin: but where does procinfo go, for example?
    *   Glen: if procinfo is just useful for trace2, then we should
include it with trace2, not with everything, right?
    *   Calvin: for sake of argument, if it's needed in the config
library then it also has to be included by config library, right?
    *   Glen: isn't it the same as other libification, that we are
moving implementations/dependencies closer to their sole user
libraries?
    *   Emily: do we see any other problematic dependency chains? Or
is it just this one? If it's just this one that might be ok?
    *   Calvin: then I think this means we have a makefile where
git-std-lib only includes the bare minimum it needs; at some point
    *   Emily: i think putting the platform-specific stuff into
git-std-lib keeps with the vision of git-std-lib being the "one stop
shop" for building and running any other git lib, so it would be OK to
include compat stuff not needed just to run git-std-lib code, as long
as it doesn't have a dep on another git library (like procinfo does).
    *   Randall: does the platform stuff remain in the standard git codebase?
    *   Emily: everything stays in the git codebase and mailing list
stuff and so on
    *   Randall: is compat/ moving into the git-std-lib or staying
where it is? Where will the platform stuff live?
    *   Glen: git-std-lib is a .a that contains the code we think most
lib users will need, and we'll build it from the same git tree that
the rest of the git code lives in
    *   Randall: procinfo doesn't have any nonstop stuff there, it
would just be a stub for nonstop, want to make sure we can still make
it work
    *   Emily: procinfo leaves stubs if there's no platform-specific
stuff, so we want to make sure that procinfo still leaves stubs on
e.g. nonstop
    *   Randall: yeah, and then i can make sure it still works once we
have a series

On Wed, Jun 14, 2023 at 9:29 AM Calvin Wan <calvinwan@xxxxxxxxxx> wrote:
>
> Hello folks,
>
> Google is hosting a standing engineering discussion about libifying
> Git, for contributors interested in participating in or hearing about
> the progress of this effort. Expect this discussion to be free-form
> and casual - no powerpoints here!
>
> We typically hold this meeting every Thursday at 10am Pacific (17:00
> UTC) via Google Meet.
>
> To get an invite to the video conference and the notes document,
> please reply to this email. Please also add points to the agenda
> (template follows) if you want to raise awareness of them.
>
> We'll choose a topic to discuss at the beginning of the meeting, and
> I'll reply afterwards with the notes.
>
> *   (asynchronous) What's cooking in libification?
>     *   Patches we sent regarding libification
>     *   Patches for review related to the libification effort
> *   (asynchronous) What happened in the past 1-2 weeks that interested
> parties or intermittent contributors need to know?
> *   (asynchronous) Where are you stuck? What eng discussions do we
> want to have? (We'll choose a topic from this list at the beginning of
> the meeting.)
> *   Session topic: TBD




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux