Skip to content

Commit e1e7bc7

Browse files
committed
Add git-based build information for better issue tracking
1 parent 305eb5a commit e1e7bc7

File tree

5 files changed

+81
-2
lines changed

5 files changed

+81
-2
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ models/*
3232
/vdot
3333
/Pipfile
3434

35+
build-info.h
3536
arm_neon.h
3637
compile_commands.json
3738

CMakeLists.txt

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,58 @@ option(LLAMA_CLBLAST "llama: use CLBlast"
7272
option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE})
7373
option(LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE})
7474

75+
#
76+
# Build info header
77+
#
78+
79+
file(WRITE ${CMAKE_BINARY_DIR}/BUILD_INFO.cmake "\
80+
set(HEAD \"unknown\")
81+
set(COUNT 0)
82+
83+
find_package(Git)
84+
if(Git_FOUND)
85+
execute_process(
86+
COMMAND \${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
87+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
88+
OUTPUT_VARIABLE TEMP_HEAD
89+
OUTPUT_STRIP_TRAILING_WHITESPACE
90+
RESULT_VARIABLE GIT_HEAD_RESULT
91+
)
92+
execute_process(
93+
COMMAND \${GIT_EXECUTABLE} rev-list --count HEAD
94+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
95+
OUTPUT_VARIABLE TEMP_COUNT
96+
OUTPUT_STRIP_TRAILING_WHITESPACE
97+
RESULT_VARIABLE GIT_COUNT_RESULT
98+
)
99+
if(GIT_HEAD_RESULT EQUAL 0 AND GIT_COUNT_RESULT EQUAL 0)
100+
set(HEAD \${TEMP_HEAD})
101+
set(COUNT \${TEMP_COUNT})
102+
endif()
103+
endif()
104+
105+
file(WRITE \"${CMAKE_SOURCE_DIR}/build-info.h\" \"#pragma once\\n#define BUILD_NUMBER \${COUNT}\\n#define BUILD_BRANCH \\\"\${HEAD}\\\"\\n\")
106+
")
107+
108+
# Call the script to generate build-info.h initially
109+
execute_process(
110+
COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -P ${CMAKE_BINARY_DIR}/BUILD_INFO.cmake
111+
)
112+
113+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
114+
# Add a custom target to regenerate build-info.h when .git/index changes
115+
add_custom_target(BUILD_INFO ALL DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h")
116+
117+
# Add a custom command to generate build-info.h when .git/index changes
118+
add_custom_command(
119+
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build-info.h"
120+
COMMENT "Updating build-info.h"
121+
COMMAND ${CMAKE_COMMAND} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -P ${CMAKE_BINARY_DIR}/BUILD_INFO.cmake
122+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/.git/index"
123+
VERBATIM
124+
)
125+
endif()
126+
75127
#
76128
# Compile flags
77129
#

Makefile

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ endif
1616
CCV := $(shell $(CC) --version | head -n 1)
1717
CXXV := $(shell $(CXX) --version | head -n 1)
1818

19+
GIT_INDEX = $(wildcard .git/index)
20+
1921
# Mac OS + Arm can report x86_64
2022
# ref: https://github.com/ggerganov/whisper.cpp/issues/66#issuecomment-1282546789
2123
ifeq ($(UNAME_S),Darwin)
@@ -177,7 +179,23 @@ common.o: examples/common.cpp examples/common.h
177179
clean:
178180
rm -vf *.o main quantize quantize-stats perplexity embedding benchmark-q4_0-matmult
179181

180-
main: examples/main/main.cpp ggml.o llama.o common.o $(OBJS)
182+
build-info.h: $(GIT_INDEX)
183+
@BUILD_NUMBER=`git rev-list HEAD --count 2>/dev/null`;\
184+
BUILD_BRANCH=`git rev-parse --abbrev-ref HEAD 2>/dev/null`;\
185+
if [ -z "$$BUILD_NUMBER" ] || [ -z "$$BUILD_BRANCH" ]; then\
186+
BUILD_NUMBER="0";\
187+
BUILD_BRANCH="unknown";\
188+
fi;\
189+
echo "#ifndef BUILD_INFO_H" > $@;\
190+
echo "#define BUILD_INFO_H" >> $@;\
191+
echo "" >> $@;\
192+
echo "#define BUILD_NUMBER $$BUILD_NUMBER" >> $@;\
193+
echo "#define BUILD_BRANCH \"$$BUILD_BRANCH\"" >> $@;\
194+
echo "" >> $@;\
195+
echo "#endif // BUILD_INFO_H" >> $@;
196+
197+
198+
main: examples/main/main.cpp build-info.h ggml.o llama.o common.o $(OBJS)
181199
$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)
182200
@echo
183201
@echo '==== Run ./main -h for help. ===='

examples/main/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ set(TARGET main)
22
add_executable(${TARGET} main.cpp)
33
target_link_libraries(${TARGET} PRIVATE common llama ${CMAKE_THREAD_LIBS_INIT})
44
target_compile_features(${TARGET} PRIVATE cxx_std_11)
5+
add_dependencies(${TARGET} BUILD_INFO)

examples/main/main.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include "common.h"
77
#include "llama.h"
8+
#include "build-info.h"
89

910
#include <cassert>
1011
#include <cinttypes>
@@ -81,11 +82,17 @@ int main(int argc, char ** argv) {
8182
"expect poor results\n", __func__, params.n_ctx);
8283
}
8384

85+
if (strcmp(BUILD_BRANCH, "master") == 0) {
86+
fprintf(stderr, "%s: build = %d\n", __func__, BUILD_NUMBER);
87+
} else {
88+
fprintf(stderr, "%s: build = %s-%d\n", __func__, BUILD_BRANCH, BUILD_NUMBER);
89+
}
90+
8491
if (params.seed <= 0) {
8592
params.seed = time(NULL);
8693
}
8794

88-
fprintf(stderr, "%s: seed = %d\n", __func__, params.seed);
95+
fprintf(stderr, "%s: seed = %d\n", __func__, params.seed);
8996

9097
std::mt19937 rng(params.seed);
9198
if (params.random_prompt) {

0 commit comments

Comments
 (0)