Merge pull request #435 from rafalste/update_versioning
Version unifying
This commit is contained in:
commit
b8cfee1883
@ -6,9 +6,10 @@
|
|||||||
PWD:=$(shell pwd)
|
PWD:=$(shell pwd)
|
||||||
MODULESDIR:=$(PWD)/../modules
|
MODULESDIR:=$(PWD)/../modules
|
||||||
UTILS_DIR:=$(PWD)/../utils
|
UTILS_DIR:=$(PWD)/../utils
|
||||||
|
METADATA_DIR:=$(PWD)/../.metadata
|
||||||
BINARY_PATH = /sbin
|
BINARY_PATH = /sbin
|
||||||
|
|
||||||
VERSION_FILE := $(MODULESDIR)/CAS_VERSION
|
VERSION_FILE := $(METADATA_DIR)/cas_version
|
||||||
|
|
||||||
#
|
#
|
||||||
# Section below enables creating build with experimental features
|
# Section below enables creating build with experimental features
|
||||||
@ -89,7 +90,7 @@ LDFLAGS = -z noexecstack -z relro -z now -pie -pthread
|
|||||||
all: sync
|
all: sync
|
||||||
$(MAKE) build
|
$(MAKE) build
|
||||||
|
|
||||||
build: $(VERSION_FILE) $(TARGETS)
|
build: $(TARGETS)
|
||||||
|
|
||||||
sync:
|
sync:
|
||||||
@cd $(MODULESDIR) && $(MAKE) sync
|
@cd $(MODULESDIR) && $(MAKE) sync
|
||||||
@ -119,17 +120,12 @@ ifeq ($(strip $(CAS_VERSION_MAIN)),)
|
|||||||
endif
|
endif
|
||||||
@$(CC) -c $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
@$(CC) -c $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
|
||||||
|
|
||||||
$(VERSION_FILE):
|
|
||||||
@echo " VERSION " $@
|
|
||||||
@cd $(MODULESDIR) && ./CAS_VERSION_GEN
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@echo " CLEAN "
|
@echo " CLEAN "
|
||||||
@rm -f *.a $(TARGETS)
|
@rm -f *.a $(TARGETS)
|
||||||
@rm -f $(shell find -name \*.d) $(shell find -name \*.o)
|
@rm -f $(shell find -name \*.d) $(shell find -name \*.o)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
@rm -f $(VERSION_FILE)
|
|
||||||
|
|
||||||
install: install_files
|
install: install_files
|
||||||
|
|
||||||
@ -143,6 +139,8 @@ install_files:
|
|||||||
@install -m 755 -d $(DESTDIR)/etc/opencas
|
@install -m 755 -d $(DESTDIR)/etc/opencas
|
||||||
@install -m 644 $(UTILS_DIR)/opencas.conf $(DESTDIR)/etc/opencas/opencas.conf
|
@install -m 644 $(UTILS_DIR)/opencas.conf $(DESTDIR)/etc/opencas/opencas.conf
|
||||||
@install -m 444 $(UTILS_DIR)/ioclass-config.csv $(DESTDIR)/etc/opencas/ioclass-config.csv
|
@install -m 444 $(UTILS_DIR)/ioclass-config.csv $(DESTDIR)/etc/opencas/ioclass-config.csv
|
||||||
|
@install -m 755 -d $(DESTDIR)/var/lib/opencas
|
||||||
|
@install -m 644 $(METADATA_DIR)/cas_version $(DESTDIR)/var/lib/opencas/cas_version
|
||||||
|
|
||||||
@mkdir -p $(DESTDIR)/usr/share/man/man5
|
@mkdir -p $(DESTDIR)/usr/share/man/man5
|
||||||
@install -m 644 $(UTILS_DIR)/opencas.conf.5 $(DESTDIR)/usr/share/man/man5/opencas.conf.5
|
@install -m 644 $(UTILS_DIR)/opencas.conf.5 $(DESTDIR)/usr/share/man/man5/opencas.conf.5
|
||||||
@ -155,6 +153,8 @@ uninstall:
|
|||||||
@rm $(DESTDIR)/etc/opencas/opencas.conf
|
@rm $(DESTDIR)/etc/opencas/opencas.conf
|
||||||
@rm $(DESTDIR)/etc/opencas/ioclass-config.csv
|
@rm $(DESTDIR)/etc/opencas/ioclass-config.csv
|
||||||
@rm -rf $(DESTDIR)/etc/opencas
|
@rm -rf $(DESTDIR)/etc/opencas
|
||||||
|
@rm $(DESTDIR)/var/lib/opencas/cas_version
|
||||||
|
@rm -rf $(DESTDIR)/var/lib/opencas
|
||||||
|
|
||||||
@rm $(DESTDIR)/usr/share/man/man5/opencas.conf.5
|
@rm $(DESTDIR)/usr/share/man/man5/opencas.conf.5
|
||||||
|
|
||||||
|
8
configure
vendored
8
configure
vendored
@ -77,6 +77,14 @@ then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
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`
|
CONFIG_FILES=`ls $SCRIPTPATH/configure.d/*.conf | sort`
|
||||||
FILES_COUNT=`echo $CONFIG_FILES | wc -w`
|
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.
|
# line; invoke the kernel build system.
|
||||||
else
|
else
|
||||||
|
|
||||||
VERSION_FILE=$(PWD)/CAS_VERSION
|
|
||||||
|
|
||||||
OCFDIR=$(PWD)/../ocf
|
OCFDIR=$(PWD)/../ocf
|
||||||
KERNEL_DIR ?= "/lib/modules/$(shell uname -r)/build"
|
KERNEL_DIR ?= "/lib/modules/$(shell uname -r)/build"
|
||||||
PWD=$(shell pwd)
|
PWD=$(shell pwd)
|
||||||
@ -31,9 +29,6 @@ MODPROBE:=$(shell which modprobe)
|
|||||||
|
|
||||||
all: default
|
all: default
|
||||||
|
|
||||||
$(VERSION_FILE):
|
|
||||||
./CAS_VERSION_GEN
|
|
||||||
|
|
||||||
# Extra targets and file configuration
|
# Extra targets and file configuration
|
||||||
ifneq ($(wildcard $(PWD)/extra.mk),)
|
ifneq ($(wildcard $(PWD)/extra.mk),)
|
||||||
include $(PWD)/extra.mk
|
include $(PWD)/extra.mk
|
||||||
@ -41,7 +36,7 @@ else
|
|||||||
sync distsync:
|
sync distsync:
|
||||||
endif
|
endif
|
||||||
|
|
||||||
default: $(VERSION_FILE) sync
|
default: sync
|
||||||
cd $(KERNEL_DIR) && $(MAKE) M=$(PWD) modules
|
cd $(KERNEL_DIR) && $(MAKE) M=$(PWD) modules
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
|
@ -3,10 +3,7 @@
|
|||||||
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION_FILE := $(M)/CAS_VERSION
|
VERSION_FILE := $(M)/../.metadata/cas_version
|
||||||
|
|
||||||
$(VERSION_FILE):
|
|
||||||
./CAS_VERSION_GEN
|
|
||||||
|
|
||||||
check_cflag=$(shell echo "" | \
|
check_cflag=$(shell echo "" | \
|
||||||
gcc -c -xc ${1} -o /dev/null - 2>/dev/null; \
|
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
|
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
Name: open-cas-linux
|
Name: open-cas-linux
|
||||||
Version: <CAS_VERSION>
|
Version: <CAS_VERSION>
|
||||||
Release: <RPM_RELEASE>
|
Release: 1%{?dist}
|
||||||
Summary: Open Cache Acceleration Software
|
Summary: Open Cache Acceleration Software
|
||||||
Group: System
|
Group: System
|
||||||
License: BSD-3-Clause
|
License: BSD-3-Clause
|
||||||
URL: https://open-cas.github.io/
|
URL: https://open-cas.github.io/
|
||||||
Source0: https://github.com/Open-CAS/open-cas-linux/releases/download/v%{version}/%{name}-v%{version}.tar.gz
|
Source0: https://github.com/Open-CAS/open-cas-linux/releases/download/v%{version}/%{name}-%{version}.tar.gz
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
BuildRequires: kernel-devel
|
BuildRequires: kernel-devel
|
||||||
BuildRequires: kernel-headers
|
BuildRequires: kernel-headers
|
||||||
@ -56,7 +56,7 @@ This package contains CAS kernel modules.
|
|||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-v%{version}
|
%setup -q
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -111,8 +111,10 @@ fi
|
|||||||
%doc README.md
|
%doc README.md
|
||||||
%dir /etc/opencas/
|
%dir /etc/opencas/
|
||||||
%dir /lib/opencas/
|
%dir /lib/opencas/
|
||||||
|
%dir /var/lib/opencas
|
||||||
%config /etc/opencas/opencas.conf
|
%config /etc/opencas/opencas.conf
|
||||||
/etc/opencas/ioclass-config.csv
|
/etc/opencas/ioclass-config.csv
|
||||||
|
/var/lib/opencas/cas_version
|
||||||
/lib/opencas/casctl
|
/lib/opencas/casctl
|
||||||
/lib/opencas/open-cas-loader
|
/lib/opencas/open-cas-loader
|
||||||
/lib/opencas/opencas.py
|
/lib/opencas/opencas.py
|
||||||
@ -137,6 +139,10 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jun 10 2020 Rafal Stefanowski <rafal.stefanowski@intel.com> - 20.06-1
|
||||||
|
- Add cas_version file
|
||||||
|
- Join Release into Version
|
||||||
|
- Simplify prep setup
|
||||||
* Tue Feb 25 2020 Rafal Stefanowski <rafal.stefanowski@intel.com> - 20.3-1
|
* Tue Feb 25 2020 Rafal Stefanowski <rafal.stefanowski@intel.com> - 20.3-1
|
||||||
- Minor improvements in SPEC file
|
- Minor improvements in SPEC file
|
||||||
- Update files list for releases > 20.1
|
- Update files list for releases > 20.1
|
||||||
|
137
utils/pckgen
137
utils/pckgen
@ -33,7 +33,7 @@ SUBMODULES=(
|
|||||||
|
|
||||||
# Unset all variables that may be checked for existence:
|
# Unset all variables that may be checked for existence:
|
||||||
unset ${!GENERATE_*} ARCHIVE_PREPARED DEBUG FAILED_DEPS OUTPUT_DIR RPM_BUILT\
|
unset ${!GENERATE_*} ARCHIVE_PREPARED DEBUG FAILED_DEPS OUTPUT_DIR RPM_BUILT\
|
||||||
SOURCES_DIR SUBMODULES_MISSING TAR_CREATED VERSION_ONLY
|
SOURCES_DIR SUBMODULES_MISSING TAR_CREATED
|
||||||
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
@ -47,8 +47,8 @@ print_help() {
|
|||||||
echo "Generate OpenCAS packages."
|
echo "Generate OpenCAS packages."
|
||||||
echo "$(usage)"
|
echo "$(usage)"
|
||||||
echo
|
echo
|
||||||
echo "This script generates various OpenCAS packages like release archives (tar, zip),"
|
echo "This script generates various OpenCAS packages like"
|
||||||
echo "RPMs (source and binary) as well as creates version file with metadata."
|
echo "release archives (tar, zip) and RPMs (source and binary)."
|
||||||
echo
|
echo
|
||||||
echo "Mandatory arguments to long options are mandatory for short options too."
|
echo "Mandatory arguments to long options are mandatory for short options too."
|
||||||
echo
|
echo
|
||||||
@ -57,12 +57,10 @@ print_help() {
|
|||||||
echo " zip generate zip archive"
|
echo " zip generate zip archive"
|
||||||
echo " rpm generate RPM packages"
|
echo " rpm generate RPM packages"
|
||||||
echo " srpm generate SRPM package"
|
echo " srpm generate SRPM package"
|
||||||
echo " version-only create only version file and exit;"
|
|
||||||
echo
|
echo
|
||||||
echo "Options:"
|
echo "Options:"
|
||||||
echo " -o, --output-dir <DIR> put all created files in the given directory;"
|
echo " -o, --output-dir <DIR> put all created files in the given directory;"
|
||||||
echo " by default all files (except version file)"
|
echo " default: 'SOURCES_PATH/packages/'"
|
||||||
echo " will be put in 'SOURCES_PATH/packages/'"
|
|
||||||
echo " -d, --debug create all debug files and packages as well"
|
echo " -d, --debug create all debug files and packages as well"
|
||||||
echo " -c, --clean clean all temporary files and folders that"
|
echo " -c, --clean clean all temporary files and folders that"
|
||||||
echo " may have been left around if $THIS ended"
|
echo " may have been left around if $THIS ended"
|
||||||
@ -80,10 +78,6 @@ info() {
|
|||||||
echo -e "\e[33m$*\e[0m"
|
echo -e "\e[33m$*\e[0m"
|
||||||
}
|
}
|
||||||
|
|
||||||
success() {
|
|
||||||
echo -e "\n\e[32m=== ALL DONE ===\e[0m\n\nYou can find your fresh packages in '$OUTPUT_DIR'\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
error() {
|
error() {
|
||||||
echo -e "\e[31mERROR\e[0m: $THIS: $*" >&2
|
echo -e "\e[31mERROR\e[0m: $THIS: $*" >&2
|
||||||
exit 1
|
exit 1
|
||||||
@ -105,34 +99,27 @@ clean_all() {
|
|||||||
if ls "/tmp/${TEMP_TEMPLATE}."* &>/dev/null; then
|
if ls "/tmp/${TEMP_TEMPLATE}."* &>/dev/null; then
|
||||||
# This function on the other hand is called only by a '-c' option
|
# This function on the other hand is called only by a '-c' option
|
||||||
# so we may throw an error here and exit.
|
# so we may throw an error here and exit.
|
||||||
error "Cleanup failed"
|
error "cleanup failed"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_options() {
|
check_options() {
|
||||||
if [ ! "$SOURCES_DIR" ]; then
|
if [ ! "$SOURCES_DIR" ]; then
|
||||||
invalid_usage "No mandatory SOURCES_PATH provided"
|
invalid_usage "no mandatory SOURCES_PATH provided"
|
||||||
elif [[ $(head -n 1 "$SOURCES_DIR/README.md" 2>/dev/null) != *Open*CAS*Linux* ]]; then
|
elif [[ $(head -n 1 "$SOURCES_DIR/README.md" 2>/dev/null) != *Open*CAS*Linux* ]]; then
|
||||||
invalid_usage "'$SOURCES_DIR' does not point to the root directory of CAS sources"
|
invalid_usage "'$SOURCES_DIR' does not point to the root directory of CAS sources"
|
||||||
elif [ ! "${!GENERATE_*}" ] && [ ! "$VERSION_ONLY" ]; then
|
elif [ ! "${!GENERATE_*}" ]; then
|
||||||
invalid_usage "Nothing to do - no command provided"
|
invalid_usage "nothing to do - no command provided"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_version() {
|
check_version() {
|
||||||
(cd "$TEMP_DIR" && sh "$CAS_VERSION_GEN" >/dev/null)
|
if ! (cd $(dirname "$CAS_VERSION_GEN") && ./$(basename "$CAS_VERSION_GEN")); then
|
||||||
if [ ! -f "$TEMP_DIR/$CAS_VERSION_GEN_FILE" ]; then
|
error "failed to obtain CAS version"
|
||||||
error "Couldn't create CAS_VERSION file"
|
|
||||||
fi
|
fi
|
||||||
while IFS= read -r line; do
|
. "$VERSION_FILE"
|
||||||
case "$line" in
|
|
||||||
CAS_VERSION_MAIN*) CAS_VERSION_MAIN="${line##*=}";;
|
|
||||||
CAS_VERSION_MAJOR*) CAS_VERSION_MAJOR="$(printf %02d ${line##*=})";;
|
|
||||||
CAS_VERSION_MINOR*) CAS_VERSION_MINOR="${line##*=}";;
|
|
||||||
esac
|
|
||||||
done < "$TEMP_DIR/$CAS_VERSION_GEN_FILE"
|
|
||||||
|
|
||||||
VERSION_SHORT="${CAS_VERSION_MAIN}.${CAS_VERSION_MAJOR}"
|
VERSION_SHORT="${CAS_VERSION_MAIN}.$(printf %02d ${CAS_VERSION_MAJOR})"
|
||||||
if [ $CAS_VERSION_MINOR -ne 0 ]; then
|
if [ $CAS_VERSION_MINOR -ne 0 ]; then
|
||||||
VERSION_SHORT+=".${CAS_VERSION_MINOR}"
|
VERSION_SHORT+=".${CAS_VERSION_MINOR}"
|
||||||
fi
|
fi
|
||||||
@ -150,34 +137,6 @@ check_version() {
|
|||||||
if [ "$SUBMODULES_MISSING" ]; then
|
if [ "$SUBMODULES_MISSING" ]; then
|
||||||
error "There are missing submodules:\n${SUBMODULES_MISSING}\nUpdate submodules and try again!"
|
error "There are missing submodules:\n${SUBMODULES_MISSING}\nUpdate submodules and try again!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "$SOURCES_DIR/.git" ]; then
|
|
||||||
CAS_VERSION_BUILD=$(printf %04d $(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_RELEASE="release"
|
|
||||||
elif [ $(cd "$SOURCES_DIR" && git log -1 --pretty=format:%H)\
|
|
||||||
== $(cd "$SOURCES_DIR" && git log -1 --merges --pretty=format:%H) ]; then
|
|
||||||
CAS_RELEASE="master"
|
|
||||||
else
|
|
||||||
CAS_RELEASE="devel.${LAST_COMMIT_TIMESTAMP}"
|
|
||||||
fi
|
|
||||||
elif [ -f "$VERSION_FILE" ]; then
|
|
||||||
source "$VERSION_FILE" &>/dev/null
|
|
||||||
else
|
|
||||||
error "Couldn't obtain CAS version - no git tree nor version file within given sources"
|
|
||||||
fi
|
|
||||||
|
|
||||||
VERSION="${CAS_VERSION_MAIN}.${CAS_VERSION_MAJOR}.${CAS_VERSION_MINOR}.${CAS_VERSION_BUILD}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
check_dependencies() {
|
check_dependencies() {
|
||||||
@ -200,41 +159,17 @@ check_dependencies() {
|
|||||||
create_dir() {
|
create_dir() {
|
||||||
mkdir -p "$*"
|
mkdir -p "$*"
|
||||||
if [ ! -d "$*" ] || [ ! -w "$*" ]; then
|
if [ ! -d "$*" ] || [ ! -w "$*" ]; then
|
||||||
error "No access to '$*'"
|
error "no access to '$*'"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
create_temp() {
|
create_temp() {
|
||||||
TEMP_DIR=$(mktemp -d -t ${TEMP_TEMPLATE}.XXXXXXXXXX)
|
TEMP_DIR=$(mktemp -d -t ${TEMP_TEMPLATE}.XXXXXXXXXX)
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
error "Couldn't create temporary directory"
|
error "couldn't create temporary directory"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
create_version_file() {
|
|
||||||
echo "--- Creating version file"
|
|
||||||
mkdir -p $(dirname "$VERSION_FILE")
|
|
||||||
if ! touch "$VERSION_FILE"; then
|
|
||||||
error "Couldn't create version file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
CREATION_DATE=$(date --iso-8601=seconds)
|
|
||||||
CREATION_TIMESTAMP=$(date +%s)
|
|
||||||
echo "CREATION_DATE=$CREATION_DATE" > "$VERSION_FILE"
|
|
||||||
echo "CREATION_TIMESTAMP=$CREATION_TIMESTAMP" >> "$VERSION_FILE"
|
|
||||||
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_RELEASE=$CAS_RELEASE" >> "$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"
|
|
||||||
}
|
|
||||||
|
|
||||||
archive_prepare() {
|
archive_prepare() {
|
||||||
if [ "$ARCHIVE_PREPARED" ]; then
|
if [ "$ARCHIVE_PREPARED" ]; then
|
||||||
return 0
|
return 0
|
||||||
@ -256,7 +191,7 @@ generate_tar() {
|
|||||||
tar -C "$TEMP_DIR" -zcf "$TEMP_DIR/$SOURCES_TAR_NAME" "$CAS_FILENAME"
|
tar -C "$TEMP_DIR" -zcf "$TEMP_DIR/$SOURCES_TAR_NAME" "$CAS_FILENAME"
|
||||||
if [ $? -ne 0 ] || [ ! -f "$TEMP_DIR/$SOURCES_TAR_NAME" ]; then
|
if [ $? -ne 0 ] || [ ! -f "$TEMP_DIR/$SOURCES_TAR_NAME" ]; then
|
||||||
rm -rf "$TEMP_DIR/$SOURCES_TAR_NAME"
|
rm -rf "$TEMP_DIR/$SOURCES_TAR_NAME"
|
||||||
error "Couldn't create tar archive"
|
error "couldn't create tar archive"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TAR_CREATED="tar_created"
|
TAR_CREATED="tar_created"
|
||||||
@ -273,7 +208,7 @@ generate_zip() {
|
|||||||
(cd "$TEMP_DIR" && zip -qr - "$CAS_FILENAME") > "$OUTPUT_DIR/$SOURCES_ZIP_NAME"
|
(cd "$TEMP_DIR" && zip -qr - "$CAS_FILENAME") > "$OUTPUT_DIR/$SOURCES_ZIP_NAME"
|
||||||
if [ $? -ne 0 ] || [ ! -f "$OUTPUT_DIR/$SOURCES_ZIP_NAME" ]; then
|
if [ $? -ne 0 ] || [ ! -f "$OUTPUT_DIR/$SOURCES_ZIP_NAME" ]; then
|
||||||
rm -rf "$OUTPUT_DIR/$SOURCES_ZIP_NAME"
|
rm -rf "$OUTPUT_DIR/$SOURCES_ZIP_NAME"
|
||||||
error "Couldn't create zip archive"
|
error "couldn't create zip archive"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,7 +216,7 @@ rpm_create_tree() {
|
|||||||
echo "--- Creating directory tree for building RPMs"
|
echo "--- Creating directory tree for building RPMs"
|
||||||
mkdir -p "$RPM_BUILD_DIR/"{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
mkdir -p "$RPM_BUILD_DIR/"{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||||
if [ $? -ne 0 ] || [ ! -w "$RPM_BUILD_DIR" ]; then
|
if [ $? -ne 0 ] || [ ! -w "$RPM_BUILD_DIR" ]; then
|
||||||
error "Couldn't create directory tree for building RPMs"
|
error "couldn't create directory tree for building RPMs"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +226,7 @@ rpm_obtain_sources() {
|
|||||||
cp -v "$TEMP_DIR/$SOURCES_TAR_NAME" "$RPM_SOURCES_DIR"
|
cp -v "$TEMP_DIR/$SOURCES_TAR_NAME" "$RPM_SOURCES_DIR"
|
||||||
|
|
||||||
if [ ! -f "$RPM_SOURCES_DIR/$SOURCES_TAR_NAME" ]; then
|
if [ ! -f "$RPM_SOURCES_DIR/$SOURCES_TAR_NAME" ]; then
|
||||||
error "Couldn't obtain $SOURCES_TAR_NAME sources tarball!"
|
error "couldn't obtain $SOURCES_TAR_NAME sources tarball!"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,15 +237,14 @@ rpm_spec_prepare() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
cp -v "$BASE_SPEC" "$RPM_SPECS_DIR/$NAME.spec"
|
cp -v "$BASE_SPEC" "$RPM_SPECS_DIR/$NAME.spec"
|
||||||
sed -i "s/<CAS_VERSION>/$VERSION/g" "$RPM_SPECS_DIR/$NAME.spec"
|
sed -i "s/<CAS_VERSION>/$CAS_VERSION/g" "$RPM_SPECS_DIR/$NAME.spec"
|
||||||
sed -i "s/<RPM_RELEASE>/$CAS_RELEASE/g" "$RPM_SPECS_DIR/$NAME.spec"
|
|
||||||
if [ "$DEBUG" ]; then
|
if [ "$DEBUG" ]; then
|
||||||
echo "--- Debug RPMs will be built as well"
|
echo "--- Debug RPMs will be built as well"
|
||||||
sed -i "s/%define debug_package %{nil}//g" "$RPM_SPECS_DIR/$NAME.spec"
|
sed -i "s/%define debug_package %{nil}//g" "$RPM_SPECS_DIR/$NAME.spec"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$RPM_SPECS_DIR/$NAME.spec" ]; then
|
if [ ! -f "$RPM_SPECS_DIR/$NAME.spec" ]; then
|
||||||
error "Couldn't create a SPEC file"
|
error "couldn't create a SPEC file"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -327,7 +261,7 @@ generate_rpm() {
|
|||||||
echo "--- Building binary RPM packages"
|
echo "--- Building binary RPM packages"
|
||||||
(HOME="$TEMP_DIR"; rpmbuild -bb "$RPM_SPECS_DIR/$NAME.spec")
|
(HOME="$TEMP_DIR"; rpmbuild -bb "$RPM_SPECS_DIR/$NAME.spec")
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
error "Couldn't create RPM packages"
|
error "couldn't create RPM packages"
|
||||||
fi
|
fi
|
||||||
mv -t "$OUTPUT_DIR" "$RPM_RPMS_DIR/$ARCH"/*
|
mv -t "$OUTPUT_DIR" "$RPM_RPMS_DIR/$ARCH"/*
|
||||||
fi
|
fi
|
||||||
@ -335,7 +269,7 @@ generate_rpm() {
|
|||||||
echo "--- Building source SRPM package"
|
echo "--- Building source SRPM package"
|
||||||
(HOME="$TEMP_DIR"; rpmbuild -bs "$RPM_SPECS_DIR/$NAME.spec")
|
(HOME="$TEMP_DIR"; rpmbuild -bs "$RPM_SPECS_DIR/$NAME.spec")
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
error "Couldn't create SRPM package"
|
error "couldn't create SRPM package"
|
||||||
fi
|
fi
|
||||||
mv -t "$OUTPUT_DIR" "$RPM_SRPMS_DIR"/*
|
mv -t "$OUTPUT_DIR" "$RPM_SRPMS_DIR"/*
|
||||||
fi
|
fi
|
||||||
@ -343,7 +277,7 @@ generate_rpm() {
|
|||||||
echo "--- Building source and binary RPM packages"
|
echo "--- Building source and binary RPM packages"
|
||||||
(HOME="$TEMP_DIR"; rpmbuild -ba "$RPM_SPECS_DIR/$NAME.spec")
|
(HOME="$TEMP_DIR"; rpmbuild -ba "$RPM_SPECS_DIR/$NAME.spec")
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
error "Couldn't create RPM packages"
|
error "couldn't create RPM packages"
|
||||||
fi
|
fi
|
||||||
mv -t "$OUTPUT_DIR" "$RPM_SRPMS_DIR"/*
|
mv -t "$OUTPUT_DIR" "$RPM_SRPMS_DIR"/*
|
||||||
mv -t "$OUTPUT_DIR" "$RPM_RPMS_DIR/$ARCH"/*
|
mv -t "$OUTPUT_DIR" "$RPM_RPMS_DIR/$ARCH"/*
|
||||||
@ -375,9 +309,6 @@ while (( $# )); do
|
|||||||
srpm)
|
srpm)
|
||||||
GENERATE_SRPM="generate_srpm"
|
GENERATE_SRPM="generate_srpm"
|
||||||
;;
|
;;
|
||||||
version-only)
|
|
||||||
VERSION_ONLY="version_only"
|
|
||||||
;;
|
|
||||||
--output-dir|-o)
|
--output-dir|-o)
|
||||||
OUTPUT_DIR="$2"
|
OUTPUT_DIR="$2"
|
||||||
if ! dirname $OUTPUT_DIR &>/dev/null; then
|
if ! dirname $OUTPUT_DIR &>/dev/null; then
|
||||||
@ -417,22 +348,21 @@ create_temp
|
|||||||
|
|
||||||
# By default all created packages will be put in:
|
# By default all created packages will be put in:
|
||||||
: ${OUTPUT_DIR:="$SOURCES_DIR/packages"}
|
: ${OUTPUT_DIR:="$SOURCES_DIR/packages"}
|
||||||
# Version file location:
|
|
||||||
VERSION_FILE="$SOURCES_DIR/.metadata/cas_version"
|
|
||||||
# RPM building directories:
|
# RPM building directories:
|
||||||
RPM_BUILD_DIR="$TEMP_DIR/rpmbuild"
|
RPM_BUILD_DIR="$TEMP_DIR/rpmbuild"
|
||||||
RPM_SOURCES_DIR="$RPM_BUILD_DIR/SOURCES"
|
RPM_SOURCES_DIR="$RPM_BUILD_DIR/SOURCES"
|
||||||
RPM_SPECS_DIR="$RPM_BUILD_DIR/SPECS"
|
RPM_SPECS_DIR="$RPM_BUILD_DIR/SPECS"
|
||||||
RPM_RPMS_DIR="$RPM_BUILD_DIR/RPMS"
|
RPM_RPMS_DIR="$RPM_BUILD_DIR/RPMS"
|
||||||
RPM_SRPMS_DIR="$RPM_BUILD_DIR/SRPMS"
|
RPM_SRPMS_DIR="$RPM_BUILD_DIR/SRPMS"
|
||||||
# CAS version generator location and output file name:
|
# Version file location:
|
||||||
CAS_VERSION_GEN="$SOURCES_DIR/modules/CAS_VERSION_GEN"
|
VERSION_FILE="$SOURCES_DIR/.metadata/cas_version"
|
||||||
CAS_VERSION_GEN_FILE="CAS_VERSION"
|
# CAS version generator location:
|
||||||
|
CAS_VERSION_GEN="$SOURCES_DIR/utils/cas_version_gen"
|
||||||
|
|
||||||
check_version
|
check_version
|
||||||
|
|
||||||
# CAS naming convention:
|
# CAS naming convention:
|
||||||
CAS_FILENAME="$NAME-v$VERSION"
|
CAS_FILENAME="$NAME-$CAS_VERSION"
|
||||||
# CAS sources archives filenames:
|
# CAS sources archives filenames:
|
||||||
SOURCES_TAR_NAME="$CAS_FILENAME.tar.gz"
|
SOURCES_TAR_NAME="$CAS_FILENAME.tar.gz"
|
||||||
SOURCES_ZIP_NAME="$CAS_FILENAME.zip"
|
SOURCES_ZIP_NAME="$CAS_FILENAME.zip"
|
||||||
@ -443,12 +373,7 @@ SOURCES_ZIP_NAME="$CAS_FILENAME.zip"
|
|||||||
# Run the package generator script
|
# Run the package generator script
|
||||||
#
|
#
|
||||||
|
|
||||||
info "\n=== Running OpenCAS '$VERSION-$CAS_RELEASE' package generator ===\n"
|
info "\n=== Running OpenCAS '$CAS_VERSION' package generator ===\n"
|
||||||
|
|
||||||
if [ "$VERSION_ONLY" ]; then
|
|
||||||
create_version_file
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "Packages that will be built: "
|
echo -n "Packages that will be built: "
|
||||||
for package in ${!GENERATE_*}; do
|
for package in ${!GENERATE_*}; do
|
||||||
@ -457,9 +382,9 @@ done
|
|||||||
echo -e "\n"
|
echo -e "\n"
|
||||||
|
|
||||||
check_dependencies
|
check_dependencies
|
||||||
create_version_file
|
|
||||||
create_dir "$OUTPUT_DIR"
|
create_dir "$OUTPUT_DIR"
|
||||||
for package in ${!GENERATE_*}; do
|
for package in ${!GENERATE_*}; do
|
||||||
${package,,}
|
${package,,}
|
||||||
done
|
done
|
||||||
success
|
|
||||||
|
echo -e "\n\e[32m=== ALL DONE ===\e[0m\n\nYou can find your fresh packages in '$OUTPUT_DIR'\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user