summaryrefslogtreecommitdiffstats
path: root/debian/_buildscripts/local/build_module.sh
diff options
context:
space:
mode:
Diffstat (limited to 'debian/_buildscripts/local/build_module.sh')
-rwxr-xr-xdebian/_buildscripts/local/build_module.sh141
1 files changed, 90 insertions, 51 deletions
diff --git a/debian/_buildscripts/local/build_module.sh b/debian/_buildscripts/local/build_module.sh
index c7c6cec0f..e8ccec472 100755
--- a/debian/_buildscripts/local/build_module.sh
+++ b/debian/_buildscripts/local/build_module.sh
@@ -4,7 +4,8 @@
#
# Load common code and initialization
-. ./internals/_build_common.sh
+export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
+. ${SCRIPT_DIR}/internals/_build_common.sh
init_common
@@ -74,8 +75,12 @@ function search_module()
# Unique module
MODULE_FOUND="y"
MOD_NAME=$LOC_MATCH
- MOD_GIT_PATH="$REPO_TDE_MAIN/$MOD_NAME"
- MOD_GIT_PKGING_PATH="$REPO_TDE_PACKAGING/$MOD_NAME/debian"
+ if [ "${bool_BUILD_FROM_PATH}" = "y" ]; then
+ MOD_GIT_PATH="$MOD_PATH"
+ else
+ MOD_GIT_PATH="$REPO_TDE_MAIN/$MOD_NAME"
+ fi
+ MOD_GIT_PKGING_PATH="$REPO_TDE_PACKAGING/$MOD_NAME/debian"
MOD_BUILD_PATH="$TDE_BUILD_DIR/$MOD_NAME"
else
# Search for a unique folder with the same name
@@ -112,6 +117,7 @@ function search_module()
fi
fi
fi
+ export MOD_BUILD_PATH
MOD_BUILD_PKGING_PATH="$MOD_BUILD_PATH/debian"
IFS=$OLDIFS
}
@@ -122,9 +128,10 @@ function search_module()
#----------------------------
MOD_NAME="" # the name of the specified module
bool_BUILD_FROM_GIT="n"
+bool_BUILD_FROM_PATH="n"
+bool_BUILD_LOCALLY="n"
bool_EXTRADEP_MOD="n"
bool_SHOW_BUILD_LOGS="n"
-bool_BUILD_LOCALLY="n"
bool_LOG_RESULT="n"
bool_SHELL_HOOK="n"
bool_PREPARE_ONLY="n"
@@ -144,6 +151,15 @@ while [ $# -gt 0 ]; do
-lr) # Log build Result to file
bool_LOG_RESULT="y"
;;
+ -p) # build from specific Path
+ if [ -z "$MOD_NAME" ]; then
+ shift
+ MOD_NAME="$1"
+ bool_BUILD_FROM_PATH="y"
+ else
+ bool_INVALID_PARAMETERS="y"
+ fi
+ ;;
-po) # Prepare build folder Only but do not build
bool_PREPARE_ONLY="y"
;;
@@ -163,12 +179,42 @@ while [ $# -gt 0 ]; do
shift
done
+if [ "${bool_BUILD_FROM_GIT}" = "y" -a "${bool_BUILD_FROM_PATH}" = "y" ]; then
+ bool_INVALID_PARAMETERS="y"
+fi
if [ "$bool_INVALID_PARAMETERS" != "n" ]; then
echo "Invalid arguments."
MOD_NAME="N/A"
do_exit 1
fi
+# If building from a given path, look up the module name
+if [ "${bool_BUILD_FROM_PATH}" = "y" ]; then
+ if [ -d "${MOD_NAME}" ]; then
+ cd "${MOD_NAME}"
+ MOD_PATH=`pwd`
+ if [ "${USE_GIT_WORKTREES}" = "y" ]; then
+ MOD_NAME=`git rev-parse --git-dir 2>/dev/null | sed "s|.*/\([^\/]\+\)\.git.*|\1|"`
+ else
+ MOD_NAME=`basename "${MOD_PATH}"`
+ fi
+ if [ "${MOD_NAME}" != "" -a "${MOD_NAME}" != "tde" -a "${MOD_NAME}" != ".git" ]; then
+ # Valid git module
+ if [[ "${MOD_PATH}" =~ ${TDE_BUILD_DIR} ]]; then
+ # Module from build folder
+ bool_BUILD_FROM_GIT="n"
+ else
+ # Module from git repo
+ bool_BUILD_FROM_GIT="y"
+ fi
+ else
+ MOD_NAME=""
+ fi
+ else
+ MOD_NAME=""
+ fi
+fi
+
echo -e "${CLightCyan}#### Processing module \"$MOD_NAME\" ####${CNone}"
if [ "$MOD_NAME" = "" ]; then
@@ -176,7 +222,7 @@ if [ "$MOD_NAME" = "" ]; then
do_exit 3
fi
-# Shell hook is only valid if not building locally
+# Shell hooks are only valid if not building locally
if [ "bool_BUILD_LOCALLY" = "y" ]; then
bool_SHELL_HOOK="n"
fi
@@ -222,45 +268,36 @@ done
#----------------------------
# Check if module is an extra dependency
if [[ $MOD_NAME =~ ^$CFG_EXTRA_DEPS_DIR/ ]]; then
- bool_EXTRADEP_MOD="y"
+ bool_EXTRADEP_MOD="y"
fi
# Make sure the module exists
search_module $MOD_NAME
if [ "$MODULE_FOUND" != "y" ]; then
- echo "Module \"$MOD_NAME\" not found in GIT"
- do_exit 5
+ echo "Module \"$MOD_NAME\" not found"
+ do_exit 5
fi
if [ "$bool_BUILD_FROM_GIT" = "y" ]; then
echo -e "${CYellow}> Building from GIT repo${CNone}"
- # source files
+
bool_COPY_MOD_SRC="y"
+ bool_COPY_PKGING_FILES="y"
# packaging scripts
if [ "$bool_EXTRADEP_MOD" != "y" -a ! -d "$MOD_GIT_PKGING_PATH" ]; then
echo "Packaging for \"$MOD_NAME\" not found in GIT"
do_exit 6
fi
- bool_COPY_PKGING_FILES="y"
- #
else
echo -e "${CYellow}> Building from BUILD folder${CNone}"
- # source files
- bool_COPY_MOD_SRC="n"
+
if [ ! -d "$MOD_BUILD_PATH" ]; then
- bool_COPY_MOD_SRC="y"
+ echo "Build folder for \"$MOD_NAME\" not found"
+ do_exit 7
fi
-
- # packaging scripts
+ bool_COPY_MOD_SRC="n"
bool_COPY_PKGING_FILES="n"
- if [ "$bool_EXTRADEP_MOD" != "y" -a ! -d "$MOD_BUILD_PKGING_PATH" ]; then
- if [ ! -d "$MOD_GIT_PKGING_PATH" ]; then
- echo "Packaging for \"$MOD_NAME\" not found neither in BUILD nor in GIT"
- do_exit 8
- fi
- bool_COPY_PKGING_FILES="y"
- fi
fi
@@ -273,22 +310,42 @@ if [ -d "$MOD_BUILD_PATH" ]; then
$SUDO_CMD rm *.deb *.dsc *.changes *.tar.bz2 *.tar.gz *.tar.xz *.log *.buildinfo &>/dev/null
fi
+# calculate package version, if needed
+if [ "$bool_EXTRADEP_MOD" != "y" ]; then
+ cd $MOD_GIT_PATH
+ branch=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
+ if [[ -z "$branch" ]]; then
+ branch=`git branch --contains HEAD | egrep -v "no branch|detached" | head -n1 | cut -c 3-`
+ fi
+ target_tag=`git tag | grep -F "$TDE_RELEASE" | head -n1`
+ tag=`git tag | \
+ sed "s|^\([^0-9]\)|\1.|" | sort -t. -k 1,1nr -k 2,2nr -k 3,3nr -k 4,4nr -k 5,5nr | sed "s|^\([^0-9]\)\.|\1|" | \
+ while read t; do \
+ git branch --contains $t | cut -c 3- | grep -x "$branch" >/dev/null && \
+ echo "$t..HEAD" && break; done`
+ count=`git log $tag --pretty=oneline | wc -l`
+ pkgver=$TDE_RELEASE
+ if [[ "$count" -gt 0 ]] || [[ -z "$target_tag" ]]; then
+ pkgver=$pkgver~pre$count+$(git rev-parse HEAD | cut -c 1-8)
+ fi
+ MOD_BRANCH=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
+ if [[ -z "$MOD_BRANCH" ]]; then
+ MOD_BRANCH=`git branch --contains HEAD | egrep -v "no branch|detached" | head -n1 | cut -c 3-`
+ fi
+ COMMIT_HASH=`git rev-parse HEAD`
+fi
+
# copy main repo source files, if needed
if [ "$bool_COPY_MOD_SRC" = "y" ]; then
bool_COPY_PKGING_FILES="y"
recreate_folder "$MOD_BUILD_PATH"
if [ "$bool_EXTRADEP_MOD" != "y" ]; then
# Normal module
- cp -R "$MOD_GIT_PATH" "$MOD_BUILD_PATH/.."
+ cp -R "$MOD_GIT_PATH/." "$MOD_BUILD_PATH"
# Add GIT information
echo "# TDE SCM module information" > "$MOD_BUILD_PATH/.tdescminfo"
echo "Name: $MOD_NAME" >> "$MOD_BUILD_PATH/.tdescminfo"
- cd "$MOD_GIT_PATH"
- MOD_BRANCH=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
- if [[ -z "$MOD_BRANCH" ]]; then
- MOD_BRANCH=`git branch --contains HEAD | egrep -v "no branch|detached" | head -n1 | cut -c 3-`
- fi
- COMMIT_HASH=`git rev-parse HEAD`
+ echo "Version: R$pkgver" >> "$MOD_BUILD_PATH/.tdescminfo"
echo "Revision: $MOD_BRANCH-$COMMIT_HASH" >> "$MOD_BUILD_PATH/.tdescminfo"
git log -1 --pretty=format:"DateTime: %cd%n" --date=format:"%m/%d/%Y %H:%M" >> "$MOD_BUILD_PATH/.tdescminfo"
else
@@ -319,28 +376,10 @@ if [ "$bool_EXTRADEP_MOD" != "y" -a "$bool_COPY_PKGING_FILES" = "y" ]; then
cp -R "$MOD_GIT_PKGING_PATH" "$MOD_BUILD_PKGING_PATH"
# Default package name
- # Calculate package version
- cd $MOD_GIT_PATH
- branch=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
- if [[ -z "$branch" ]]; then
- branch=`git branch --contains HEAD | egrep -v "no branch|detached" | head -n1 | cut -c 3-`
- fi
- target_tag=`git tag | grep -F "$TDE_RELEASE" | head -n1`
- tag=`git tag | \
- sed "s|^\([^0-9]\)|\1.|" | sort -t. -k 1,1nr -k 2,2nr -k 3,3nr -k 4,4nr -k 5,5nr | sed "s|^\([^0-9]\)\.|\1|" | \
- while read t; do \
- git branch --contains $t | cut -c 3- | grep -x "$branch" >/dev/null && \
- echo "$t..HEAD" && break; done`
- count=`git log $tag --pretty=oneline | wc -l`
- package=$(basename $PWD)-trinity-$TDE_RELEASE
- if [[ "$count" -gt 0 ]] || [[ -z "$target_tag" ]]; then
- package=$package~pre$count+$(git rev-parse HEAD | cut -c 1-8)
- fi
+ package=$(basename $PWD)-trinity-$pkgver
REL=4:$TDE_RELEASE${package#*$TDE_RELEASE}
REL=${REL%+*}
REL=${REL/4:14.0.0/4:14.0.0-s}
- REL=${REL/4:14.0.0-s~pre/4:14.0.0-s~}
- REL=${REL/.0~pre/.0~s}
# Get package name and packaging release
PKG_NAME=$(head -n1 $MOD_BUILD_PKGING_PATH/changelog)
PKG_NAME=${PKG_NAME%% *}
@@ -448,11 +487,11 @@ if [ "$bool_BUILD_LOCALLY" = "y" ]; then
build_retval=$?
if [ $build_retval -eq 0 ]; then
eval dpkg-buildpackage -b $OPT_SIGN_PKG_LOCAL $OPT_SHOW_LOGS\"$BUILDING_LOG_FILE\"
+ build_retval=$?
fi
- build_retval=$?
else
## Build module in a clean chroot environment using pbuilder
- $SUDO_CMD . "$SCRIPT_DIR/internals/_pbuilder.sh"
+ $SUDO_CMD "$SCRIPT_DIR/internals/_pbuilder.sh"
build_retval=$?
if [ "`whoami`" != "root" ]; then
cd "$MOD_DEB_PATH"