diff options
Diffstat (limited to 'debian/_buildscripts/local/build_module.sh')
| -rwxr-xr-x | debian/_buildscripts/local/build_module.sh | 206 |
1 files changed, 111 insertions, 95 deletions
diff --git a/debian/_buildscripts/local/build_module.sh b/debian/_buildscripts/local/build_module.sh index 515303ebe..09c80f2bf 100755 --- a/debian/_buildscripts/local/build_module.sh +++ b/debian/_buildscripts/local/build_module.sh @@ -69,56 +69,62 @@ function search_module() MODULE_FOUND="n" - # 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" + # 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 - # 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 - fi - export MOD_BUILD_PATH + 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 + if [[ "$str" == */* ]]; then + # Module name contains path too + LOC_MATCH=`sed -n "s|^\[submodule \"main/\([^\"]*\)\"\]$|\1|p" <"$REPO_TDE/.gitmodules" | grep "$LOC_MOD_NAME$"` + else + # Module name only, no path. Search for exact name match + LOC_MATCH=`sed -n "s|^\[submodule \"main/\([^\"]*\)\"\]$|\1|p" <"$REPO_TDE/.gitmodules" | grep "/$LOC_MOD_NAME$"` + fi + 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 + # 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 + fi + export MOD_BUILD_PATH MOD_BUILD_PKGING_PATH="$MOD_BUILD_PATH/debian" IFS=$OLDIFS } @@ -153,15 +159,15 @@ while [ $# -gt 0 ]; do -lr) # Log build Result to file bool_LOG_RESULT="y" ;; - -p) # build from specific Path + -p) # build from specific Path if [ -z "$MOD_NAME" ]; then - shift + shift MOD_NAME="$1" - bool_BUILD_FROM_PATH="y" + bool_BUILD_FROM_PATH="y" else bool_INVALID_PARAMETERS="y" fi - ;; + ;; -po) # Prepare build folder Only but do not build bool_PREPARE_ONLY="y" ;; @@ -192,29 +198,29 @@ 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 + 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}" @@ -270,14 +276,14 @@ 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" - do_exit 5 + echo "Module \"$MOD_NAME\" not found" + do_exit 5 fi if [ "$bool_BUILD_FROM_GIT" = "y" ]; then @@ -330,11 +336,11 @@ if [ "$bool_EXTRADEP_MOD" != "y" ]; then 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` + 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 @@ -377,17 +383,17 @@ if [ "$bool_EXTRADEP_MOD" != "y" -a "$bool_COPY_PKGING_FILES" = "y" ]; then fi if [ "$bool_METAPACKAGE_MOD" = "y" ]; then cp -R "$MOD_GIT_PKGING_PATH/.." "$MOD_BUILD_PATH" - else + 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 + fi + if [[ -s "$MOD_BUILD_PKGING_PATH/patches/series" ]]; then + cd "$MOD_BUILD_PATH" + QUILT_PATCHES="debian/patches" 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 package=$(basename $PWD)-trinity-$pkgver @@ -412,8 +418,18 @@ if [ "$bool_EXTRADEP_MOD" != "y" -a "$bool_COPY_PKGING_FILES" = "y" ]; then ADD_REL=0 # Update changelog + cd $MOD_GIT_PATH REPO_DATE=`git log -1 --pretty=format:"%cd%n" --date=rfc` - GITUSER="$(git config --get user.name) <$(git config --get user.email)>" + GITUSERNAME="$(git config --get user.name)" + GITUSEREMAIL="$(git config --get user.email)" + if [ -z "$GITUSERNAME" ]; then + GITUSERNAME="anonymous" + fi + if [ -z "$GITUSEREMAIL" ]; then + GITUSEREMAIL="anonymous@anonymous.org" + fi + GITUSER="$GITUSERNAME <$GITUSEREMAIL>" + cd $MOD_BUILD_PATH echo "$PKG_NAME ($REL-0$DISTRO$DISTRO_VERSION.$ADD_REL+$PKG_REL) $DISTRO_NAME; urgency=low" > "$MOD_BUILD_PKGING_PATH/changelog" echo -e "\n * Automated git build\n\n -- $GITUSER $REPO_DATE\n" >> "$MOD_BUILD_PKGING_PATH/changelog" cat "$REPO_TDE_PACKAGING/$MOD_NAME/debian/changelog" >> "$MOD_BUILD_PKGING_PATH/changelog" |
