概要

kdesrc-buildスクリプトは、KDEソフトウェアの開発環境の構築と維持のプロセスを合理化するものである。
これは、KDEソフトウェアのソースコードリポジトリからソースコードをダウンロードして、そのソースコードをビルドおよびインストールするプロセスを自動化する。



Perlのインストール

もし、必要となるPerlのバージョンより古い場合は、インストール - Perlのページにアクセスして、Perlをビルドおよびインストールする。

まず、KDEソフトウェアのビルドに必要なPerlモジュールをインストールする。

perl cpan IO::Socket::SSL YAML::XS YAML::PP YAML::Syck URI::Escape JSON LWP Net::SSLeay XML::Parser


必要ならば、環境変数PATHおよびPERL5LIBを設定する。

export PATH="/<Perlのインストールディレクトリ>/bin:$PATH"

PERL_LIBDIR="/<Perlのインストールディレクトリ>/lib/perl5"
export PERL5LIB="${PERL_LIBDIR}/site_perl/<バージョン>/x86_64-linux:${PERL_LIBDIR}/site_perl/<バージョン>:${PERL_LIBDIR}/<バージョン>/x86_64-linux:${PERL_LIBDIR}/<バージョン>:${PERL_LIBDIR}/site_perl:${PERL5LIB}"



libAppImageライブラリのインストール

KDEソフトウェアのビルドには、libAppImageライブラリが必要である。
SUSEでは、パッケージ管理システムからlibAppImageライブラリは提供されていないため、ソースコードからビルドしてインストールする必要がある。

まず、libAppImageライブラリのビルドに必要な依存関係のライブラリをインストールする。

sudo zypper install automake cmake libtool cairo-devel fuse-devel librsvg-devel libarchive-devel


次に、libAppImageライブラリのソースココードをダウンロードする。

git clone https://github.com/AppImage/libappimage --recursive
cd libappimage


libAppImageライブラリをビルドおよびインストールする。

mkdir build && cd build

cmake -DCMAKE_INSTALL_PREFIX=<libAppImageライブラリのインストールディレクトリ> -DBUILD_TESTING:bool=False ..
make -j $(nproc)
make install


~/.profileファイル等に、環境変数LD_LIBRARY_PATHおよびCPPFLAGSを追記する。

vi ~/.profile


# ~/.profileファイル

export LD_LIBRARY_PATH="/<libAppImageライブラリのインストールディレクトリ>/lib64:$LD_LIBRARY_PATH"
export CPPFLAGS="-L/<libAppImageライブラリのインストールディレクトリ>/include ${CPPFLAGS}"



KDEソフトウェアのインストール

KDEソフトウェアのビルドに必要な依存関係のライブラリをインストールする。

sudo zypper install libxslt-devel libxml2-devel polkit-devel wayland-devel wayland-protocols-devel \
                    xcb-util-keysyms-devel xcb-util-wm-devel libplist-devel libimobiledevice-devel libonig4 \
                    phonon4qt5-devel libcanberra-devel lmdb lmdb-devel breezy libattr-devel giflib-devel libjpeg8-devel libjpeg62 \
                    qrencode-devel zxing-cpp-devel libdmtx-devel libSM-devel php7-phpunit8 NetworkManager-devel libgpgmepp-devel \
                    kwidgetsaddons-devel libqgpgme-devel qca-qt5-devel \
                    libqt5-qttools-devel libqt5-qtbase-devel libqt5-qtbase-common-devel libqt5-qtdeclarative-devel \
                    libQt5QuickControls2-devel libQt5QuickTemplates2-devel libQt5QuickTemplates2-devel libqt5-qtdoc-devel \
                    libqt5-qtlocation-devel libqt5-qtlocation-private-headers-devel libqt5-qtremoteobjects-devel \
                    libqt5-qtstyleplugins-devel libqt5-qtxmlpatterns-devel libqt5-qtscxml-devel libqt5-qtsvg-devel \
                    libqt5-qtscript-devel libqt5-qtx11extras-devel libqt5-qtwebview-devel libqt5-qtwayland-devel libqt5-qtwayland-private-headers-devel \
                    libqt5-qtmultimedia-devel libqt5-qtmultimedia-private-headers-devel libQt5Charts5-devel \
                    libexiv2-devel libpoppler-devel libpoppler-qt5-devel typelib-1_0-Poppler-0_18 libepub-devel mobipocket-devel \
                    ffmpeg-4-libavcodec-devel ffmpeg-4-libavdevice-devel ffmpeg-4-libavfilter-devel ffmpeg-4-libavformat-devel \
                    ffmpeg-4-libavresample-devel ffmpeg-4-libavutil-devel ffmpeg-4-libpostproc-devel ffmpeg-4-libswresample-devel \
                    ffmpeg-4-libswscale-devel ffmpeg-4-private-devel \
                    systemd-devel  # SUSE 15.4の場合
                    libudev-devel  # SUSE 15.3以前の場合


KDEソフトウェアをビルドするためのツールであるkdesrc-buildをダウンロードする。
または、kdesrc-buildのGithubにアクセスして、任意のバージョンのkdesrc-buildをダウンロードする。

git clone https://invent.kde.org/sdk/kdesrc-build.git
cd kdesrc-build


次に、~/.bashrcファイルや~/.zshrcファイルにおいて、kdesrc-buildに関する設定を行う。

vi ~/.bashrc
または
vi ~/.zshrc


# ~/.bashrcファイル または ~/.zshrcファイル

export PATH="<kde-buildのディレクトリ>:$PATH"


※注意
Zshを使用しており、kdesrc-buildの初期設定時に自動補完をyesにした場合、以下に示す設定を~/.zshrcファイルに追記する。

autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit


まず、kdesrc-buildが正常に実行できるかどうかを確認する。
kdesrc-buildファイルおよびkdesrc-build-setupファイルを実行する前に、
kdesrc-buildディレクトリにあるmodulesディレクトリを環境変数PERL5LIBに追加する必要がある。

cd kdesrc-build
export PERL5LIB=$PWD/modules:$PERL5LIB

./kdesrc-build --version


kdesrc-buildを設定する。
これは、ビルドおよびインストールするKDEソフトウェアのディレクトリの設定、および、ビルドするソフトウェア・ライブラリの設定を行うためのものである。
この設定は、~/.config/kdesrc-buildrcファイルに保存される。

./kdesrc-build --initial-setup


kdesrc-buildの設定を対話式に行う場合は、kdesrc-build-setupファイルを実行する。
ただし、--initial-setupオプションとは異なり、ソフトウェアをコンパイルするためのパッケージは各ディストリビューションからインストールされないので、自身で行う必要がある。

./kdesrc-build-setup


次に、KDEプロジェクトと依存関係データをダウンロードする。
これは、KDEソフトウェアのソースリポジトリとその依存関係を記述した情報をダウンロードして、kdesrc-buildが何をビルドすればよいかを判断するために行う。

kdesrc-buildは、これらの情報を自動的に管理するが、このステップを実行することにより、
kdesrc-buildがKDEソフトウェアのソースリポジトリに正しく到達できることを確認して、--pretendオプションでより正確な出力を提供できるようにする。

./kdesrc-build --metadata-only


次に、kdesrc-buildのテスト実行を行う。 これは、kdesrc-buildの実行に必要なファイル(cmake、git、make等)がインストールされているかどうかを確認する。

./kdesrc-build --pretend


KDEソフトウェアの依存関係およびKDEソフトウェアをビルドおよびインストールする。
stop-on-failureオプションは、ビルドに失敗した時、依存関係が無い場合にkdesrc-buildを停止させるオプションである。
このオプションを設定しない場合、kdesrc-buildのビルドに失敗しても、全てのモジュールをビルドしようとする。

export CC=<GCC 8以降のgccファイルのパス>; export CXX=<GCC 8以降のg++ファイルのパス>; \
./kdesrc-build --stop-on-failure <KDEソフトウェア名>

# Dolphinをビルドおよびインストールする場合
export CC=<GCC 8以降のgccファイルのパス>; export CXX=<GCC 8以降のg++ファイルのパス>; \
./kdesrc-build --stop-on-failure knewstuff kcmutils dolphin

# KDE Plasmaデスクトップをビルドおよびインストールする場合
export CC=<GCC 8以降のgccファイルのパス>; export CXX=<GCC 8以降のg++ファイルのパス>; \
./kdesrc-build --include-dependencies plasma-desktop 


ビルドされた各ライブラリや各ソフトウェアにおいて、kdesrc-buildは以下のステップを実行する。

  • ソースコードのダウンロードおよび最新版へのアップデート
  • ビルドシステムの設定、および、必要に応じてソースコードの設定
  • 各ライブラリや各ソフトウェアのビルド
  • 各ライブラリや各ソフトウェアのインストール


KDEソフトウェアのビルドの詳細を知りたい場合は、KDEの公式Webサイトを参照すること。


KDE PlasmaとKDE Plasmaシェルのビルド

KDE Plasmaは、ソフトウェアを実行するための環境である。
KDE Plasmaは、壁紙、ソフトウェアランチャー、ウィジェットを含むデスクトップの提供、通知の表示、有線および無線ネットワークの管理、オペレーティングシステムレベルのタスクの管理を行う。

KDE Plasmaの新バージョンは年に3回リリースされており、PC向けのKDE Plasma Desktop、モバイル向けのKDE Plasma Mobile、TV向けのKDE Plasma Bigscreen等のシェルが存在する。
これらのシェルは、ウィンドウマネージャ、ネットワークスタック、基本的なグラフィカルコンポーネント等、共通のコンポーネントを共有している。

まず、KDE Plasmaのビルドに必要な依存関係のライブラリをインストールする。

sudo zypper install libnl3-devel libpcap-devel libcap-devel libsensors4-devel pipewire-devel xcb-util-cursor-devel liblcms2-devel \
                    intltool sassc libsass-devel pixmap gtk2-engines-devel gdk-pixbuf-xlib-devel python3-pycairo-devel \
                    xcb-proto-devel xcb-util-devel xcb-util-xrm-devel xcb-util-errors-devel ModemManager-devel \
                    libqt5-qtwebengine-devel libqt5-qtwebengine-private-headers-devel libqt5-qtwebchannel-devel libqaccessibilityclient-qt5-devel \
                    libqt5-qtsensors-devel libsignon-qt5-devel libaccounts-qt5-devel kqtquickcharts libqalculate-devel libAppStreamQt-devel iso-codes-devel \
                    appmenu-gtk3-module libappmenu-gtk3-parser-devel \
                    typelib-1_0-DbusmenuGtk3-0_4 wayland-devel wayland-protocols-devel \
                    wayland-amdgpu-devel wayland-protocols-amdgpu-devel


KDE Plasmaと関連するソフトウェアをビルドする。

export CC=<GCC 8以降のgccファイルのパス>; export CXX=<GCC 8以降のg++ファイルのパス>; \
./kdesrc-build --include-dependencies \
     plasma-workspace plasma-framework plasma-integration bluedevil powerdevil plasma-nm plasma-pa plasma-thunderbolt plasma-vault \
     plasma-firewall plasma-workspace-wallpapers kdeplasma-addons krunner milou kwin kscreen sddm-kcm plymouth-kcm breeze discover \
     print-manager plasma-sdk kaccounts-integration kaccounts-providers kdeconnect-kde plasma-browser-integration \
     xdg-desktop-portal-kde kde-gtk-config khotkeys kgamma5 breeze-gtk drkonqi


KDE Plasmaシェルと関連するソフトウェアをビルドする。

export CC=<GCC 8以降のgccファイルのパス>; export CXX=<GCC 8以降のg++ファイルのパス>; \
./kdesrc-build --include-dependencies \
     plasma-desktop systemsettings ksysguard plasma-disks plasma-systemmonitor ksystemstats kinfocenter kmenuedit


ビルドしたKDE Plasmaに翻訳を取り込む場合は、plasma-workspaceプロジェクトにおいて、
ccmakeコマンドに-DKDE_L10N_SYNC_TRANSLATIONS=trueオプションを付加して、ビルドする必要がある。

これを行うには、plasma-workspaceのビルドディレクトリ(/<KDEソフトウェアの作業ディレクトリ>/build/plasma-workspace)に移動して、plasma-workspaceプロジェクトを再構築する。

cd /<KDEソフトウェアの作業ディレクトリ>/build/plasma-workspace
ccmake -DKDE_L10N_SYNC_TRANSLATIONS=true .


ビルドしたKDE PlasmaセッションをSDDMのログイン画面からアクセスできるようにするには、ビルドしたDBusソフトウェアをシステムパスから見える場所にコピーする必要がある。

/<KDEソフトウェアの作業ディレクトリ>/build/plasma/plasma-workspace/login-sessions/install-sessions.sh


※注意
SELinuxは、ビルドしたDBusサービスの動作を妨害する可能性がある。
SELinuxの無効化を知りたい場合は、https://www.tecmint.com/disable-selinux-in-centos-rhel-fedora/ を参照すること。

PCをログアウトまたは再起動することにより、SDDMのログイン画面(Breeze SDDMテーマを使用している場合は、画面左下隅)から新しいKDE Plasmaセッションが選択できる。

また、ビルドしたKDE Plasmaを、以下に示すように動作確認することもできる。

source /<KDEソフトウェアの作業ディレクトリ>/build/plasma-desktop/prefix.sh
/<KDEソフトウェアの作業ディレクトリ>/usr/bin/plasmashell --replace



単一プロジェクトでの繰り返し行うビルド

あるプロジェクトで作業をしていて、その変更を確認するためにプロジェクトを再構築する場合、スタック全体ではなく該当プロジェクトのみを再構築することにより、時間を節約することができる。
これは、--no-srcオプションおよび--no-include-dependenciesplasma-desktopオプションを付加することにより、
全てのプロジェクトではなく、そのプロジェクトのみをリビルドすることができる。

./kdesrc-build --no-src --no-include-dependencies plasma-desktop



再ビルドの方法

1つまたは複数のKDEソフトウェアがビルドに失敗した場合、kdesrc-buildコマンドを実行して再ビルドを行う手順を示す。

  • 方法 1
    失敗したモジュールを最初から再ビルドする。
    ./kdesrc-build --refresh-build <ビルドに失敗したKDEソフトウェア名>

  • 方法 2
    時間を節約して失敗したKDEソフトウェアからビルドを再開する。
    ./kdesrc-build --resume-from <失敗したKDEソフトウェア名>

  • 方法 3
    KDEビルドサーバにアクセスして、現在壊れているモジュールのリストを確認する。



kdesrc-buildのアンインストール方法

以下に示すディレクトリおよびファイルを削除する。

rm -r <kdesrc-buildのディレクトリ> \
      <KDEソフトウェアの作業ディレクトリ> \
      ~/.kdesrc-buildrc ~/.config/kdesrc-buildrc ~/.config/kde-env-master.sh \
      ~/.config/fish/functions/kdesrc-build.fish  # Fishを使用している場合