[cmake]: Add history log

1. Remove SVN version record.
2. CMakeLists will record max 10 git version.
3. Use mpp_show_history to control the history display.
4. Use strings libmpp.so | grep author to get history log from binary.

Change-Id: I5231ced4031d868fe1329488c914730dc91a3531
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2020-03-03 18:04:47 +08:00
parent 14cae9c4ca
commit 54b047e396
6 changed files with 89 additions and 170 deletions

View File

@@ -170,38 +170,23 @@ if(GCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif(GCC)
# ----------------------------------------------------------------------------
# Create svn version information
# ----------------------------------------------------------------------------
set(HAVE_SVN 0)
if(EXISTS "${PROJECT_SOURCE_DIR}/.svn/")
find_host_package(Subversion)
if(Subversion_FOUND)
set(HAVE_SVN true)
endif(Subversion_FOUND)
endif(EXISTS "${PROJECT_SOURCE_DIR}/.svn/")
if(${HAVE_SVN})
Subversion_WC_INFO(${PROJECT_SOURCE_DIR} Project)
message(STATUS "Current svn revision is ${Project_WC_REVISION}")
set(VERSION_REVISION ${Project_WC_REVISION})
set(VERSION_LAST_AUTHOR ${Project_WC_LAST_CHANGED_AUTHOR})
set(VERSION_LAST_DATE ${Project_WC_LAST_CHANGED_DATE})
set(VERSION_ONE_LINE "${VERSION_REVISION} author: ${VERSION_LAST_AUTHOR} date: ${VERSION_LAST_DATE}")
set(VERSION_VER_NUM ${VERSION_REVISION})
else()
set(VERSION_REVISION -1)
endif()
# ----------------------------------------------------------------------------
# Create git version information
# ----------------------------------------------------------------------------
set(VERSION_CNT 0)
set(VERSION_MAX_CNT 10)
set(VERSION_INFO "\"unknown mpp version for missing VCS info\"")
foreach (CNT RANGE ${VERSION_MAX_CNT})
set(VERSION_HISTORY_${CNT} "NULL")
endforeach(CNT)
if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
find_host_package(Git)
if(GIT_FOUND)
# get author
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%an
# get current version info
set(GIT_LOG_FORMAT "%h author: %<|(30)%an %cd %s")
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --date=short --pretty=format:${GIT_LOG_FORMAT}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE EXEC_OUT
ERROR_VARIABLE EXEC_ERROR
@@ -210,12 +195,19 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
ERROR_STRIP_TRAILING_WHITESPACE)
if (NOT EXEC_RET)
message(STATUS "author: ${EXEC_OUT}")
set(VERSION_LAST_AUTHOR ${EXEC_OUT})
set(VERSION_INFO ${EXEC_OUT})
message(STATUS "current version:")
message(STATUS "${VERSION_INFO}")
set(VERSION_INFO "\"${VERSION_INFO}\"")
else()
message(STATUS "git ret ${EXEC_RET}")
message(STATUS "${EXEC_ERROR}")
endif()
# get date
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%ad
set(GIT_LOG_FORMAT "%h author: %<|(30)%an %cd %s %d")
# get history version information
execute_process(COMMAND ${GIT_EXECUTABLE} log -${VERSION_MAX_CNT} --oneline --date=short --pretty=format:${GIT_LOG_FORMAT}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE EXEC_OUT
ERROR_VARIABLE EXEC_ERROR
@@ -224,42 +216,23 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
ERROR_STRIP_TRAILING_WHITESPACE)
if (NOT EXEC_RET)
message(STATUS "date : ${EXEC_OUT}")
set(VERSION_LAST_DATE ${EXEC_OUT})
set(VERSION_HISTORY ${EXEC_OUT})
string(REPLACE "\n" ";" VERSION_HISTORY ${VERSION_HISTORY})
list(LENGTH VERSION_HISTORY VERSION_CNT)
message(STATUS "${VERSION_CNT} git history:")
# setup logs
set(CNT 0)
foreach(VERSION_LOG ${VERSION_HISTORY})
message(STATUS ${VERSION_LOG})
set(VERSION_HISTORY_${CNT} "\"${VERSION_LOG}\"")
math(EXPR CNT "${CNT}+1")
endforeach(VERSION_LOG)
else()
message(STATUS "git ret ${EXEC_RET}")
message(STATUS "${EXEC_ERROR}")
endif()
# get version hash
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --format=%H
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE EXEC_OUT
ERROR_VARIABLE EXEC_ERROR
RESULT_VARIABLE EXEC_RET
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
if (NOT EXEC_RET)
set(VERSION_REVISION ${EXEC_OUT})
endif()
# get one line version information
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:"%h author: %an %s"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE EXEC_OUT
ERROR_VARIABLE EXEC_ERROR
RESULT_VARIABLE EXEC_RET
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE)
if (NOT EXEC_RET)
message(STATUS "git version: ${EXEC_OUT}")
set(VERSION_ONE_LINE ${EXEC_OUT})
string(REPLACE "\"" "" VERSION_ONE_LINE ${VERSION_ONE_LINE})
endif()
set(VERSION_VER_NUM -1)
else(GIT_FOUND)
set(VERSION_ONE_LINE "Missing VCS info")
set(VERSION_LAST_AUTHOR "Unknown")
endif()
# add git hooks
@@ -271,10 +244,6 @@ if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
message(STATUS "Install git hooks done")
endif(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks")
endif(EXISTS "${PROJECT_SOURCE_DIR}/tools/hooks/")
else(EXISTS "${PROJECT_SOURCE_DIR}/.git")
set(VERSION_ONE_LINE "Without VCS info")
set(VERSION_LAST_AUTHOR "Unknown")
endif(EXISTS "${PROJECT_SOURCE_DIR}/.git")
configure_file(

View File

@@ -17,11 +17,17 @@
#ifndef __VERSION_H__
#define __VERSION_H__
#define MPP_VERSION "@VERSION_REVISION@"
#define MPP_AUTHOR "@VERSION_LAST_AUTHOR@"
#define MPP_DATE "@VERSION_LAST_DATA@"
#define MPP_ONE_LINE "@VERSION_ONE_LINE@"
#define MPP_VER_NUM "@VERSION_VER_NUM@"
#define MPP_VERSION @VERSION_INFO@
#define MPP_VER_HIST_CNT @VERSION_CNT@
#define MPP_VER_HIST_0 @VERSION_HISTORY_0@
#define MPP_VER_HIST_1 @VERSION_HISTORY_1@
#define MPP_VER_HIST_2 @VERSION_HISTORY_2@
#define MPP_VER_HIST_3 @VERSION_HISTORY_3@
#define MPP_VER_HIST_4 @VERSION_HISTORY_4@
#define MPP_VER_HIST_5 @VERSION_HISTORY_5@
#define MPP_VER_HIST_6 @VERSION_HISTORY_6@
#define MPP_VER_HIST_7 @VERSION_HISTORY_7@
#define MPP_VER_HIST_8 @VERSION_HISTORY_8@
#define MPP_VER_HIST_9 @VERSION_HISTORY_9@
#endif /*__VERSION_H__*/

View File

@@ -17,31 +17,11 @@
#ifndef __MPP_INFO_H__
#define __MPP_INFO_H__
typedef enum RK_CHIP_TYPE {
NONE,
RK29,
RK30,
RK31,
RK_CHIP_NUM = 0x100,
} RK_CHIP_TYPE;
typedef enum MPP_INFO_TYPE {
INFO_ALL,
INFO_REVISION,
INFO_DATE,
INFO_AUTHOR,
INFO_BUTT,
} MPP_INFO_TYPE;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
RK_CHIP_TYPE get_chip_type();
const char *mpp_info_get(MPP_INFO_TYPE type);
int mpp_info_get_revision();
void show_mpp_version(void);
#ifdef __cplusplus
}

View File

@@ -455,14 +455,14 @@ MPP_RET mpp_create(MppCtx *ctx, MppApi **mpi)
break;
}
mpp_api.version = mpp_info_get_revision();
mpp_api.version = 0;
p->api = &mpp_api;
p->check = p;
*ctx = p;
*mpi = p->api;
} while (0);
mpp_log("mpp version: %s\n", mpp_info_get(INFO_ALL));
show_mpp_version();
mpi_dbg_func("leave ret %d ctx %p mpi %p\n", ret, *ctx, *mpi);
return ret;

View File

@@ -29,75 +29,33 @@
* To avoid string | grep author getting multiple results
* use commit to replace author
*/
static char mpp_version_revision[] = MPP_VERSION;
static char mpp_version_commit[] = MPP_AUTHOR;
static char mpp_version_date[] = MPP_DATE;
static char mpp_version_one_line[] = MPP_ONE_LINE;
static char mpp_version_number[] = MPP_VER_NUM;
static const char mpp_version[] = MPP_VERSION;
static const RK_S32 mpp_history_cnt = MPP_VER_HIST_CNT;
static const char *mpp_history[] = {
MPP_VER_HIST_0,
MPP_VER_HIST_1,
MPP_VER_HIST_2,
MPP_VER_HIST_3,
MPP_VER_HIST_4,
MPP_VER_HIST_5,
MPP_VER_HIST_6,
MPP_VER_HIST_7,
MPP_VER_HIST_8,
MPP_VER_HIST_9,
};
static RK_CHIP_TYPE chip_version(void)
void show_mpp_version(void)
{
RK_CHIP_TYPE type = NONE;
const char *value = NULL;
RK_S32 ret = mpp_env_get_str("ro.product.board", &value, NULL);
RK_U32 show_history = 0;
if (0 == ret) {
if (strstr(value, "rk29")) {
mpp_log("rk29 board found in board property");
type = RK29;
} else if (strstr(value, "rk30")) {
mpp_log("rk30 board found in board property");
type = RK30;
}
}
if (NONE == type) {
ret = mpp_env_get_str("ro.board.platform", &value, NULL);
if (0 == ret) {
if (strstr(value, "rk29")) {
mpp_log("rk29 board found in platform property");
type = RK29;
} else if (strstr(value, "rk30")) {
mpp_log("rk30 board found in platform property");
type = RK30;
}
}
}
mpp_env_get_u32("mpp_show_history", &show_history, 0);
if (NONE == type) {
mpp_log("can not found matched chip type");
}
return type;
}
if (show_history) {
RK_S32 i;
const char *mpp_info_get(MPP_INFO_TYPE type)
{
switch (type) {
case INFO_ALL : {
return mpp_version_one_line;
} break;
case INFO_REVISION : {
return mpp_version_revision;
} break;
case INFO_DATE : {
return mpp_version_date;
} break;
case INFO_AUTHOR : {
return mpp_version_commit;
} break;
default : {
mpp_err_f("invalid info type %d\n", type);
} break;
mpp_log("mpp version history %d:\n", mpp_history_cnt);
for (i = 0; i < mpp_history_cnt; i++)
mpp_log("%s\n", mpp_history[i]);
} else
mpp_log("mpp version: %s\n", mpp_version);
}
return NULL;
}
RK_CHIP_TYPE get_chip_type()
{
return chip_version();
}
int mpp_info_get_revision()
{
return atoi(mpp_version_number);
}

View File

@@ -17,15 +17,21 @@
#define MODULE_TAG "mpp_info_test"
#include "mpp_log.h"
#include "mpp_env.h"
#include "mpp_info.h"
int main()
{
mpp_log("mpp revision is %d\n", mpp_info_get_revision());
mpp_log("mpp info all:\n%s\n", mpp_info_get(INFO_ALL));
mpp_log("mpp info revision: %s\n", mpp_info_get(INFO_REVISION));
mpp_log("mpp info date : %s\n", mpp_info_get(INFO_DATE));
mpp_log("mpp info author : %s\n", mpp_info_get(INFO_AUTHOR));
mpp_env_set_u32("mpp_show_history", 0);
mpp_log("normal version log:\n");
show_mpp_version();
mpp_env_set_u32("mpp_show_history", 1);
mpp_log("history version log:\n");
show_mpp_version();
mpp_env_set_u32("mpp_show_history", 0);
return 0;
}