-
-
Save nsams/8004238 to your computer and use it in GitHub Desktop.
bash file for setting up local kde development environment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
prepend() { [ -d "$2" ] && eval $1=\"$2\$\{$1:+':'\$$1\}\" && export $1 ; } | |
export KDEDIR=$HOME/kde | |
export KDEHOME=$HOME/.kde4-svn | |
export KDETMP=/tmp/kde4-svn-$USER | |
mkdir -p $KDETMP | |
export KDEVARTMP=/var/tmp/kde4-svn-$USER | |
mkdir -p $KDEVARTMP | |
# export KDESYCOCA=/var/tmp/kdecache-svn-$USER/ksycoca4 | |
# mkdir -p $KDESYCOCA | |
export KDEDIRS=$KDEDIR:/usr:/usr/local | |
prepend PATH $KDEDIR/bin | |
prepend LD_LIBRARY_PATH $KDEDIR/lib | |
prepend PKG_CONFIG_PATH $KDEDIR/lib/pkgconfig | |
prepend QT_PLUGIN_PATH $KDEDIR/lib/kde4/plugins | |
export PATH | |
export LD_LIBRARY_PATH | |
export PKG_CONFIG_PATH | |
export QT_PLUGIN_PATH | |
# CMake | |
# Make sure CMake searches the right places. | |
prepend CMAKE_PREFIX_PATH $KDEDIR | |
prepend CMAKE_LIBRARY_PATH $KDEDIR/lib | |
prepend CMAKE_INCLUDE_PATH $KDEDIR/include | |
export CMAKE_PREFIX_PATH | |
export CMAKE_LIBRARY_PATH | |
export CMAKE_INCLUDE_PATH | |
# DBus | |
# only set DBUS related variables if you compiled dbus on your own | |
# (which is really discouraged). if you use the distro provided dbus, | |
# skip this variable. Uncomment it if necessary. | |
#export DBUSDIR=$KDEDIR | |
#prepend PKG_CONFIG_PATH $DBUSDIR/lib/pkgconfig | |
# only needed on some strange systems for compiling Qt. do not set | |
# it unless you have to. | |
#export YACC='byacc -d' | |
# XDG | |
unset XDG_DATA_DIRS # to avoid seeing kde3 files from /usr | |
unset XDG_CONFIG_DIRS | |
# you might want to change these: | |
export KDE_BUILD=$HOME/kdesvn/build | |
export KDE_SRC=$HOME/kdesvn | |
# make the debug output prettier | |
export KDE_COLOR_DEBUG=1 | |
export QTEST_COLORED=1 | |
# Make | |
# Tell many scripts how to switch from source dir to build dir: | |
export OBJ_REPLACEMENT="s#$KDE_SRC#$KDE_BUILD#" | |
# Use makeobj instead of make, to automatically switch to the build dir. | |
# If you don't have makeobj, install the package named kdesdk-scripts or | |
# kdesdk, or check out kdesdk/scripts from svn. | |
#alias make=makeobj | |
# Uncomment the following lines if DBus does not work. DBus is not | |
# working if, when you run `dbus-uuidgen --ensure && qdbus`, you get an error. | |
# | |
# alias dbusstart="eval `PATH=$DBUSDIR/bin \ | |
# $DBUSDIR/bin/dbus-launch --auto-syntax`" | |
# A function to easily build the current directory of KDE. | |
# | |
# This builds only the sources in the current ~/{src,build}/KDE subdirectory. | |
# Usage: cs KDE/kdebase && cmakekde | |
# will build/rebuild the sources in ~/src/KDE/kdebase | |
function cmakekde { | |
local srcFolder current | |
if test -n "$1"; then | |
# srcFolder is defined via command line argument | |
srcFolder="$1" | |
else | |
# get srcFolder for current dir | |
srcFolder=`pwd | sed -e s,$KDE_BUILD,$KDE_SRC,` | |
fi | |
# we are in the src folder, change to build directory | |
# Alternatively, we could just use makeobj in the commands below... | |
current=`pwd` | |
if [ "$srcFolder" = "$current" ]; then | |
cb | |
fi | |
# To enable tests, uncomment -DKDE4_BUILD_TESTS=TRUE. | |
# If you are building to debug or develop, it is reccommended to | |
# uncomment the line -DCMAKE_BUILD_TYPE=debugfull. Be sure to move | |
# it above the -DKDE4_BUILD_TESTS=TRUE line if you leave that one | |
# commented out. You can also change "debugfull" to "debug" to save | |
# disk space. | |
# Some distributions use a suffix for their library directory when | |
# on x86_64 (i.e. /usr/lib64) if so, you have to add -DLIB_SUFFIX=64 | |
# for example. | |
cmake "$srcFolder" -DCMAKE_INSTALL_PREFIX=$KDEDIR \ | |
-DKDE4_BUILD_TESTS=TRUE \ | |
-DCMAKE_BUILD_TYPE=debugfull \ | |
-DBUILD_KTEXTEDITOR=1 | |
# uncomment the following two lines to make builds wait after | |
# configuration step, so that the user can check configure output | |
#echo "Press <ENTER> to continue..." | |
#read userinput | |
# Note: To speed up compiling, change 'make -j2' to 'make -jx', | |
# where x is your number of processors +1 | |
nice make -j2 && make install | |
RETURN=$? | |
cs | |
return ${RETURN} | |
} | |
# for the lazy ones (aren't we all?) | |
function cmakekdeall { | |
local folders | |
folders="kdesupport KDE/kdelibs KDE/kdebase \ | |
KDE/kdevplatform KDE/kdevelop \ | |
" | |
#KDE/kdepimlibs KDE/kdepim KDE/kdesdk \ | |
# KDE/kdegraphics | |
# Add others or remove to taste, e.g. | |
# KDE/kdemultimedia KDE/kdenetwork KDE/kdeutils \ | |
cd && cs # go to src root | |
svn up $folders | |
for f in $folders; do | |
# Remove the "|| return" part if you don't want to | |
# stop the build whenever a single module fails. | |
cs $f && cmakekde || return | |
done | |
} | |
# A function to easily change to the build directory. | |
# Usage: cb KDE/kdebase | |
# will change to $KDE_BUILD/KDE/kdebase | |
# Usage: cb | |
# will simply go to the build folder if you are currently in a src folder | |
# Example: | |
# $ pwd | |
# /home/user/src/KDE/kdebase | |
# $ cb && pwd | |
# /home/user/build/KDE/kdebase | |
function cb { | |
local dest | |
# Make sure build directory exists. | |
mkdir -p "$KDE_BUILD" | |
# command line argument | |
if test -n "$1"; then | |
cd "$KDE_BUILD/$1" | |
return | |
fi | |
# substitute src dir with build dir | |
dest=`pwd | sed -e s,$KDE_SRC,$KDE_BUILD,` | |
if test ! -d "$dest"; then | |
# build directory does not exist, create | |
mkdir -p "$dest" | |
fi | |
cd "$dest" | |
} | |
# Change to the source directory. Same as cb, except this | |
# switches to $KDE_SRC instead of $KDE_BUILD. | |
# Usage: cs KDE/kdebase | |
# will change to $KDE_SRC/KDE/kdebase | |
# Usage: cs | |
# will simply go to the source folder if you are currently in a build folder | |
# Example: | |
# $ pwd | |
# /home/user/build/KDE/kdebase | |
# $ cs && pwd | |
# /home/user/src/KDE/kdebase | |
function cs { | |
local dest current | |
# Make sure source directory exists. | |
mkdir -p "$KDE_SRC" | |
# command line argument | |
if test -n "$1"; then | |
cd "$KDE_SRC/$1" | |
else | |
# substitute build dir with src dir | |
dest=`pwd | sed -e s,$KDE_BUILD,$KDE_SRC,` | |
current=`pwd` | |
if [ "$dest" = "$current" ]; then | |
cd "$KDE_SRC" | |
else | |
cd "$dest" | |
fi | |
fi | |
} | |
# Add autocompletion to cs function | |
function _cs_scandir | |
{ | |
local base ext | |
base=$1 | |
ext=$2 | |
if [ -d $base ]; then | |
for d in `ls $base`; do | |
if [ -d $base/$d ]; then | |
dirs="$dirs $ext$d/" | |
fi | |
done | |
fi | |
} | |
function _cs() | |
{ | |
local cur dirs | |
_cs_scandir "$KDE_SRC" | |
_cs_scandir "$KDE_SRC/KDE" "KDE/" | |
COMPREPLY=() | |
cur="${COMP_WORDS[COMP_CWORD]}" | |
COMPREPLY=( $(compgen -W "${dirs}" -- ${cur}) ) | |
} | |
# Remove comment on next line to enable cs autocompletion | |
complete -F _cs cs | |
function start3app { | |
mkdir -p /tmp/$USER-kde | |
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games | |
export LD_LIBRARY_PATH= | |
export KDETMP=/tmp/$USER-kde | |
export KDEVARTMP=/var/tmp/$USER-kde | |
export KDEHOME=$HOME/.kde | |
export KDEDIR=/usr | |
export KDEDIRS=$KDEDIR | |
export DISPLAY=:0 | |
eval "$@" | |
source $HOME/.bashrc #Reset environment variables again | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment