From f1b543e2b500b31d4bedd32ff6947ec4e0842c9b Mon Sep 17 00:00:00 2001 From: Riey Date: Sat, 13 Feb 2021 01:04:55 +0900 Subject: [PATCH 1/9] Install im-config entry --- scripts/im_kime.conf | 11 +++++++++++ scripts/im_kime.rc | 11 +++++++++++ scripts/install.sh | 10 +++++----- scripts/release-deb.sh | 5 +++++ 4 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 scripts/im_kime.conf create mode 100644 scripts/im_kime.rc diff --git a/scripts/im_kime.conf b/scripts/im_kime.conf new file mode 100644 index 00000000..c6a34696 --- /dev/null +++ b/scripts/im_kime.conf @@ -0,0 +1,11 @@ +IM_CONFIG_SHORT="activate Kime" +IM_CONFIG_LONG="Korean IME" + +package_auto () { + package_status kime +} + +package_menu () { + package_status kime +} + diff --git a/scripts/im_kime.rc b/scripts/im_kime.rc new file mode 100644 index 00000000..27e2312c --- /dev/null +++ b/scripts/im_kime.rc @@ -0,0 +1,11 @@ +if [ "$IM_CONFIG_PHASE" = 2 ]; then + kime-xim & +fi + +if [ "$IM_CONFIG_PHASE" = 1 ]; then + XMODIFIERS="@im=kime" + GTK_IM_MODULE=kime + QT4_IM_MODULE=xim + QT_IM_MODULE=kime + CLUTTER_IM_MODULE=xim +fi diff --git a/scripts/install.sh b/scripts/install.sh index 85e6d1d0..cdf0809e 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -26,23 +26,23 @@ if [ -z "$KIME_LIB_DIR" ]; then fi if [ -z "$KIME_GTK2_DIR" ]; then - KIME_GTK2_DIR="usr/lib/gtk-2.0/2.10.0/immodules" + KIME_GTK2_DIR="$KIME_LIB_DIR/gtk-2.0/2.10.0/immodules" fi if [ -z "$KIME_GTK3_DIR" ]; then - KIME_GTK3_DIR="usr/lib/gtk-3.0/3.0.0/immodules" + KIME_GTK3_DIR="$KIME_LIB_DIR/gtk-3.0/3.0.0/immodules" fi if [ -z "$KIME_GTK4_DIR" ]; then - KIME_GTK4_DIR="usr/lib/gtk-4.0/4.0.0/immodules" + KIME_GTK4_DIR="$KIME_LIB_DIR/gtk-4.0/4.0.0/immodules" fi if [ -z "$KIME_QT5_DIR" ]; then - KIME_QT5_DIR="usr/lib/qt" + KIME_QT5_DIR="$KIME_LIB_DIR/qt" fi if [ -z "$KIME_QT6_DIR" ]; then - KIME_QT6_DIR="usr/lib/qt6" + KIME_QT6_DIR="$KIME_LIB_DIR/qt6" fi install_bin() { diff --git a/scripts/release-deb.sh b/scripts/release-deb.sh index 27bb4723..bb0a0525 100755 --- a/scripts/release-deb.sh +++ b/scripts/release-deb.sh @@ -1,5 +1,7 @@ #!/bin/bash +KIME_PREFIX=51_kime + source $(dirname $0)/tool.sh if [ -z "$1" ]; then @@ -14,7 +16,10 @@ VER=$(git tag --sort=v:refname | tail -1 | cut -b2-) mkdir -pv $TMP_PATH/DEBIAN cat scripts/control.in | sed "s/%VER%/$VER/" > $TMP_PATH/DEBIAN/control +install -Dm644 scripts/im_kime.rc -t $TMP_PATH/usr/share/im-config/data/$KIME_PREFIX.rc +install -Dm644 scripts/im_kime.conf -t $TMP_PATH/usr/share/im-config/data/$KIME_PREFIX.conf +KIME_LIB_DIR=usr/lib/x86_64-linux-gnu \ scripts/install.sh $TMP_PATH dpkg-deb --build $TMP_PATH "${TARGET_PATH}/kime_${VER}_amd64.deb" From 57cbd38e3b8d28b53d2cb2f566e8bbc3588fbd8d Mon Sep 17 00:00:00 2001 From: Riey Date: Sat, 13 Feb 2021 04:30:28 +0900 Subject: [PATCH 2/9] WIP --- .github/workflows/release.yaml | 3 +++ Dockerfile | 16 ---------------- build-docker/ubuntu-20.10/Dockerfile | 21 +++++++++++++++++++++ ci/build_deb.sh | 6 ++++++ ci/build_release.sh | 1 - scripts/install.sh | 19 ++++++++++++------- scripts/release-deb.sh | 7 +++++-- src/frontends/gtk2/CMakeLists.txt | 2 +- src/frontends/gtk3/CMakeLists.txt | 2 +- src/frontends/gtk4/CMakeLists.txt | 4 ++-- src/frontends/qt5/CMakeLists.txt | 4 ++-- src/frontends/qt6/CMakeLists.txt | 4 ++-- 12 files changed, 55 insertions(+), 34 deletions(-) delete mode 100644 Dockerfile create mode 100644 build-docker/ubuntu-20.10/Dockerfile create mode 100755 ci/build_deb.sh diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a78234a1..e8b2e613 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -5,6 +5,9 @@ on: tags: - 'v*' +env: + DOCKER_BUILDKIT: 1 + jobs: packaging: runs-on: ubuntu-20.04 diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 2dd4d9ad..00000000 --- a/Dockerfile +++ /dev/null @@ -1,16 +0,0 @@ -FROM riey/kime-build:latest - -WORKDIR /opt/kime - -RUN mkdir -pv /opt/kime-out - -COPY ci ./ci -COPY docs ./docs -COPY res ./res -COPY src ./src - -COPY Cargo.toml . -COPY Cargo.lock . -COPY LICENSE . - -ENTRYPOINT [ "ci/build_release.sh" ] diff --git a/build-docker/ubuntu-20.10/Dockerfile b/build-docker/ubuntu-20.10/Dockerfile new file mode 100644 index 00000000..fe445e05 --- /dev/null +++ b/build-docker/ubuntu-20.10/Dockerfile @@ -0,0 +1,21 @@ +FROM ubuntu:20.04 + +WORKDIR /opt/kime + +RUN apt-get update && apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 libappindicator3-dev +RUN mkdir -pv /opt/kime-out + +COPY ci ./ci +COPY docs ./docs +COPY scripts ./scripts +COPY res ./res +COPY src ./src +COPY .git ./.git + +COPY Cargo.toml . +COPY Cargo.lock . +COPY LICENSE . + +RUN cargo fetch + +ENTRYPOINT [ "ci/build_deb.sh" ] diff --git a/ci/build_deb.sh b/ci/build_deb.sh new file mode 100755 index 00000000..f0be62ef --- /dev/null +++ b/ci/build_deb.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# scripts/build.sh -ar +scripts/build.sh -ad +scripts/release-deb.sh /opt/kime-out + diff --git a/ci/build_release.sh b/ci/build_release.sh index a64f17eb..032a95fc 100755 --- a/ci/build_release.sh +++ b/ci/build_release.sh @@ -2,5 +2,4 @@ scripts/build.sh -ar tar cvf - -C ./build/out . | xz -9 -T0 -c - > /opt/kime-out/kime.tar.xz -scripts/release-deb.sh /opt/kime-out diff --git a/scripts/install.sh b/scripts/install.sh index cdf0809e..a90edfef 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -45,8 +45,13 @@ if [ -z "$KIME_QT6_DIR" ]; then KIME_QT6_DIR="$KIME_LIB_DIR/qt6" fi -install_bin() { - install -Dm755 $KIME_OUT/$1 -t "$PREFIX/$KIME_BIN_DIR" +install_if () { + test -f $KIME_OUT/$1 && + install -Dm$2 $KIME_OUT/$1 $3 "$PREFIX/$4" +} + +install_bin () { + install_if $1 755 -t "$KIME_BIN_DIR" } install_bin kime-indicator @@ -56,9 +61,9 @@ install_bin kime-wayland install -Dm644 $KIME_OUT/default_config.yaml -T "$PREFIX/etc/kime/config.yaml" install -Dm644 $KIME_OUT/icons/* -t "$PREFIX/$KIME_DATA_DIR/icons" install -Dm755 $KIME_OUT/libkime_engine.so -t "$PREFIX/$KIME_LIB_DIR" -install -Dm755 $KIME_OUT/libkime-gtk2.so -T "$PREFIX/$KIME_GTK2_DIR/im-kime.so" -install -Dm755 $KIME_OUT/libkime-gtk3.so -T "$PREFIX/$KIME_GTK3_DIR/im-kime.so" -install -Dm755 $KIME_OUT/libkime-gtk4.so -t "$PREFIX/$KIME_GTK4_DIR" -install -Dm755 $KIME_OUT/libkime-qt5.so -T "$PREFIX/$KIME_QT5_DIR/plugins/platforminputcontexts/libkimeplatforminputcontextplugin.so" -install -Dm755 $KIME_OUT/libkime-qt6.so -T "$PREFIX/$KIME_QT6_DIR/plugins/platforminputcontexts/libkimeplatforminputcontextplugin.so" +install_if libkime-gtk2.so 755 -T "$KIME_GTK2_DIR/im-kime.so" +install_if libkime-gtk3.so 755 -T "$KIME_GTK3_DIR/im-kime.so" +install_if libkime-gtk4.so 755 -t "$KIME_GTK4_DIR" +install_if libkime-qt5.so 755 -T "$KIME_QT5_DIR/plugins/platforminputcontexts/libkimeplatforminputcontextplugin.so" +install_if libkime-qt6.so 755 -T "$KIME_QT6_DIR/plugins/platforminputcontexts/libkimeplatforminputcontextplugin.so" diff --git a/scripts/release-deb.sh b/scripts/release-deb.sh index bb0a0525..6cf66d82 100755 --- a/scripts/release-deb.sh +++ b/scripts/release-deb.sh @@ -14,12 +14,15 @@ TMP_PATH=$(mktemp -d) VER=$(git tag --sort=v:refname | tail -1 | cut -b2-) mkdir -pv $TMP_PATH/DEBIAN +mkdir -pv $TMP_PATH/usr/share/im-config/data cat scripts/control.in | sed "s/%VER%/$VER/" > $TMP_PATH/DEBIAN/control -install -Dm644 scripts/im_kime.rc -t $TMP_PATH/usr/share/im-config/data/$KIME_PREFIX.rc -install -Dm644 scripts/im_kime.conf -t $TMP_PATH/usr/share/im-config/data/$KIME_PREFIX.conf +cp scripts/im_kime.rc $TMP_PATH/usr/share/im-config/data/$KIME_PREFIX.rc +cp scripts/im_kime.conf $TMP_PATH/usr/share/im-config/data/$KIME_PREFIX.conf KIME_LIB_DIR=usr/lib/x86_64-linux-gnu \ +KIME_QT5_DIR=usr/lib/x86_64-linux-gnu/qt5 \ +KIME_QT6_DIR=usr/lib/x86_64-linux-gnu/qt6 \ scripts/install.sh $TMP_PATH dpkg-deb --build $TMP_PATH "${TARGET_PATH}/kime_${VER}_amd64.deb" diff --git a/src/frontends/gtk2/CMakeLists.txt b/src/frontends/gtk2/CMakeLists.txt index fb6fed2e..a22aca9a 100644 --- a/src/frontends/gtk2/CMakeLists.txt +++ b/src/frontends/gtk2/CMakeLists.txt @@ -1,7 +1,7 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(GTK2 gtk+-2.0) -if(${GTK2_FOUND} STREQUAL "0") +if(NOT DEFINED ${GTK2_FOUND}) return() endif() diff --git a/src/frontends/gtk3/CMakeLists.txt b/src/frontends/gtk3/CMakeLists.txt index 60db8fca..2ac9dff7 100644 --- a/src/frontends/gtk3/CMakeLists.txt +++ b/src/frontends/gtk3/CMakeLists.txt @@ -1,7 +1,7 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 gtk+-3.0) -if(${GTK3_FOUND} STREQUAL "0") +if(NOT DEFINED ${GTK3_FOUND}) return() endif() diff --git a/src/frontends/gtk4/CMakeLists.txt b/src/frontends/gtk4/CMakeLists.txt index bba1115b..7b1498aa 100644 --- a/src/frontends/gtk4/CMakeLists.txt +++ b/src/frontends/gtk4/CMakeLists.txt @@ -1,7 +1,7 @@ find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK4 gtk4) +pkg_check_modules(GTK4 QUIET gtk4) -if(${GTK4_FOUND} STREQUAL "0") +if(NOT DEFINED ${GTK4_FOUND}) return() endif() diff --git a/src/frontends/qt5/CMakeLists.txt b/src/frontends/qt5/CMakeLists.txt index aa8eb63a..b305acb0 100644 --- a/src/frontends/qt5/CMakeLists.txt +++ b/src/frontends/qt5/CMakeLists.txt @@ -4,9 +4,9 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -find_package(Qt5 5.1.0 COMPONENTS Gui REQUIRED) +find_package(Qt5 5.1.0 QUIET COMPONENTS Gui QUIET) -if(NOT ${Qt5_FOUND}) +if(NOT Qt5_FOUND) return() endif() diff --git a/src/frontends/qt6/CMakeLists.txt b/src/frontends/qt6/CMakeLists.txt index 00021d37..e8ad26dc 100644 --- a/src/frontends/qt6/CMakeLists.txt +++ b/src/frontends/qt6/CMakeLists.txt @@ -4,9 +4,9 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) -find_package(Qt6 6.0.0 COMPONENTS Gui REQUIRED) +find_package(Qt6 6.0.0 QUIET COMPONENTS Gui QUIET) -if(NOT ${Qt6_FOUND}) +if(NOT Qt6_FOUND) return() endif() From 7161802a4ef668b1d09d2358fd551535ec03c4e7 Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 01:42:09 +0900 Subject: [PATCH 3/9] Set ubuntu docker --- build-docker/arch/Dockerfile | 26 ++++++++++++++++++++++++++ build-docker/ubuntu-20.04/Dockerfile | 26 ++++++++++++++++++++++++++ build-docker/ubuntu-20.10/Dockerfile | 21 --------------------- ci/build_deb.sh | 4 +--- ci/{build_release.sh => build_xz.sh} | 1 - src/CMakeLists.txt | 1 + src/frontends/gtk2/CMakeLists.txt | 16 +++++++--------- src/frontends/gtk3/CMakeLists.txt | 14 ++++++-------- src/frontends/gtk4/CMakeLists.txt | 14 ++++++-------- src/frontends/qt5/CMakeLists.txt | 2 +- src/frontends/qt6/CMakeLists.txt | 2 +- 11 files changed, 75 insertions(+), 52 deletions(-) create mode 100644 build-docker/arch/Dockerfile create mode 100644 build-docker/ubuntu-20.04/Dockerfile delete mode 100644 build-docker/ubuntu-20.10/Dockerfile rename ci/{build_release.sh => build_xz.sh} (99%) diff --git a/build-docker/arch/Dockerfile b/build-docker/arch/Dockerfile new file mode 100644 index 00000000..afa1875e --- /dev/null +++ b/build-docker/arch/Dockerfile @@ -0,0 +1,26 @@ +FROM archlinux:base-devel + +WORKDIR /opt/kime + +RUN pacman -Syu --noconfirm +RUN pacman -S --noconfirm --needed rust cmake clang llvm libxcb cairo +RUN pacman -S --noconfirm --needed gtk2 gtk3 gtk4 +RUN pacman -S --noconfirm --needed qt5-base qt6-base +RUN pacman -S --noconfirm --needed libappindicator-gtk3 +RUN pacman -S --noconfirm --needed git +RUN mkdir -pv /opt/kime-out + +COPY ci ./ci +COPY docs ./docs +COPY scripts ./scripts +COPY res ./res +COPY src ./src +COPY .git ./.git + +COPY Cargo.toml . +COPY Cargo.lock . +COPY LICENSE . + +RUN cargo fetch + +ENTRYPOINT [ "ci/build_xz.sh" ] diff --git a/build-docker/ubuntu-20.04/Dockerfile b/build-docker/ubuntu-20.04/Dockerfile new file mode 100644 index 00000000..1d67b3c4 --- /dev/null +++ b/build-docker/ubuntu-20.04/Dockerfile @@ -0,0 +1,26 @@ +FROM ubuntu:20.04 + +ENV DEBIAN_FRONTEND=noninteractive + +WORKDIR /opt/kime + +RUN apt-get update +RUN apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config +RUN apt-get install -y libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 libappindicator3-dev +RUN apt-get install -y qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 +RUN mkdir -pv /opt/kime-out + +COPY ci ./ci +COPY docs ./docs +COPY scripts ./scripts +COPY res ./res +COPY src ./src +COPY .git ./.git + +COPY Cargo.toml . +COPY Cargo.lock . +COPY LICENSE . + +RUN cargo fetch + +ENTRYPOINT [ "ci/build_deb.sh" ] diff --git a/build-docker/ubuntu-20.10/Dockerfile b/build-docker/ubuntu-20.10/Dockerfile deleted file mode 100644 index fe445e05..00000000 --- a/build-docker/ubuntu-20.10/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM ubuntu:20.04 - -WORKDIR /opt/kime - -RUN apt-get update && apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 libappindicator3-dev -RUN mkdir -pv /opt/kime-out - -COPY ci ./ci -COPY docs ./docs -COPY scripts ./scripts -COPY res ./res -COPY src ./src -COPY .git ./.git - -COPY Cargo.toml . -COPY Cargo.lock . -COPY LICENSE . - -RUN cargo fetch - -ENTRYPOINT [ "ci/build_deb.sh" ] diff --git a/ci/build_deb.sh b/ci/build_deb.sh index f0be62ef..6cbdf577 100755 --- a/ci/build_deb.sh +++ b/ci/build_deb.sh @@ -1,6 +1,4 @@ #!/bin/bash -# scripts/build.sh -ar -scripts/build.sh -ad +scripts/build.sh -ar scripts/release-deb.sh /opt/kime-out - diff --git a/ci/build_release.sh b/ci/build_xz.sh similarity index 99% rename from ci/build_release.sh rename to ci/build_xz.sh index 032a95fc..984b20d9 100755 --- a/ci/build_release.sh +++ b/ci/build_xz.sh @@ -2,4 +2,3 @@ scripts/build.sh -ar tar cvf - -C ./build/out . | xz -9 -T0 -c - > /opt/kime-out/kime.tar.xz - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 76deb031..d4ce418b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,6 +17,7 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(KIME_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/engine/cffi) set(KIME_LIB_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../target/debug ${CMAKE_CURRENT_SOURCE_DIR}/../target/release) +set(KIME_ENGINE kime_engine) set(OpenGL_GL_PREFERENCE GLVND) include(GNUInstallDirs) diff --git a/src/frontends/gtk2/CMakeLists.txt b/src/frontends/gtk2/CMakeLists.txt index a22aca9a..66c01b25 100644 --- a/src/frontends/gtk2/CMakeLists.txt +++ b/src/frontends/gtk2/CMakeLists.txt @@ -1,13 +1,11 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(GTK2 gtk+-2.0) -if(NOT DEFINED ${GTK2_FOUND}) - return() -endif() - -add_library(kime-gtk2 SHARED src/gtk.c src/immodule.c) +if(GTK2_FOUND) + add_library(kime-gtk2 SHARED src/gtk.c src/immodule.c) -target_compile_definitions(kime-gtk2 PRIVATE GTK_DISABLE_DEPRECATED) -target_include_directories(kime-gtk2 PRIVATE ${GTK2_INCLUDE_DIRS} ${KIME_INCLUDE}) -target_link_directories(kime-gtk2 PRIVATE ${GTK2_LIBRARY_DIRS} ${KIME_LIB_DIRS}) -target_link_libraries(kime-gtk2 PRIVATE ${GTK2_LIBRARIES} kime_engine) + target_compile_definitions(kime-gtk2 PRIVATE GTK_DISABLE_DEPRECATED) + target_include_directories(kime-gtk2 PRIVATE ${GTK2_INCLUDE_DIRS} ${KIME_INCLUDE}) + target_link_directories(kime-gtk2 PRIVATE ${GTK2_LIBRARY_DIRS} ${KIME_LIB_DIRS}) + target_link_libraries(kime-gtk2 PRIVATE ${GTK2_LIBRARIES} ${KIME_ENGINE}) +endif() diff --git a/src/frontends/gtk3/CMakeLists.txt b/src/frontends/gtk3/CMakeLists.txt index 2ac9dff7..cdcb20d6 100644 --- a/src/frontends/gtk3/CMakeLists.txt +++ b/src/frontends/gtk3/CMakeLists.txt @@ -1,12 +1,10 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(GTK3 gtk+-3.0) -if(NOT DEFINED ${GTK3_FOUND}) - return() -endif() - -add_library(kime-gtk3 SHARED ../gtk2/src/gtk.c ../gtk2/src/immodule.c) +if(GTK3_FOUND) + add_library(kime-gtk3 SHARED ../gtk2/src/gtk.c ../gtk2/src/immodule.c) -target_include_directories(kime-gtk3 PRIVATE ${GTK3_INCLUDE_DIRS} ${KIME_INCLUDE}) -target_link_directories(kime-gtk3 PRIVATE ${GTK3_LIBRARY_DIRS} ${KIME_LIB_DIRS}) -target_link_libraries(kime-gtk3 ${GTK3_LIBRARIES} kime_engine) + target_include_directories(kime-gtk3 PRIVATE ${GTK3_INCLUDE_DIRS} ${KIME_INCLUDE}) + target_link_directories(kime-gtk3 PRIVATE ${GTK3_LIBRARY_DIRS} ${KIME_LIB_DIRS}) + target_link_libraries(kime-gtk3 ${GTK3_LIBRARIES} ${KIME_ENGINE}) +endif() diff --git a/src/frontends/gtk4/CMakeLists.txt b/src/frontends/gtk4/CMakeLists.txt index 7b1498aa..80000637 100644 --- a/src/frontends/gtk4/CMakeLists.txt +++ b/src/frontends/gtk4/CMakeLists.txt @@ -1,12 +1,10 @@ find_package(PkgConfig REQUIRED) pkg_check_modules(GTK4 QUIET gtk4) -if(NOT DEFINED ${GTK4_FOUND}) - return() -endif() - -add_library(kime-gtk4 SHARED src/gtk4.c ../gtk2/src/immodule.c) +if(GTK4_FOUND) + add_library(kime-gtk4 SHARED src/gtk4.c ../gtk2/src/immodule.c) -target_include_directories(kime-gtk4 PRIVATE ${GTK4_INCLUDE_DIRS} ${KIME_INCLUDE}) -target_link_directories(kime-gtk4 PRIVATE ${GTK4_LIBRARY_DIRS} ${KIME_LIB_DIRS}) -target_link_libraries(kime-gtk4 PRIVATE ${GTK4_LIBRARIES} kime_engine) + target_include_directories(kime-gtk4 PRIVATE ${GTK4_INCLUDE_DIRS} ${KIME_INCLUDE}) + target_link_directories(kime-gtk4 PRIVATE ${GTK4_LIBRARY_DIRS} ${KIME_LIB_DIRS}) + target_link_libraries(kime-gtk4 PRIVATE ${GTK4_LIBRARIES} ${KIME_ENGINE}) +endif() diff --git a/src/frontends/qt5/CMakeLists.txt b/src/frontends/qt5/CMakeLists.txt index b305acb0..3b8b9021 100644 --- a/src/frontends/qt5/CMakeLists.txt +++ b/src/frontends/qt5/CMakeLists.txt @@ -14,4 +14,4 @@ add_library(kime-qt5 SHARED src/plugin.cc src/input_context.cc) target_include_directories(kime-qt5 PRIVATE ${Qt5Gui_PRIVATE_INCLUDE_DIRS} ${KIME_INCLUDE}) target_link_directories(kime-qt5 PRIVATE ${KIME_LIB_DIRS}) -target_link_libraries(kime-qt5 PRIVATE kime_engine Qt5::Gui) +target_link_libraries(kime-qt5 PRIVATE ${KIME_ENGINE} Qt5::Gui) diff --git a/src/frontends/qt6/CMakeLists.txt b/src/frontends/qt6/CMakeLists.txt index e8ad26dc..a5b2b79d 100644 --- a/src/frontends/qt6/CMakeLists.txt +++ b/src/frontends/qt6/CMakeLists.txt @@ -14,4 +14,4 @@ add_library(kime-qt6 SHARED ../qt5/src/plugin.cc ../qt5/src/input_context.cc) target_include_directories(kime-qt6 PRIVATE ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ${KIME_INCLUDE}) target_link_directories(kime-qt6 PRIVATE ${KIME_LIB_DIRS}) -target_link_libraries(kime-qt6 PRIVATE kime_engine Qt6::Gui) +target_link_libraries(kime-qt6 PRIVATE ${KIME_ENGINE} Qt6::Gui) From 8c2c812bdcab2fa56b44b27c1833f411e40ea7a2 Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 02:06:39 +0900 Subject: [PATCH 4/9] Update ci scripts --- .github/workflows/release.yaml | 73 +++++++++++++++++++++++++++------- scripts/release-deb.sh | 3 +- 2 files changed, 59 insertions(+), 17 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e8b2e613..d4d661fd 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -9,20 +9,63 @@ env: DOCKER_BUILDKIT: 1 jobs: - packaging: + build-arch: runs-on: ubuntu-20.04 - + steps: - uses: actions/checkout@v2 - - name: Set VER - id: version - run: echo "::set-output name=ver::$(grep '^version =' src/xtask/Cargo.toml|head -n1|cut -d\" -f2)" - - name: Make temp dir - run: mkdir /tmp/kime - - name: Build image - run: docker build --tag riey/kime --network=host . - - name: Run image - run: docker run -e "TERM=xterm-256color" -e "CARGO_TERM_COLOR=always" --network=host -v /tmp/kime:/opt/kime-out riey/kime release + - name: Run docker + run: | + docker build --file build-docker/arch/Dockerfile --tag kime-build:arch . + docker run --name kime-arch kime-build:arch + mkdir /tmp/out + docker cp kime-arch:/opt/kime-out/kime.tar.xz /tmp/out/ + + - name: Upload tar.xz + uses: actions/upload-artifact@v2 + with: + name: arch + path: /tmp/out/kime.tar.xz + + # ubuntu build is run on native + build-ubuntu: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - name: Build deb + run: | + apt-get update + apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config + apt-get install -y libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 libappindicator3-dev + apt-get install -y qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 + mkdir /tmp/out + ci/build_deb.sh /tmp/out + + - name: Upload deb + uses: actions/upload-artifact@v2 + with: + name: ubuntu + path: /tmp/out/kime_amd64.deb + + upload: + needs: + - build-arch + - build-ubuntu + + runs-on: ubuntu-20.04 + + steps: + - name: Checkout workdir + run: mkdir /tmp/work && cd /tmp/work + - name: Download arch artifact + uses: actions/download-artifact@v2 + with: + name: arch + - name: Download ubuntu artifact + uses: actions/download-artifact@v2 + with: + name: ubuntu - name: Create draft release id: create_release uses: actions/create-release@v1 @@ -40,8 +83,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: /tmp/kime/kime.tar.xz - asset_name: kime-${{ steps.version.outputs.ver }}.tar.xz + asset_path: ./kime.tar.xz + asset_name: kime-${{ github.ref }}.tar.xz asset_content_type: application/x-xz - name: Upload deb package @@ -50,6 +93,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: /tmp/kime/kime_${{ steps.version.outputs.ver }}_amd64.deb - asset_name: kime_${{ steps.version.outputs.ver }}_amd64.deb + asset_path: ./kime_amd64.deb + asset_name: kime_${{ github.ref }}_amd64.deb asset_content_type: application/x-xz diff --git a/scripts/release-deb.sh b/scripts/release-deb.sh index 6cf66d82..163bac0b 100755 --- a/scripts/release-deb.sh +++ b/scripts/release-deb.sh @@ -25,5 +25,4 @@ KIME_QT5_DIR=usr/lib/x86_64-linux-gnu/qt5 \ KIME_QT6_DIR=usr/lib/x86_64-linux-gnu/qt6 \ scripts/install.sh $TMP_PATH -dpkg-deb --build $TMP_PATH "${TARGET_PATH}/kime_${VER}_amd64.deb" - +dpkg-deb --build $TMP_PATH "${TARGET_PATH}/kime_amd64.deb" From f438597ac6e76c1aeebf9c7921437a88b2b366dc Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 02:11:48 +0900 Subject: [PATCH 5/9] Fix build error --- .github/workflows/release.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d4d661fd..1f6001d5 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -35,10 +35,10 @@ jobs: - uses: actions/checkout@v2 - name: Build deb run: | - apt-get update - apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config - apt-get install -y libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 libappindicator3-dev - apt-get install -y qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 + sudo apt-get update + sudo apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config + sudo apt-get install -y libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 libappindicator3-dev + sudo apt-get install -y qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 mkdir /tmp/out ci/build_deb.sh /tmp/out From 84efa76f8d8754df9b3c4b3e3d5d21666d6fa0ad Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 02:14:05 +0900 Subject: [PATCH 6/9] Try change tag name --- .github/workflows/release.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 1f6001d5..a3d5aaa0 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -16,8 +16,8 @@ jobs: - uses: actions/checkout@v2 - name: Run docker run: | - docker build --file build-docker/arch/Dockerfile --tag kime-build:arch . - docker run --name kime-arch kime-build:arch + docker build --file build-docker/arch/Dockerfile --tag riey/kime-build:arch . + docker run --name kime-arch riey/kime-build:arch mkdir /tmp/out docker cp kime-arch:/opt/kime-out/kime.tar.xz /tmp/out/ From c5f810544138ca34123205d857fd51ad0fca8875 Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 02:20:33 +0900 Subject: [PATCH 7/9] Workaround arch docker bug --- build-docker/arch/Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build-docker/arch/Dockerfile b/build-docker/arch/Dockerfile index afa1875e..065ef8b0 100644 --- a/build-docker/arch/Dockerfile +++ b/build-docker/arch/Dockerfile @@ -2,6 +2,13 @@ FROM archlinux:base-devel WORKDIR /opt/kime +# WORKAROUND for glibc 2.33 and old Docker +# See https://github.com/actions/virtual-environments/issues/2658 +# Thanks to https://github.com/lxqt/lxqt-panel/pull/1562 +RUN patched_glibc=glibc-linux4-2.33-4-x86_64.pkg.tar.zst && \ + curl -LO "https://repo.archlinuxcn.org/x86_64/$patched_glibc" && \ + bsdtar -C / -xvf "$patched_glibc" + RUN pacman -Syu --noconfirm RUN pacman -S --noconfirm --needed rust cmake clang llvm libxcb cairo RUN pacman -S --noconfirm --needed gtk2 gtk3 gtk4 From 1af3202fb6ca2490ab9ee31955e134b01d98ff32 Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 02:25:54 +0900 Subject: [PATCH 8/9] Fix ubuntu out path --- .github/workflows/release.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a3d5aaa0..086e1485 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -39,14 +39,14 @@ jobs: sudo apt-get install -y build-essential git gcc clang llvm cmake extra-cmake-modules cargo pkg-config sudo apt-get install -y libpango1.0-dev libcairo2-dev libgtk2.0-dev libgtk-3-dev libglib2.0 libxcb1 libappindicator3-dev sudo apt-get install -y qt5-default qtbase5-dev qtbase5-private-dev libqt5gui5 - mkdir /tmp/out - ci/build_deb.sh /tmp/out + mkdir -pv /opt/kime-out + ci/build_deb.sh - name: Upload deb uses: actions/upload-artifact@v2 with: name: ubuntu - path: /tmp/out/kime_amd64.deb + path: /opt/kime-out/kime_amd64.deb upload: needs: From eec5a942b3c500029e38c2acd08f2120474011b6 Mon Sep 17 00:00:00 2001 From: Riey Date: Sun, 14 Feb 2021 02:41:19 +0900 Subject: [PATCH 9/9] Update CHANGELOG --- docs/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 29e76a16..cc2b5694 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,6 +2,7 @@ ## Dev +* Fix debian packaging [#140](https://github.com/Riey/kime/issues/140) * Use shell script for Build [#231](https://github.com/Riey/kime/issues/231) * Using C++ header for engine cffi [#229](https://github.com/Riey/kime/issues/229) * Implement engine hotkeys [#223](https://github.com/Riey/kime/issues/223)