forked from lijiext/lammps
Merge pull request #1357 from akohlmey/embed-git-revision
Embed git branch and revision info into LAMMPS class
This commit is contained in:
commit
4a17cb3467
|
@ -11,6 +11,8 @@ get_filename_component(LAMMPS_LIB_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../lib
|
|||
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
|
||||
get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc ABSOLUTE)
|
||||
|
||||
find_package(Git)
|
||||
|
||||
# by default, install into $HOME/.local (not /usr/local), so that no root access (and sudo!!) is needed
|
||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE )
|
||||
|
@ -85,7 +87,7 @@ string(TOUPPER "${CMAKE_BUILD_TYPE}" BTYPE)
|
|||
# this is fast, so check for it all the time
|
||||
message(STATUS "Running check for auto-generated files from make-based build system")
|
||||
file(GLOB SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/style_*.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/lmpinstalledpkgs.h)
|
||||
list(APPEND SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/lmpinstalledpkgs.h ${LAMMPS_SOURCE_DIR}/lmpgitversion.h)
|
||||
foreach(_SRC ${SRC_AUTOGEN_FILES})
|
||||
get_filename_component(FILENAME "${_SRC}" NAME)
|
||||
if(EXISTS ${LAMMPS_SOURCE_DIR}/${FILENAME})
|
||||
|
@ -1326,6 +1328,46 @@ message(STATUS "Generating lmpinstalledpkgs.h...")
|
|||
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${temp}" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpinstalledpkgs.h")
|
||||
|
||||
######################################
|
||||
# Generate lmpgitversion.h
|
||||
######################################
|
||||
set(temp "#ifndef LMP_GIT_VERSION_H\n#define LMP_GIT_VERSION_H\n")
|
||||
set(temp_git_commit "(unknown)")
|
||||
set(temp_git_branch "(unknown)")
|
||||
set(temp_git_describe "(unknown)")
|
||||
set(temp_git_info "false")
|
||||
if(GIT_FOUND)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe HEAD
|
||||
RESULT_VARIABLE temp_in_git_checkout
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(temp_in_git_checkout EQUAL 0)
|
||||
set(temp_git_info "true")
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||
OUTPUT_VARIABLE temp_git_commit
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
|
||||
OUTPUT_VARIABLE temp_git_branch
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty=-modified
|
||||
OUTPUT_VARIABLE temp_git_describe
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(temp "${temp}const bool LAMMPS_NS::LAMMPS::has_git_info = ${temp_git_info};\n")
|
||||
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_commit[] = \"${temp_git_commit}\";\n")
|
||||
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_branch[] = \"${temp_git_branch}\";\n")
|
||||
set(temp "${temp}const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"${temp_git_describe}\";\n")
|
||||
set(temp "${temp}#endif\n\n")
|
||||
|
||||
message(STATUS "Generating lmpgitversion.h...")
|
||||
file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" )
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h")
|
||||
|
||||
###########################################
|
||||
# Actually add executable and lib to build
|
||||
############################################
|
||||
|
|
29
src/Makefile
29
src/Makefile
|
@ -19,7 +19,7 @@ OBJDIR = Obj_$@
|
|||
OBJSHDIR = Obj_shared_$@
|
||||
|
||||
SRC = $(wildcard *.cpp)
|
||||
INC = $(filter-out lmpinstalledpkgs.h,$(wildcard *.h))
|
||||
INC = $(filter-out lmpinstalledpkgs.h lmpgitversion.h,$(wildcard *.h))
|
||||
OBJ = $(SRC:.cpp=.o)
|
||||
|
||||
SRCLIB = $(filter-out main.cpp,$(SRC))
|
||||
|
@ -167,6 +167,31 @@ lmpinstalledpkgs.h: $(SRC) $(INC)
|
|||
mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h || rm ${TMPNAME}.lmpinstalled ; \
|
||||
else mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h ; fi
|
||||
|
||||
gitversion:
|
||||
@echo 'Gathering git version information'
|
||||
@echo '#ifndef LMP_GIT_VERSION_H' > ${TMPNAME}.lmpgitversion
|
||||
@echo '#define LMP_GIT_VERSION_H' >> ${TMPNAME}.lmpgitversion
|
||||
@if (type git && git describe HEAD ) >> /dev/null 2>> /dev/null ; then \
|
||||
git='true'; \
|
||||
commit=$$(git rev-parse HEAD); \
|
||||
branch=$$(git rev-parse --abbrev-ref HEAD); \
|
||||
describe=$$(git describe --dirty=-modified); \
|
||||
else \
|
||||
git='false' ; \
|
||||
commit='(unknown)' ; \
|
||||
branch='(unknown)' ; \
|
||||
describe='(unknown)' ; \
|
||||
fi ; \
|
||||
echo "const bool LAMMPS_NS::LAMMPS::has_git_info = $${git};" >> ${TMPNAME}.lmpgitversion ; \
|
||||
echo "const char LAMMPS_NS::LAMMPS::git_commit[] = \"$${commit}\";" >> ${TMPNAME}.lmpgitversion ; \
|
||||
echo "const char LAMMPS_NS::LAMMPS::git_branch[] = \"$${branch}\";" >> ${TMPNAME}.lmpgitversion ; \
|
||||
echo "const char LAMMPS_NS::LAMMPS::git_descriptor[] = \"$${describe}\";" >> ${TMPNAME}.lmpgitversion
|
||||
@echo '#endif' >> ${TMPNAME}.lmpgitversion
|
||||
@if [ -f lmpgitversion.h ]; \
|
||||
then test "`diff --brief ${TMPNAME}.lmpgitversion lmpgitversion.h`" != "" && \
|
||||
mv ${TMPNAME}.lmpgitversion lmpgitversion.h || rm ${TMPNAME}.lmpgitversion ; \
|
||||
else mv ${TMPNAME}.lmpgitversion lmpgitversion.h ; fi
|
||||
|
||||
# Build LAMMPS in one of 4 modes
|
||||
# exe = exe with static compile in Obj_machine (default)
|
||||
# shexe = exe with shared compile in Obj_shared_machine
|
||||
|
@ -180,7 +205,7 @@ lmpinstalledpkgs.h: $(SRC) $(INC)
|
|||
-f MAKE/MACHINES/Makefile.$@ -o -f MAKE/MINE/Makefile.$@
|
||||
@if [ ! -d $(objdir) ]; then mkdir $(objdir); fi
|
||||
@$(SHELL) Make.sh style
|
||||
@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h
|
||||
@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h gitversion
|
||||
@echo 'Compiling LAMMPS for machine $@'
|
||||
@if [ -f MAKE/MACHINES/Makefile.$@ ]; \
|
||||
then cp MAKE/MACHINES/Makefile.$@ $(objdir)/Makefile; fi
|
||||
|
|
|
@ -24,6 +24,7 @@ style_nstencil.h
|
|||
style_ntopo.h
|
||||
# other auto-generated files
|
||||
lmpinstalledpkgs.h
|
||||
lmpgitversion.h
|
||||
# renamed on 7 January 2019
|
||||
pair_lebedeva.cpp
|
||||
pair_lebedeva.h
|
||||
|
|
11
src/info.cpp
11
src/info.cpp
|
@ -260,9 +260,14 @@ void Info::command(int narg, char **arg)
|
|||
fprintf(out,"Printed on %s\n",ctime(&now));
|
||||
|
||||
if (flags & CONFIG) {
|
||||
fprintf(out,"\nLAMMPS version: %s / %s\n\n",
|
||||
universe->version, universe->num_ver);
|
||||
|
||||
if (lmp->has_git_info) {
|
||||
fprintf(out,"\nLAMMPS version: %s / %s\nGit info: %s / %s / %s\n\n",
|
||||
universe->version, universe->num_ver,lmp->git_branch,
|
||||
lmp->git_descriptor,lmp->git_commit);
|
||||
} else {
|
||||
fprintf(out,"\nLAMMPS version: %s / %s\n\n",
|
||||
universe->version, universe->num_ver);
|
||||
}
|
||||
const char *infobuf = get_os_info();
|
||||
fprintf(out,"OS information: %s\n\n",infobuf);
|
||||
delete[] infobuf;
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "error.h"
|
||||
|
||||
#include "lmpinstalledpkgs.h"
|
||||
#include "lmpgitversion.h"
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
|
@ -898,9 +899,14 @@ void LAMMPS::help()
|
|||
|
||||
// general help message about command line and flags
|
||||
|
||||
if (has_git_info) {
|
||||
fprintf(fp,"\nLarge-scale Atomic/Molecular Massively Parallel Simulator - "
|
||||
LAMMPS_VERSION "\nGit info (%s / %s)\n\n",git_branch, git_descriptor);
|
||||
} else {
|
||||
fprintf(fp,"\nLarge-scale Atomic/Molecular Massively Parallel Simulator - "
|
||||
LAMMPS_VERSION "\n\n");
|
||||
}
|
||||
fprintf(fp,
|
||||
"\nLarge-scale Atomic/Molecular Massively Parallel Simulator - "
|
||||
LAMMPS_VERSION "\n\n"
|
||||
"Usage example: %s -var t 300 -echo screen -in in.alloy\n\n"
|
||||
"List of command line options supported by this LAMMPS executable:\n\n"
|
||||
"-echo none/screen/log/both : echoing of input script (-e)\n"
|
||||
|
|
|
@ -65,6 +65,11 @@ class LAMMPS {
|
|||
|
||||
static const char * installed_packages[];
|
||||
|
||||
static const bool has_git_info;
|
||||
static const char git_commit[];
|
||||
static const char git_branch[];
|
||||
static const char git_descriptor[];
|
||||
|
||||
LAMMPS(int, char **, MPI_Comm);
|
||||
~LAMMPS();
|
||||
void create();
|
||||
|
|
Loading…
Reference in New Issue