-
Notifications
You must be signed in to change notification settings - Fork 187
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update github.com/libgit2/git2go to v31.6.1 #437
Conversation
d2d8682
to
e8808e4
Compare
9cfd0be
to
04ab5b9
Compare
8fbc69a
to
c1a094d
Compare
522ceba
to
045a648
Compare
To provide a better (contributing) experience to those with Apple machines, as determining the correct paths there is a bit harder. Signed-off-by: Hidde Beydals <hello@hidde.co>
b3bb41e
to
94480e6
Compare
This can be useful on machines where libgit2 is installed due to other applications depending on it, but where the composition of this installation does not properly work with the controller. Reason the system version is still preferred, is because this lowers the barrier for drive-by contributors, as a working set of (Git) dependencies should only really be required if you are going to perform work in that domain. Signed-off-by: Hidde Beydals <hello@hidde.co>
Signed-off-by: Hidde Beydals <hello@hidde.co>
Signed-off-by: Hidde Beydals <hello@hidde.co>
cefc96a
to
1ddb895
Compare
This moves the `libgit2` compilation to the image, to ensure it can be build on builders that aren't backed by AMD64. The image is structured in such a way that e.g. running nightly builds targeting a different Go version, or targeting a different OS vendor would be possible in the future via build arguments. Signed-off-by: Hidde Beydals <hello@hidde.co>
This ensures the Dockerfile used for testing is making use of the same scratch image to compile `libgit2` as the actual application image. In a future iteration we should restructure our GitHub Action workflows to re-use the application image, saving us an additional Dockerfile and a duplicate build. Inspiration for this (which makes use of a local registry for the duration of the build) can be found at: https://github.com/fluxcd/golang-with-libgit2/blob/main/.github/workflows/build.yaml Signed-off-by: Hidde Beydals <hello@hidde.co>
1ddb895
to
a871e0b
Compare
As this isn't available on Darwin by default, unlike on most Linux distributions. Signed-off-by: Hidde Beydals <hello@hidde.co>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Thanks @hiddeco for saving the day 🏅
@squaremo as I really want to progress this I am going to merge it although I know your machine was having a difficult time. It has confirmed to be working on both @stefanprodan and my own 🍏 machines. If it continues to be stubborn, you know where to find me so we can do another round of debugging. |
Chery picked from `main`. Update github.com/libgit2/git2go to v31.6.1
This PR updates
github.com/libgit2/git2go
tov31.6.1
(withlibgit2
1.1.1
), and changes the container image build process so that it makes use ofghcr.io/fluxcd/golang-with-libgit2
.This image provides a
Makefile
with specific build instructions to compilelibgit2
in such a way that it is linked against OpenSSL and LibSSH2 (without gcrypt) (see rationale and usage for more detailed information).The linked set of dependencies should solve most known issues around unsupported private key types, but does not resolve the issues with ECDSA* and ED25519 hostkeys yet. Solving this requires a newer version of
libgit2
(>=1.2.0
), which currently does not seem to work properly withgit2go/v32
.In addition, to support the new image and improve the contributor experience, a couple of changes have been made to the various
make
targets:libgit2
is attempted usingpkg-config
. If this fails, or does not match the version as defined in theMakefile
(or configured usingLIBGIT2_VERSION=1.x.y
), the library is compiled using the instructions from theLIBGIT2_IMG
, and installed toREPOSITORY_ROOT/hack/libgit2
.libgit2
is required as a dependency,LD_LIBRARY_PATH
and/orPKG_CONFIG_PATH
instructions are added as a prefix to the command. This works for system libraries as well, because the paths are ignored if they do not exist.docker-build
is now always making use ofdocker buildx
. It allows configuration over the target platform(s) and additional build arguments usingBUILD_PLATFORMS
andBUILD_ARGS
.