summaryrefslogtreecommitdiffstats
path: root/debian/_buildscripts
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2025-11-07 17:36:45 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2025-11-16 17:41:50 +0900
commit6ccef74dc7aa60b8ffaf52b2c5207b16f36a9f4c (patch)
tree509d074a8e0d36edeb78f9959dde68f9144b7242 /debian/_buildscripts
parent0b0b0df7f7ee71b3a2d6591144a9b5b674f6a410 (diff)
downloadtde-packaging-6ccef74dc7aa60b8ffaf52b2c5207b16f36a9f4c.tar.gz
tde-packaging-6ccef74dc7aa60b8ffaf52b2c5207b16f36a9f4c.zip
DEB buildscripts: fix building when not using worktrees
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'debian/_buildscripts')
-rw-r--r--debian/_buildscripts/local/README.txt37
-rwxr-xr-xdebian/_buildscripts/local/build_module.sh212
-rwxr-xr-xdebian/_buildscripts/local/create_repo.sh2
3 files changed, 133 insertions, 118 deletions
diff --git a/debian/_buildscripts/local/README.txt b/debian/_buildscripts/local/README.txt
index 265205721..a732e06af 100644
--- a/debian/_buildscripts/local/README.txt
+++ b/debian/_buildscripts/local/README.txt
@@ -11,19 +11,21 @@ A) Environment preparation
--------------------------
0) Initial notes
- this guide has been prepared based on a clean debian testing netinstall system without any other DE.
- It should work for other debian/ubuntu distros as well, but eventually you may run into small differences
+ It should work for other debian/devuan/ubuntu distros as well, but eventually you may run into small differences
here and there.
- you can change folder names below, as long as you update the "_config.sh" file accordingly.
- you need to choose whether to use standard git repository clones or use git worktrees.
Different instructions will be provided where necessary, based on the choice made.
- - you need to choose whether to use standard git repository clones or use git worktrees.
- Different instructions will be provided where necessary, based on the choice made.
- you need to choose whether to use pre built extra dependency packages or build them yourself.
Different instructions will be provided where necessary, based on the choice made.
More on this at point 9).
-1) Install following packages: bc, cdbs, git, pbuilder, quilt, rsync and required dependencies.
- NOTE: sudo should already be installed. If not, install sudo as well.
+1) Install following packages: bc, cdbs, git, pbuilder, quilt, rsync, sudo and required dependencies.
+ To build some python related packages, you will also need to install dh-python and python3-setuptools.
+ NOTE:
+ pytdeextensions requires some actions before you can build it (even in a clean environment) due to the current build scripts
+ used for it. You will need to first build tdelibs, pytqt and pytde, then install those packages on your system and then
+ you should be able to successfully build pytdeextensions.
2) Create a base folder for TDE, hereafter referred to as TDE_DIR (for example $HOME/tde_src)
@@ -128,6 +130,9 @@ A) Environment preparation
For example:
deb [trusted=yes] file:/home/tde_src/3_repo buster main
+11) Depending on your git version, you may have an error about a suspicious folder when trying to run the "create_repo.sh" script.
+ In such case follow the suggested command and add the "tde" folder to your git safe folders.
+ git config --global --add safe.directory TDE_DIR/1_git/tde
----------------------
@@ -193,18 +198,19 @@ When building sets of modules or the whole TDE, a global build summary is automa
build_module.sh [options] [module_name]
Options:
-g (Git) : build from git repo sources. If missing, build from the local copy in build folder.
- -l (Local) : build the module locally. If missing, build in a clean chroot environment
- -p <folder> (Path): build from the specified folder. This option cannot be used together with -g.
- The path must be a module in the git repository or in the local build folder.
- This option is mostly intended to be used when using branches with git worktrees.
+ -l (Local) : build the module locally. If missing then
+ you should be able to successfully build pytdeextensions., build in a clean chroot environment
+ -p <folder> (Path): build from the specified folder. This option cannot be used together with -g.
+ The path must be a module in the git repository or in the local build folder.
+ This option is mostly intended to be used when using branches with git worktrees.
-sl (Show Log) : output the building logs to terminal while the build is ongoing
-lr (Log Result) : log (append) build result (OK, FAILED) to TDE_DIR/0_logs/build_result.log file
-sh (Shell Hook) : use a shell hook for failing builds, only valid if building using pbuilder (clean chroot environment)
-po (Prepare Only): only prepare the source folder but do not build the module. Useful to prepare the source code before
doing local changes/development. The module can then be built from the modified local folder
-d (Debug) : enable debug symbols if possible (debian/rules file must contain "RelWithDebInfo" for this to work)
- module_name : the module to build. If '-p <folder>' is used, this parameter must not be specified since the module
- is derived from the <folder> parameter.
+ module_name : the module to build. If '-p <folder>' is used, this parameter must not be specified since the module
+ is derived from the <folder> parameter.
- <dd>_<set_name>.sh
A number of scripts used to build sets of modules. Each script builds an individual set.
@@ -216,11 +222,11 @@ When building sets of modules or the whole TDE, a global build summary is automa
-s N: if specified, skip first N modules from the set of modules
The sets are logically grouped as "base system", "applications" and "meta packages".
- 00_extradeps.sh : extra dependencies modules
+ 00_pre_base.sh : prerequirements and extra dependencies modules
01_base_01.sh - 04_base_04.sh : base system
05_apps_system.sh - 16_apps_misc.sh : application modules
17_meta_packages.sh : meta package modules
- 91_build_base.sh : whole TDE base system in 00_extradeps.sh - 04_base_04.sh
+ 91_build_base.sh : whole TDE base system in 00_pre_base.sh - 04_base_04.sh
92_build_applications.sh : all TDE applications in 05_apps_system.sh - 16_apps_misc.sh
- 99_build_TDE.sh
@@ -231,7 +237,7 @@ When building sets of modules or the whole TDE, a global build summary is automa
- create_repo.sh
Creates a local repository from the .deb files currently stored in TDE_DIR/2_build/debs.
Usage:
- [sudo] create_repo.sh [options]
+ sudo create_repo.sh [options]
Options:
-b (Backup) : create a backup of the existing repository in TDE_DIR/CFG_REPO_DIR.backup
@@ -244,7 +250,6 @@ There are two type of hooks:
To use a hook, create an executable script (pre_build.sh and/or post_build.sh) in the TDE_DIR/1_git/hooks/<MODULE NAME> folder. The scripts are executed in the build_module.sh environment, so have access to all the variables defined in that file. See the files in the "hook examples" folder for real usage samples.
-
-------------------------
C) How to use the scripts
-------------------------
@@ -257,7 +262,7 @@ C) How to use the scripts
5) Build modules as per your needs. You don't need to use "sudo" directly since the scripts will do that automatically if
required. Just type your sudo password when prompted to do so.
6) Create a local repository from the packages you have just built, to be used as installation repository.
- [sudo] ./create_repo.sh
+ sudo ./create_repo.sh
7) Install TDE as you usually do. For example as follow:
- sudo apt-get update
- sudo aptitude install tdebase-trinity (for a minimalistic TDE environment)
diff --git a/debian/_buildscripts/local/build_module.sh b/debian/_buildscripts/local/build_module.sh
index ab97c2198..09c80f2bf 100755
--- a/debian/_buildscripts/local/build_module.sh
+++ b/debian/_buildscripts/local/build_module.sh
@@ -69,62 +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
- 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_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
}
@@ -159,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"
;;
@@ -198,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}"
@@ -276,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
@@ -336,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
@@ -383,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
@@ -418,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"
diff --git a/debian/_buildscripts/local/create_repo.sh b/debian/_buildscripts/local/create_repo.sh
index 222cb7740..524c4aecd 100755
--- a/debian/_buildscripts/local/create_repo.sh
+++ b/debian/_buildscripts/local/create_repo.sh
@@ -45,7 +45,7 @@ rsync -aHS --exclude="*/src/*.xz" --exclude="*/src/*.dsc" --exclude="*/src/*.cha
# Create package index file
echo -e "${CYellow}> Creating package index file${CNone}"
cd "$REPO_DIR"
-dpkg-scanpackages "./$ARCH_PATH" | gzip -9c > "./$ARCH_PATH/Packages.gz"
+dpkg-scanpackages "./$ARCH_PATH" > "./$ARCH_PATH/Packages"
#----------------------------