Skip to content

Commit

Permalink
Ubuntu package (#242)
Browse files Browse the repository at this point in the history
* Install im-config entry

* Set ubuntu docker

* Update ci scripts

* Workaround arch docker bug

* Update CHANGELOG
  • Loading branch information
Riey committed Feb 13, 2021
1 parent 781c369 commit 1d38fa1
Show file tree
Hide file tree
Showing 17 changed files with 200 additions and 79 deletions.
76 changes: 61 additions & 15 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,67 @@ on:
tags:
- 'v*'

env:
DOCKER_BUILDKIT: 1

jobs:
packaging:
build-arch:
runs-on: ubuntu-20.04


steps:
- uses: actions/checkout@v2
- name: Run docker
run: |
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/
- 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: 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: Build deb
run: |
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 -pv /opt/kime-out
ci/build_deb.sh
- name: Upload deb
uses: actions/upload-artifact@v2
with:
name: ubuntu
path: /opt/kime-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
Expand All @@ -37,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
Expand All @@ -47,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
16 changes: 0 additions & 16 deletions Dockerfile

This file was deleted.

33 changes: 33 additions & 0 deletions build-docker/arch/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
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
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" ]
26 changes: 26 additions & 0 deletions build-docker/ubuntu-20.04/Dockerfile
Original file line number Diff line number Diff line change
@@ -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" ]
4 changes: 4 additions & 0 deletions ci/build_deb.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

scripts/build.sh -ar
scripts/release-deb.sh /opt/kime-out
2 changes: 0 additions & 2 deletions ci/build_release.sh → ci/build_xz.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,3 @@

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

1 change: 1 addition & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
11 changes: 11 additions & 0 deletions scripts/im_kime.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
IM_CONFIG_SHORT="activate Kime"
IM_CONFIG_LONG="Korean IME"

package_auto () {
package_status kime
}

package_menu () {
package_status kime
}

11 changes: 11 additions & 0 deletions scripts/im_kime.rc
Original file line number Diff line number Diff line change
@@ -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
29 changes: 17 additions & 12 deletions scripts/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,27 +26,32 @@ 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() {
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
Expand All @@ -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"

11 changes: 9 additions & 2 deletions scripts/release-deb.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/bin/bash

KIME_PREFIX=51_kime

source $(dirname $0)/tool.sh

if [ -z "$1" ]; then
Expand All @@ -12,10 +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
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"

dpkg-deb --build $TMP_PATH "${TARGET_PATH}/kime_amd64.deb"
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
16 changes: 7 additions & 9 deletions src/frontends/gtk2/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK2 gtk+-2.0)

if(${GTK2_FOUND} STREQUAL "0")
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()
14 changes: 6 additions & 8 deletions src/frontends/gtk3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 gtk+-3.0)

if(${GTK3_FOUND} STREQUAL "0")
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()
16 changes: 7 additions & 9 deletions src/frontends/gtk4/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK4 gtk4)
pkg_check_modules(GTK4 QUIET gtk4)

if(${GTK4_FOUND} STREQUAL "0")
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()
6 changes: 3 additions & 3 deletions src/frontends/qt5/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ 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()

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)
Loading

0 comments on commit 1d38fa1

Please sign in to comment.