Difference between revisions of "Getting Started/Increased Productivity in KDE4 with Scripts (fi)"

Jump to: navigation, search
m (Minor grammar improvements)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Getting_Started/Increased Productivity in KDE4 with Scripts}}
+
 
  
 
{{TutorialBrowser|
 
{{TutorialBrowser|
Line 13: Line 13:
 
== Yhteenveto ==
 
== Yhteenveto ==
  
Aika on kallisarvoista. Tämä kurssi jakaa David Fauren kerätyt viisaudet siitä kuinka saada eniten ajastamme ja ponnistuksistamme säästämällä molempia käyttämällä joitakin yksinkertaisia skriptejä ja tekniikoita KDE 4-kehityksessä.
+
Aika on kallisarvoista. Tähän kurssiin on koottu David Fauren viisaudet kuinka saada eniten irti ajastamme ja ponnistuksistamme säästämällä molempia käyttämällä joitakin yksinkertaisia skriptejä ja tekniikoita KDE 4-kehityksessä.
 
== Ympäristön asetukset ==
 
== Ympäristön asetukset ==
  
Line 35: Line 35:
 
Tällä tavalla funktio tarkistaa .my-setup-tiedoston joka kerta, kun siirryt hakemistoon ja käyttää sitä lähteenä (se katsoo myös äitihakemistoa, kunnes löytää tiedoston eikä merkitse samaa lähteeksi kahdesti peräkkäin).
 
Tällä tavalla funktio tarkistaa .my-setup-tiedoston joka kerta, kun siirryt hakemistoon ja käyttää sitä lähteenä (se katsoo myös äitihakemistoa, kunnes löytää tiedoston eikä merkitse samaa lähteeksi kahdesti peräkkäin).
  
Aseta kaikki ympäristömuuttujat, jotka ovat kde4-kohtaisia (ne kerrotaan yksityiskohtaisesti myöhemmin tällä sivulla) tuohon ~/kde/src/4/.my-setup -tiedostoon ja tee sama muille ympäristöille (kde3, ja missä tahansa muualla, jossa tarvitset projektikohtaisia ympäristömuuttujia...)
+
Aseta kaikki kde4-kohtaiset ympäristömuuttujat (ne kerrotaan yksityiskohtaisesti myöhemmin tällä sivulla) tiedostoon ~/kde/src/4/.my-setup ja tee sama muille ympäristöille (kde3, ja missä tahansa muualla, jossa tarvitset projektikohtaisia ympäristömuuttujia...)
  
 
=== Esimerkkipolkuja ===
 
=== Esimerkkipolkuja ===
Line 56: Line 56:
  
 
=== Bash ===
 
=== Bash ===
If you use bash, take a look at [[Getting Started/Increased Productivity in KDE4 with Scripts/.bashrc|this .bashrc]]. It is an example bash config which sets all KDE4 environment variables and some helper functions. You can also look at [[Getting Started/Increased Productivity in KDE4 with Scripts/Environment Scripts|these scripts]] which are based on the above .bashrc.
+
Jos käytät bashia, tutustu [[Getting Started/Increased Productivity in KDE4 with Scripts/.bashrc|tähän .bashrc-tiedostoon]]. Kyseiseen esimerkkitiedostoon on laitettu kaikki KDE4-ympäristömuuttujat ja joitakin apufunktioita. Voit myös tutustua [[Getting Started/Increased Productivity in KDE4 with Scripts/Environment Scripts|näihin skripteihin]], jotka on kirjoitettu edellisen .bashrc:n pohjalta.
  
 
The steps below describe some of these features as well as giving alternative and additional functions.
 
The steps below describe some of these features as well as giving alternative and additional functions.
Line 65: Line 65:
  
 
To easily swap from build and source folder back and forth, you can use cs and cb functions that work like the following:
 
To easily swap from build and source folder back and forth, you can use cs and cb functions that work like the following:
<code bash>
+
<syntaxhighlight lang="bash">
 
pwd
 
pwd
 
  ~/kde/src/4/kdebase
 
  ~/kde/src/4/kdebase
Line 73: Line 73:
 
cs && pwd
 
cs && pwd
 
  ~/kde/src/4/kdebase
 
  ~/kde/src/4/kdebase
</code>
+
</syntaxhighlight>
  
 
A number of kde-related scripts will have to be able to do the same. Simply do:
 
A number of kde-related scripts will have to be able to do the same. Simply do:
Line 88: Line 88:
  
 
==== Vaihtoehtoinen tapa ====
 
==== Vaihtoehtoinen tapa ====
The following code will enable you to use <tt>cd</tt> similar to <tt>cs</tt> described above:
+
Seuraavan koodin avulla voit käyttää yläpuolella kuvatun <tt>cs</tt>-käskyn kaltaista <tt>cd</tt>-komentoa:
<code bash>
+
<syntaxhighlight lang="bash">
 
export CDPATH=.:~/kde/src
 
export CDPATH=.:~/kde/src
</code>
+
</syntaxhighlight>
The advantage, when using zsh, is that completion even works. Try cd 4/kdemul and press Tab, it will complete to 4/kdemultimedia, no matter where you currently are. Doesn't work in bash though - but surely you're using zsh by now, aren't you? :)
+
Tämän ansiosta automaattinen täydennys toimii, kun käytät zsh:ta. Jos kirjoitat cd 4/kdemul ja painat tabulaattoria, se täydentyy muotoon 4/kdemultimedia riippumatta siitä, missä hakemistossa satut olemaan. Tämä temppu ei toimi bashissa - mutta et kai nyt muuta käytäkään kuin zsh:ta? :)
  
 
The minimal cs and cb aliases (same as above but without support for arguments) are:
 
The minimal cs and cb aliases (same as above but without support for arguments) are:
Line 99: Line 99:
  
 
==== Siirtyminen takaisin edelliseen hakemistoon ====
 
==== Siirtyminen takaisin edelliseen hakemistoon ====
Going back to the previous directory easily can be done with zsh. Set this in .zshrc:
+
Edelliseen hakemistoon palaaminen onnistuu helposti zsh:lla. Lisää tämä .zshrc:hen
<code bash>
+
<syntaxhighlight lang="bash">
 
setopt AUTO_PUSHD
 
setopt AUTO_PUSHD
 
alias p=popd
 
alias p=popd
</code>
+
</syntaxhighlight>
and then you can type "p" to pop back to the directory where you were last,
+
ja "p"-kirjainta näpäyttämällä palaat edelliseen hakemistoon, niin monta kertaa kuin haluat. (Kirjoita "dirs -v", jos haluat nähdä luettelon aiemmista hakemistoista.)
as many times as needed (type "dirs -v" to see the stack of previous directories).
+
  
 
=== CMake ===
 
=== CMake ===
Line 116: Line 115:
 
   
 
   
 
Huolehdi, että editorisi käyttää sen sijaan käärinskriptiä
 
Huolehdi, että editorisi käyttää sen sijaan käärinskriptiä
<code bash>
+
<syntaxhighlight lang="bash">
 
#!/bin/sh
 
#!/bin/sh
 
if test "$1" = "-k"; then shift; fi
 
if test "$1" = "-k"; then shift; fi
Line 136: Line 135:
 
echo "calling makeobj -j $jvalue $arg"
 
echo "calling makeobj -j $jvalue $arg"
 
makeobj -j $jvalue $arg
 
makeobj -j $jvalue $arg
</code>
+
</syntaxhighlight>
  
 
Hae tämä skripti: http://web.davidfaure.fr/scripts/makefromemacs.
 
Hae tämä skripti: http://web.davidfaure.fr/scripts/makefromemacs.
Line 159: Line 158:
  
 
==== Qt ====
 
==== Qt ====
<code bash>
+
<syntaxhighlight lang="bash">
 
export QTDIR=/d/qt/4/qt-copy
 
export QTDIR=/d/qt/4/qt-copy
 
export PATH=$QTDIR/bin:$PATH
 
export PATH=$QTDIR/bin:$PATH
 
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
 
export PKG_CONFIG_PATH=$QTDIR/lib:$PKG_CONFIG_PATH
 
export PKG_CONFIG_PATH=$QTDIR/lib:$PKG_CONFIG_PATH
</code>
+
</syntaxhighlight>
  
 
==== KDE ====
 
==== KDE ====
<code bash>
+
<syntaxhighlight lang="bash">
 
export KDEDIR=/d/kde/inst/kde4
 
export KDEDIR=/d/kde/inst/kde4
 
export PATH=$KDEDIR/bin:$PATH
 
export PATH=$KDEDIR/bin:$PATH
Line 173: Line 172:
 
export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins
 
export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins
 
export KDEDIRS=$KDEDIR
 
export KDEDIRS=$KDEDIR
</code>
+
</syntaxhighlight>
  
 
==== Käyttäjä ====
 
==== Käyttäjä ====
<code bash>
+
<syntaxhighlight lang="bash">
 
export KDEHOME=$HOME/.kde4
 
export KDEHOME=$HOME/.kde4
</code>
+
</syntaxhighlight>
  
 
==== Muut ====
 
==== Muut ====
<code bash>
+
<syntaxhighlight lang="bash">
 
export QTEST_COLORED=1
 
export QTEST_COLORED=1
 
export KDE_COLOR_DEBUG=1
 
export KDE_COLOR_DEBUG=1
</code>
+
</syntaxhighlight>
  
 
==KDE-moduulin kääntäminen==
 
==KDE-moduulin kääntäminen==
 
===Manuaalisesti===
 
===Manuaalisesti===
 
Jos käytössäsi on em. {{path|~/.bashrc}}, KDE-moduulin kääntäminen on erittäin helppoa. (Sinulla täytyy olla lähdekoodi esim. SVN:n kautta. Katso ohjeet kohdasta [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]])
 
Jos käytössäsi on em. {{path|~/.bashrc}}, KDE-moduulin kääntäminen on erittäin helppoa. (Sinulla täytyy olla lähdekoodi esim. SVN:n kautta. Katso ohjeet kohdasta [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]])
<code bash>
+
<syntaxhighlight lang="bash">
 
cs KDE/kdebase
 
cs KDE/kdebase
 
cmakekde
 
cmakekde
</code>
+
</syntaxhighlight>
  
 
Muutoin sinun pitäisi kirjoittaa seuraava:
 
Muutoin sinun pitäisi kirjoittaa seuraava:
<code bash>
+
<syntaxhighlight lang="bash">
 
mkdir -p ~/build/KDE/kdebase && cd ~/build/KDE/kdebase
 
mkdir -p ~/build/KDE/kdebase && cd ~/build/KDE/kdebase
 
cmake -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull \
 
cmake -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull \
 
-DCMAKE_INSTALL_PREFIX=~/kde ~/src/KDE/kdebase
 
-DCMAKE_INSTALL_PREFIX=~/kde ~/src/KDE/kdebase
 
make
 
make
</code>
+
</syntaxhighlight>
  
 
{{warning|Älä koskaan poista tiedostoa CMakeCache.txt ja kirjoita sitten komentoa make. Suorita aina cmake uudelleen oikeilla valitsimilla CMakeCache.txt-tiedoston poistamisen jälkeen.}}
 
{{warning|Älä koskaan poista tiedostoa CMakeCache.txt ja kirjoita sitten komentoa make. Suorita aina cmake uudelleen oikeilla valitsimilla CMakeCache.txt-tiedoston poistamisen jälkeen.}}
Line 237: Line 236:
 
  Killing /d/kde/inst/kde4/bin/kpersonalizer, pid 6757
 
  Killing /d/kde/inst/kde4/bin/kpersonalizer, pid 6757
  
You can get the scripts list-kde4-binaries and kill-kde4-binaries from http://web.davidfaure.fr/scripts/
+
Voit hakea list-kde4-binaries ja kill-kde4-binaries -skriptit osoitteesta http://web.davidfaure.fr/scripts/
  
 
[[Category:Shell Scripting]]
 
[[Category:Shell Scripting]]
 
[[Category:KDE4]]
 
[[Category:KDE4]]

Latest revision as of 15:08, 18 July 2012


Paranna tuottavuuttasi skripteillä
Tutorial Series   Getting Started
Previous   Getting Started/Build/KDE4
What's Next   n/a
Further Reading   Alkuperäisen esittelyn tekijä: David Faure

Contents

[edit] Yhteenveto

Aika on kallisarvoista. Tähän kurssiin on koottu David Fauren viisaudet kuinka saada eniten irti ajastamme ja ponnistuksistamme säästämällä molempia käyttämällä joitakin yksinkertaisia skriptejä ja tekniikoita KDE 4-kehityksessä.

[edit] Ympäristön asetukset

[edit] Miksi asentaa käyttäjänä eikä root-oikeuksilla?

  • yksi komento kääntämiseen+linkittämiseen+asentamiseen (vieläpä yksinäinen painike editorissasi), ei tarvetta su/sudo-komennoille
  • ei riskiä root-käyttäjän omistamille tiedostoille rakennushakemistossa, kuten voi tapahtua kun joku muutos pakottaa make install-käskyn kääntämään joitakin tiedostoja
  • turvallisempi, jos jokin menee väärin (esimerkiksi väärän etuliitteen käyttäminen korvaa järjestelmän kde3:n)
  • make install on nopeampi kuin "make && sudo make install", koska Makefile-tiedostot jäsennellään vain kerran
  • ei linkitysvirheitä sudo make install-aikana sen vuoksi, että root-käyttäjän ympäristössä puuttuu hakemistoja LD_LIBRARY_PATH-muuttujassa. Ympäristömuuttujien asettaminen kerran on riittävän vaikeaa, miksi tehdä se kahdelle käyttäjälle?

[edit] Kehitysasetukset

Jos todella haluat käyttää erillistä käyttäjätiliä kehitykseen, katso ohjeet täältä.

Mutta ajan säästämiseksi ja monien pulmien välttämiseksi on hyvin suositeltavaa tehdä tämä kaikki tavallisena käyttäjänä. Tarvitset vain helpon tavan vaihtaa ympäristöstä toiseen. Kun siirryt hakemistoon ~/kde/src/4, haluat tietysti olla kde4-ympäristössä.

Tee tämä liittämällä http://web.davidfaure.fr/scripts/cd_function omaan .zshrc tai .bashrc -tiedostoosi ja hae http://web.davidfaure.fr/scripts/findup jonnekin $PATH-hakemistoosi (esimerkiksi hakemistoon $HOME/bin tai /usr/local/bin).

Tällä tavalla funktio tarkistaa .my-setup-tiedoston joka kerta, kun siirryt hakemistoon ja käyttää sitä lähteenä (se katsoo myös äitihakemistoa, kunnes löytää tiedoston eikä merkitse samaa lähteeksi kahdesti peräkkäin).

Aseta kaikki kde4-kohtaiset ympäristömuuttujat (ne kerrotaan yksityiskohtaisesti myöhemmin tällä sivulla) tiedostoon ~/kde/src/4/.my-setup ja tee sama muille ympäristöille (kde3, ja missä tahansa muualla, jossa tarvitset projektikohtaisia ympäristömuuttujia...)

[edit] Esimerkkipolkuja

[edit] Qt

For Qt, by habit from the Qt3 times and to save time by avoiding "make install" after a change, I recommend using one directory for source, builds and install. This is done by configuring Qt with --prefix=$PWD. This isn't mandatory though.

Qt-Path: ~/qt/4/qt-copy

[edit] KDE

It was convenient in kde3, it is mandatory in kde4: you need to use out-of-source builds, i.e. separate build and source directories. It makes it very easy to rebuild from scratch, removing all generated files - even old ones that "make clean" wouldn't remove. It is easier to look at the source files (grep, ls etc.). It allows multiple build trees with different settings, e.g. debug and release.

  1. Source: ~/kde/src/[version]
  2. Build: ~/kde/build/[version]

Thus source modules for kde4 are checked out in ~/kde/src/4/ and building happens in ~/kde/build/4/.

[edit] Ympäristömuuttujat ja muut hyödylliset funktiot

[edit] Bash

Jos käytät bashia, tutustu tähän .bashrc-tiedostoon. Kyseiseen esimerkkitiedostoon on laitettu kaikki KDE4-ympäristömuuttujat ja joitakin apufunktioita. Voit myös tutustua näihin skripteihin, jotka on kirjoitettu edellisen .bashrc:n pohjalta.

The steps below describe some of these features as well as giving alternative and additional functions.

Read further about compiling a KDE module.

[edit] Hakemistonavigointi

To easily swap from build and source folder back and forth, you can use cs and cb functions that work like the following:

pwd
 ~/kde/src/4/kdebase
cb && pwd
 ~/kde/build/4/kdebase
 # note that this folder is created if it does not exist
cs && pwd
 ~/kde/src/4/kdebase

A number of kde-related scripts will have to be able to do the same. Simply do: export OBJ_REPLACEMENT='s#/kde/src/#/kde/build/#' This allows the makeobj script from kdesdk to switch from src to build. If you also do: alias make=makeobj then you can simply type make from the source dir and it will be able to build. This is also very useful in editors - if your vi or emacs uses makeobj as the make command, you can compile with a single key press.

In addition, for fast navigation to other directories, it is very convenient to be able to type "cs 4/kdelibs" in order to go to ~/src/4/kdelibs, from anywhere. For instance, you could be in ~/kde/src/4/kdebase/workspace/kcontrol and now you decide to look at kdecore... No need to type a long series of "../.." or to restart from the top. You can just type cs 4/kdelibs/kdecore.

This is doable via the two functions cs and cb defined in the .bashrc.

[edit] Vaihtoehtoinen tapa

Seuraavan koodin avulla voit käyttää yläpuolella kuvatun cs-käskyn kaltaista cd-komentoa:

export CDPATH=.:~/kde/src

Tämän ansiosta automaattinen täydennys toimii, kun käytät zsh:ta. Jos kirjoitat cd 4/kdemul ja painat tabulaattoria, se täydentyy muotoon 4/kdemultimedia riippumatta siitä, missä hakemistossa satut olemaan. Tämä temppu ei toimi bashissa - mutta et kai nyt muuta käytäkään kuin zsh:ta? :)

The minimal cs and cb aliases (same as above but without support for arguments) are: alias cb='cd `pwd | sed -e s,/kde/src/,/kde/build/,`' alias cs='cd `pwd | sed -e s,/kde/build/,/kde/src/,`'

[edit] Siirtyminen takaisin edelliseen hakemistoon

Edelliseen hakemistoon palaaminen onnistuu helposti zsh:lla. Lisää tämä .zshrc:hen

setopt AUTO_PUSHD
alias p=popd

ja "p"-kirjainta näpäyttämällä palaat edelliseen hakemistoon, niin monta kertaa kuin haluat. (Kirjoita "dirs -v", jos haluat nähdä luettelon aiemmista hakemistoista.)

[edit] CMake

Here you can find more CMake information.

[edit] CMake ja alihakemistot

cd 4/kdelibs/kio/kio ; make => mitään ei tapahdu, Makefile on äitihakemistossa.

Huolehdi, että editorisi käyttää sen sijaan käärinskriptiä

#!/bin/sh
if test "$1" = "-k"; then shift; fi
cmake_in_parent=0
if test -f CMakeLists.txt; then
    if ! grep -q kde4_add CMakeLists.txt; then
        cmake_in_parent=1
        cd ..
    fi
fi
if test $# -gt 0; then
    arg="$1"
    if test "$arg" != install -a $cmake_in_parent -eq 1; then
        arg=`basename $PWD`/"$arg"
    fi
fi
 
jvalue=1
echo "calling makeobj -j $jvalue $arg"
makeobj -j $jvalue $arg

Hae tämä skripti: http://web.davidfaure.fr/scripts/makefromemacs.

[edit] CMake ja riippuvaisuudet

touch kdecore/kapplication.h
cd kdeui ; make

=> kääntää ensin kohteen kdecore

touch kdecore/kapplication.h
cd kdeui ; make kdeui/fast

=> kääntää uudelleen vain kohteen kdeui

make install/fast

Mutta huomaa, että normaalitila (ilman /fastia) on myös hyödyllinen muissa tapauksissa: Esimerkiksi muokkaat

kdelibs/kio/kio/kdirmodel.cpp

ja teet sille yksikkötestin

kdelibs/kio/tests/kdirmodeltest.cpp

Jos nyt haluat kääntää uudelleen sekä libkio:n että yksikkötestin, anna vain käsky "make kdirmodeltest" hakemistossa kdelibs/kio/tests.

[edit] KDE 4-ympäristömuuttujien luettelo

Tässä on lueteltu kaikki ympäristömuuttujat, jotka tulisi asettaa esimerkiksi tiedostossa $KDESRC/4/.my-setup

[edit] Qt

export QTDIR=/d/qt/4/qt-copy
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$QTDIR/lib:$PKG_CONFIG_PATH

[edit] KDE

export KDEDIR=/d/kde/inst/kde4
export PATH=$KDEDIR/bin:$PATH
export LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins
export KDEDIRS=$KDEDIR

[edit] Käyttäjä

export KDEHOME=$HOME/.kde4

[edit] Muut

export QTEST_COLORED=1
export KDE_COLOR_DEBUG=1

[edit] KDE-moduulin kääntäminen

[edit] Manuaalisesti

Jos käytössäsi on em. ~/.bashrc, KDE-moduulin kääntäminen on erittäin helppoa. (Sinulla täytyy olla lähdekoodi esim. SVN:n kautta. Katso ohjeet kohdasta Using Subversion with KDE)

cs KDE/kdebase
cmakekde

Muutoin sinun pitäisi kirjoittaa seuraava:

mkdir -p ~/build/KDE/kdebase && cd ~/build/KDE/kdebase
cmake -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull \
-DCMAKE_INSTALL_PREFIX=~/kde ~/src/KDE/kdebase
make
noframe
 
Warning
Älä koskaan poista tiedostoa CMakeCache.txt ja kirjoita sitten komentoa make. Suorita aina cmake uudelleen oikeilla valitsimilla CMakeCache.txt-tiedoston poistamisen jälkeen.


[edit] kdesvn-buildia käyttäen

kdesvn-build is an all-in-one script: it handles the checking-out or updating from subversion, running cmake, make, make install, and storing all output in log files.

Copy kdesvn-buildrc-sample to $KDE_SRC/.kdesvn-buildrc, then edit it. Global options:

  • binpath - don't forget the path to icecream, the PATH env var doesn't count
  • qtdir, svn-server, source-dir, build-dir, kdedir

Per-module options:

module qt-copy
  # kdesvn-build sets the prefix to $qtdir
  configure-flags [....]
  apply-qt-patches true
  make-options -j3 sub-src sub-tools
end module

module kdelibs
  make-options -DKDE4_BUILD_TESTS=TRUE -DCMAKE_BUILD_TYPE=debugfull
end module

[edit] KDE4-ohjelmat KDE3:ssa

Xephyr -screen 1240x768 -ac :4 &
export DISPLAY=:4
sh -x startkde 2>&1 | tee kde4.log
>./list-kde4-binaries
/d/kde/inst/kde4/bin/kwin, pid 6756
/d/kde/inst/kde4/bin/kpersonalizer, pid 6757
>./kill-kde4-binaries
Killing /d/kde/inst/kde4/bin/kwin, pid 6756
Killing /d/kde/inst/kde4/bin/kpersonalizer, pid 6757

Voit hakea list-kde4-binaries ja kill-kde4-binaries -skriptit osoitteesta http://web.davidfaure.fr/scripts/


This page was last modified on 18 July 2012, at 15:08. This page has been accessed 2,803 times. Content is available under Creative Commons License SA 3.0 as well as the GNU Free Documentation License 1.2.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal