gitaly: build bundled git from source

This commit is contained in:
Yaya 2024-07-08 08:19:38 +02:00 committed by Yureka
parent d66d94b37b
commit 3fa5048737
3 changed files with 72 additions and 2 deletions

View File

@ -1,4 +1,5 @@
{ lib
, callPackage
, fetchFromGitLab
, buildGoModule
, pkg-config
@ -9,6 +10,8 @@ let
package_version = "v${lib.versions.major version}";
gitaly_package = "gitlab.com/gitlab-org/gitaly/${package_version}";
git = callPackage ./git.nix { };
commonOpts = {
inherit version;
@ -26,8 +29,6 @@ let
tags = [ "static" ];
nativeBuildInputs = [ pkg-config ];
doCheck = false;
};
@ -49,6 +50,10 @@ buildGoModule ({
outputs = [ "out" ];
passthru = {
inherit git;
};
meta = with lib; {
homepage = "https://gitlab.com/gitlab-org/gitaly";
description = "Git RPC service for handling all the git calls made by GitLab";

View File

@ -0,0 +1,57 @@
{ stdenv
, lib
, gitaly
, fetchFromGitLab
, curl
, pcre2
, zlib
}:
stdenv.mkDerivation rec {
pname = "gitaly-git";
version = "2.44.1.gl1";
# `src` attribute for nix-update
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "git";
rev = "v${version}";
hash = "sha256-1XtzM2dYbt3nsYOm5isgHnolfziyIC9yCTkfLJ95V6Y=";
};
# we actually use the gitaly build system
unpackPhase = ''
cp -r ${gitaly.src} source
chmod -R +w source
mkdir -p source/_build/deps
cp -r ${src} source/_build/deps/git-distribution
chmod -R +w source/_build/deps/git-distribution
# FIXME? maybe just patch the makefile?
echo -n 'v${version} DEVELOPER=1 DEVOPTS=no-error USE_LIBPCRE=YesPlease NO_PERL=YesPlease NO_EXPAT=YesPlease NO_TCLTK=YesPlease NO_GETTEXT=YesPlease NO_PYTHON=YesPlease' > source/_build/deps/git-distribution.version
echo -n 'v${version}' > source/_build/deps/git-distribution/version
'';
sourceRoot = "source";
buildFlags = [ "git" ];
buildInputs = [
curl
pcre2
zlib
];
# The build phase already installs it all
GIT_PREFIX = placeholder "out";
dontInstall = true;
meta = {
homepage = "https://git-scm.com/";
description = "Distributed version control system - with Gitaly patches";
license = lib.licenses.gpl2Only;
platforms = lib.platforms.all;
maintainers = lib.teams.gitlab.members;
};
}

View File

@ -245,8 +245,16 @@ def update_gitaly():
logger.info("Updating gitaly")
data = _get_data_json()
gitaly_server_version = data['passthru']['GITALY_SERVER_VERSION']
repo = GitLabRepo(repo="gitaly")
gitaly_dir = pathlib.Path(__file__).parent / 'gitaly'
makefile = repo.get_file("Makefile", f"v{gitaly_server_version}")
makefile += "\nprint-%:;@echo $($*)\n"
git_version = subprocess.run(["make", "-f", "-", "print-GIT_VERSION"], check=True, input=makefile, text=True, capture_output=True).stdout.strip()
_call_nix_update("gitaly", gitaly_server_version)
_call_nix_update("gitaly.git", git_version)
@cli.command("update-gitlab-pages")