Skip to content

Build fails at Arch Linux with "could not replace build ID: exactly one match for old build ID expected, got 0"

I am trying to build the official Arch Linux package with following instructions:

cd gitaly-$_tag

pushd ruby
bundle-2.7 config force_ruby_platform true # build from sources as some prebuilt gems are not available for newer ruby
bundle-2.7 install --path vendor/bundle
popd

make V=1 BUILD_TAGS="tracer_static tracer_static_jaeger"

And it fails with the following error. For some reason, praefect does not handle the BUILD_ID replacement well. The previous gitlab version builds fine.

-- Performing Test IS_WNO_MISSING_FIELD_INITIALIZERS_SUPPORTED - Success
-- Performing Test IS_WMISSING_DECLARATIONS_SUPPORTED
-- Performing Test IS_WMISSING_DECLARATIONS_SUPPORTED - Success
-- Performing Test IS_WSTRICT_ALIASING_SUPPORTED
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-wrapper" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-wrapper" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-wrapper" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-wrapper" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-wrapper"; \
fi
-- Performing Test IS_WSTRICT_ALIASING_SUPPORTED - Success
-- Performing Test IS_WSTRICT_PROTOTYPES_SUPPORTED
-- Performing Test IS_WSTRICT_PROTOTYPES_SUPPORTED - Success
-- Performing Test IS_WDECLARATION_AFTER_STATEMENT_SUPPORTED
-- Performing Test IS_WDECLARATION_AFTER_STATEMENT_SUPPORTED - Success
-- Performing Test IS_WSHIFT_COUNT_OVERFLOW_SUPPORTED
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-debug" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-debug" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-debug" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-debug" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-debug"; \
fi
-- Performing Test IS_WSHIFT_COUNT_OVERFLOW_SUPPORTED - Success
-- Performing Test IS_WUNUSED_CONST_VARIABLE_SUPPORTED
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-blackbox" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-blackbox" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-blackbox" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-blackbox" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-blackbox"; \
fi
-- Performing Test IS_WUNUSED_CONST_VARIABLE_SUPPORTED - Success
-- Performing Test IS_WUNUSED_FUNCTION_SUPPORTED
-- Performing Test IS_WUNUSED_FUNCTION_SUPPORTED - Success
-- Performing Test IS_WINT_CONVERSION_SUPPORTED
-- Performing Test IS_WINT_CONVERSION_SUPPORTED - Success
-- Performing Test IS_WC11_EXTENSIONS_SUPPORTED
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-ssh" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-ssh" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-ssh" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-ssh" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-ssh"; \
fi
-- Performing Test IS_WC11_EXTENSIONS_SUPPORTED - Failed
-- Performing Test IS_WC99_C11_COMPAT_SUPPORTED
-- Performing Test IS_WC99_C11_COMPAT_SUPPORTED - Success
-- Performing Test IS_WFORMAT_SUPPORTED
-- Performing Test IS_WFORMAT_SUPPORTED - Success
-- Performing Test IS_WFORMAT_SECURITY_SUPPORTED
-- Performing Test IS_WFORMAT_SECURITY_SUPPORTED - Success
-- Found GSSAPI: /usr/lib/libgssapi_krb5.so;/usr/lib/libkrb5.so;/usr/lib/libk5crypto.so;/usr/lib/libcom_err.so  
-- Found OpenSSL: /usr/lib/libcrypto.so (found version "3.0.7")  
-- http-parser version 2 was not found or disabled; using bundled 3rd-party sources.
-- Performing Test IS_WIMPLICIT_FALLTHROUGH_1_SUPPORTED
-- Performing Test IS_WIMPLICIT_FALLTHROUGH_1_SUPPORTED - Success
-- Found PCRE: /usr/lib/libpcre.so  
-- Looking for dirent.h
-- Looking for dirent.h - found
-- Looking for stdint.h
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-lfs-smudge" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-lfs-smudge" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-lfs-smudge" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-lfs-smudge" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-lfs-smudge"; \
fi
-- Looking for stdint.h - found
-- Looking for inttypes.h
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-hooks" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-hooks" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-hooks" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-hooks" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-hooks"; \
fi
-- Looking for inttypes.h - found
-- Looking for sys/stat.h
-- Looking for sys/stat.h - found
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for windows.h
-- Looking for windows.h - not found
-- Looking for bcopy
-- Looking for bcopy - found
-- Looking for memmove
-- Looking for memmove - found
-- Looking for strerror
-- Looking for strerror - found
-- Looking for strtoll
-- Looking for strtoll - found
-- Looking for strtoq
-- Looking for strtoq - found
-- Looking for _strtoi64
-- Looking for _strtoi64 - not found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of long long
-- Check size of long long - done
-- Check size of unsigned long long
-- Check size of unsigned long long - done
-- Performing Test IS_WNO_UNUSED_FUNCTION_SUPPORTED
-- Performing Test IS_WNO_UNUSED_FUNCTION_SUPPORTED - Success
-- Performing Test IS_WNO_IMPLICIT_FALLTHROUGH_SUPPORTED
-- Performing Test IS_WNO_IMPLICIT_FALLTHROUGH_SUPPORTED - Success
-- LIBSSH2 not found. Set CMAKE_PREFIX_PATH if it is installed outside of the default search path.
-- Checking prototype qsort_r for GIT_QSORT_R_BSD
-- Checking prototype qsort_r for GIT_QSORT_R_BSD - False
-- Checking prototype qsort_r for GIT_QSORT_R_GNU
-- Checking prototype qsort_r for GIT_QSORT_R_GNU - True
-- Looking for qsort_s
-- Looking for qsort_s - not found
-- Looking for getentropy
-- Looking for getentropy - found
-- Looking for getloadavg
-- Looking for getloadavg - found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
-- Enabled features:
 * nanoseconds, support nanosecond precision file mtimes and ctimes
 * SHA1, using CollisionDetection
 * SHA256, using Builtin
 * http-parser, http-parser support (bundled)
 * regex, using bundled PCRE
 * zlib, using bundled zlib
 * futimens, futimens support
 * threadsafe, threadsafe support

-- Disabled features:
 * debugpool, debug pool allocator
 * debugalloc, debug strict allocators
 * debugopen, path validation in open
 * SPNEGO, SPNEGO authentication support
 * HTTPS
 * SSH, SSH transport support
 * ntlmclient, NTLM authentication support for Unix
 * iconv, iconv encoding conversion support

-- Configuring done
-- Generating done
-- Build files have been written to: /build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build
CMAKE_BUILD_PARALLEL_LEVEL=8 cmake --build /build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build --target install
make[1]: warning: -j8 forced in submake: resetting jobserver mode.
make[1]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[2]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
[  0%] Building C object src/util/CMakeFiles/util.dir/allocators/failalloc.c.o
[  0%] Building C object deps/http-parser/CMakeFiles/http-parser.dir/http_parser.c.o
[  1%] Building C object deps/zlib/CMakeFiles/zlib.dir/adler32.c.o
[  2%] Building C object src/util/CMakeFiles/util.dir/alloc.c.o
[  3%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_byte_order.c.o
make[3]: Entering directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
[  4%] Building C object src/util/CMakeFiles/util.dir/allocators/stdalloc.c.o
[  4%] Building C object deps/zlib/CMakeFiles/zlib.dir/crc32.c.o
[  4%] Building C object src/libgit2/CMakeFiles/libgit2.dir/annotated_commit.c.o
[  5%] Building C object src/libgit2/CMakeFiles/libgit2.dir/apply.c.o
[  5%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_chartables.c.o
[  5%] Building C object src/libgit2/CMakeFiles/libgit2.dir/attr.c.o
[  5%] Building C object src/util/CMakeFiles/util.dir/allocators/win32_leakcheck.c.o
[  6%] Building C object src/libgit2/CMakeFiles/libgit2.dir/attr_file.c.o
[  7%] Building C object deps/pcre/CMakeFiles/pcre.dir/pcre_compile.c.o
[  7%] Building C object src/libgit2/CMakeFiles/libgit2.dir/attrcache.c.o
[  8%] Building C object deps/zlib/CMakeFiles/zlib.dir/deflate.c.o
[  9%] Building C object src/util/CMakeFiles/util.dir/date.c.o
[  9%] Building C object deps/zlib/CMakeFiles/zlib.dir/infback.c.o
[ 10%] Building C object src/libgit2/CMakeFiles/libgit2.dir/blame.c.o
[ 10%] Building C object src/util/CMakeFiles/util.dir/filebuf.c.o
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-backup" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-backup" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-backup" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/gitaly-backup" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-backup"; \
fi
[ 10%] Building C object src/libgit2/CMakeFiles/libgit2.dir/blame_git.c.o
[ 11%] Building C object src/util/CMakeFiles/util.dir/fs_path.c.o
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/build'
[ 11%] Built target http-parser
[ 11%] Building C object src/libgit2/CMakeFiles/libgit2.dir/branch.c.o
[ 12%] Building C object src/libgit2/CMakeFiles/libgit2.dir/blob.c.o
[ 13%] Building C object deps/zlib/CMakeFiles/zlib.dir/inffast.c.o
[ 14%] Building C object src/libgit2/CMakeFiles/libgit2.dir/buf.c.o
[ 14%] Building C object deps/zlib/CMakeFiles/zlib.dir/inflate.c.o
[ 14%] Building C object src/libgit2/CMakeFiles/libgit2.dir/cache.c.o
[ 15%] Building C object src/libgit2/CMakeFiles/libgit2.dir/checkout.c.o
[ 15%] Building C object src/libgit2/CMakeFiles/libgit2.dir/cherrypick.c.o
[ 16%] Building C object src/libgit2/CMakeFiles/libgit2.dir/clone.c.o
[ 17%] Building C object deps/zlib/CMakeFiles/zlib.dir/inftrees.c.o
GO_BUILD_ID=$(go tool buildid "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/praefect" || openssl rand -hex 32) && \
GNU_BUILD_ID=$(echo $GO_BUILD_ID | sha1sum | cut -d' ' -f1) && \
if test "Linux" = "Linux"; then \
	go run "/build/gitlab-gitaly/src/gitaly-v15.6.0"/tools/replace-buildid \
		-input "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/praefect" -input-build-id "54454D505F474954414C595F4255494C445F4944" \
		-output "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/praefect" -output-build-id "$GNU_BUILD_ID"; \
else \
	install "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/intermediate/praefect" "/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/praefect"; \
fi
could not replace build ID: exactly one match for old build ID expected, got 0
[ 17%] Building C object deps/zlib/CMakeFiles/zlib.dir/trees.c.o
/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/source/src/util/fs_path.c: In function ‘git_fs_path_owner_is’:
/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/source/src/util/fs_path.c:1990:45: warning: ‘sudo_uid’ may be used uninitialized [-Wmaybe-uninitialized]
 1988 |         if ((owner_type & GIT_FS_PATH_OWNER_RUNNING_SUDO) != 0 &&
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1989 |             euid == 0 &&
      |             ~~~~~~~~~~~~                     
 1990 |             sudo_uid_lookup(&sudo_uid) == 0 &&
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
 1991 |             st.st_uid == sudo_uid) {
      |             ~~~~~~~~~~~~~~~~~~~~~            
/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/deps/libgit2/source/src/util/fs_path.c:1959:21: note: ‘sudo_uid’ was declared here
 1959 |         uid_t euid, sudo_uid;
      |                     ^~~~~~~~
exit status 1
make: *** [Makefile:585: /build/gitlab-gitaly/src/gitaly-v15.6.0/_build/bin/gitaly-backup] Error 1
make: *** Waiting for unfinished jobs....
At top level:
cc1: note: unrecognized command-line option ‘-Wno-documentation-deprecated-sync’ may have been intended to silence earlier diagnostics
[ 17%] Building C object src/util/CMakeFiles/util.dir/futils.c.o
[ 18%] Building C object deps/zlib/CMakeFiles/zlib.dir/zutil.c.o
[ 18%] Building C object src/libgit2/CMakeFiles/libgit2.dir/commit.c.o
[ 18%] Building C object src/libgit2/CMakeFiles/libgit2.dir/commit_list.c.o
[ 19%] Building C object src/libgit2/CMakeFiles/libgit2.dir/commit_graph.c.o
[ 20%] Building C object src/util/CMakeFiles/util.dir/hash.c.o
[ 21%] Building C object src/libgit2/CMakeFiles/libgit2.dir/config.c.o
[ 21%] Building C object src/util/CMakeFiles/util.dir/net.c.o
[ 22%] Building C object src/util/CMakeFiles/util.dir/pool.c.o
make[3]: Leaving directory '/build/gitlab-gitaly/src/gitaly-v15.6.0/_build/dep
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information