Modify version check flow
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
This commit is contained in:
parent
f0594dce3a
commit
afa0c1b53f
@ -6,9 +6,10 @@
|
||||
PWD:=$(shell pwd)
|
||||
MODULESDIR:=$(PWD)/../modules
|
||||
UTILS_DIR:=$(PWD)/../utils
|
||||
METADATA_DIR:=$(PWD)/../.metadata
|
||||
BINARY_PATH = /sbin
|
||||
|
||||
VERSION_FILE := $(MODULESDIR)/CAS_VERSION
|
||||
VERSION_FILE := $(METADATA_DIR)/cas_version
|
||||
|
||||
#
|
||||
# Section below enables creating build with experimental features
|
||||
@ -89,7 +90,7 @@ LDFLAGS = -z noexecstack -z relro -z now -pie -pthread
|
||||
all: sync
|
||||
$(MAKE) build
|
||||
|
||||
build: $(VERSION_FILE) $(TARGETS)
|
||||
build: $(TARGETS)
|
||||
|
||||
sync:
|
||||
@cd $(MODULESDIR) && $(MAKE) sync
|
||||
@ -119,17 +120,12 @@ ifeq ($(strip $(CAS_VERSION_MAIN)),)
|
||||
endif
|
||||
@$(CC) -c $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||
|
||||
$(VERSION_FILE):
|
||||
@echo " VERSION " $@
|
||||
@cd $(MODULESDIR) && ./CAS_VERSION_GEN
|
||||
|
||||
clean:
|
||||
@echo " CLEAN "
|
||||
@rm -f *.a $(TARGETS)
|
||||
@rm -f $(shell find -name \*.d) $(shell find -name \*.o)
|
||||
|
||||
distclean: clean
|
||||
@rm -f $(VERSION_FILE)
|
||||
|
||||
install: install_files
|
||||
|
||||
|
8
configure
vendored
8
configure
vendored
@ -61,6 +61,14 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Run version generator with 'build' flag to
|
||||
# indicate that we are in the build process
|
||||
(cd utils && ./cas_version_gen build)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: failed to obtain CAS version" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONFIG_FILES=`ls $SCRIPTPATH/configure.d/*.conf | sort`
|
||||
FILES_COUNT=`echo $CONFIG_FILES | wc -w`
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright(c) 2012-2020 Intel Corporation
|
||||
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
#
|
||||
|
||||
VER_FILE=CAS_VERSION
|
||||
|
||||
if [ -f ${VER_FILE} ]; then
|
||||
echo -e "Using existing ${VER_FILE} version file.\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -e "No ${VER_FILE} found. Preparing default version file.\n"
|
||||
|
||||
CAS_VERSION_MAIN=20
|
||||
CAS_VERSION_MAJOR=6
|
||||
CAS_VERSION_MINOR=0
|
||||
CAS_BUILD_NO=0000`date +%m%d`
|
||||
|
||||
touch ${VER_FILE}
|
||||
|
||||
CAS_VERSION=$(printf "%02d.%02d.%02d.%s" $CAS_VERSION_MAIN $CAS_VERSION_MAJOR \
|
||||
$CAS_VERSION_MINOR $CAS_BUILD_NO)
|
||||
|
||||
echo "CAS_VERSION_MAIN=${CAS_VERSION_MAIN}" >> ${VER_FILE}
|
||||
echo "CAS_VERSION_MAJOR=${CAS_VERSION_MAJOR}" >> ${VER_FILE}
|
||||
echo "CAS_VERSION_MINOR=${CAS_VERSION_MINOR}" >> ${VER_FILE}
|
||||
echo "CAS_VERSION=${CAS_VERSION}" >> ${VER_FILE}
|
||||
|
||||
cat ${VER_FILE}
|
@ -15,8 +15,6 @@ obj-y += cas_disk/
|
||||
# line; invoke the kernel build system.
|
||||
else
|
||||
|
||||
VERSION_FILE=$(PWD)/CAS_VERSION
|
||||
|
||||
OCFDIR=$(PWD)/../ocf
|
||||
KERNEL_DIR ?= "/lib/modules/$(shell uname -r)/build"
|
||||
PWD=$(shell pwd)
|
||||
@ -31,9 +29,6 @@ MODPROBE:=$(shell which modprobe)
|
||||
|
||||
all: default
|
||||
|
||||
$(VERSION_FILE):
|
||||
./CAS_VERSION_GEN
|
||||
|
||||
# Extra targets and file configuration
|
||||
ifneq ($(wildcard $(PWD)/extra.mk),)
|
||||
include $(PWD)/extra.mk
|
||||
@ -41,7 +36,7 @@ else
|
||||
sync distsync:
|
||||
endif
|
||||
|
||||
default: $(VERSION_FILE) sync
|
||||
default: sync
|
||||
cd $(KERNEL_DIR) && $(MAKE) M=$(PWD) modules
|
||||
|
||||
clean:
|
||||
|
@ -3,10 +3,7 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
#
|
||||
|
||||
VERSION_FILE := $(M)/CAS_VERSION
|
||||
|
||||
$(VERSION_FILE):
|
||||
./CAS_VERSION_GEN
|
||||
VERSION_FILE := $(M)/../.metadata/cas_version
|
||||
|
||||
check_cflag=$(shell echo "" | \
|
||||
gcc -c -xc ${1} -o /dev/null - 2>/dev/null; \
|
||||
|
105
utils/cas_version_gen
Executable file
105
utils/cas_version_gen
Executable file
@ -0,0 +1,105 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Copyright(c) 2020 Intel Corporation
|
||||
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||
#
|
||||
|
||||
|
||||
THIS=$(basename "$0")
|
||||
SOURCES_DIR="$(realpath ../)"
|
||||
MANUAL_VERSION_INPUT="$SOURCES_DIR/version"
|
||||
VERSION_FILE="$SOURCES_DIR/.metadata/cas_version"
|
||||
SUBMODULES=(
|
||||
"ocf"
|
||||
"test/functional/test-framework"
|
||||
)
|
||||
|
||||
|
||||
warning() {
|
||||
echo -e "\e[33mWARNING\e[0m: $THIS: $*" >&2
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "\e[31mERROR\e[0m: $THIS: $*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# Check if we're inside a git repository
|
||||
if [[ -d "$SOURCES_DIR/.git" ]] && which git &>/dev/null &&\
|
||||
(cd "$SOURCES_DIR" && git rev-parse --is-inside-work-tree &>/dev/null); then
|
||||
if [[ ! -r "$MANUAL_VERSION_INPUT" ]]; then
|
||||
error "can't read version input file"
|
||||
fi
|
||||
. "$MANUAL_VERSION_INPUT"
|
||||
if [[ ! "$CAS_VERSION_MAIN" || ! "$CAS_VERSION_MAJOR" || ! "$CAS_VERSION_MINOR" ]]; then
|
||||
error "wrong version input file format"
|
||||
fi
|
||||
|
||||
CAS_VERSION_BUILD=$(cd "$SOURCES_DIR" && git log --merges --oneline | wc -l)
|
||||
LAST_COMMIT_HASH=$(cd "$SOURCES_DIR" && git log -1 --pretty=format:%H)
|
||||
LAST_COMMIT_HASH_ABBR=$(cd "$SOURCES_DIR" && git log -1 --pretty=format:%h)
|
||||
LAST_COMMIT_DATE=$(cd "$SOURCES_DIR" && git log -1 --pretty=format:%ci |\
|
||||
sed "s/ /T/" | sed "s/ //" | sed "s/00$/:00/")
|
||||
LAST_COMMIT_TIMESTAMP=$(cd "$SOURCES_DIR" && git log -1 --pretty=format:%ct)
|
||||
for SUBMOD in ${SUBMODULES[@]}; do
|
||||
LAST_SUB_COMMIT_HASHES+=($(cd "$SOURCES_DIR/$SUBMOD" && git log -1 --pretty=format:%H))
|
||||
LAST_SUB_COMMIT_HASHES_ABBR+=($(cd "$SOURCES_DIR/$SUBMOD" && git log -1 --pretty=format:%h))
|
||||
done
|
||||
if [[ $(cd "$SOURCES_DIR" && git tag --points-at HEAD) ]]; then
|
||||
CAS_VERSION_RELEASE="release"
|
||||
elif [[ $(cd "$SOURCES_DIR" && git log -1 --pretty=format:%H)\
|
||||
== $(cd "$SOURCES_DIR" && git log -1 --merges --pretty=format:%H) ]]; then
|
||||
CAS_VERSION_RELEASE="master"
|
||||
else
|
||||
CAS_VERSION_RELEASE="devel"
|
||||
fi
|
||||
|
||||
CAS_VERSION=$(printf "%02d.%02d.%01d.%04d.%s" $CAS_VERSION_MAIN $CAS_VERSION_MAJOR\
|
||||
$CAS_VERSION_MINOR $CAS_VERSION_BUILD $CAS_VERSION_RELEASE)
|
||||
|
||||
mkdir -p $(dirname "$VERSION_FILE")
|
||||
if ! touch "$VERSION_FILE"; then
|
||||
error "couldn't create version file"
|
||||
fi
|
||||
echo "CAS_VERSION_MAIN=$CAS_VERSION_MAIN" > "$VERSION_FILE"
|
||||
echo "CAS_VERSION_MAJOR=$CAS_VERSION_MAJOR" >> "$VERSION_FILE"
|
||||
echo "CAS_VERSION_MINOR=$CAS_VERSION_MINOR" >> "$VERSION_FILE"
|
||||
echo "CAS_VERSION_BUILD=$CAS_VERSION_BUILD" >> "$VERSION_FILE"
|
||||
echo "CAS_VERSION_RELEASE=$CAS_VERSION_RELEASE" >> "$VERSION_FILE"
|
||||
echo "CAS_VERSION=$CAS_VERSION" >> "$VERSION_FILE"
|
||||
echo "LAST_COMMIT_HASH=$LAST_COMMIT_HASH" >> "$VERSION_FILE"
|
||||
echo "LAST_COMMIT_HASH_ABBR=$LAST_COMMIT_HASH_ABBR" >> "$VERSION_FILE"
|
||||
echo "LAST_COMMIT_DATE=$LAST_COMMIT_DATE" >> "$VERSION_FILE"
|
||||
echo "LAST_COMMIT_TIMESTAMP=$LAST_COMMIT_TIMESTAMP" >> "$VERSION_FILE"
|
||||
echo "LAST_SUB_COMMIT_HASHES=(${LAST_SUB_COMMIT_HASHES[@]})" >> "$VERSION_FILE"
|
||||
echo "LAST_SUB_COMMIT_HASHES_ABBR=(${LAST_SUB_COMMIT_HASHES_ABBR[@]})" >> "$VERSION_FILE"
|
||||
FILE_CREATION_DATE=$(date --iso-8601=seconds)
|
||||
FILE_CREATION_TIMESTAMP=$(date +%s)
|
||||
echo "FILE_CREATION_DATE=$FILE_CREATION_DATE" >> "$VERSION_FILE"
|
||||
echo "FILE_CREATION_TIMESTAMP=$FILE_CREATION_TIMESTAMP" >> "$VERSION_FILE"
|
||||
elif [[ -r "$VERSION_FILE" ]]; then
|
||||
. "$VERSION_FILE" >/dev/null
|
||||
if [[ ! "$CAS_VERSION" ]]; then
|
||||
error "wrong version file format"
|
||||
fi
|
||||
else
|
||||
error "couldn't obtain CAS version - no git tree nor readable version file found"
|
||||
fi
|
||||
|
||||
# Check if this script was called during building of OpenCAS...
|
||||
if [[ "$1" == "build" ]]; then
|
||||
if ! touch "$VERSION_FILE"; then
|
||||
warning "couldn't edit version file"
|
||||
fi
|
||||
# ...and if so, add (or substitute if exist) a build time to version file
|
||||
CAS_BUILD_DATE=$(date --iso-8601=seconds)
|
||||
CAS_BUILD_TIMESTAMP=$(date +%s)
|
||||
if grep CAS_BUILD_DATE "$VERSION_FILE" &>/dev/null; then
|
||||
sed -i "s/CAS_BUILD_DATE=.*/CAS_BUILD_DATE=$CAS_BUILD_DATE/" "$VERSION_FILE"
|
||||
sed -i "s/CAS_BUILD_TIMESTAMP=.*/CAS_BUILD_TIMESTAMP=$CAS_BUILD_TIMESTAMP/" "$VERSION_FILE"
|
||||
else
|
||||
echo "CAS_BUILD_DATE=$CAS_BUILD_DATE" >> "$VERSION_FILE"
|
||||
echo "CAS_BUILD_TIMESTAMP=$CAS_BUILD_TIMESTAMP" >> "$VERSION_FILE"
|
||||
fi
|
||||
fi
|
Loading…
Reference in New Issue
Block a user