diff options
Diffstat (limited to 'debian/_buildscripts/local/build_module.sh')
-rwxr-xr-x | debian/_buildscripts/local/build_module.sh | 165 |
1 files changed, 91 insertions, 74 deletions
diff --git a/debian/_buildscripts/local/build_module.sh b/debian/_buildscripts/local/build_module.sh index 94fdab76a..515303ebe 100755 --- a/debian/_buildscripts/local/build_module.sh +++ b/debian/_buildscripts/local/build_module.sh @@ -69,54 +69,56 @@ function search_module() MODULE_FOUND="n" - # Search in GIT repository - LOC_MATCH=`sed -n "s|^\[submodule \"main/\([^\"]*\)\"\]$|\1|p" <"$REPO_TDE/.gitmodules" | grep "$LOC_MOD_NAME$"` - if [ "$LOC_MATCH" != "" -a "`echo $LOC_MATCH | wc -l`" = "1" ]; then - # Unique module - MODULE_FOUND="y" - MOD_NAME=$LOC_MATCH - if [ "${bool_BUILD_FROM_PATH}" = "y" ]; then - MOD_GIT_PATH="$MOD_PATH" + # Check if it is a metapackage + LOC_BASENAME=`echo "$LOC_MOD_NAME" | sed -r "s|^(metapackages/)?||"` + LOC_MATCH=`ls "$REPO_TDE_MAIN/metapackages" | grep "^$LOC_BASENAME\$"` + if [ "$LOC_MATCH" != "" -a "`echo $LOC_MATCH | wc -l`" = "1" ]; then + # Unique metapackage found + MODULE_FOUND="y" + bool_METAPACKAGE_MOD="y" + MOD_NAME="metapackages/$LOC_MATCH" + MOD_GIT_PATH="$REPO_TDE_MAIN/metapackages/$LOC_BASENAME" + MOD_GIT_PKGING_PATH="$REPO_TDE_PACKAGING/$MOD_NAME/debian" + MOD_BUILD_PATH="$TDE_BUILD_DIR/metapackages/$LOC_BASENAME" + else + # Search for unique GIT repository + LOC_MATCH=`sed -n "s|^\[submodule \"main/\([^\"]*\)\"\]$|\1|p" <"$REPO_TDE/.gitmodules" | grep "$LOC_MOD_NAME$"` + if [ "$LOC_MATCH" != "" -a "`echo $LOC_MATCH | wc -l`" = "1" ]; then + # Unique module + MODULE_FOUND="y" + MOD_NAME=$LOC_MATCH + 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 - MOD_GIT_PATH="$REPO_TDE_MAIN/$MOD_NAME" + # Search for a unique folder with the same name + if [ -d "${REPO_TDE_MAIN}/$LOC_MOD_NAME" ]; then + # Folder found + MODULE_FOUND="y" + MOD_NAME=$LOC_MOD_NAME + MOD_GIT_PATH="$REPO_TDE_MAIN/$MOD_NAME" + MOD_GIT_PKGING_PATH="$REPO_TDE_PACKAGING/$MOD_NAME/debian" + MOD_BUILD_PATH="$TDE_BUILD_DIR/$MOD_NAME" + else + # Search in extra dependency folder + LOC_BASENAME=`echo "$LOC_MOD_NAME" | sed -r "s|^${CFG_EXTRA_DEPS_DIR}/(debian/)?||"` + LOC_MATCH=`ls "$REPO_EXTRA_DEPENDENCIES/debian" | grep "^$LOC_BASENAME\$"` + if [ "$LOC_MATCH" != "" -a "`echo $LOC_MATCH | wc -l`" = "1" ]; then + # Unique module found + MODULE_FOUND="y" + bool_EXTRADEP_MOD="y" + MOD_NAME="$CFG_EXTRA_DEPS_DIR/$LOC_MATCH" + MOD_GIT_PATH="$REPO_EXTRA_DEPENDENCIES/debian/$LOC_BASENAME" + MOD_BUILD_PATH="$TDE_BUILD_DIR/$CFG_EXTRA_DEPS_DIR/$LOC_BASENAME" + fi + fi 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 - if [ -d "${REPO_TDE_MAIN}/$LOC_MOD_NAME" ]; then - # Folder found - MODULE_FOUND="y" - MOD_NAME=$LOC_MOD_NAME - MOD_GIT_PATH="$REPO_TDE_MAIN/$MOD_NAME" - MOD_GIT_PKGING_PATH="$REPO_TDE_PACKAGING/$MOD_NAME/debian" - MOD_BUILD_PATH="$TDE_BUILD_DIR/$MOD_NAME" - else - # Search in extra dependency folder - LOC_BASENAME=`echo "$LOC_MOD_NAME" | sed -r "s|^${CFG_EXTRA_DEPS_DIR}/(debian/)?||"` - LOC_MATCH=`ls "$REPO_EXTRA_DEPENDENCIES/debian" | grep "^$LOC_BASENAME\$"` - if [ "$LOC_MATCH" != "" -a "`echo $LOC_MATCH | wc -l`" = "1" ]; then - # Unique module found - MODULE_FOUND="y" - bool_EXTRADEP_MOD="y" - MOD_NAME="$CFG_EXTRA_DEPS_DIR/$LOC_MATCH" - MOD_GIT_PATH="$REPO_EXTRA_DEPENDENCIES/debian/$LOC_BASENAME" - MOD_BUILD_PATH="$TDE_BUILD_DIR/$CFG_EXTRA_DEPS_DIR/$LOC_BASENAME" - else - # Search in metapackages folder - LOC_BASENAME=`echo "$LOC_MOD_NAME" | sed -r "s|^(metapackages/)?||"` - LOC_MATCH=`ls "$REPO_TDE_MAIN/metapackages" | grep "^$LOC_BASENAME\$"` - if [ "$LOC_MATCH" != "" -a "`echo $LOC_MATCH | wc -l`" = "1" ]; then - # Unique module found - MODULE_FOUND="y" - MOD_NAME="metapackages/$LOC_MATCH" - MOD_GIT_PATH="$REPO_TDE_MAIN/metapackages/$LOC_BASENAME" - MOD_GIT_PKGING_PATH="$REPO_TDE_PACKAGING/$MOD_NAME/debian" - MOD_BUILD_PATH="$TDE_BUILD_DIR/metapackages/$LOC_BASENAME" - fi - fi - fi - fi + fi + export MOD_BUILD_PATH MOD_BUILD_PKGING_PATH="$MOD_BUILD_PATH/debian" IFS=$OLDIFS } @@ -130,6 +132,7 @@ bool_BUILD_FROM_GIT="n" bool_BUILD_FROM_PATH="n" bool_BUILD_LOCALLY="n" bool_EXTRADEP_MOD="n" +bool_METAPACKAGE_MOD="n" bool_SHOW_BUILD_LOGS="n" bool_LOG_RESULT="n" bool_SHELL_HOOK="n" @@ -309,6 +312,31 @@ 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" @@ -319,12 +347,7 @@ if [ "$bool_COPY_MOD_SRC" = "y" ]; then # 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 @@ -338,7 +361,7 @@ if [ "$bool_COPY_MOD_SRC" = "y" ]; then QUILT_PATCHES="debian/patches" quilt push -a >/dev/null # Make sure patches are not reapplied in future local builds. This could stop pdebuild from working. if [ -f "$MOD_BUILD_PATH/debian/patches/series" ]; then - cp /dev/null "$MOD_BUILD_PATH/debian/patches/series" + rm "$MOD_BUILD_PATH/debian/patches/series" fi else echo "There must be one and only one module folder in \"$MOD_GIT_PATH\"" @@ -352,31 +375,25 @@ if [ "$bool_EXTRADEP_MOD" != "y" -a "$bool_COPY_PKGING_FILES" = "y" ]; then if [ -d "$MOD_BUILD_PKGING_PATH" ]; then $SUDO_CMD rm -R $MOD_BUILD_PKGING_PATH fi - cp -R "$MOD_GIT_PKGING_PATH" "$MOD_BUILD_PKGING_PATH" + if [ "$bool_METAPACKAGE_MOD" = "y" ]; then + cp -R "$MOD_GIT_PKGING_PATH/.." "$MOD_BUILD_PATH" + else + cp -R "$MOD_GIT_PKGING_PATH" "$MOD_BUILD_PKGING_PATH" + fi + if [[ -s "$MOD_BUILD_PKGING_PATH/patches/series" ]]; then + cd "$MOD_BUILD_PATH" + quilt push -a + # Make sure patches are not reapplied in future local builds. This could stop pdebuild from working. + if [ -f "$MOD_BUILD_PKGING_PATH/patches/series" ]; then + rm "$MOD_BUILD_PKGING_PATH/patches/series" + fi + fi # 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%% *} @@ -488,7 +505,7 @@ if [ "$bool_BUILD_LOCALLY" = "y" ]; then fi 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" |