diff options
Diffstat (limited to 'debian/_buildscripts/local/build_module.sh')
-rwxr-xr-x | debian/_buildscripts/local/build_module.sh | 141 |
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" |