DEB buildscripts: removed from R14.1.x branch. These scripts are kept up to date on master branch only, to avoid unnecessary repetition.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/257/head
Michele Calgaro 1 year ago
parent 73972eeb1f
commit 1028598a97
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -1,25 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
if [[ "$USE_PREBUILD_EXTRA_DEPS" = "y" ]]; then
echo -e "${CBrown}#### Use of pre-built extra dependency packages is currently configured. Nothing to do. ####\n${CNone}"
echo "Use of pre-built extra dependency packages is currently configured. Nothing to do." >>"$LOG_BUILD_RESULT_FILENAME"
else
build_module "$CFG_EXTRA_DEPS_DIR/uncrustify-trinity"
#
build_module "$CFG_EXTRA_DEPS_DIR/fireflies"
build_module "$CFG_EXTRA_DEPS_DIR/htdig"
build_module "$CFG_EXTRA_DEPS_DIR/imlib"
build_module "$CFG_EXTRA_DEPS_DIR/jasper"
build_module "$CFG_EXTRA_DEPS_DIR/lcms"
build_module "$CFG_EXTRA_DEPS_DIR/mp4v2"
build_module "$CFG_EXTRA_DEPS_DIR/openslp-dfsg"
build_module "$CFG_EXTRA_DEPS_DIR/transcode"
build_module "$CFG_EXTRA_DEPS_DIR/wv2"
fi
set_log_end

@ -1,30 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "dependencies/tde-cmake"
build_module "dependencies/libr"
build_module "dependencies/akode"
build_module "dependencies/tqt3"
build_module "dependencies/tqtinterface"
build_module "dependencies/arts"
build_module "dependencies/dbus-tqt"
build_module "dependencies/dbus-1-tqt"
build_module "dependencies/tqca"
build_module "dependencies/libart-lgpl"
build_module "dependencies/avahi-tqt"
build_module "dependencies/libcaldav"
build_module "dependencies/libcarddav"
build_module "dependencies/polkit-tqt"
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
# needs cmake-trinity so must be build after common/cmake module
build_module "$CFG_EXTRA_DEPS_DIR/pcsc-lite-nodbus"
fi
build_module "core/tdelibs"
build_module "libraries/libtdeldap"
build_module "core/tdebase"
set_log_end

@ -1,21 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "dependencies/sip4-tqt"
build_module "dependencies/tqscintilla"
build_module "dependencies/pytqt"
build_module "libraries/pytde"
build_module "libraries/pytdeextensions"
build_module "core/tdebindings"
build_module "libraries/libtqt-perl"
build_module "core/tdeutils"
build_module "core/tdemultimedia"
build_module "core/tdeaccessibility"
build_module "core/tdenetwork"
build_module "core/tdeadmin"
set_log_end

@ -1,22 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "core/tdeartwork"
build_module "core/tdegames"
build_module "core/tdetoys"
build_module "core/tdeedu"
build_module "core/tdegraphics"
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
build_module "$CFG_EXTRA_DEPS_DIR/pinentry-tqt"
fi
build_module "core/tdepim"
build_module "core/tdeaddons"
build_module "core/tdesdk"
build_module "core/tdevelop"
build_module "core/tdewebdev"
set_log_end

@ -1,10 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "core/tde-i18n"
set_log_end

@ -1,30 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/system/dolphin"
build_module "applications/system/katapult"
build_module "applications/system/kbfx"
build_module "applications/system/kcmautostart"
build_module "applications/system/kdbusnotification"
build_module "applications/system/klamav"
build_module "applications/system/knemo"
build_module "applications/system/knetload"
build_module "applications/system/knetstats"
build_module "applications/system/kooldock"
build_module "applications/system/krusader"
build_module "applications/system/kshutdown"
build_module "applications/system/ksystemlog"
build_module "applications/system/kvkbd"
build_module "applications/system/polkit-agent-tde"
build_module "applications/system/smartcardauth"
build_module "applications/system/tastymenu"
build_module "applications/system/tdedocker"
build_module "applications/system/tdepowersave"
build_module "applications/system/tdesshaskpass"
build_module "applications/system/yakuake"
set_log_end

@ -1,22 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/utilities/abakus"
build_module "applications/utilities/filelight"
build_module "applications/utilities/kbarcode"
build_module "applications/utilities/kchmviewer"
build_module "applications/utilities/kcpuload"
build_module "applications/utilities/kdirstat"
build_module "applications/utilities/keep"
build_module "applications/utilities/knutclient"
build_module "applications/utilities/kompose"
build_module "applications/utilities/krename"
build_module "applications/utilities/ksensors"
build_module "applications/utilities/mathemagics"
build_module "applications/utilities/qalculate-tde"
set_log_end

@ -1,20 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/settings/kdpkg"
build_module "applications/settings/kima"
build_module "applications/settings/kiosktool"
build_module "applications/settings/kkbswitch"
build_module "applications/settings/klcddimmer"
build_module "applications/settings/kmyfirewall"
build_module "applications/settings/tde-guidance"
build_module "applications/settings/tde-systemsettings"
build_module "applications/settings/tdenetworkmanager"
build_module "applications/settings/tdesudo"
build_module "applications/settings/wlassistant"
set_log_end

@ -1,20 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "libraries/libkipi"
build_module "libraries/libkdcraw"
build_module "libraries/libkexiv2"
build_module "libraries/kipi-plugins"
build_module "libraries/libksquirrel"
build_module "applications/graphics/digikam"
build_module "applications/graphics/gwenview"
build_module "applications/graphics/gwenview-i18n"
build_module "applications/graphics/ksquirrel"
build_module "applications/graphics/potracegui"
set_log_end

@ -1,17 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/development/kdbg"
build_module "applications/development/kdiff3"
build_module "applications/development/kpicosim"
build_module "applications/development/kscope"
build_module "applications/development/ktechlab"
build_module "applications/development/kxmleditor"
build_module "applications/development/piklab"
build_module "applications/development/tdesvn"
set_log_end

@ -1,11 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/games/knights"
build_module "applications/games/tdepacman"
set_log_end

@ -1,22 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/internet/kasablanca"
build_module "applications/internet/kbiff"
build_module "applications/internet/kftpgrabber"
build_module "applications/internet/knmap"
build_module "applications/internet/konversation"
build_module "applications/internet/kopete-otr"
build_module "applications/internet/kshowmail"
build_module "applications/internet/kstreamripper"
build_module "applications/internet/ktorrent"
build_module "applications/internet/kvirc"
build_module "applications/internet/kvpnc"
build_module "applications/internet/smb4k"
build_module "applications/internet/tork"
set_log_end

@ -1,24 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/office/basket"
build_module "applications/office/kbibtex"
build_module "applications/office/kbookreader"
build_module "applications/office/kile"
build_module "applications/office/kmymoney"
build_module "applications/office/knowit"
build_module "applications/office/koffice"
build_module "applications/office/koffice-i18n"
build_module "applications/office/keximdb"
build_module "applications/office/tellico"
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
build_module "$CFG_EXTRA_DEPS_DIR/pilot-link"
fi
build_module "applications/office/kpilot"
set_log_end

@ -1,22 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/multimedia/amarok"
build_module "applications/multimedia/codeine"
build_module "applications/multimedia/k3b"
build_module "applications/multimedia/k3b-i18n"
build_module "applications/multimedia/k9copy"
build_module "applications/multimedia/kaffeine"
build_module "applications/multimedia/kaffeine-mozilla"
build_module "applications/multimedia/kmplayer" # depends on koffice-trinity-dev
build_module "applications/multimedia/kplayer"
build_module "applications/multimedia/mplayerthumbs"
build_module "applications/multimedia/rosegarden"
build_module "applications/multimedia/soundkonverter"
build_module "applications/multimedia/tderadio"
set_log_end

@ -1,16 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/tdeio/tdeio-appinfo"
build_module "applications/tdeio/tdeio-apt"
build_module "applications/tdeio/tdeio-ftps"
build_module "applications/tdeio/tdeio-gopher"
build_module "applications/tdeio/tdeio-locate"
build_module "applications/tdeio/tdeio-sword"
build_module "applications/tdeio/tdeio-umountwrapper"
set_log_end

@ -1,23 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/themes/gtk3-tqt-engine"
build_module "applications/themes/gtk-qt-engine"
build_module "applications/themes/kgtk-qt3"
build_module "applications/themes/ksplash-engine-moodin"
# build_module "applications/themes/qt4-tqt-theme-engine"
build_module "applications/themes/tde-style-baghira"
build_module "applications/themes/tde-style-domino"
build_module "applications/themes/tde-style-ia-ora"
build_module "applications/themes/tde-style-lipstik"
build_module "applications/themes/tde-style-qtcurve"
build_module "applications/themes/tdmtheme"
build_module "applications/themes/twin-style-crystal"
build_module "applications/themes/twin-style-dekorator"
build_module "applications/themes/twin-style-suse2"
set_log_end

@ -1,26 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "applications/misc/bibletime"
build_module "applications/misc/desktop-effects-tde"
build_module "applications/misc/kcmldap"
build_module "applications/misc/kcmldapcontroller"
build_module "applications/misc/kcmldapmanager"
build_module "applications/misc/kerberostray"
build_module "applications/misc/krecipes"
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
build_module "$CFG_EXTRA_DEPS_DIR/compiz-trinity"
build_module "$CFG_EXTRA_DEPS_DIR/libcompizconfig-trinity"
build_module "$CFG_EXTRA_DEPS_DIR/compiz-fusion-bcop-trinity"
build_module "$CFG_EXTRA_DEPS_DIR/compiz-fusion-plugins-main-trinity"
build_module "$CFG_EXTRA_DEPS_DIR/compiz-fusion-plugins-extra-trinity"
build_module "$CFG_EXTRA_DEPS_DIR/compizconfig-python-trinity"
fi
build_module "applications/misc/compizconfig-backend-tdeconfig"
set_log_end

@ -1,26 +0,0 @@
#!/bin/bash
. ./internals/_build_set_common.sh
#----------------------------
set_log_start
build_module "metapackages/desktop-base"
build_module "metapackages/meta-tde"
build_module "metapackages/redmond-default-settings"
build_module "metapackages/redmond-default-settings-ii"
build_module "metapackages/sudo-trinity"
build_module "metapackages/synaptic-trinity"
build_module "metapackages/trinity-apt-archive"
build_module "metapackages/trinity-keyring"
build_module "metapackages/trinity-slax"
# Ubuntu only - uncomment if necessary - untested
#build_module "metapackages/casper-trinity"
#build_module "metapackages/kubuntu-default-settings"
#build_module "metapackages/kubuntu-meta"
#build_module "metapackages/tde-ubuntu-integration"
#build_module "metapackages/trinity-livecd"
#build_module "metapackages/ubiquity-trinity"
set_log_end

@ -1,9 +0,0 @@
#!/bin/bash
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
./00_extradeps.sh
fi
./01_base_01.sh
./02_base_02.sh
./03_base_03.sh
./04_base_04.sh

@ -1,14 +0,0 @@
#!/bin/bash
./05_apps_system.sh
./06_apps_utilities.sh
./07_apps_settings.sh
./08_apps_graphics.sh
./09_apps_development.sh
./10_apps_games.sh
./11_apps_internet.sh
./12_apps_office.sh
./13_apps_multimedia.sh
./14_apps_tdeio.sh
./15_apps_themes.sh
./16_apps_misc.sh

@ -1,55 +0,0 @@
#!/bin/bash
# Load common code and initialization
export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
. ${SCRIPT_DIR}/internals/_build_common.sh
init_common
_BUILDALL_TIMER=2
_BUILDALL_TIME="--/--:--:--:---"
#----------------------------
# do_exit for set building
function do_exit()
{
cd "$SCRIPT_DIR"
if [ $1 -eq 0 ]; then
echo -e "${CGray}#### Building process for TDE completed ####${CNone}"
else
echo -e "${CGray}#### Building process for TDE interrupted ($1) ####${CNone}"
fi
exit $1
}
#----------------------------
function set_log_start()
{
echo -e "${CGray}#### Starting building process for TDE ####${CNone}"
echo
echo "********** TDE **********" >>"$LOG_BUILD_RESULT_FILENAME"
exec_time_start $_BUILDALL_TIMER
}
#----------------------------
function set_log_end()
{
exec_time_stop $_BUILDALL_TIMER "_BUILDALL_TIME"
echo " [$_BUILDALL_TIME] All TDE " >>"$LOG_BUILD_RESULT_FILENAME"
echo >>"$LOG_BUILD_RESULT_FILENAME"
do_exit 0
}
#----------------------------
# Build TDE
#----------------------------
set_log_start
./91_build_base.sh
./92_build_applications.sh
./17_meta_packages.sh
set_log_end

@ -1,280 +0,0 @@
-----
Index
-----
A) Environment preparation
B) Notes about scripts
C) How to use the scripts
--------------------------
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
here and there.
- you can change folder names below, as long as you update the "_config.sh" file accordingly.
1) Install following packages: bc, cdbs, git, pbuilder, rsync and required dependencies.
NOTE: sudo should already be installed. If not, install sudo as well.
2) Create a base folder for TDE, hereafter referred to as TDE_DIR (for example $HOME/tde_src)
3) Create the following folders [ see NOTE at point 0) about folder names ]
- in TDE_DIR: 0_logs : contains log files for repo update and global builds (more on this later)
1_git : contains the git repo clones and build hook scripts
2_build: folder used for build preparation and for local builds
3_repo : local repo for package installation (to be configured in /etc/apt/sources.list)
buildscripts: contains a local copy of the build scripts, which can be modified as required
- in TDE_DIR/1_git:
edeps : contains extra dependency modules necessary to build TDE (this folder is not necessary
if pre-built extra dependencies are used - see point 9 for more info)
hooks : contains build hook scripts to execute ad-hoc code before and after the building process.
Mainly used to apply patches automatically during the building process
4) Clone TDE git repositories
A) without using git worktrees
A.1) Main repo:
cd "$TDE_DIR/1_git"
git clone https://mirror.git.trinitydesktop.org/gitea/TDE/tde.git
git clone https://mirror.git.trinitydesktop.org/gitea/TDE/scripts.git tde/scripts
cd tde
./scripts/switch_all_submodules_to_head_and_clean anonymous
A.2) If you are not using pre-built extra dependencies:
cd "$TDE_DIR/1_git"
git clone https://mirror.git.trinitydesktop.org/gitea/TDE/extra-dependencies.git edeps
B) using git worktrees
B.1) Main repo
cd "$TDE_DIR/1_git"
git clone --bare --config "remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*" https://mirror.git.trinitydesktop.org/gitea/TDE/tde.git repos/tde.git
B.2) If you are not using pre-built extra dependencies:
cd "$TDE_DIR/1_git"
git clone --bare --config "remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*" https://mirror.git.trinitydesktop.org/gitea/TDE/extra-dependencies.git repos/edeps.git
B.3) run the script "update_repositories.sh" once you have completed the setup as described later in this document.
5) Add your user to the sudo group (not required if you are root)
su -c "adduser <username> sudo"
Logout and login again to make sure the new settings are applied.
* Optionally, consider extending your sudo timeout interval to avoid having to type your password too often
(this could be quite painful especially during long builds, which would not be able to complete if unattended).
To do this, type "sudo visudo" and then add "Defaults timestamp_timeout=<new timeout>", where the value is in
minutes. Use a value of -1 to set an infinite timeout.
6) Copy the files from "TDE_DIR/1_git/tde/packaging/debian/_buildscripts/local/additional_files" folder
to the respectivily named folders.
7) Create pbuilder base package with the command:
sudo pbuilder create
If you wish to build for a different distro or architecture, use the command:
sudo DISTRO_NAME=<target distro> ARCHITECTURE=<target architecture> pbuilder create
8) Setup the build scripts locally:
- copy build scripts from "TDE_DIR/1_git/tde/packaging/debian/_buildscripts/local" to "TDE_DIR/buildscripts"
and make sure all shell scripts are executable
- cd "TDE_DIR/buildscripts"
- cp ./internals/_config_template.sh _config.sh
- edit "_config.sh" to set your preferences and check that the various folder names match the structure on your disk.
Make sure to set the following variables:
* TDE_DIR to the correct path.
* DISTRO, DISTRO_NAME and ARCHITECTURE to match the distro and architecture you want to build for if different
from your current setup. Otherwise the variables can be left empty and auto detection will be performed.
* UPDATE_BRANCHES to the branches you want to keep updated from the main repositories.
* DEFAULT_REPO_BRANCH to the branch to check out at the end of the repositories update process.
9) Some additional packages (referred to as extra dependencies) are required to build and install TDE in debian/ubuntu.
These modules can be built locally or alternatively Slavek Banko's pre-built binaries can be used.
9.1) Using pre-built extra dependencies
- open "_config.sh" and set the variable USE_PREBUILD_EXTRA_DEPS to "y" (this is the default initial setting)
- add the following lines to the /etc/apt/sources.list file. This will setup Slavek's repositories in apt for
installing the extra dependency packages when TDE is installed.
* For R14.1.x series (repository branch "master")
# --- SLAVEK BANKO'S EXTRA DEPENDENCIES REPOSITORY ---
deb http://mirror.ppa.trinitydesktop.org/trinity-testing <YOUR DISTRO> deps
* For R14.0.x series (repository branch "r14.0.x")
# --- SLAVEK BANKO'S EXTRA DEPENDENCIES REPOSITORY ---
deb http://mirror.ppa.trinitydesktop.org/trinity-sb <YOUR DISTRO> deps-r14
For example:
deb http://mirror.ppa.trinitydesktop.org/trinity-sb buster deps-r14
- install package dirmngr if required
- import TDE Archive Signing key into your apt keyring
sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key C93AF1698685AD8B
9.2) Building extra dependencies locally (recommended option)
- open "_config.sh" and set the variables USE_PREBUILD_EXTRA_DEPS to "n" and
CFG_EXTRA_DEPS_DIR to "edeps"
- build the extra dependency as any other normal module
10) Add the following lines to the /etc/apt/sources.list file. This will setup your local repo in apt.
# --- LOCAL TDE REPOSITORY ---
deb [trusted=yes] file:TDE_DIR/3_repo <YOUR DISTRO> main
For example:
deb [trusted=yes] file:/home/tde_src/3_repo buster main
----------------------
B) Notes about scripts
----------------------
1) * Notes *
Modules are built using the build_module.sh script. After the build is completed, the installation .deb files are located in TDE_DIR/2_build/debs/<MODULE NAME>/ and the source code and build reports in TDE_DIR/2_build/debs/<MODULE NAME>/src/
The source code can be either the git repo or a local copy in TDE_DIR/2_build/build/<MODULE NAME>.
A module can be built in a clean chroot environment using pbuilder (default option) or locally using dpkg-buildpackage (useful for quick debugging/developing).
When using pbuilder, a hook can be used to invoke a shell when the build fails.
Build logs are automatically stored to files, but can also be displayed during the build process.
The default location of a module build log is TDE_DIR/2_build/debs/<MODULE NAME>/src/__build__.log
When building sets of modules or the whole TDE, a global build summary is automatically stored to TDE_DIR/0_logs/build_result.log to quickly check what built and what failed. It is recommended to delete that file before starting a new TDE build (if not, build results will be appended at the end of the file).
2) * Scripts description *
- scripts in 'internals' folder
Scripts used intenally by other scripts. No need for invoking these directly.
- update_repositories.sh:
Script used to update the local clone of the git repositories.
It is possible to update multiple branches as specified by the variable UPDATE_BRANCHES in the configuration
file. After the update is completed, the local repositories will be switched to the branch specified by the
DEFAULT_REPO_BRANCH variable.
The script can also be used to switch the local repositories to a particular branch, without performing any update.
Usage:
update_repositories.sh [options]
Options:
-i (Incremental) : in case the previous update was interrupted, continue from the last known updated module.
(useful on slow/unstable internet connections). If the previous update had completed,
this option is ignored.
-v (Verbose) : display and log more output. Useful for troubleshooting.
-ub "<branches>" (Update Branches) : allows to specify the branches to update. This override the variable
UPDATE_BRANCHES in the configuration file. If a single branch is specified and the
'-db'/'-sb' paraemters are not used, '-ub' can be used to update and switch a single branch.
-db <branch> (Default Branch) : allows to specify the default branch. This override the variable
DEFAULT_REPO_BRANCH in the configuration file.
This option is only used if the argument '-so' is not specified.
-so <branch> (Switch Only) : switch the local repositories to the specified branch, without doing any update.
If '-ub' is used, the '-so' branch name must be one of those specified in the 'ub' branches.
- build_module.sh
Build a single module. The name of the module can be specified in two ways:
1) by providing the full "folder/module name" location
Examples:
tdebase
applications/abakus
dependencies/libr
edeps/debian/imlib
2) by providing only the module name and let the script look up for a unique match among the known modules.
Examples:
tdebase
abakus
libr
imlib
3) for extra dependencies only, by providing the repository folder and the module name without the "debian"
subfolder
edeps/imlib
Usage:
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.
-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.
- <dd>_<set_name>.sh
A number of scripts used to build sets of modules. Each script builds an individual set.
Modules are built from the git sources and the build result is automatically appended to
TDE_DIR/0_logs/build_result.log.
Usage:
<dd>_<set_name>.sh [options]
Options:
-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
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
92_build_applications.sh : all TDE applications in 05_apps_system.sh - 16_apps_misc.sh
- 99_build_TDE.sh
Script used to build the complete TDE at once.
Usage:
99_build_TDE.sh
- 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]
Options:
-b (Backup) : create a backup of the existing repository in TDE_DIR/CFG_REPO_DIR.backup
3) * Building hooks *
Hooks are available to execute ad-hoc code before and after the build process. For example this is very useful to automatically apply patches.
There are two type of hooks:
- pre_build : applied before switching the module to quilt format and build
- post_build: applied after the build (dpkg-buildpackage or pbuilder) has terminated
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
-------------------------
1) Follow the steps in section "A) Environment preparation" (only required the first time).
2) cd "TDE_DIR/buildscripts"
3) Update to latest git repository using
./update_repositories.sh
4) Run "sudo pbuilder update" at the beginning of the day to update the base package to the latest version. This will speed up
the process when building several modules in sequence.
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
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)
or
sudo aptitude install tde-trinity (for a standard TDE environment)
Examples of real usage:
1) build a single module
- ./build_module.sh -g -sl "dependencies/libr" -> build libr package. This is a good test to check
whether everything is working fine
- ./build_module.sh -g "tdelibs" -> build "tdelibs" from git sources in a clean chroot environment
- ./build_module.sh -g -l -sl "applications/amarok" -> build "amarok" locally from git sources and
display building logs during building
- ./build_module.sh -sh -lr "tdebase" -> build "tdebase" from the local sources (in TDE_DIR/2_build/build/tdebase)
in a clean chroot environment and launch a shell in case of building failure.
Append the build result (OK, FAILED) to TDE_DIR/scripts/logs/build_result.log
- ./build_module.sh -g -po "tdelibs" -> prepare "tdelibs" for building from git sources. Source code will be available
in TDE_DIR/2_build/build/tdelibs. After you have made changes to the source and
want to build the modified package, run './build_module.sh "tdelibs"'
2) build a single set
(optional) delete the TDE_DIR/0_logs/build_result.log file
./01_base_01.sh -> build this set.
./03_base_03.sh -s 3 -> build this set but skip the first 3 modules of the set.
3) build all TDE
./99_build_TDE.sh -> build all TDE
4) [sudo] ./create_repo.sh -> build or update your local TDE repository

@ -1,135 +0,0 @@
#!/bin/bash
# general options
BUILDPLACE="/var/cache/pbuilder/build/"
USEPROC=yes
USEDEVPTS=yes
USEDEVFS=no
# the username and ID used by pbuilder, inside chroot. Needs fakeroot, really
BUILDSOURCEROOTCMD=""
BUILDUSERNAME=""
BUILDUSERID=""
# make debconf not interact with user
export DEBIAN_FRONTEND="noninteractive"
DEBEMAIL=""
# for pbuilder debuild (sudo -E keeps the environment as-is)
BUILDSOURCEROOTCMD="fakeroot"
PBUILDERROOTCMD="sudo -E"
# this is necessary for running 'apt-ftparchive' in a hook script if required
EXTRAPACKAGES="$EXTRAPACKAGES apt-utils"
#APT configuration files directory
APTCONFDIR=""
# Set the PATH to be used inside pbuilder
export PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin"
# Shell to be used inside pbuilder by commands like 'su'
export SHELL=/bin/bash
# default PKGNAME_LOGFILE
PKGNAME_LOGFILE="__build__.log"
#-- get desired distribution and architecture
DISTRIBUTION="$DISTRO_NAME"
[[ "$DISTRO" = "" ]] && DISTRO=$(lsb_release -is | sed -e 's/\(.*\)/\L\1/')
[[ "$DISTRIBUTION" = "" ]] && DISTRIBUTION=$(lsb_release -cs | sed -e 's/\(.*\)/\L\1/')
[[ "$ARCHITECTURE" = "" ]] && ARCHITECTURE=$(dpkg --print-architecture)
BASETGZ="/var/cache/pbuilder/base-$DISTRIBUTION@$ARCHITECTURE.tgz"
#-- select apt components
case "$DISTRIBUTION" in
# debian
sid|bookwork|bullseye|buster|stretch)
COMPONENTS="main contrib non-free"
;;
# devuan
ceres|daedalus|chimaera|beowulf|ascii)
COMPONENTS="main"
DEBOOTSTRAPOPTS=(--variant=buildd --no-check-gpg)
EXTRAPACKAGES="$EXTRAPACKAGES devuan-keyring"
;;
# ubuntu
kinetic|jammy|impish|hirsute|focal|bionic|xenial)
COMPONENTS="main restricted universe multiverse"
DEBOOTSTRAPOPTS=(--variant=buildd)
;;
# raspbian
raspbian-bookworm|raspbian-bullseye|raspbian-buster|raspbian-stretch)
COMPONENTS="main contrib non-free"
DEBOOTSTRAPOPTS=(--variant=buildd --no-check-gpg)
;;
esac
EXTRAPACKAGES="$EXTRAPACKAGES fakeroot apt-transport-https ca-certificates"
#-- select base apt sources
case "$DISTRIBUTION" in
# debian
sid|bookwork|bullseye|buster|stretch)
MIRRORSITE=http://deb.debian.org/debian
;;
# devuan
ceres|daedalus|chimaera|beowulf|ascii)
MIRRORSITE=http://auto.mirror.devuan.org/merged
;;
# ubuntu
kinetic|jammy|impish|hirsute|focal|bionic|xenial)
if [ "$ARCHITECTURE" = "amd64" ] || [ "$ARCHITECTURE" = "i386" ]; then
MIRRORSITE=http://archive.ubuntu.com/ubuntu
else
MIRRORSITE=http://ports.ubuntu.com
fi
;;
# raspbian
raspbian-bookworm|raspbian-bullseye|raspbian-buster|raspbian-stretch)
MIRRORSITE=http://ftp.fi.muni.cz/pub/linux/raspbian/raspbian
;;
esac
if [ -n "${ARCHITECTURE}" ]; then
NAME="$NAME-$ARCHITECTURE"
DEBOOTSTRAPOPTS=("--arch" "$ARCHITECTURE" "${DEBOOTSTRAPOPTS[@]}")
fi
BUILDRESULT="/var/cache/pbuilder/$DISTRO-$DISTRIBUTION/result/"
APTCACHE="/var/cache/pbuilder/aptcache/$DISTRO-$DISTRIBUTION/"
if [ -n "$APTCACHE" ] && [ ! -d "$APTCACHE" ]; then
mkdir $APTCACHE
fi
APTCACHEHARDLINK=no
#-- extra options
DEBBUILDOPTS="-b"
if [ -z "$DEB_SIGN_KEYID" ]; then
AUTO_DEBSIGN=${AUTO_DEBSIGN:-no}
fi
#-- choose dependency solver
#-- apt is better if target distribution contains apt >= 1.4~beta3
#-- aptitude is better if target distribution contains apt < 1.4~beta3
case "$DISTRIBUTION" in
sid|bookwork|bullseye|buster|stretch|\
ceres|daedalus|chimaera|beowulf|ascii|\
raspbian-bookworm|raspbian-bullseye|raspbian-buster|raspbian-stretch|\
kinetic|jammy|impish|hirsute|focal|bionic)
PBUILDERSATISFYDEPENDSCMD="/usr/lib/pbuilder/pbuilder-satisfydepends-apt"
;;
xenial)
PBUILDERSATISFYDEPENDSCMD="/usr/lib/pbuilder/pbuilder-satisfydepends-aptitude"
;;
esac

@ -1,554 +0,0 @@
#!/bin/bash
#
# Build a single TDE module
#
# Load common code and initialization
export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
. ${SCRIPT_DIR}/internals/_build_common.sh
init_common
# Timer settings
_BUILDMOD_TIMER_NUM=0
_BUILDMOD_TIME="--/--:--:--:---"
exec_time_start $_BUILDMOD_TIMER_NUM
# Need sudo for non-root users
SUDO_CMD=""
if [ "`whoami`" != "root" ]; then
SUDO_CMD="sudo -E"
fi
#----------------------------
# Parameters:
# $1 - error code
function do_exit()
{
cd "$SCRIPT_DIR"
if [ $1 -eq 0 ]; then
echo -e "${CGreen}#### Processing module ${CLightGreen}\"$MOD_NAME\"${CGreen} succeeded ####${CNone}"
if [ "$bool_LOG_RESULT" = "y" ]; then
echo "[ OK ] [$_BUILDMOD_TIME] \"$MOD_NAME\"" >>"$LOG_BUILD_RESULT_FILENAME"
fi
else
echo -e "${CRed}#### Processing module ${CLightRed}\"$MOD_NAME\"${CRed} failed ($1) ####${CNone}"
if [ "$bool_LOG_RESULT" = "y" ]; then
echo "[FAILED] [$_BUILDMOD_TIME] \"$MOD_NAME\"" >>"$LOG_BUILD_RESULT_FILENAME"
fi
fi
exit $1
}
#----------------------------
# Parameters:
# $1 - folder name
function recreate_folder()
{
if [ -d "$1" ]; then
$SUDO_CMD rm -R "$1"
fi
mkdir -p "$1"
}
#----------------------------
# Look for a module in the git repository or in the extra dependency folder.
# Set the module name and paths if found.
# Parameters:
# $1 - module name
function search_module()
{
OLDIFS=$IFS
IFS="*"
local LOC_MOD_NAME=$1
local LOC_MATCH
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"
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"
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
MOD_BUILD_PKGING_PATH="$MOD_BUILD_PATH/debian"
IFS=$OLDIFS
}
#----------------------------
# Check command line arguments and set options
#----------------------------
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_LOG_RESULT="n"
bool_SHELL_HOOK="n"
bool_PREPARE_ONLY="n"
bool_DEBUG_MODE="n"
bool_INVALID_PARAMETERS="n"
while [ $# -gt 0 ]; do
case "$1" in
-d) # build with Debug symbols (used in hook scripts)
bool_DEBUG_MODE="y"
;;
-g) # select code to build from Git repo (-g) or from local build copy
bool_BUILD_FROM_GIT="y"
;;
-l) # build module Locally instead of in a clean chroot environment
bool_BUILD_LOCALLY="y"
;;
-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"
;;
-sh) # install Shell Hook for failing builds (only valid if NOT building locally)
bool_SHELL_HOOK="y"
;;
-sl) # output the building logs to terminal (ShowLog)
bool_SHOW_BUILD_LOGS="y"
;;
*) # module to be built
if [ -z "$MOD_NAME" ]; then
MOD_NAME="$1"
else
bool_INVALID_PARAMETERS="y"
fi
esac
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
echo "${MOD_NAME}"
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
echo "Please specify the module to build"
do_exit 3
fi
# Shell hooks are only valid if not building locally
if [ "bool_BUILD_LOCALLY" = "y" ]; then
bool_SHELL_HOOK="n"
fi
export bool_SHELL_HOOK
# Local option variables
# - sign packages
OPT_SIGN_PKG_LOCAL="--no-sign"
# - show logs
OPT_SHOW_LOGS="&>"
if [ "$bool_SHOW_BUILD_LOGS" = "y" ]; then
OPT_SHOW_LOGS=" | tee "
fi
export OPT_SHOW_LOGS
# This folders must exists
BASE_DIRS=("REPO_DIR" "BUILD_DIR" "SCRIPT_DIR" "REPO_TDE_MAIN" "REPO_TDE_PACKAGING" "HOOK_DIR")
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
BASE_DIRS+=("REPO_EXTRA_DEPENDENCIES")
fi
for var_name in ${BASE_DIRS[@]}; do
if [ ! -d "${!var_name}" ]; then
echo -e "${CYellow}$var_name${CNone} folder missing (${CLightPurple}${!var_name}${CNone}). Check your config or create it."
do_exit 4
fi
done
#----------------------------
# Build output directories
#----------------------------
BUILD_DIRS=("TDE_BUILD_DIR" "TDE_DEBS_DIR")
for var_name in ${BUILD_DIRS[@]}; do
if [ ! -d "${!var_name}" ]; then
mkdir "${!var_name}"
fi
done
#----------------------------
# Check for module existance
#----------------------------
# Check if module is an extra dependency
if [[ $MOD_NAME =~ ^$CFG_EXTRA_DEPS_DIR/ ]]; then
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
fi
if [ "$bool_BUILD_FROM_GIT" = "y" ]; then
echo -e "${CYellow}> Building from GIT repo${CNone}"
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
else
echo -e "${CYellow}> Building from BUILD folder${CNone}"
if [ ! -d "$MOD_BUILD_PATH" ]; then
echo "Build folder for \"$MOD_NAME\" not found"
do_exit 7
fi
bool_COPY_MOD_SRC="n"
bool_COPY_PKGING_FILES="n"
fi
#----------------------------
# Prepare source files
#----------------------------
# remove output from previous build
if [ -d "$MOD_BUILD_PATH" ]; then
cd "$MOD_BUILD_PATH/.."
$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"
# Add GIT information
echo "# TDE SCM module information" > "$MOD_BUILD_PATH/.tdescminfo"
echo "Name: $MOD_NAME" >> "$MOD_BUILD_PATH/.tdescminfo"
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
# Extra dependency module: copy and apply patches
# -- move to the correct folder
cd "$MOD_GIT_PATH"
if [ `ls -d */ | wc -l` == 1 ]; then
cd `ls -d */`
cp -R "." "$MOD_BUILD_PATH"
cd $MOD_BUILD_PATH
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"
fi
else
echo "There must be one and only one module folder in \"$MOD_GIT_PATH\""
do_exit 9
fi
fi
fi
# copying packaging scripts, if needed
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"
# Default package name
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}
# Get package name and packaging release
PKG_NAME=$(head -n1 $MOD_BUILD_PKGING_PATH/changelog)
PKG_NAME=${PKG_NAME%% *}
PKG_TAG=$(cd "$REPO_TDE_PACKAGING/$MOD_NAME" &&
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)
PKG_REL=$(cd "$REPO_TDE_PACKAGING/$MOD_NAME" &&
git log $PKG_TAG --pretty=oneline . | wc -l)
if [ -n "$REL_SUFFIX" ]; then
PKG_REL="${PKG_REL}${REL_SUFFIX}"
fi
# TODO add relative patch count
ADD_REL=0
# Update changelog
REPO_DATE=`git log -1 --pretty=format:"%cd%n" --date=rfc`
GITUSER="$(git config --get user.name) <$(git config --get user.email)>"
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"
touch -d "$REPO_DATE" "$MOD_BUILD_PKGING_PATH/changelog"
fi
# prepare destination directory for building
export MOD_DEB_PATH="$TDE_DEBS_DIR/$MOD_NAME"
MOD_DEBSRC_PATH="$MOD_DEB_PATH/src"
recreate_folder "$MOD_DEB_PATH"
recreate_folder "$MOD_DEBSRC_PATH"
#----------------------------
# Apply pre-build hooks if present
#----------------------------
if [ -x "$HOOK_DIR/$MOD_NAME/pre_build.sh" ]; then
echo -e "${CYellow}> Applying pre-build hook${CNone}"
. "$HOOK_DIR/$MOD_NAME/pre_build.sh"
if [ $? -eq 0 ]; then
echo -e "> ${CBrown}Pre-build hook applied successfully${CNone}"
else
echo -e "> ${CLightBlue}Pre-build hook failed${CNone}"
fi
fi
#----------------------------
# Switch to 3.0(quilt) format
#----------------------------
# create orig tarball
cd "$MOD_BUILD_PATH"
MOD_BASENAME=`head -n 1 "$MOD_BUILD_PKGING_PATH/changelog" | sed -r "s/^([^ ]+).*/\1/"`
MOD_MAJOR_VER=`head -n 1 "$MOD_BUILD_PKGING_PATH/changelog" | sed -r "s/^[^ ]+ \(([^:]+:)?.*/\1/"`
MOD_UP_VER=`head -n 1 "$MOD_BUILD_PKGING_PATH/changelog" | sed -r "s/^[^ ]+ \(([^:]+:)?(.*+)-.*/\2/"`
MOD_DEB_VER=`head -n 1 "$MOD_BUILD_PKGING_PATH/changelog" | sed -r "s/^[^ ]+ \(.*+-([^\)]+).*/\1/"`
REPO_DATE=`dpkg-parsechangelog -l "$MOD_BUILD_PKGING_PATH/changelog" | sed -n -e 's|^Date: ||p'`
tar cJf "../${MOD_BASENAME}_${MOD_UP_VER}.orig.tar.xz" --exclude="debian" --exclude .git --exclude .gitmodules \
--mtime "$REPO_DATE" --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime .
touch -d "$REPO_DATE" "../${MOD_BASENAME}_${MOD_UP_VER}.orig.tar.xz"
# switch to quilt format
if [ -f "$MOD_BUILD_PKGING_PATH/source/format" ]; then
grep -q "(native)" "$MOD_BUILD_PKGING_PATH/source/format" && \
sed -i "s/(native)/(quilt)/" "$MOD_BUILD_PKGING_PATH/source/format"
else
[ -d "$MOD_BUILD_PKGING_PATH/source" ] || mkdir -p "$MOD_BUILD_PKGING_PATH/source"
echo "3.0 (quilt)" >"$MOD_BUILD_PKGING_PATH/source/format"
fi
# remove quilt references from rules file
grep -q "^include.*/usr/share/cdbs/1/rules/patchsys-quilt\.mk" "$MOD_BUILD_PKGING_PATH/rules" && \
sed -i "s/^\(include.*\/usr\/share\/cdbs\/1\/rules\/patchsys-quilt\.mk\)/#\1/" "$MOD_BUILD_PKGING_PATH/rules"
#----------------------------
# Enable debug mode if required
#----------------------------
if [ "$bool_DEBUG_MODE" = "y" ]; then
echo -e "${CBrown}Enable debug mode${CNone}"
sed -i "s/RelWithDebInfo/Debug/" "$MOD_BUILD_PKGING_PATH/rules"
fi
#----------------------------
# Exit if only preparation was required
#----------------------------
if [ "$bool_PREPARE_ONLY" = "y" ]; then
echo -e "${CBrown}Source code prepared for building${CNone}"
do_exit 0
fi
#----------------------------
# Build
#----------------------------
export BUILDING_LOG_FILE="$MOD_DEBSRC_PATH/__build__.log"
cd "$MOD_BUILD_PATH"
if [ "$bool_BUILD_LOCALLY" = "y" ]; then
## Build module locally
echo -e "${CYellow}> Building locally${CNone}"
eval dpkg-buildpackage -S $OPT_SIGN_PKG_LOCAL $OPT_SHOW_LOGS\"$BUILDING_LOG_FILE\"
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
else
## Build module in a clean chroot environment using pbuilder
$SUDO_CMD . "$SCRIPT_DIR/internals/_pbuilder.sh"
build_retval=$?
if [ "`whoami`" != "root" ]; then
cd "$MOD_DEB_PATH"
$SUDO_CMD chown -R `id -u -n`:`id -g -n` . &>/dev/null
cd "$MOD_BUILD_PATH/.."
$SUDO_CMD chown `id -u -n`:`id -g -n` *.dsc *.changes *.tar.xz *.tar.bz2 *.tar.gz *.buildinfo &>/dev/null
$SUDO_CMD chown `id -u -n`:`id -g -n` "$TDE_DEBS_DIR/Packages" &>/dev/null
cd "$MOD_BUILD_PATH"
fi
fi
if [ $build_retval -eq 0 ]; then
echo -e "${CLightGreen}> Building completed SUCCESSFULLY${CNone}"
else
echo -e "${CLightRed}> Building completed WITH ERRORS${CNone}"
fi
#----------------------------
# Apply post-build hooks if present
#----------------------------
if [ -x "$HOOK_DIR/$MOD_NAME/post_build.sh" ]; then
echo -e "${CYellow}> Applying post-build hook${CNone}"
. "$HOOK_DIR/$MOD_NAME/post_build.sh"
if [ $? -eq 0 ]; then
echo -e "${CBrown}Post-build hook applied successfully${CNone}"
else
echo -e "${CLightBlue}Post-build hook failed${CNone}"
fi
fi
#----------------------------
# Move compiled module files to destination folders
#----------------------------
if [ "$bool_BUILD_LOCALLY" = "y" ]; then
cd "$MOD_BUILD_PATH/.."
mv *.deb "$MOD_DEB_PATH" &>/dev/null
mv *.dsc *.changes *.tar.xz *.tar.bz2 *.tar.gz *.buildinfo "$MOD_DEBSRC_PATH" &>/dev/null
else
cd "$MOD_DEB_PATH"
mv *.dsc *.changes *.tar.xz *.tar.bz2 *.tar.gz *.buildinfo "$MOD_DEBSRC_PATH" &>/dev/null
cd "$MOD_BUILD_PATH/.."
mv *.dsc *.changes *.tar.xz *.tar.bz2 *.tar.gz *.buildinfo "$MOD_DEBSRC_PATH" &>/dev/null
fi
#----------------------------
# Removing leftover files
#----------------------------
cd "$MOD_BUILD_PATH/.."
rm *.deb *.dsc *.changes *.tar.xz *.tar.bz2 *.tar.gz *.log *.buildinfo &>/dev/null
cd "$MOD_DEB_PATH"
rm *.dsc *.changes *.tar.xz *.tar.bz2 *.tar.gz *.log *.buildinfo &>/dev/null
#----------------------------
# Building completed
#----------------------------
exec_time_stop $_BUILDMOD_TIMER_NUM "_BUILDMOD_TIME"
do_exit $build_retval

@ -1,55 +0,0 @@
#!/bin/bash
#
# Create/update TDE local debian repository
#
# Load common code and initialization
export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
. ${SCRIPT_DIR}/internals/_build_common.sh
init_common
#----------------------------
# Check command line arguments
parm_MAKE_BACKUP="n"
for arg in $@; do
if [ "$arg" = "-b" ]; then # backup old repository
parm_MAKE_BACKUP="y"
fi
done
#----------------------------
# Create/update TDE local debian repository
echo -e "${CLightCyan}#### TDE local repository creation begin ####${CNone}"
ARCH_PATH="dists/$DISTRO_NAME/main/binary-$ARCHITECTURE"
REPO_DIR="$TDE_DIR/$CFG_REPO_DIR"
REPO_DIR_BACKUP="$REPO_DIR.backup"
REPO_PKG_DIR="$REPO_DIR/$ARCH_PATH"
# Backup
if [ "$parm_MAKE_BACKUP" = "y" ] && [ -d "$REPO_DIR" ]; then
echo -e "${CYellow}> Backing up old repository${CNone}"
rm -R "$REPO_DIR_BACKUP" &>/dev/null
mv "$REPO_DIR" "$REPO_DIR_BACKUP" &>/dev/null
echo "Copy of the old repository available at \"$REPO_DIR_BACKUP\""
fi
# Create repository
echo -e "${CYellow}> Creating new repository${CNone}"
if [ -d "$REPO_DIR" ]; then
rm -R "$REPO_DIR" &>/dev/null
fi
mkdir -p "$REPO_PKG_DIR"
rsync -aHS --exclude="*/src/*.xz" --exclude="*/src/*.dsc" --exclude="*/src/*.changes" --exclude="*/src/*.buildinfo" --exclude="Packages*" "$TDE_DEBS_DIR/" "$REPO_PKG_DIR/"
# 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"
#----------------------------
# Repository created
echo -e "${CLightGreen}#### TDE local repository created ####${CNone}"
cd "$SCRIPT_DIR"
exit 0

@ -1,65 +0,0 @@
diff -urN kaffeine/kaffeine/src/kaffeine.cpp kaffeine.new/kaffeine/src/kaffeine.cpp
--- kaffeine/kaffeine/src/kaffeine.cpp 2013-03-02 15:47:14.000000000 -0600
+++ kaffeine.new/kaffeine/src/kaffeine.cpp 2013-11-24 11:39:09.809430631 -0600
@@ -683,7 +683,9 @@
m_autoResizeTriple = new TDEToggleAction(i18n("Triple Size"), 0, ALT|Key_3, TQT_TQOBJECT(this), TQT_SLOT(slotAutoresizeTriple()), actionCollection(), "view_auto_resize_triple");
m_playersMenu = new TDEActionMenu(i18n("&Player Engine"), actionCollection(), "options_player");
- KStdAction::keyBindings(TQT_TQOBJECT(this), TQT_SLOT(optionsConfigureKeys()), actionCollection());
+ m_instWizard = new TDEAction(i18n("Installation &Wizard"), 0, 0, TQT_TQOBJECT(this), TQT_SLOT(slotInstWizard()), actionCollection(), "inst_wizard");
+
+ KStdAction::keyBindings(TQT_TQOBJECT(this), TQT_SLOT(optionsConfigureKeys()), actionCollection());
KStdAction::configureToolbars(TQT_TQOBJECT(this), TQT_SLOT(optionsConfigureToolbars()), actionCollection());
KStdAction::preferences(TQT_TQOBJECT(this), TQT_SLOT(slotPreferences()), actionCollection(), "options_preferences");
@@ -1619,6 +1621,18 @@
mute();
}
+void Kaffeine::slotInstWizard()
+{
+ TQString stamp = locateLocal("appdata", "wizard_stamp_v0.7.1");
+ InstWizard::showWizard();
+
+ TDEProcess process;
+ process << "touch" << stamp;
+ process.start(TDEProcess::Block, TDEProcess::Stderr);
+ process.clearArguments();
+}
+
+
/********* DCOP INTERFACE *********/
void Kaffeine::openURL(TQString url)
diff -urN kaffeine/kaffeine/src/kaffeine.h kaffeine.new/kaffeine/src/kaffeine.h
--- kaffeine/kaffeine/src/kaffeine.h 2013-03-02 15:47:14.000000000 -0600
+++ kaffeine.new/kaffeine/src/kaffeine.h 2013-11-24 11:09:17.455756279 -0600
@@ -193,6 +193,7 @@
void slotDvbClient(bool,const TQString&,int,int,const TQString&);
void slotNumKeyInput( int );
void slotDVBNextBack( int );
+ void slotInstWizard();
private:
void autoresize();
@@ -258,7 +259,8 @@
TDEToggleAction* m_autoResizeTriple;
TDEToggleAction* m_originalAspect;
TDEToggleAction* m_toggleLayout;
- TDEActionMenu* m_playersMenu;
+ TDEActionMenu* m_playersMenu;
+ TDEAction* m_instWizard;
TDEToggleAction* m_sleepAfterPlay;
TDEToggleAction* m_quitAfterPlay;
TDEToggleAction* m_quitAfterPlaylist;
diff -urN kaffeine/kaffeine/src/kaffeineui.rc kaffeine.new/kaffeine/src/kaffeineui.rc
--- kaffeine/kaffeine/src/kaffeineui.rc 2012-09-14 17:39:52.000000000 -0500
+++ kaffeine.new/kaffeine/src/kaffeineui.rc 2013-11-24 11:10:15.335565312 -0600
@@ -34,6 +34,7 @@
<Merge/>
<Menu noMerge="1" name="settings"><text>&amp;Settings</text>
<Action name="options_player"/>
+ <Action name="inst_wizard"/>
<Separator/>
<Merge name="StandardToolBarMenuHandler"/>
<Action name="options_show_statusbar"/>

@ -1,13 +0,0 @@
#!/bin/bash
CURR_DIR=$PWD
cd "$PKG_BUILD_PATH"
# Apply patches
if [ "$bool_COPY_PKG_SRC" = "y" ]; then
echo -e "${CLightPurple}Applying Kaffeine wizard patch${CNone}"
patch -p2 < "$HOOK_DIR/$PKG_NAME/kaffeine-wizard.diff"
fi
cd "$CURR_DIR"
return 0

@ -1,37 +0,0 @@
diff -Nur ori/tdebase/kate/app/katedocmanager.cpp new/tdebase/kate/app/katedocmanager.cpp
--- ori/tdebase/kate/app/katedocmanager.cpp 2013-07-27 02:36:57.000000000 +0900
+++ new/tdebase/kate/app/katedocmanager.cpp 2013-12-05 15:56:20.311928016 +0900
@@ -381,7 +381,6 @@
return modified;
}
-
bool KateDocManager::queryCloseDocuments(KateMainWindow *w)
{
uint docCount = m_docList.count();
@@ -436,12 +435,22 @@
return true;
}
-
void KateDocManager::saveAll()
{
for (TQPtrListIterator<Kate::Document> it(m_docList); it.current(); ++it)
- if ( it.current()->isModified() && it.current()->views().count() )
- ((Kate::View*)it.current()->views().first())->save();
+ {
+ if (it.current()->views().count())
+ {
+ if (it.current()->url().isEmpty())
+ {
+ ((Kate::View*)it.current()->views().first())->saveAs();
+ }
+ else if (it.current()->isModified())
+ {
+ ((Kate::View*)it.current()->views().first())->save();
+ }
+ }
+ }
}
void KateDocManager::saveDocumentList (TDEConfig* config)

@ -1,16 +0,0 @@
#!/bin/bash
CURR_DIR=$PWD
cd "$PKG_BUILD_PATH"
# Apply patches
if [ "$bool_COPY_PKG_SRC" = "y" ]; then
echo -e "${CLightPurple}Applying Kate save all patch${CNone}"
patch -p2 < "$HOOK_DIR/$PKG_NAME/018_kate_save_all.diff"
echo -e "${CLightPurple}Applying SAK patch${CNone}"
patch -p1 < "$HOOK_DIR/$PKG_NAME/tdebase-usesak.diff"
fi
cd "$CURR_DIR"
return 0

@ -1,15 +0,0 @@
diff -urNa tdebase/tdm/config.def tdebase.new/tdm/config.def
--- tdebase/tdm/config.def 2013-09-12 11:51:29.000000000 -0500
+++ tdebase.new/tdm/config.def 2014-02-10 06:29:38.537806886 -0600
@@ -2010,9 +2010,9 @@
Key: UseSAK
Type: bool
-Default: true
+Default: false
User: greeter
-Instance: #*/!
+Instance: #:*/false
Comment:
SAK
Description:

@ -1,64 +0,0 @@
diff -Nur ori/tdelibs/tdeutils/kfinddialog.cpp new/tdelibs/tdeutils/kfinddialog.cpp
--- ori/tdelibs/tdeutils/kfinddialog.cpp 2014-02-05 16:54:13.852605699 +0900
+++ new/tdelibs/tdeutils/kfinddialog.cpp 2014-02-11 18:16:55.292214876 +0900
@@ -149,8 +149,9 @@
m_replace->setMaxCount(10);
m_replace->setDuplicatesEnabled(false);
m_backRef = new TQCheckBox(i18n("Use p&laceholders"), m_replaceGrp);
+ m_backRef->setEnabled(m_regExp->isChecked());
m_backRefItem = new TQPushButton(i18n("Insert Place&holder"), m_replaceGrp);
- m_backRefItem->setEnabled(false);
+ m_backRefItem->setEnabled(m_regExp->isChecked() && m_backRef->isChecked());
m_replaceLayout->addWidget(m_replaceLabel, 0, 0);
m_replaceLayout->addMultiCellWidget(m_replace, 1, 1, 0, 1);
@@ -193,8 +194,8 @@
// signals and slots connections
connect(m_selectedText, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotSelectedTextToggled(bool)));
- connect(m_regExp, TQT_SIGNAL(toggled(bool)), m_regExpItem, TQT_SLOT(setEnabled(bool)));
- connect(m_backRef, TQT_SIGNAL(toggled(bool)), m_backRefItem, TQT_SLOT(setEnabled(bool)));
+ connect(m_regExp, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotRegexCheckBoxToggled(bool)));
+ connect(m_backRef, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotPlaceholdersCheckBoxToggled(bool)));
connect(m_regExpItem, TQT_SIGNAL(clicked()), this, TQT_SLOT(showPatterns()));
connect(m_backRefItem, TQT_SIGNAL(clicked()), this, TQT_SLOT(showPlaceholders()));
@@ -276,11 +277,23 @@
"Ask before replacing each match found.") );
}
-void KFindDialog::textSearchChanged( const TQString & text)
+void KFindDialog::textSearchChanged(const TQString & text)
{
enableButtonOK( !text.isEmpty() );
}
+void KFindDialog::slotRegexCheckBoxToggled(bool checked)
+{
+ m_regExpItem->setEnabled(checked);
+ m_backRef->setEnabled(checked);
+ m_backRefItem->setEnabled(checked && m_backRef->isChecked());
+}
+
+void KFindDialog::slotPlaceholdersCheckBoxToggled(bool checked)
+{
+ m_backRefItem->setEnabled(checked && m_regExp->isChecked());
+}
+
void KFindDialog::showEvent( TQShowEvent *e )
{
if ( !d->m_initialShowDone )
diff -Nur ori/tdelibs/tdeutils/kfinddialog.h new/tdelibs/tdeutils/kfinddialog.h
--- ori/tdelibs/tdeutils/kfinddialog.h 2014-02-05 16:54:13.852605699 +0900
+++ new/tdelibs/tdeutils/kfinddialog.h 2014-02-11 18:16:57.876214916 +0900
@@ -250,7 +250,9 @@
void slotSelectedTextToggled(bool);
void showPatterns();
void showPlaceholders();
- void textSearchChanged( const TQString &);
+ void textSearchChanged(const TQString &);
+ void slotRegexCheckBoxToggled(bool checked);
+ void slotPlaceholdersCheckBoxToggled(bool checked);
protected:
virtual void showEvent ( TQShowEvent * );

@ -1,13 +0,0 @@
#!/bin/bash
CURR_DIR=$PWD
cd "$PKG_BUILD_PATH"
# Apply patches
if [ "$bool_COPY_PKG_SRC" = "y" ]; then
echo -e "${CLightPurple}Applying kfinddialog placeholder patch${CNone}"
patch -p2 < "$HOOK_DIR/$PKG_NAME/038_placeholder.diff"
fi
cd "$CURR_DIR"
return 0

@ -1,18 +0,0 @@
#!/bin/sh
# Color table
CPurple='\e[0;35m'
CWhite='\e[1;37m'
CNone='\e[0m'
# Invoke shell if build fails.
apt-get install -y --force-yes vim less bash mc ack
cd /tmp/buildd/*/debian/..
echo "${CPurple}---------------------------------------------------------${CNone}" >/dev/tty
echo "${CPurple} !!! Build FAILED !!! ${CNone}" >/dev/tty
echo "${CPurple} You are now inside a shell in the building environment. ${CNone}" >/dev/tty
echo "${CWhite} mc, vim, less, ack${CPurple} are available for your convenience. ${CNone}" >/dev/tty
echo "${CPurple} Type ${CWhite}exit${CPurple} to leave the shell when you are done. ${CNone}" >/dev/tty
echo "${CPurple}---------------------------------------------------------${CNone}" >/dev/tty
/bin/bash </dev/tty >/dev/tty 2>/dev/tty

@ -1,270 +0,0 @@
#!/bin/bash
set -a
#----------------------------
# Color table
# Black 0;30 Dark Gray 1;30
# Blue 0;34 Light Blue 1;34
# Green 0;32 Light Green 1;32
# Cyan 0;36 Light Cyan 1;36
# Red 0;31 Light Red 1;31
# Purple 0;35 Light Purple 1;35
# Brown 0;33 Yellow 1;33
# Light Gray 0;37 White 1;37
# No Color 0
#----------------------------
CBlack='\e[0;30m'
CDarkGray='\e[1;30m'
CBlue='\e[0;34m'
CLightBlue='\e[1;34m'
CGreen='\e[0;32m'
CLightGreen='\e[1;32m'
CCyan='\e[0;36m'
CLightCyan='\e[1;36m'
CRed='\e[0;31m'
CLightRed='\e[1;31m'
CPurple='\e[0;35m'
CLightPurple='\e[1;35m'
CBrown='\e[0;33m'
CYellow='\e[1;33m'
CGray='\e[0;37m'
CWhite='\e[1;37m'
CNone='\e[0m'
set +a
#----------------------------
# Echo a colored string to tty and tee-append it to a file without color codes
# Parameters:
# $1 - string to echo
# $2 - log filename
# $3 - if "y" create a new file.
function echo_and_tee()
{
if [ "$3" = "y" ]; then
echo -e "$1" | tee /dev/tty | sed -r "s|\x1b\[[0-9]+(;[0-9]+)?m||g" >"$2"
else
echo -e "$1" | tee /dev/tty | sed -r "s|\x1b\[[0-9]+(;[0-9]+)?m||g" >>"$2"
fi
}
#----------------------------
function _set_path_variables()
{
# Set useful path variables
set -a
#-- get desired distribution and architecture
[[ "$DISTRO" = "" ]] && DISTRO=$(lsb_release -is | sed -e 's/\(.*\)/\L\1/')
[[ "$DISTRO_NAME" = "" ]] && DISTRO_NAME=$(lsb_release -cs | sed -e 's/\(.*\)/\L\1/')
[[ "$ARCHITECTURE" = "" ]] && ARCHITECTURE=$(dpkg --print-architecture)
REPO_DIR="$TDE_DIR/$CFG_GIT_DIR"
if [ "${USE_GIT_WORKTREES}" = "y" ]; then
REPOS_DIR="$TDE_DIR/$CFG_GIT_DIR/repos"
WORKTREES_DIR="$TDE_DIR/$CFG_GIT_DIR/worktrees"
REPO_TDE="$WORKTREES_DIR/master/tde"
REPO_EXTRA_DEPENDENCIES="$WORKTREES_DIR/master/$CFG_EXTRA_DEPS_DIR"
else
REPO_TDE="$TDE_DIR/$CFG_GIT_DIR/tde"
REPO_EXTRA_DEPENDENCIES="$TDE_DIR/$CFG_GIT_DIR/$CFG_EXTRA_DEPS_DIR"
fi
REPO_TDE_MAIN="$REPO_TDE/main"
REPO_TDE_PACKAGING="$REPO_TDE/packaging/$DISTRO/$DISTRO_NAME"
BUILD_DIR="$TDE_DIR/$CFG_BUILD_DIR"
TDE_BUILD_DIR="$BUILD_DIR/build"
TDE_DEBS_DIR="$BUILD_DIR/debs"
HOOK_DIR="$TDE_DIR/$CFG_GIT_DIR/$CFG_HOOKS_DIR"
SCRIPT_LOG_DIR="$TDE_DIR/$CFG_SCRIPT_LOG_DIR"
LOG_BUILD_RESULT_FILENAME="$SCRIPT_LOG_DIR/build_result.log" # Common build logfile
LOG_UPDATE_REPO_FILENAME="$SCRIPT_LOG_DIR/update_repo.log" # Update repository logfile
set +a
}
#----------------------------
function init_common()
{
local CURR_DIR=`pwd`
# Check script folder
export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
# Prevent the script to be run from TDE packaging repo
REPO_URL=$(git config --get remote.origin.url 2>/dev/null)
if [ ! -z "$REPO_URL" ] && [ -z "${REPO_URL##*tde/packaging}" ]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo "This script cannot be run from the TDE packaging repository."
echo "Please follow the instructions provided, then rerun this script."
exit 1
fi
# Read config settings
CFG_FILE=$SCRIPT_DIR/_config.sh
if [ -f "$CFG_FILE" ]; then
. "$CFG_FILE"
_set_path_variables
else
echo -e "${CLightRed} --- NOTE ---${CNone}"
echo -e "Creating TDE build configuration file from template as ${CLightPurple}$CFG_FILE${CNone}."
echo "Please check and modify as required, then rerun this script."
cp "$SCRIPT_DIR/internals/_config_template.sh" "$CFG_FILE"
exit 2
fi
# Make sure we have selected a supported distribution
DISTROS_FILE="$SCRIPT_DIR/internals/distro_list.txt"
if [ ! -f "$DISTROS_FILE" ]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo "Could not find the list of supported distributions."
echo -e "Please check the file ${CLightPurple}$DISTROS_FILE${CNone} exists, then rerun this script."
exit 3
fi
# -- Need to use a "here string" otherwise if the DISTRO_FOUND value is modified
# -- inside the while loop, this would not remember after the loop.
DISTRO_FOUND="n"
OLD_IFS=$IFS && IFS=$' \t'
while read l_distro l_version l_name l_rel_suffix l_packaging_path; do
if [ "$l_distro" = "$DISTRO" -a "$l_name" = "$DISTRO_NAME" ]; then
DISTRO_FOUND="y"
l_rel_suffix=`echo "$l_rel_suffix" | perl -pe "s|^[\"-]?(.*?)[\"]?$|\1|g"`
l_packaging_path=`echo "$l_packaging_path" | perl -pe "s|^[\"-]?(.*?)[\"]?$|\1|g"`
export DISTRO_VERSION="$l_version"
export REL_SUFFIX="$l_rel_suffix"
if [[ ! -z "$l_packaging_path" ]]; then
REPO_TDE_PACKAGING="$TDE_DIR/$CFG_GIT_DIR/tde/packaging/$l_packaging_path"
fi
break
fi
done <<< $(sed -n "s|\(^[\s]*[^#\s]\+.*$\)|\1|p" < $DISTROS_FILE)
IFS=$OLD_IFS
if [ "$DISTRO_FOUND" != "y" ]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo -e "The specified distribution (${CYellow}$DISTRO $DISTRO_NAME${CNone}) is not supported."
echo -e "Something is wrong with your configuration (${CLightPurple}$CFG_FILE${CNone})"
echo -e "or with the list of supported distributions (${CLightPurple}$DISTROS_FILE${CNone})."
echo -e "Please check the ${CLightCyan}DISTRO${CNone} and ${CLightCyan}DISTRO_NAME${CNone} variables, then rerun this script."
exit 4
fi
# TDE root folder must exist
if [ ! -d "$TDE_DIR" ]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo "A valid TDE root folder could not be located. Something is wrong with your configuration"
echo -e "in the config file ${CLightPurple}$CFG_FILE${CNone}"
echo -e "Please check and modify the ${CLightCyan}TDE_DIR${CNone} variable as required, then rerun this script."
exit 5
fi
# Search for TDE repo
found=0
tde_config_file=""
if [ "${USE_GIT_WORKTREES}" = "y" ]; then
tde_config_file="$REPOS_DIR/tde.git/config"
else
tde_config_file="${REPO_TDE}/.git/config"
fi
[ -f "${tde_config_file}" ] && [ "`grep \"\\[core\\]\" ${tde_config_file}`" = "[core]" ] && found=1
if [[ found -ne 1 ]]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo "The main TDE repo could not be located. Something is wrong with your configuration"
echo -e "in the config file ${CLightPurple}$CFG_FILE${CNone}"
echo -e "Please check and modify the ${CLightCyan}TDE_DIR${CNone} and ${CLightCyan}USE_GIT_WORKTREES${CNone} variables as required."
echo -e "Then rerun this script."
exit 6
fi
# Check branch configuration
# - branch existance
UPDATE_BRANCHES="${OVERRIDE_UPDATE_BRANCHES:-$UPDATE_BRANCHES}"
if [ "${USE_GIT_WORKTREES}" = "y" ]; then
cd "$REPOS_DIR/tde.git"
else
cd "$REPO_TDE"
fi
BRANCHES=()
local REMOTE_BRANCHES=(`git branch --remote | grep -v "HEAD" | sed "s|origin/||g"`)
for br in $UPDATE_BRANCHES; do
branch=`echo "$br" | sed -e "s|^[[:space:]]*||" -e "s|[[:space:]]*$||"`
found=0
for rem_br in "${REMOTE_BRANCHES[@]}"; do
if [[ "$rem_br" == "$branch" ]]; then
found=1
break
fi
done
if [[ found -eq 1 ]]; then
BRANCHES+=($branch)
else
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo -e "Invalid branch specified (${CYellow}$branch${CNone}). Something is wrong with your configuration"
echo -e "in the config file ${CLightPurple}$CFG_FILE${CNone}"
echo -e "Please check and modify the ${CLightCyan}UPDATE_BRANCHES${CNone} variable as required, then rerun this script."
exit 8
fi
done
if [ ${#BRANCHES[@]} -eq 0 ]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo -e "No valid branch was specified. Something is wrong with your configuration"
echo -e "in the config file ${CLightPurple}$CFG_FILE${CNone}"
echo -e "Please check and modify the ${CLightCyan}UPDATE_BRANCHES${CNone} variable as required, then rerun this script."
exit 9
fi
export BRANCHES
# - default branch
DEFAULT_REPO_BRANCH=${OVERRIDE_DEFAULT_REPO_BRANCH:-"$DEFAULT_REPO_BRANCH"}
found=0
for branch in "${BRANCHES[@]}"; do
if [[ "$DEFAULT_REPO_BRANCH" == "$branch" ]]; then
found=1
break
fi
done
if [[ found -ne 1 ]]; then
echo -e "${CLightRed} --- ERROR ---${CNone}"
echo -e "Invalid default repo branch specified (${CYellow}$DEFAULT_REPO_BRANCH${CNone}). Something is wrong with your configuration"
echo -e "in the config file ${CLightPurple}$CFG_FILE${CNone}"
echo -e "Please check and modify the ${CLightCyan}DEFAULT_REPO_BRANCH${CNone} variable as required, then rerun this script."
exit 10
fi
cd "${CURR_DIR}"
}
#----------------------------
# Save execution start time
# Parameters:
# $1 - timer number
function exec_time_start()
{
_ET_start_var="_ET_start_$1"
eval "$_ET_start_var=`date +%s.%N`"
}
#----------------------------
# Save execution stop time and set $2 to the execution time
# in the format: dd/hh:mm:ss.mmm
# Parameters:
# $1 - timer number
# $2 - result variable name
function exec_time_stop()
{
_ET_start_var="_ET_start_$1"
_ET_stop_var="_ET_stop_$1"
eval "$_ET_stop_var=`date +%s.%N`"
_ET_diff=`echo "${!_ET_stop_var} - ${!_ET_start_var}" | bc`
_ET_days=`echo "$_ET_diff/86400" | bc`
_ET_diff_day=`echo "$_ET_diff-86400*$_ET_days" | bc`
_ET_hours=`echo "$_ET_diff_day/3600" | bc`
_ET_diff_hour=`echo "$_ET_diff_day-3600*$_ET_hours" | bc`
_ET_mins=`echo "$_ET_diff_hour/60" | bc`
_ET_secs=`echo "$_ET_diff_hour-60*$_ET_mins" | bc`
local _resultvar=$2
eval "$_resultvar=`printf \"%02d/%02d:%02d:%06.3f\" $_ET_days $_ET_hours $_ET_mins $_ET_secs`"
}

@ -1,76 +0,0 @@
#!/bin/bash
# Load common code and initialization
export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
. ${SCRIPT_DIR}/internals/_build_common.sh
init_common
_BUILDSET_TIMER=1
_BUILDSET_TIME="--/--:--:--:---"
parm_SKIP_FETCH="n" # if "y" skips N packages from the list
parm_SKIP_N=0 # this argument represents the number of packages to skip
SKIP_cnt=0
#----------------------------
# do_exit for set building
function do_exit()
{
cd "$SCRIPT_DIR"
if [ $1 -eq 0 ]; then
echo -e "${CGray}#### Building process for set \"${0##*/}\" completed ####${CNone}"
else
echo -e "${CGray}#### Building process for set \"${0##*/}\" interrupted ($1) ####${CNone}"
fi
exit $1
}
#----------------------------
function set_log_start()
{
echo -e "${CGray}#### Starting building process for set \"${0##*/}\" ####${CNone}"
echo
echo "---------- ${0##*/} ----------" >>"$LOG_BUILD_RESULT_FILENAME"
exec_time_start $_BUILDSET_TIMER
}
#----------------------------
function set_log_end()
{
exec_time_stop $_BUILDSET_TIMER "_BUILDSET_TIME"
echo " [$_BUILDSET_TIME] SET ${0##*/}" >>"$LOG_BUILD_RESULT_FILENAME"
echo >>"$LOG_BUILD_RESULT_FILENAME"
do_exit 0
}
#----------------------------
function build_module()
{
if [ $parm_SKIP_N -gt 0 -a $SKIP_cnt -lt $parm_SKIP_N ]; then
SKIP_cnt=$((SKIP_cnt+1))
else
./build_module.sh ${BUILD_DEFAULT_OPTIONS} "$@"
echo
fi
}
#----------------------------
# Check command line arguments
#----------------------------
for arg in $@; do
if [ "$parm_SKIP_FETCH" = "y" ]; then
parm_SKIP_N=$arg
parm_SKIP_FETCH="n"BUILD_DEFAULT_OPTIONS
elif [ "$arg" = "-s" ]; then # skip first N packages
parm_SKIP_FETCH="y"
fi
done
if [ "$parm_SKIP_FETCH" = "y" ]; then
echo "Invalid command line arguments ($@)"
do_exit 3
fi

@ -1,34 +0,0 @@
#!/bin/bash
set -a
#----------------------------
# Repo information
#----------------------------
TDE_DIR="" # TDE root folder
UPDATE_BRANCHES="master" # Space separated list. Available choices: master, r14.0.x
DEFAULT_REPO_BRANCH="master" # After update in completed, switch repo to this branch. Must be
# one of the branches specified in UPDATE_BRANCHES
#----------------------------
# Build information
#----------------------------
TDE_RELEASE="14.1.0" # TDE release number
DISTRO="" # Distro family (leave empty for auto-detection). For ex. debian
DISTRO_NAME="" # Distro name of specific version (leave empty for auto-detection). For ex. buster
ARCHITECTURE="" # Build for this architecture (leave empty for auto-detection). For ex. amd64
USE_PREBUILD_EXTRA_DEPS="y" # If == "y", use pre-built extra dependency packages
BUILD_DEFAULT_OPTIONS="-g -lr" # Default building options (pbuilder)
GPG_SIGN_KEYID="" # Use this GPG key to sign packages. If null, packages will not be signed
#----------------------------
# Base directories
#----------------------------
CFG_SCRIPT_LOG_DIR="0_logs"
CFG_GIT_DIR="1_git"
CFG_BUILD_DIR="2_build"
CFG_REPO_DIR="3_repo"
CFG_EXTRA_DEPS_DIR="edeps" # Relative to CFG_GIT_DIR folder. Only required if USE_PREBUILD_EXTRA_DEPS != "y"
CFG_HOOKS_DIR="hooks" # Relative to CFG_GIT_DIR folder
set +a

@ -1,105 +0,0 @@
#!/bin/bash
function run_pdebuild()
{
# pbuilder absolute paths
PBUILDER_HOOK_DIR="/var/cache/pbuilder/hooks"
PBUILDER_SHELL_HOOK_TEMPLATE="$SCRIPT_DIR/internals/C10shell"
PBUILDER_SHELL_HOOK="$PBUILDER_HOOK_DIR/C10shell"
PBUILDER_DEPS_HOOK="$PBUILDER_HOOK_DIR/D05deps"
# Sign packages optino
OPT_SIGN_PKG_PBUILDER=""
if [ ! -z "$GPG_SIGN_KEYID" ]; then
OPT_SIGN_PKG_LOCAL="-k$GPG_SIGN_KEYID"
OPT_SIGN_PKG_PBUILDER="--auto-debsign --debsign-k $GPG_SIGN_KEYID"
fi
## Build module in a clean chroot environment using pbuilder
# Install/remove shell hook
if [ ! -d "$PBUILDER_HOOK_DIR" ]; then
mkdir -p "$PBUILDER_HOOK_DIR"
fi
if [ "$bool_SHELL_HOOK" = "y" ]; then
cp "$PBUILDER_SHELL_HOOK_TEMPLATE" "$PBUILDER_SHELL_HOOK"
chmod a+x "$PBUILDER_SHELL_HOOK"
else
if [ -x "$PBUILDER_SHELL_HOOK" ]; then
rm "$PBUILDER_SHELL_HOOK"
fi
fi
# Build using pbuilder
echo -e "${CYellow}> Building using pbuilder${CNone}"
# Create pbuilder hook to make sure all available packages are scanned
# Store any existing D05 hook as a temporary file, this will be reinstated at the end
cat <<END_D05_01 > "$PBUILDER_DEPS_HOOK"
#!/bin/sh
(cd "$TDE_DEBS_DIR"; apt-ftparchive packages . > Packages)
echo "deb [trusted=yes] file:$TDE_DEBS_DIR ./" >> /etc/apt/sources.list
END_D05_01
if [[ "$USE_PREBUILD_EXTRA_DEPS" = "y" ]]; then
# Get building branch from .tdescminfo file
if [[ -f "$MOD_BUILD_PATH/.tdescminfo" ]]; then
BUILD_BRANCH=`sed -n -r "s/^Revision: ([^-]+)-.*/\1/p" "$MOD_BUILD_PATH/.tdescminfo"`
bool_EDEPS_FOUND="n"
OLD_IFS=$IFS && IFS=$' \t'
while read l_branch l_repo l_component; do
if [ "$l_branch" = "$BUILD_BRANCH" ]; then
bool_EDEPS_FOUND="y"
cat <<END_D05_02 >> "$PBUILDER_DEPS_HOOK"
echo "deb [trusted=yes] $l_repo $DISTRO_NAME $l_component" >> /etc/apt/sources.list
END_D05_02
break
fi
done <<< $(cat "$SCRIPT_DIR/internals/extra_deps.txt" | grep -E "^[[:space:]]*[^#[:space:]]+[[:space:]]+[^[:space:]]+.*$")
if [ "$bool_EDEPS_FOUND" != "y" ]; then
# EDEPS repository not found, use default. This could happen when building from sub branches of the main package repo
while read l_branch l_repo l_component; do
if [ "$l_branch" = "default" ]; then
bool_EDEPS_FOUND="y"
cat <<END_D05_02 >> "$PBUILDER_DEPS_HOOK"
echo "deb [trusted=yes] $l_repo $DISTRO_NAME $l_component" >> /etc/apt/sources.list
END_D05_02
break
fi
done <<< $(cat "$SCRIPT_DIR/internals/extra_deps.txt" | grep -E "^[[:space:]]*[^#[:space:]]+[[:space:]]+[^[:space:]]+.*$")
fi
IFS=$OLD_IFS
fi
fi
cat <<END_D05_03 >> "$PBUILDER_DEPS_HOOK"
apt-get update
END_D05_03
chmod a+x "$PBUILDER_DEPS_HOOK"
# Build
OPT_BUILD_PARALLEL=""
if [ ${DEB_BUILD_PARALLEL+x} ]; then
OPT_BUILD_PARALLEL="DEB_BUILD_PARALLEL=$DEB_BUILD_PARALLEL"
fi
eval pdebuild $OPT_SIGN_PKG_PBUILDER \
--architecture $ARCHITECTURE \
--buildresult \"$MOD_DEB_PATH\" \
--pbuilderroot \"sudo $OPT_BUILD_PARALLEL DISTRO_NAME=$DISTRO_NAME ARCHITECTURE=$ARCHITECTURE\" \
--logfile \"$BUILDING_LOG_FILE\" \
-- \
--bindmounts \"$TDE_DEBS_DIR\" \
--hookdir \"$PBUILDER_HOOK_DIR\" \
$OPT_SHOW_LOGS\"$BUILDING_LOG_FILE\"
PBUILDER_RETVAL=$?
# Remove shell hook if it was installed before the build
if [ -x "$PBUILDER_SHELL_HOOK" ]; then
rm "$PBUILDER_SHELL_HOOK"
fi
# Remove deps hook
if [ -x "$PBUILDER_DEPS_HOOK" ]; then
rm "$PBUILDER_DEPS_HOOK"
fi
# Return pdebuild return value to calling function
return $PBUILDER_RETVAL
}
#----------------------------
# The actual code is inside a function to allow the pdebuild return value to be
# correctly passed back to the calling script in all cases (root and non root users)
run_pdebuild

@ -1,39 +0,0 @@
#
# List of supported distributions
#
# Format:
# distro name
# distro version number
# distro version name
# package suffix if required
# tde/packaging corresponding path if required
#
# debian
debian 9.0 stretch - -
debian 10.0 buster - -
debian 11.0 bullseye - -
debian 12.0 bookworm ~a -
debian 13.0 sid ~b -
# devuan
devuan 2.0 ascii - debian/stretch
devuan 3.0 beowulf - debian/buster
devuan 4.0 chimaera - debian/bullseye
devuan 5.0 daedalus ~a debian/bookwork
devuan 6.0 ceres ~b debian/sid
# raspbian
raspbian 9.0 raspbian-stretch - -
raspbian 10.0 raspbian-buster - -
raspbian 11.0 raspbian-bullseye - -
raspbian 12.0 raspbian-bookworm ~a -
# ubuntu
ubuntu 16.04 xenial - -
ubuntu 18.04 bionic - -
ubuntu 20.04 focal - -
ubuntu 20.10 groovy - -
ubuntu 21.04 hirsute - -
ubuntu 21.10 impish - -
ubuntu 22.04 jammy ~a -

@ -1,9 +0,0 @@
#!/bin/bash
# List of repositories for extra dependency packages.
# The "default" repo will be used in case a match can't be found.
EDEPS_REPO="
default http://mirror.ppa.trinitydesktop.org/trinity-testing deps
master http://mirror.ppa.trinitydesktop.org/trinity-testing deps
r14.0.x http://mirror.ppa.trinitydesktop.org/trinity-sb deps-r14
"

@ -1,513 +0,0 @@
#!/bin/bash
# Check command line arguments and set options
# Run before loading configuration, to allow branch overriding
flag_INCREMENTAL="n"
flag_VERBOSE_LOG="n"
flag_SWITCH_ONLY="n"
flag_SKIP_TAGS="n"
OVERRIDE_DEFAULT_REPO_BRANCH=""
for ((idx=1; idx<=$#; idx++)); do
arg="${!idx}"
if [ "$arg" = "-i" ]; then # continue from last updated module (Incremental)
flag_INCREMENTAL="y"
elif [ "$arg" = "-v" ]; then # display and log git command output (Verbose)
flag_VERBOSE_LOG="y"
elif [ "$arg" = "-ub" ]; then # branches to update (Update Branches)
((idx++))
OVERRIDE_UPDATE_BRANCHES="${!idx}"
[[ -z "$OVERRIDE_DEFAULT_REPO_BRANCH" ]] && OVERRIDE_DEFAULT_REPO_BRANCH="${!idx}"
elif [ "$arg" = "-db" ]; then # default branch after update (Default Branch)
((idx++))
if [[ "$flag_SWITCH_ONLY" != 'y' ]]; then
# '-db' is only used if no '-so' argument is specified. If '-so <branch>'
# is given, '-db <branch> is ignored
OVERRIDE_DEFAULT_REPO_BRANCH="${!idx}"
fi
elif [ "$arg" = "-so" ]; then # switch branch only (Switch Only)
flag_SWITCH_ONLY="y" && ((idx++))
if ! [[ "${!idx}" =~ ^- ]]; then
OVERRIDE_DEFAULT_REPO_BRANCH="${!idx}"
else
((idx--))
fi
fi
done
# Load common code
export SCRIPT_DIR=$(dirname $(readlink -f "$0"))
. ${SCRIPT_DIR}/internals/_build_common.sh
init_common
UPDATE_LOCK_FILENAME="/var/lock/TDE_update_repo_lock" # Lock file for incremental update
declare -A RESULT_STRINGS=(
[OK]="[ OK ]"
[FAIL]="[ FAIL ]"
[UPDATE]="[ UPDATE ]"
[SKIP]="[ SKIP ]"
[INV-OP]="[ INV-OP ]"
)
declare -A COLOR_STRINGS=(
[OK]="${CNone}"
[FAIL]="${CLightRed}"
[UPDATE]="${CLightGreen}"
[SKIP]="${CBrown}"
[INV-OP]="${CLightPurple}"
)
#----------------------------
# Update a given module from the upstream repo
# Parameters:
# $1 - module folder
# $2 - operation type
# $3 - branch to update
function _do_update()
{
local MOD_PATH=$1
local OP_TYPE=$2
local BRANCH=$3
local RESULT=""
local LINE_CTRL_SUFFIX=""
case "$OP_TYPE" in
"fetch")
if [[ -z `grep "^$BRANCH - $MOD_PATH$" "$UPDATE_LOCK_FILENAME"` ]]; then
cd "$MOD_PATH" &>/dev/null
eval git fetch --all --prune $GIT_NO_RECURSE_SUBMODULES $OPT_VERBOSE_LOG
if [ $? -eq 0 ]; then
RESULT="OK"
else
RESULT="FAIL"
fi
echo "$BRANCH - $MOD_PATH" >> "$UPDATE_LOCK_FILENAME"
else
RESULT="SKIP"
fi
;;
"update")
cd "$MOD_PATH" &>/dev/null
if [ $? -eq 0 ]; then
# Clean up any possible uncommitted changes
if [[ ! -z "`git status --porcelain $GIT_IGNORE_SUBMODULES`" ]]; then
git reset --hard HEAD &>/dev/null
git clean -dxff &>/dev/null
fi
# Make sure the local branch exists
if [[ -z `git branch | grep -E "\b$BRANCH\b"` ]]; then
eval git checkout -b \"$BRANCH\" \"origin/$BRANCH\" $OPT_VERBOSE_LOG
else
eval git checkout \"$BRANCH\" $OPT_VERBOSE_LOG
fi
# Make sure the local branch is a tracking branch
if [[ -z `git config branch."$BRANCH".remote` ]]; then
git branch -u "origin/$BRANCH" &>/dev/null #$
git reset --hard "origin/$BRANCH" &>/dev/null
fi
# Update
eval git reset --hard HEAD $OPT_VERBOSE_LOG
eval git clean -dxff $OPT_VERBOSE_LOG
if [[ $(git rev-parse HEAD) != $(git rev-parse "origin/$BRANCH") ]]; then
eval git rebase $OPT_VERBOSE_LOG
if [[ `git rev-parse HEAD` == `git rev-parse "origin/$BRANCH"` ]]; then
RESULT="UPDATE"
else
RESULT="FAIL"
fi
else
RESULT="OK"
fi
else
RESULT="FAIL"
fi
;;
"switch-to")
cd "$MOD_PATH" &>/dev/null
eval git checkout \"$BRANCH\" $OPT_VERBOSE_LOG
eval git reset --hard HEAD $OPT_VERBOSE_LOG
eval git clean -dxff $OPT_VERBOSE_LOG
if [[ ! -z `git branch -v | grep -E "^\*\s+$BRANCH"` ]]; then
RESULT="OK"
else
RESULT="FAIL"
fi
;;
*)
RESULT="INV-OP"
;;
esac
if [ "$RESULT" != "OK" -o "$flag_VERBOSE_LOG" = "y" ]; then
LINE_CTRL_SUFFIX="\n"
fi
echo -ne "\033[2K\r${COLOR_STRINGS[$RESULT]}${RESULT_STRINGS[$RESULT]} $MOD_PATH${CNone}$LINE_CTRL_SUFFIX"
echo "${RESULT_STRINGS[$RESULT]} $MOD_PATH" >> "$LOG_UPDATE_REPO_FILENAME"
}
#----------------------------
# Update a given module from the upstream repo
# Parameters:
# $1 - module folder and name
# $2 - operation type
# $3 - module url (for "add_repo")
# branch name (for other operations)
# $4 - parent module path (only for check_module operation)
# $5 - module string (only for check_module operation)
function _do_worktree_update()
{
local MOD_FULLPATH=$1
local MOD_NAME=`echo ${MOD_FULLPATH} | sed "s|^.*/\([^/]\+\)$|\1|"`
local OP_TYPE=$2
local MOD_REPO_PATH="${REPOS_DIR}/${MOD_NAME}.git"
local RESULT=""
local LINE_CTRL_SUFFIX=""
local LOCAL_BRANCHES
local REMOTE_BRANCHES
case "$OP_TYPE" in
"add_repo")
if [ -z "`grep \"^${MOD_REPO_PATH} - ADD REPO$\" \"${UPDATE_LOCK_FILENAME}\"`" ]; then
RESULT="OK"
if [ ! -d "${MOD_REPO_PATH}" ]; then
RESULT="UPDATE"
local MOD_URLNAME="$3"
[ -n "${MOD_URLNAME}" ] || MOD_URLNAME="${MOD_NAME}"
eval git clone --bare --config "remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*" \
"${ORIGIN_PATH}/${MOD_URLNAME}.git" "${MOD_REPO_PATH}" $OPT_VERBOSE_LOG || RESULT="FAIL"
fi
if [ "$RESULT" != "OK" -o "$flag_VERBOSE_LOG" = "y" ]; then
LINE_CTRL_SUFFIX="\n"
fi
echo -ne "\033[2K\r${COLOR_STRINGS[$RESULT]}${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - repo added${CNone}$LINE_CTRL_SUFFIX"
echo "${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - repo added" >> "$LOG_UPDATE_REPO_FILENAME"
#
echo "${MOD_REPO_PATH} - ADD REPO" >> "${UPDATE_LOCK_FILENAME}"
fi
;;
"fetch")
if [[ -z `grep "^${MOD_REPO_PATH} - FETCH$" "${UPDATE_LOCK_FILENAME}"` ]]; then
cd "${MOD_REPO_PATH}" &>/dev/null
RESULT="FAIL"
eval git fetch --all --prune $GIT_NO_RECURSE_SUBMODULES $OPT_VERBOSE_LOG &&
eval git worktree prune $OPT_VERBOSE_LOG && RESULT="OK"
if [ "$RESULT" != "OK" -o "$flag_VERBOSE_LOG" = "y" ]; then
LINE_CTRL_SUFFIX="\n"
fi
echo -ne "\033[2K\r${COLOR_STRINGS[$RESULT]}${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - fetched${CNone}$LINE_CTRL_SUFFIX"
echo "${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - fetched" >> "$LOG_UPDATE_REPO_FILENAME"
#
echo "${MOD_REPO_PATH} - FETCH" >> "${UPDATE_LOCK_FILENAME}"
fi
;;
"check_worktree")
# Check/add worktrees
LOCAL_BRANCHES=$3
cd "${MOD_REPO_PATH}" &>/dev/null
REMOTE_BRANCHES=(`git branch --remote | sed "s|origin/||g"`)
for LCL_BR in $LOCAL_BRANCHES; do
CURR_BR=`echo "$LCL_BR" | sed -e "s|^[[:space:]]*||" -e "s|[[:space:]]*$||"`
local WORK_PATH="${WORKTREES_DIR}/${CURR_BR}/${MOD_FULLPATH}"
for REM_BR in "${REMOTE_BRANCHES[@]}"; do
if [ "${REM_BR}" = "${CURR_BR}" -a -z "`grep \"^${MOD_FULLPATH} - ${CURR_BR} - ADD WORKTREE$\" \"${UPDATE_LOCK_FILENAME}\"`" ]; then
cd "${MOD_REPO_PATH}" &>/dev/null
if [[ -z `git worktree list | grep "\[${CURR_BR}\]"` ]]; then
RESULT="FAIL"
eval git worktree add "${WORK_PATH}" "origin/${CURR_BR}" $OPT_VERBOSE_LOG &&
cd "${WORK_PATH}" &>/dev/null &&
eval git checkout ${CURR_BR} $OPT_VERBOSE_LOG &&
eval git branch --set-upstream-to=origin/${CURR_BR} $OPT_VERBOSE_LOG && RESULT="UPDATE"
LINE_CTRL_SUFFIX=""
[ "$RESULT" != "OK" -o "$flag_VERBOSE_LOG" = "y" ] && LINE_CTRL_SUFFIX="\n"
echo -ne "\033[2K\r${COLOR_STRINGS[$RESULT]}${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - branch ${CURR_BR} - worktree added${CNone}$LINE_CTRL_SUFFIX"
echo "${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - branch ${CURR_BR} - worktree added" >> "$LOG_UPDATE_REPO_FILENAME"
fi
#
echo "${MOD_FULLPATH} - ${CURR_BR} - ADD WORKTREE" >> "${UPDATE_LOCK_FILENAME}"
break
fi
done
done
;;
"check_module")
# Make sure submodules are initialized and up to date if necessary
if [ -z "`grep \"^${MOD_FULLPATH} - ${CURR_BR} - CHECK MODULE$\" \"${UPDATE_LOCK_FILENAME}\"`" ]; then
local PARENT_PATH=$4
local SUBMOD_STR=$5
if [ -n "$PARENT_PATH" -a -n "$SUBMOD_STR" ]; then
# Only do this on a real submodule
RESULT="OK"
cd "$PARENT_PATH" &>/dev/null
git config submodule.$SUBMOD_STR.url "$MOD_REPO_PATH" &>/dev/null
if [[ -n "`git submodule status -- ${SUBMOD_STR} | grep "^-.*"`" ]]; then
RESULT="UPDATE"
eval git submodule init -- ${SUBMOD_STR} $OPT_VERBOSE_LOG || RESULT="FAIL"
fi
if [ "$RESULT" != "FAIL" -a ! -e "${SUBMOD_STR}/.git" ]; then
RESULT="UPDATE"
eval git submodule update -- ${SUBMOD_STR} $OPT_VERBOSE_LOG || RESULT="FAIL"
fi
LINE_CTRL_SUFFIX=""
[ "$RESULT" != "OK" -o "$flag_VERBOSE_LOG" = "y" ] && LINE_CTRL_SUFFIX="\n"
echo -ne "\033[2K\r${COLOR_STRINGS[$RESULT]}${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - module checked${CNone}$LINE_CTRL_SUFFIX"
echo "${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - module checked" >> "$LOG_UPDATE_REPO_FILENAME"
fi
#
echo "${MOD_FULLPATH} - ${CURR_BR} - CHECK MODULE" >> "${UPDATE_LOCK_FILENAME}"
fi
;;
"update")
LOCAL_BRANCHES=$3
REMOTE_BRANCHES=(`git branch --remote | sed "s|origin/||g"`)
for LCL_BR in $LOCAL_BRANCHES; do
CURR_BR=`echo "$LCL_BR" | sed -e "s|^[[:space:]]*||" -e "s|[[:space:]]*$||"`
for REM_BR in "${REMOTE_BRANCHES[@]}"; do
if [ "${REM_BR}" = "${CURR_BR}" -a -z "`grep \"^${MOD_FULLPATH} - ${CURR_BR} - WORKTREE UPDATED$\" \"${UPDATE_LOCK_FILENAME}\"`" ]; then
local WORK_PATH="${WORKTREES_DIR}/${CURR_BR}/${MOD_FULLPATH}"
RESULT="FAIL"
if [ -d ${WORK_PATH} ]; then
cd "${WORK_PATH}" &>/dev/null &&
# Clean up any possible uncommitted changes
if [[ ! -z "`git status --porcelain $GIT_IGNORE_SUBMODULES`" ]]; then
git reset --hard HEAD &>/dev/null
git clean -dxff &>/dev/null
fi
# Make sure the local branch is a tracking branch
if [[ -z `git config branch."${CURR_BR}".remote` ]]; then
git branch -u "origin/${CURR_BR}" &>/dev/null #$
git reset --hard "origin/${CURR_BR}" &>/dev/null
fi
# If this is a clone of a local repository, make sure to do a fetch
# operation first, otherwise this clone won't see the latest changes
if [ "`git config --get remote.origin.url`" = "${MOD_REPO_PATH}" ]; then
eval git fetch --all --prune $GIT_NO_RECURSE_SUBMODULES $OPT_VERBOSE_LOG
eval git worktree prune $OPT_VERBOSE_LOG
fi
# Update
eval git reset --hard HEAD $OPT_VERBOSE_LOG
eval git clean -dxff $OPT_VERBOSE_LOG
eval git checkout "${CURR_BR}" $OPT_VERBOSE_LOG
if [[ $(git rev-parse HEAD) != $(git rev-parse "origin/${CURR_BR}") ]]; then
eval git rebase $OPT_VERBOSE_LOG
if [[ `git rev-parse HEAD` == `git rev-parse "origin/${CURR_BR}"` ]]; then
RESULT="UPDATE"
fi
else
RESULT="OK"
fi
fi
LINE_CTRL_SUFFIX=""
[ "$RESULT" != "OK" -o "$flag_VERBOSE_LOG" = "y" ] && LINE_CTRL_SUFFIX="\n"
echo -ne "\033[2K\r${COLOR_STRINGS[$RESULT]}${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - branch ${CURR_BR} - worktree updated${CNone}$LINE_CTRL_SUFFIX"
echo "${RESULT_STRINGS[$RESULT]} ${MOD_NAME} - branch ${CURR_BR} - worktree updated" >> "$LOG_UPDATE_REPO_FILENAME"
echo "${MOD_FULLPATH} - ${CURR_BR} - WORKTREE UPDATED" >> "${UPDATE_LOCK_FILENAME}"
break
fi
done
done
;;
*)
RESULT="INV-OP"
;;
esac
}
#----------------------------
# Update a given module and all submodules from the upstream repo
# Parameters:
# $1 - module folder
# $2 - operation type
# $3 - branch to update
function _update_module()
{
local MOD_PATH=$1
local OP_TYPE=$2
local BRANCH=$3
# Current module
_do_update "$@"
# Submodules
local SUBMOD_LIST="$MOD_PATH/.gitmodules"
if [[ -e "$SUBMOD_LIST" ]]; then
sed -n "s|^\[submodule \"\([^\"]*\)\"\]$|\1|p" <$SUBMOD_LIST |\
while read -r SUBMOD_STRING; do
cd "$MOD_PATH" &>/dev/null
if [[ -z "`git config --get submodule.$SUBMOD_STRING.url`" ]]; then
eval git submodule init -- \"$SUBMOD_STRING\" $OPT_VERBOSE_LOG
fi
if [[ ! -e "$MOD_PATH/$SUBMOD_STRING/.git" ]]; then
eval git submodule update -- \"$SUBMOD_STRING\" $OPT_VERBOSE_LOG
fi
_update_module "$MOD_PATH/$SUBMOD_STRING" "$OP_TYPE" "$BRANCH"
done
fi
}
#----------------------------
# Update a given module and all submodules from the upstream repo
# Parameters:
# $1 - module folder and name (excluding base repo part)
# $2 - list of branches to update
# $3 - parent module path
# $4 - module substring relative to parent
function _update_worktree_module()
{
local MOD_FULLPATH=$1
local MOD_NAME=`echo ${MOD_FULLPATH} | sed "s|^.*/\([^/]\+\)$|\1|"`
if [ -n "${MOD_FULLPATH}" -a -n "${MOD_NAME}" ]; then
local BRANCH_LIST=$2
[ -n "${BRANCH_LIST}" ] || BRANCH_LIST="${UPDATE_BRANCHES}"
# Current module
_do_worktree_update "${MOD_FULLPATH}" "fetch"
_do_worktree_update "${MOD_FULLPATH}" "check_worktree" "${BRANCH_LIST[@]}"
_do_worktree_update "${MOD_FULLPATH}" "check_module" "dummy arg" "$3" "$4"
_do_worktree_update "${MOD_FULLPATH}" "update" "${BRANCH_LIST[@]}"
# Submodules
for LCL_BR in ${BRANCH_LIST}; do
local WORK_PATH="${WORKTREES_DIR}/${LCL_BR}/${MOD_FULLPATH}"
if [ -d ${WORK_PATH} ]; then
local SUBMOD_LIST="${WORK_PATH}/.gitmodules"
if [ -e "${SUBMOD_LIST}" ]; then
sed -n "s|^\[submodule \"\([^\"]*\)\"\]$|\1|p" <${SUBMOD_LIST} |\
while read -r SUBMOD_STRING; do
cd "${WORK_PATH}" &>/dev/null
SUBMOD_NAME=`echo ${SUBMOD_STRING} | sed "s|.*/\([^/]\+\)$|\1|"`
SUBMOD_URLNAME=`git config --file .gitmodules --get submodule.${SUBMOD_STRING}.url | \
sed "s|.*/\([^/]\+\)$|\1|"`
_do_worktree_update "${MOD_FULLPATH}/${SUBMOD_STRING}" "add_repo" "${SUBMOD_URLNAME}"
_update_worktree_module "${MOD_FULLPATH}/${SUBMOD_STRING}" "${LCL_BR}" "${WORK_PATH}" "${SUBMOD_STRING}"
done
fi
fi
done
else
echo -ne "\033[2K\r${COLOR_STRINGS["FAIL"]}${RESULT_STRINGS["FAIL"]} Invalid module $1 passed to _update_worktree_module()${CNone}\n"
echo "${RESULT_STRINGS["FAIL"]} Invalid module $1 passed to _update_worktree_module()" >> "$LOG_UPDATE_REPO_FILENAME"
fi
}
#----------------------------
if [ "$flag_INCREMENTAL" = "y" ]; then
[ ! -f "$UPDATE_LOCK_FILENAME" ] && flag_INCREMENTAL="n"
else
[ -f "$UPDATE_LOCK_FILENAME" ] && rm "$UPDATE_LOCK_FILENAME"
fi
OPT_VERBOSE_LOG="&>/dev/null"
if [[ "$flag_VERBOSE_LOG" = "y" ]]; then
OPT_VERBOSE_LOG=" |& tee -a \"$LOG_UPDATE_REPO_FILENAME\""
fi
#----------------------------
# Check git abilities
GIT_IGNORE_SUBMODULES=""
if [[ -n "`git status --help 2>/dev/null|grep -- '--ignore-submodules'`" ]]; then
GIT_IGNORE_SUBMODULES="--ignore-submodules"
fi
GIT_NO_RECURSE_SUBMODULES=""
if [[ -n "`git pull --help |grep -- '--\[no-\]recurse-submodules'`" ]]; then
GIT_NO_RECURSE_SUBMODULES="--no-recurse-submodules"
fi
# Start update
if [ "$flag_INCREMENTAL" != "y" ]; then
echo "TDE repositories update started" > "$UPDATE_LOCK_FILENAME"
fi
if [ "${USE_GIT_WORKTREES}" != "y" ]; then
# Not using git worktree
_LAST_BRANCH=""
if [[ "$flag_SWITCH_ONLY" != "y" ]]; then
# Update extra dependency repository
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
echo_and_tee "${CLightCyan}---------------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME" "y"
echo_and_tee "${CLightCyan} Fetching extra dependencies ${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan}---------------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME"
# Fetch TDE extra dependency repository
_update_module "$REPO_EXTRA_DEPENDENCIES" "fetch"
_update_module "$REPO_EXTRA_DEPENDENCIES" "update" "master"
echo -e "\033[2K"
echo "" >> "$LOG_UPDATE_REPO_FILENAME"
fi
# Fetch all remotes first
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME" "y"
echo_and_tee "${CLightCyan} Fetching repos ${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME"
# Fetch TDE main repository
_update_module "$REPO_TDE" "fetch"
echo -e "\033[2K"
echo "" >> "$LOG_UPDATE_REPO_FILENAME"
# Branch update
for branch in "${BRANCHES[@]}"; do
_LAST_BRANCH="$branch"
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan} Updating branch ${CYellow}$branch ${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME"
# Update TDE main repository
_update_module "$REPO_TDE" "update" "$branch"
echo -e "\033[2K"
echo "" >> "$LOG_UPDATE_REPO_FILENAME"
done
fi
# Switch to specified branch if necessary
if [[ "$DEFAULT_REPO_BRANCH" != "$_LAST_BRANCH" ]]; then
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME" "$flag_SWITCH_ONLY"
echo_and_tee "${CLightCyan} Switching to branch ${CYellow}$DEFAULT_REPO_BRANCH ${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME"
# Switch TDE main repository
_update_module "$REPO_TDE" "switch-to" "$DEFAULT_REPO_BRANCH"
fi
else
# Using git worktree
# Get TDE origin url
cd "${REPOS_DIR}/tde.git" &>/dev/null
ORIGIN_PATH=`git config --get remote.origin.url | sed "s|\(.*\)/tde.git$|\1|"`
if [ ! -z "{ORIGIN_PATH}" ]; then
# Update extra dependency repository
if [[ "$USE_PREBUILD_EXTRA_DEPS" != "y" ]]; then
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME" "y"
echo_and_tee "${CLightCyan} Updating extra dependencies ${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME" "y"
_update_worktree_module "edeps"
echo -e "\033[2K"
echo "" >> "$LOG_UPDATE_REPO_FILENAME"
fi
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME" "y"
echo_and_tee "${CLightCyan} Updating TDE repos ${CNone}" "$LOG_UPDATE_REPO_FILENAME"
echo_and_tee "${CLightCyan}-------------------------------${CNone}" "$LOG_UPDATE_REPO_FILENAME"
# Main repo
_update_worktree_module "tde"
fi
fi
echo -e "\033[2K"
echo "" >> "$LOG_UPDATE_REPO_FILENAME"
# Update completed
[ -f "$UPDATE_LOCK_FILENAME" ] && rm "$UPDATE_LOCK_FILENAME"
cd $SCRIPT_DIR
Loading…
Cancel
Save