Unverified Commit 4a17cb34 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1357 from akohlmey/embed-git-revision

Embed git branch and revision info into LAMMPS class
parents 390fc873 c5a3b034
Loading
Loading
Loading
Loading
+43 −1
Original line number Original line Diff line number Diff line
@@ -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_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
get_filename_component(LAMMPS_DOC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../doc 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
# 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)
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  set(CMAKE_INSTALL_PREFIX "$ENV{HOME}/.local" CACHE PATH "default install path" FORCE )
  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
# this is fast, so check for it all the time
message(STATUS "Running check for auto-generated files from make-based build system")
message(STATUS "Running check for auto-generated files from make-based build system")
file(GLOB SRC_AUTOGEN_FILES ${LAMMPS_SOURCE_DIR}/style_*.h)
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})
foreach(_SRC ${SRC_AUTOGEN_FILES})
  get_filename_component(FILENAME "${_SRC}" NAME)
  get_filename_component(FILENAME "${_SRC}" NAME)
  if(EXISTS ${LAMMPS_SOURCE_DIR}/${FILENAME})
  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}" )
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")
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
# Actually add executable and lib to build
############################################
############################################
+27 −2
Original line number Original line Diff line number Diff line
@@ -19,7 +19,7 @@ OBJDIR = Obj_$@
OBJSHDIR = Obj_shared_$@
OBJSHDIR = Obj_shared_$@


SRC =	$(wildcard *.cpp)
SRC =	$(wildcard *.cpp)
INC =	$(filter-out lmpinstalledpkgs.h,$(wildcard *.h))
INC =	$(filter-out lmpinstalledpkgs.h lmpgitversion.h,$(wildcard *.h))
OBJ = 	$(SRC:.cpp=.o)
OBJ = 	$(SRC:.cpp=.o)


SRCLIB = $(filter-out main.cpp,$(SRC))
SRCLIB = $(filter-out main.cpp,$(SRC))
@@ -167,6 +167,31 @@ lmpinstalledpkgs.h: $(SRC) $(INC)
	        mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h || rm ${TMPNAME}.lmpinstalled ; \
	        mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h || rm ${TMPNAME}.lmpinstalled ; \
        else mv ${TMPNAME}.lmpinstalled lmpinstalledpkgs.h ; fi
        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
# Build LAMMPS in one of 4 modes
# exe =   exe with static compile in Obj_machine (default)
# exe =   exe with static compile in Obj_machine (default)
# shexe = exe with shared compile in Obj_shared_machine
# 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.$@
	  -f MAKE/MACHINES/Makefile.$@ -o -f MAKE/MINE/Makefile.$@
	@if [ ! -d $(objdir) ]; then mkdir $(objdir); fi
	@if [ ! -d $(objdir) ]; then mkdir $(objdir); fi
	@$(SHELL) Make.sh style
	@$(SHELL) Make.sh style
	@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h
	@$(MAKE) $(MFLAGS) lmpinstalledpkgs.h gitversion
	@echo 'Compiling LAMMPS for machine $@'
	@echo 'Compiling LAMMPS for machine $@'
	@if [ -f MAKE/MACHINES/Makefile.$@ ]; \
	@if [ -f MAKE/MACHINES/Makefile.$@ ]; \
	  then cp MAKE/MACHINES/Makefile.$@ $(objdir)/Makefile; fi
	  then cp MAKE/MACHINES/Makefile.$@ $(objdir)/Makefile; fi
+1 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ style_nstencil.h
style_ntopo.h
style_ntopo.h
# other auto-generated files
# other auto-generated files
lmpinstalledpkgs.h
lmpinstalledpkgs.h
lmpgitversion.h
# renamed on 7 January 2019
# renamed on 7 January 2019
pair_lebedeva.cpp
pair_lebedeva.cpp
pair_lebedeva.h
pair_lebedeva.h
+8 −3
Original line number Original line Diff line number Diff line
@@ -260,9 +260,14 @@ void Info::command(int narg, char **arg)
  fprintf(out,"Printed on %s\n",ctime(&now));
  fprintf(out,"Printed on %s\n",ctime(&now));


  if (flags & CONFIG) {
  if (flags & CONFIG) {
    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",
      fprintf(out,"\nLAMMPS version: %s / %s\n\n",
              universe->version, universe->num_ver);
              universe->version, universe->num_ver);

    }
    const char *infobuf = get_os_info();
    const char *infobuf = get_os_info();
    fprintf(out,"OS information: %s\n\n",infobuf);
    fprintf(out,"OS information: %s\n\n",infobuf);
    delete[] infobuf;
    delete[] infobuf;
+8 −2
Original line number Original line Diff line number Diff line
@@ -52,6 +52,7 @@
#include "error.h"
#include "error.h"


#include "lmpinstalledpkgs.h"
#include "lmpinstalledpkgs.h"
#include "lmpgitversion.h"


using namespace LAMMPS_NS;
using namespace LAMMPS_NS;


@@ -898,9 +899,14 @@ void LAMMPS::help()


  // general help message about command line and flags
  // 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,
  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"
          "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"
          "List of command line options supported by this LAMMPS executable:\n\n"
          "-echo none/screen/log/both  : echoing of input script (-e)\n"
          "-echo none/screen/log/both  : echoing of input script (-e)\n"
Loading