mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 09:36:49 +08:00
[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:
107
CMakeLists.txt
107
CMakeLists.txt
@@ -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(
|
||||
|
@@ -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__*/
|
||||
|
||||
|
@@ -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
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user