diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b9a7e780419055d0e384d4d170ed744ca8bb80a..8b089e9e30eb3104c95f944cdc820e919165a27e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -269,6 +269,7 @@ test: - GO_VERSION: !reference [.versions, go_supported] TEST_TARGET: test USE_MESON: YesPlease + BUILD_MODE: [ development, build ] - TEST_TARGET: [ test-with-praefect, diff --git a/Makefile b/Makefile index 070e88b486f05392d4c5264d76fc6dd31580ca23..1720c24e201a6aea1aaa9927d15578380e8b7dfb 100644 --- a/Makefile +++ b/Makefile @@ -4,6 +4,12 @@ # directory. -include config.mak +# BUILD_MODE defines whether we're building for redistribution ( "build" ) or +# for development environment "development". Presently "build" mode eliminates +# dependency on host to have "git" installed and utilizes "git" compiled +# within this project +BUILD_MODE ?= development + # Unexport environment variables which have an effect on Git itself. # We need to keep GIT_PREFIX because it's used to determine where our # self-built Git should be installed into. It's probably not going to @@ -42,7 +48,11 @@ INSTALL_DEST_DIR := ${DESTDIR}${bindir} GIT_PREFIX ?= ${PREFIX} # Tools -GIT := $(shell command -v git) +ifeq ($(BUILD_MODE),build) + GIT := ${BUILD_DIR}/bin/gitaly-git-v2.50 +else + GIT := $(shell command -v git) +endif GOIMPORTS := ${TOOLS_DIR}/goimports GOFUMPT := ${TOOLS_DIR}/gofumpt GOLANGCI_LINT := ${TOOLS_DIR}/golangci-lint @@ -698,6 +708,10 @@ ${DEPENDENCY_DIR}: | ${BUILD_DIR} # These targets build a full Git distribution with the Makefile... ${DEPENDENCY_DIR}/git-distribution/git: ${DEPENDENCY_DIR}/git-distribution/Makefile +ifeq ($(BUILD_MODE),build) + ${Q}env -u PROFILE -u MAKEFLAGS -u GIT_VERSION ${MAKE} -C "${@D}" configure + ${Q}env -u PROFILE -u MAKEFLAGS -u GIT_VERSION bash -c "cd ${@D}; ./configure CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" CPPFLAGS="${CPPFLAGS}" LDFLAGS="${LDFLAGS}" --prefix=${GIT_PREFIX}" +endif ${Q}env -u PROFILE -u MAKEFLAGS -u GIT_VERSION ${MAKE} -C "$(