Enable IME support in AppImage (#116)
* Linux package: add fcitx5-qt to AppImage build environment * Linux package: add static link to ime plugins
This commit is contained in:
parent
b571e5f535
commit
c7a95d9eab
|
@ -6,6 +6,7 @@
|
||||||
/packages/appimage/01-in-docker.sh eol=lf
|
/packages/appimage/01-in-docker.sh eol=lf
|
||||||
|
|
||||||
# text files to be packed
|
# text files to be packed
|
||||||
|
/packages/appimage/AppRun.sh eol=lf
|
||||||
/platform/linux/install.sh eol=lf
|
/platform/linux/install.sh eol=lf
|
||||||
/platform/linux/redpandaide.desktop.in eol=lf
|
/platform/linux/redpandaide.desktop.in eol=lf
|
||||||
/platform/linux/redpandaide.svg eol=lf
|
/platform/linux/redpandaide.svg eol=lf
|
||||||
|
|
2
BUILD.md
2
BUILD.md
|
@ -13,12 +13,14 @@
|
||||||
# Linux
|
# Linux
|
||||||
|
|
||||||
- Install gcc and qt5
|
- Install gcc and qt5
|
||||||
|
- Optionally install fcitx5-qt for building with static version of Qt
|
||||||
- Open `Red_Panda_CPP.pro` with Qt Creator
|
- Open `Red_Panda_CPP.pro` with Qt Creator
|
||||||
|
|
||||||
qmake variables:
|
qmake variables:
|
||||||
- `PREFIX`: default to `/usr/local`. It should be set to `/usr` or `/opt/redpanda-cpp` when packaging.
|
- `PREFIX`: default to `/usr/local`. It should be set to `/usr` or `/opt/redpanda-cpp` when packaging.
|
||||||
- `LIBEXECDIR`: directory for auxiliary executables, default to `$PREFIX/libexec`. Arch Linux uses `/usr/lib`.
|
- `LIBEXECDIR`: directory for auxiliary executables, default to `$PREFIX/libexec`. Arch Linux uses `/usr/lib`.
|
||||||
- `XDG_ADAPTIVE_ICON=ON`: install the icon file following [freedesktop.org Icon Theme Specification](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html) for adaptiveness to themes and sizes. Required by AppImage; recommended for Linux packaging if `PREFIX` set to `/usr`.
|
- `XDG_ADAPTIVE_ICON=ON`: install the icon file following [freedesktop.org Icon Theme Specification](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html) for adaptiveness to themes and sizes. Required by AppImage; recommended for Linux packaging if `PREFIX` set to `/usr`.
|
||||||
|
- `LINUX_STATIC_IME_PLUGIN=ON` (make phase): link to static ime plugin. Recommended for building with static version of Qt; **DO NOT** set for dynamic version of Qt.
|
||||||
|
|
||||||
## Ubuntu
|
## Ubuntu
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,14 @@
|
||||||
|
|
||||||
步骤:
|
步骤:
|
||||||
- 安装 gcc 和 qt5开发相关包
|
- 安装 gcc 和 qt5开发相关包
|
||||||
|
- 如果使用静态版本的 Qt 编译,还要安装 fcitx5-qt
|
||||||
- 使用qtcreator打开Red_Panda_CPP.pro文件
|
- 使用qtcreator打开Red_Panda_CPP.pro文件
|
||||||
|
|
||||||
qmake 变量:
|
qmake 变量:
|
||||||
- `PREFIX`:默认值是 `/usr/local`。打包时应该定义为 `/usr` 或 `/opt/redpanda-cpp`。
|
- `PREFIX`:默认值是 `/usr/local`。打包时应该定义为 `/usr` 或 `/opt/redpanda-cpp`。
|
||||||
- `LIBEXECDIR`:辅助程序的路径,默认值是 `$PREFIX/libexec`。Arch Linux 使用 `/usr/lib`。
|
- `LIBEXECDIR`:辅助程序的路径,默认值是 `$PREFIX/libexec`。Arch Linux 使用 `/usr/lib`。
|
||||||
- `XDG_ADAPTIVE_ICON=ON`:遵循 [freedesktop.org 图标主题规范](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)安装图标,以适应不同的主题和尺寸。AppImage 需要启用此项;Linux 打包 `PREFIX=/usr` 时推荐启用此项。
|
- `XDG_ADAPTIVE_ICON=ON`:遵循 [freedesktop.org 图标主题规范](https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)安装图标,以适应不同的主题和尺寸。AppImage 需要启用此项;Linux 打包 `PREFIX=/usr` 时推荐启用此项。
|
||||||
|
- `LINUX_STATIC_IME_PLUGIN=ON`(make 阶段):静态链接输入法插件。推荐在使用静态版本的 Qt 编译时启用;**不要**在使用动态版本的 Qt 编译时启用。
|
||||||
|
|
||||||
## Ubuntu
|
## Ubuntu
|
||||||
|
|
||||||
|
|
|
@ -454,6 +454,17 @@ unix: {
|
||||||
linux: {
|
linux: {
|
||||||
LIBS+= \
|
LIBS+= \
|
||||||
-lrt
|
-lrt
|
||||||
|
|
||||||
|
_LINUX_STATIC_IME_PLUGIN = $$(LINUX_STATIC_IME_PLUGIN)
|
||||||
|
equals(_LINUX_STATIC_IME_PLUGIN, "ON") {
|
||||||
|
SOURCES += \
|
||||||
|
resources/linux_static_ime_plugin.cpp
|
||||||
|
QTPLUGIN.platforminputcontexts += \
|
||||||
|
composeplatforminputcontextplugin \
|
||||||
|
fcitx5platforminputcontextplugin \
|
||||||
|
ibusplatforminputcontextplugin
|
||||||
|
LIBS += -L$$[QT_INSTALL_PLUGINS]/platforminputcontexts
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TRANSLATIONS += \
|
TRANSLATIONS += \
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <QtPlugin>
|
||||||
|
|
||||||
|
// explicitily reference the symbols for the plugins
|
||||||
|
// so the linker will pull them in during static linking
|
||||||
|
|
||||||
|
Q_IMPORT_PLUGIN(QComposePlatformInputContextPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QFcitx5PlatformInputContextPlugin)
|
||||||
|
Q_IMPORT_PLUGIN(QIbusPlatformInputContextPlugin)
|
|
@ -9,7 +9,7 @@ APPIMAGE_FILE=RedPandaIDE-$VERSION-$CARCH.AppImage
|
||||||
mkdir -p /build/redpanda-build
|
mkdir -p /build/redpanda-build
|
||||||
cd /build/redpanda-build
|
cd /build/redpanda-build
|
||||||
qmake PREFIX='/usr' XDG_ADAPTIVE_ICON=ON /build/RedPanda-CPP/Red_Panda_CPP.pro
|
qmake PREFIX='/usr' XDG_ADAPTIVE_ICON=ON /build/RedPanda-CPP/Red_Panda_CPP.pro
|
||||||
make -j$(nproc)
|
make LINUX_STATIC_IME_PLUGIN=ON -j$(nproc)
|
||||||
|
|
||||||
# install RedPanda C++ to AppDir
|
# install RedPanda C++ to AppDir
|
||||||
make install INSTALL_ROOT=/build/RedPandaIDE.AppDir
|
make install INSTALL_ROOT=/build/RedPandaIDE.AppDir
|
||||||
|
|
|
@ -7,7 +7,7 @@ RUN sed -i 's|ports.ubuntu.com|mirrors.ustc.edu.cn|g' /etc/apt/sources.list && \
|
||||||
export DEBIAN_FRONTEND=noninteractive && \
|
export DEBIAN_FRONTEND=noninteractive && \
|
||||||
apt update && \
|
apt update && \
|
||||||
apt upgrade -y && \
|
apt upgrade -y && \
|
||||||
apt install --no-install-recommends -y ca-certificates cargo curl cmake file gcc g++ make \
|
apt install --no-install-recommends -y ca-certificates cargo curl cmake extra-cmake-modules file gcc g++ make \
|
||||||
libatspi2.0-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev libxkbcommon-x11-dev
|
libatspi2.0-dev libdbus-1-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev libxkbcommon-x11-dev
|
||||||
|
|
||||||
# AppImageKit
|
# AppImageKit
|
||||||
|
@ -17,7 +17,9 @@ RUN curl -L -o /usr/local/bin/appimagetool 'https://github.com/AppImage/AppImage
|
||||||
# Qt 5
|
# Qt 5
|
||||||
RUN mkdir -p /build/qt5 && \
|
RUN mkdir -p /build/qt5 && \
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
curl -O 'https://mirrors.ustc.edu.cn/qtproject/archive/qt/5.12/5.12.12/submodules/qt{base,svg,tools}-everywhere-src-5.12.12.tar.xz' && \
|
curl -O 'https://download.qt.io/archive/qt/5.12/5.12.12/submodules/qt{base,svg,tools}-everywhere-src-5.12.12.tar.xz' && \
|
||||||
|
# fcitx5-qt 5.0.6 is the last version compatible with ubuntu 18.04’s cmake 3.10
|
||||||
|
curl -L -o fcitx5-qt-5.0.6.tar.gz 'https://github.com/fcitx/fcitx5-qt/archive/refs/tags/5.0.6.tar.gz' && \
|
||||||
tar xf qtbase-everywhere-src-5.12.12.tar.xz && \
|
tar xf qtbase-everywhere-src-5.12.12.tar.xz && \
|
||||||
cd qtbase-everywhere-src-5.12.12 && \
|
cd qtbase-everywhere-src-5.12.12 && \
|
||||||
./configure \
|
./configure \
|
||||||
|
@ -42,6 +44,14 @@ RUN mkdir -p /build/qt5 && \
|
||||||
qmake . && \
|
qmake . && \
|
||||||
make -j$(nproc) && \
|
make -j$(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
|
# fcitx5 package
|
||||||
|
cd /build/qt5 && \
|
||||||
|
tar xf fcitx5-qt-5.0.6.tar.gz && \
|
||||||
|
cd fcitx5-qt-5.0.6 && \
|
||||||
|
cmake . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
||||||
|
# cmake 3.10 is too old to build with `--parallel` option
|
||||||
|
cmake --build build -- -j$(nproc) && \
|
||||||
|
cmake --install build && \
|
||||||
# cleanup
|
# cleanup
|
||||||
cd / && \
|
cd / && \
|
||||||
rm -r /build/qt5
|
rm -r /build/qt5
|
||||||
|
|
|
@ -8,7 +8,7 @@ RUN sed -i 's|^mirrorlist=|#mirrorlist=|g; s|^#baseurl=http://mirror.centos.org/
|
||||||
sed -i 's|^mirrorlist=|#mirrorlist=|g; s|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo && \
|
sed -i 's|^mirrorlist=|#mirrorlist=|g; s|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo && \
|
||||||
sed -i 's|^metalink=|#metalink=|g; s|^#baseurl=https\?://download.fedoraproject.org/pub/epel/|baseurl=https://mirrors.ustc.edu.cn/epel/|g' /etc/yum.repos.d/epel.repo && \
|
sed -i 's|^metalink=|#metalink=|g; s|^#baseurl=https\?://download.fedoraproject.org/pub/epel/|baseurl=https://mirrors.ustc.edu.cn/epel/|g' /etc/yum.repos.d/epel.repo && \
|
||||||
yum upgrade -y && \
|
yum upgrade -y && \
|
||||||
yum install -y cargo cmake3 file make which \
|
yum install -y cargo cmake3 extra-cmake-modules file make which \
|
||||||
at-spi2-core-devel dbus-devel fontconfig-devel freetype-devel glib2-devel libXrender-devel libxcb-devel libxkbcommon-devel libxkbcommon-x11-devel mesa-libGL-devel xcb-util-devel \
|
at-spi2-core-devel dbus-devel fontconfig-devel freetype-devel glib2-devel libXrender-devel libxcb-devel libxkbcommon-devel libxkbcommon-x11-devel mesa-libGL-devel xcb-util-devel \
|
||||||
devtoolset-7-gcc devtoolset-7-gcc-c++
|
devtoolset-7-gcc devtoolset-7-gcc-c++
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ RUN curl -L -o /usr/local/bin/appimagetool 'https://github.com/AppImage/AppImage
|
||||||
# Qt 5
|
# Qt 5
|
||||||
RUN mkdir -p /build/qt5 && \
|
RUN mkdir -p /build/qt5 && \
|
||||||
cd /build/qt5 && \
|
cd /build/qt5 && \
|
||||||
curl -O 'https://mirrors.ustc.edu.cn/qtproject/archive/qt/5.12/5.12.12/submodules/qt{base,svg,tools}-everywhere-src-5.12.12.tar.xz' && \
|
curl -O 'https://download.qt.io/archive/qt/5.12/5.12.12/submodules/qt{base,svg,tools}-everywhere-src-5.12.12.tar.xz' && \
|
||||||
|
curl -L -o fcitx5-qt-5.0.17.tar.gz 'https://github.com/fcitx/fcitx5-qt/archive/refs/tags/5.0.17.tar.gz' && \
|
||||||
tar xf qtbase-everywhere-src-5.12.12.tar.xz && \
|
tar xf qtbase-everywhere-src-5.12.12.tar.xz && \
|
||||||
cd qtbase-everywhere-src-5.12.12 && \
|
cd qtbase-everywhere-src-5.12.12 && \
|
||||||
./configure \
|
./configure \
|
||||||
|
@ -48,6 +49,13 @@ RUN mkdir -p /build/qt5 && \
|
||||||
qmake . && \
|
qmake . && \
|
||||||
make -j$(nproc) && \
|
make -j$(nproc) && \
|
||||||
make install && \
|
make install && \
|
||||||
|
# fcitx5 package
|
||||||
|
cd /build/qt5 && \
|
||||||
|
tar xf fcitx5-qt-5.0.17.tar.gz && \
|
||||||
|
cd fcitx5-qt-5.0.17 && \
|
||||||
|
cmake3 . -Bbuild -DCMAKE_MODULE_PATH=/usr/local/lib/cmake -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_BUILD_TYPE=Release -DENABLE_QT4=Off -DENABLE_QT5=On -DENABLE_QT6=Off -DBUILD_ONLY_PLUGIN=On -DBUILD_STATIC_PLUGIN=On && \
|
||||||
|
cmake3 --build build --parallel && \
|
||||||
|
cmake3 --install build && \
|
||||||
# cleanup
|
# cleanup
|
||||||
cd / && \
|
cd / && \
|
||||||
rm -r /build/qt5
|
rm -r /build/qt5
|
||||||
|
|
Loading…
Reference in New Issue