Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ubuntu package #242

Merged
merged 9 commits into from
Feb 13, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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