Nothin' but Slackware

バイクとLinuxに戯れる日々

2021年08月

カーネルの特定モジュールを個別にmakeする

いつの日か役立つかもしれない情報

### カーネルソースにある特定モジュールを個別にmakeする方法 ###

例)bcm/snd-soc-63xx モジュールをmakeしてみる
[code]
# cd /usr/src/linux-5.13.12/
# cat .config |grep BCM63
CONFIG_SERIAL_BCM63XX=m
# CONFIG_SND_BCM63XX_I2S_WHISTLER is not set
上記の通り、標準では CONFIG_SND_BCM63XX_I2S_WHISTLER はモジュール指定されていない。

モジュール作成コマンド(カーネルソースツリー内で実行)
[code]
# CONFIG_SND_BCM63XX_I2S_WHISTLER=m make M=./sound/soc/bcm
  CC [M]  sound/soc/bcm/bcm63xx-i2s-whistler.o
  CC [M]  sound/soc/bcm/bcm63xx-pcm-whistler.o
  LD [M]  sound/soc/bcm/snd-soc-63xx.o
  MODPOST sound/soc/bcm/Module.symvers
  CC [M]  sound/soc/bcm/snd-soc-63xx.mod.o
  LD [M]  sound/soc/bcm/snd-soc-63xx.ko

モジュール snd-soc-63xx.ko が作成できました。

MEGAsync-4.5.0.0 and MEGAcmd-1.4.0 under gcc-11

MEGAsync を 4.5.3.0 にバージョンアップ

2021-07 まで使用していたバージョン: MEGAsync-4.4.0.0,  MEGAcomd-1.4.0
それまで問題なく使用できていたが、(いつ頃からなのか定かではないが) 2021-08 の
slackware64-15.0.RC1 になって以降に使う機会があり操作してみたものの、

MEGAsync の自動同期が「同期中・・・」のまま完了しない
MEGAcmd によるファイルアップロードが「サーバーエラー、切断」的なメッセージが表示されて
  アップロードできない

という現象に遭遇した。
たまたまそのときその時間帯だけのMEGAサーバー側の問題だったのか不明だが、MEGAsync GitHubを
覗いたら最新バージョン 4.5.3.0 がリリースされていたのでアップグレードに挑戦してみた。

前述の同期不具合、MEGAcmdのアップロード不具合の原因はわからないが、2021-08に
slackware64-currentが 15.0.RC1へ更新され gcc-11, ffmpeg-4.4といった環境になっており、以前より環境が変わっているので、最新環境下で再コンパイルすれば改善される可能性があるかもという期待を抱いて作業開始。

関連リンク:

### MEGAsync Upgrade ###
TEST-1)
MEGAsync-4.5.3.0 オリジナルソースをそのままコンパイル
(結果) 
  下記エラーログ(抜粋)を吐いてコンパイル停止
[code]
mega/src/gfx/qt.cpp:1212:18: error: 'AVStream' {aka 'struct AVStream'} has no member named 'skip_to_keyframe'
 1212 |     videoStream->skip_to_keyframe = true;
      |                  ^~~~~~~~~~~~~~~~
mega/src/gfx/qt.cpp:1288:19: warning: 'void av_init_packet(AVPacket*)' is deprecated [-Wdeprecated-declarations]
 1288 |     av_init_packet(&packet);
      |     ~~~~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/libavcodec/bsf.h:30,
                 from /usr/include/libavcodec/avcodec.h:44,
                 from /usr/include/libavformat/avformat.h:312,
                 from mega/src/gfx/qt.cpp:42:
/usr/include/libavcodec/packet.h:488:6: note: declared here
  488 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
mega/src/gfx/qt.cpp:1302:48: warning: 'int avcodec_decode_video2(AVCodecContext*, AVFrame*, int*, const AVPacket*)' is deprecated [-Wdeprecated-declarations]
 1302 |            decodedBytes = avcodec_decode_video2(&codecContext, videoFrame, &frameExtracted, &packet);
      |                           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from mega/src/gfx/qt.cpp:42:
/usr/include/libavcodec/avcodec.h:3096:5: note: declared here
 3096 | int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
      |     ^~~~~~~~~~~~~~~~~~~~~
mega/src/gfx/qt.cpp:1325:81: warning: 'int QImage::byteCount() const' is deprecated: Use sizeInBytes [-Wdeprecated-declarations]
 1325 |                                     width, height, image.bits(), image.byteCount()) <= 0)
      |                                                                  ~~~~~~~~~~~~~~~^~
In file included from /usr/include/qt5/QtGui/qimagereader.h:46,
                 from /usr/include/qt5/QtGui/QImageReader:1,
                 from mega/include/mega/gfx/qt.h:26,
                 from mega/include/mega.h:83,
                 from mega/src/gfx/qt.cpp:25:
/usr/include/qt5/QtGui/qimage.h:221:44: note: declared here
  221 |     QT_DEPRECATED_X("Use sizeInBytes") int byteCount() const;
      |                                            ^~~~~~~~~
mega/src/gfx/qt.cpp:1324:41: warning: 'int avpicture_layout(const AVPicture*, AVPixelFormat, int, int, unsigned char*, int)' is deprecated [-Wdeprecated-declarations]
 1324 |                     if (avpicture_layout((AVPicture *)targetFrame, targetPixelFormat,
      |                         ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1325 |                                     width, height, image.bits(), image.byteCount()) <= 0)
      |                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/libavformat/avformat.h:312,
                 from mega/src/gfx/qt.cpp:42:
/usr/include/libavcodec/avcodec.h:3770:5: note: declared here
 3770 | int avpicture_layout(const AVPicture *src, enum AVPixelFormat pix_fmt,
      |     ^~~~~~~~~~~~~~~~
make[1]: *** [Makefile:8869: qt.o] Error 1

エラーログを参考に検索すると、MEGAsync GitHub に同様のエラーに関する issue報告が上がっていた。

FFmpeg-4.4 の元ソースに変更があったのが原因らしい。


TEST-2)
ffmpeg-4 関連の対策パッチをあててコンパイル
 Web検索した結果、Gentoo portage に対ffmpeg4.4 らしきパッチがあった。
 パッチは MEGAsync-4.5.0.0 ソース用に作られものだが、 4.5.3.0 にも使用できるかどうか試してみた。

(結果)
      1) patch は reject箇所等無く適用できた
      2) 最後までコンパイルが通り、パッケージが作成できた

使用したソース:
 MEGAsync-4.5.3.0_Linux.tar.gz
 sdk-3.8.2c.tar.gz

[code] MEGAsync.SlackBuild
#!/bin/sh

# Slackware build script for MEGASync input plugin

# Copyright 2017,2018 Felipe Bugno <capent@yahoo.com>
#
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# 2021-08-23 : version bump to 4.5.0.0 -- Build with gcc-11 and with ffmpeg4.4 patch
# 2021-08-24 : version bump to 4.5.3.0 -- Build with gcc-11 and with ffmpeg4.4 patch
# 2021-08-24 : version 4.5.3.0 2jw -- use sdk-3.8.2c instead of commit version "c11a688d578e16dc25d4c94fee7995730be1aa50".

PRGNAM=MEGAsync
VERSION=${VERSION:-4.5.3.0}
SDK=${SDK:-3.8.2c}
BUILD=${BUILD:-2}
TAG=${TAG:-jw}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
  SLKCFLAGS="-O2 -march=i586 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686 -mtune=i686"
  LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
  LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION\_Linux
tar xvf $CWD/$PRGNAM-$VERSION\_Linux.tar.gz
cd $PRGNAM-$VERSION\_Linux/src/MEGASync/mega
tar --strip-components=1 -xvf $CWD/sdk-$SDK.tar.gz
cd ../../../
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
  -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

cd src/MEGASync/mega
patch -p1 < $CWD/megasync-4.5.0.0_pdfium.patch

./autogen.sh
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --prefix=/usr \
  --datarootdir=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux \
  --with-cares \
  --with-cryptopp \
  --with-curl \
  --with-sodium \
  --with-sqlite \
  --with-zlib \
  --with-termcap \
  --with-freeimage \
  --enable-chat \
  --enable-gcc-hardening

# Apply ffmpeg4 fix patch ; Thanks Gentoo
cd ../../../
patch -p1 < $CWD/megasync-4.5.0.0_ffmpeg.patch

cd src/
qmake CONFIG+="release" QMAKE_CXXFLAGS="$SLKCFLAGS" MEGA.pro
lrelease MEGASync/MEGASync.pro
make
install -m 755 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/megasync $PKG/usr/bin/megasync
install -m 644 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/platform/linux/data/megasync.desktop $PKG/usr/share/applications/megasync.desktop
install -m 644 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/platform/linux/data/icons/hicolor/16x16/apps/mega.png $PKG/usr/share/icons/hicolor/16x16/apps/mega.png
install -m 644 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/platform/linux/data/icons/hicolor/32x32/apps/mega.png $PKG/usr/share/icons/hicolor/32x32/apps/mega.png
install -m 644 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/platform/linux/data/icons/hicolor/48x48/apps/mega.png $PKG/usr/share/icons/hicolor/48x48/apps/mega.png
install -m 644 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/platform/linux/data/icons/hicolor/128x128/apps/mega.png $PKG/usr/share/icons/hicolor/128x128/apps/mega.png
install -m 644 -p -D $TMP/$PRGNAM-$VERSION\_Linux/src/MEGASync/platform/linux/data/icons/hicolor/256x256/apps/mega.png $PKG/usr/share/icons/hicolor/256x256/apps/mega.png

find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cd $TMP/$PRGNAM-$VERSION\_Linux
cp -a  README.md LICENCE.md CREDITS.md $PKG/usr/doc/$PRGNAM-$VERSION
cp $CWD/megasync-4.5.0.0_pdfium.patch $CWD/megasync-4.5.0.0_ffmpeg.patch $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}

(動作状況)
   ・ Xfce 起動時のオートスタート: 従来通り起動した(問題なし)
   ・ 起動後のパネルにアイコンが表示され、バージョン 4.5.3.0  と表示された(OK)
   ・ 同期ディレクトリにファイルを入れたときの自動同期の開始&同期ァン料まで: 問題なく実行された

 いまのところ問題なく動作中。


### MEGAcmd re-compile ###

Megacmd for Linux はバージョン 1.4.0 のままで新バージョンは出ていないので、単に gcc-11, ffmpeg-4.4
環境下にて再コンパイルした。
Arch linux の情報を参考にして、コンパイルオプションに
"--without-ffmpeg"
を付与して再コンパイル。
パッケージは問題なく終了し、インストール後の動作も冒頭の不具合もなくファイルアップロードが完了できた。



slackware64 15.0_RC1 has been released

20121-08-16 slackware64-current - ChangeLog より

Anyway, without further ado, here is Slackware 15.0 release candidate one.
Consider most things frozen and the focus now to be any remaining blocker bugs.
We'll more than likely take that next Plasma bugfix release, but it's soon
time to get off this treadmill. Enjoy! :-)

というわけで slackware64 が事実上 version-15.0-RC1 になりました。

また、カーネル 5.13.11 の .config に一部アップデートがあったので
自宅メインPCの config も同様に修正し、再構築した。

[code] 
/kernel-source-5.13.11-noarch-1.txz: Upgraded.
       CC_VERSION_TEXT "gcc (GCC) 10.3.0" -> "gcc (GCC) 11.2.0"
       GCC_VERSION 100300 -> 110200
       +CC_HAS_ASM_GOTO_OUTPUT y
       +HAVE_KCSAN_COMPILER y
       +KCSAN n
       +SND_SOC_INTEL_HDA_DSP_COMMON m
       +SND_SOC_INTEL_SOF_MAXIM_COMMON m

自分用の注記)
slackware64のデフォルト config では CONFIG_FONT_TER16x32=y になっているが
自分の環境ではこれを無効にしないと起動時のコンソールフォントが高解像度にならないので「無効」に修正。

-CONFIG_FONT_TER16x32=y
+# CONFIG_FONT_TER16x32 is not set





PDFファイルを操作する便利なコマンド (pdfunite, pdfinfo, pdffonts など)

1. 複数のPDFファイルを結合するコマンド pdfunite - poppler パッケージに含まれている
 例)Usage: pdfunite [options] <PDF-sourcefile-1>..<PDF-sourcefile-n> <PDF-destfile>

[code]  INPUT-1.pdf - INPUT-n.pdf を結合して OUT.pdf へ出力する
pdfunite        INPUT-1.pdf    INPUT-2.pdf  ...   INPUT-n.pdf       OUT.pdf

2. PDFファイルの内部情報を表示するコマンド
 2-1. ファイル情報表示 (pdfinfo) -- poppler パッケージに含まれている
[code]
$ pdfinfo File.pdf

Title:          検討結果報告2.PDF
Author:         
EC-PCuser       Microsoft Word
Producer:       Acrobat PDFWriter 4.05 for Windows
CreationDate:   Thu Aug 29 19:17:19 2002 JST
Tagged:         no
UserProperties: no
Suspects:       no
Form:           none
JavaScript:     no
Pages:          4
Encrypted:      no
Page size:      596 x 842 pts (A4)
Page rot:       0
File size:      25301 bytes
Optimized:      no
PDF version:    1.2

 2-2. 使用されているフォント情報を表示 (pdffonts) - poppler パッケージに含まれている
[code]
$ pdffonts File.pdf | nkf -w

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
Century                              TrueType          WinAnsi          no  no  no       6  0
MS明朝                             CID TrueType      90ms-RKSJ-H      no  no  no       8  0
MSPゴシック                       CID TrueType      90msp-RKSJ-H     no  no  no      15  0

 



WPS Office for Linux 11.1.0.10702.XA (訂正・追記)

編集中
---

linuxquestions.org に投稿した報告。

・ slackware64-current (15.0_Beta) クリーンインストール環境の別laptop-PC だと
  wps-office 11.1.0.10702 デフォルトの libdbus-1.so.3.14.6 のままでもGUIが起動した。

・ 上記パッケージを問題が発生しているメインPCにアップデートインストールしたが、
  やはり libdbus-1 関連のエラーで起動しない。

[code]  Log message
Cannot find libdbus-1 in your system to resolve symbol 'dbus_get_local_machine_id'.
   terminating with uncaught foreign exception 


  system libdbus-1 (libdbus-1.so.3.19.13) を使うようにシンボリックリンクを作り直すと
 起動できるようになる。

 どうも、このメインPCにおける dbus周りの設定が原因のような予感。
 他で問題は起きていないので、とりあえずのところは system dbus を使う設定で
 wps-office を使用継続し、並行して原因調査中。

======
[update 2021/08/14]  調査の進展

本質的な原因調査能力がないので、wps-office-11.1.0.10702 デフォルトの lindbus-1 (3.14.6) のままの
パッケージをインストールして、wpsが起動する環境と起動しない環境で何が違うのか地道に比較してみた。

Short summary of my test reslt
system
X-IM
libdbus-1 of
wps-office-11.1.0.10702
GUI execution
(works / No-GO)
slackware64-current
---
libdbus-1.so.3.14.6
(wps default)
works
slackware64-current
fcitx
libdbus-1.so.3.14.6
(wps default)
No-GO




slackware64-current
fcitx
libdbus-1.so.3.19.13
(system libdbus-1)
works

現象から逆に類推するに、
・ デフォルトの wps-office-11.1.0.10702 パッケージ( [PATH-TO]/office6/ 配下の libdbus-1.so.3.14.6 を使う)の場合は
  X-IMを設定していないユーザー環境ならアプリケーションは起動する。
  ※ X-IMの設定をしていないユーザー環境では問題なく起動する。

・ 一方、同じパッケージ環境下で fcitxなどの X-IM を設定すると、少なくとも fcitx は dbus と連携しているらしいので
  system libdbus-1 を使わないデフォルトの wps-office-11.1.0.10702 は起動できなくなっているのではないか。
code]  system libdbus-1 への再リンク
$ ps -fe |grep fcitx
  <user>       2540     1  0 04:34 ?        00:00:01 fcitx
  <user>       2565     1  0 04:34 ?        00:00:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --config-file /usr/share/fcitx/dbus/daemon.conf
  <user>       2571     1  0 04:34 ?        00:00:00 /usr/bin/fcitx-dbus-watcher unix:abstract=/tmp/dbus-CMm1zqfxXY,guid=ee0379920fxxx...xxx 2565

・ 根本的な解決策はまだ見つけることができていないが、暫定対策として
     - [PATH-TO]/office6/ 配下の libdbus-1 が system libdbus-1  を使うように再リンクする
 - system dbus 周りはそのままにして他のアプリケーションへの影響を避ける
 ことで対策した。

[code]  system libdbus-1 への再リンク
# cd [PATH-TO]/office6/
# rm libdbus-1.so
# rm libdbus-1.so.3
# ln -s /usr/lib64/libdbus-1.so.3.19.13 libdbus-1.so.3.19.13
# ln -s libdbus-1.so.3.19.13 libdbus-1.so
# ln -s libdbus-1.so.3.19.13 libdbus-1.so.3



---

[code] fcitxのプロセスを確認する
$ ps -fe |grep fcitx
   fcitx
   /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --config-file /usr/share/fcitx/dbus/daemon.conf
   /usr/bin/fcitx-dbus-watcher unix:abstract=/tmp/dbus-lkNxVYBtyl,guid=xxxxx...xxx 2560

-


hw-probe でHWのサポート情報をアップロード

自分のPCのハードウェア、デバイスが現在運用しているLinux環境で動作しているかの情報を
Linuxユーザーの情報共有サイトへアップロードする。

probe tool : hw-probe (GitHub)

ツールの実行例
[code] 
# hw-probe -all -disable megacli -verbose -list -upload
・ハードウェアのシリアル番号やMACアドレスなどの公開すべきでない情報はアップロードされないので安心してよい

実行すると、以下のような log が表示され、最後にアップロード先の URL が示される。
[code] 
# hw-probe -all -disable megacli -verbose -list -upload
logs/lsb_release
Executing: lsb_release -i -d -r -c 2>/dev/null
logs/os-release
logs/system-release

・・・以下省略

Ok
Uploaded to DB, Thank you!


Probe URL: https://linux-hardware.org/?probe=32e6ec699f
・最後に表示される URL にアクセスすれば自分がアップロードした情報を参照できる。





---


WPS Office for Linux 11.1.0.10702.XA

WPS Office for Linux の version-11.1.0.10702 が公開されたので
slackware64-current用パッケージを作成してアップデートしたメモ。


旧バージョン 11.1.0.10161 のSlackBuildを流用してバージョン番号だけ変更した
スクリプトで作成したパッケージは libdbus-1.so 関連のエラーを吐いてアプリケーションが起動しなかった。

調査)
 deian用パッケージを展開したディレクトリを眺めると、office6ディレクトリ配下にある
 libdbus-1.so, libdbus-1.so.3 が offce6直下の実態ライブラリ libdbus-1.so.3.14.6 への
 シンボリックリンクになっていて、このライブラリを呼び出すときにエラーになっている模様。

 一方、slackware64-current (2021-08-07)の /us/lib64/ にある libdbus-1.so.X は
 libdbus-1.so.3.19.13 だった。

対策)
 1. SlackBuildの過程で、一旦 libdbus-.so.3.14.6 へのシンボリックリンクを削除する。
 2. doinst.sh による処理の中で、office6 ディレクトリ配下に slackware64が持っている
  libdbus-1.so.3.19.13 へのリンクを作成する。
 3. あらためて doinst.sh 処理の中で office6/libdbus-1.so.3.19.13 に向けて libdbus-1.so と
  libdbus-1.so.3 のシンボリックリンクを作成する。

※ Fix libdbus-1.so error
[code] wps-office.SlackBuild
#!/bin/sh

# Slackware build script for wps-office

# Copyright 2016 Andre Fernando, Indonesia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# -------------------------------------------
#*** Changes ***
#===============
# 2021-06-07 Upgrade to 11.1.0.10161 4jw : Change permission of templates files to a+w

PRGNAM=wps-office
VERSION=${VERSION:-11.1.0.10702.XA}
BUILD=${BUILD:-1}
TAG=${TAG:-jw}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=x86_64 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

SRCVER=${VERSION}

case "$ARCH" in
  i?86)   SRCARCH=i386 ;;
  x86_64) SRCARCH=amd64 ;;
  *)      printf "\n\n$ARCH is not supported.\n"; exit 1 ;;
esac

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM
mkdir -p $PRGNAM
cd $PRGNAM
ar -x $CWD/${PRGNAM}_${SRCVER}_${SRCARCH}.deb
tar xvf data.tar.xz -C $PKG

# Fix install directory
mv $PKG/opt/kingsoft/wps-office $PKG/opt/
rm -rf $PKG/opt/kingsoft

# Fix libdbus-1.so.x error at start-up
# then create re-link "libdbus-1.so and  libdbus-1.so.3" in doinst.sh
cd $PKG/opt/wps-office/office6
    rm libdbus-1.so
    rm libdbus-1.so.3


# Fix excecute scripts
cd $PKG/usr/bin
for script in wps wpspdf wpp et
do
   sed -i 's/\/\kingsoft//g' $script
done

# Change desktop files for [ja]
cd $PKG/usr/share/applications
rm *.desktop
cp $CWD/desktop/*.desktop .

cd $PKG
chown -R root:root .
find -L . \
 \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
  -o -perm 511 \) -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
  -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;

find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true

# Rename original Cinese named templates and add free MS-office templates
rm $PKG/opt/$PRGNAM/templates/*
cp -a $CWD/templates/* $PKG/opt/$PRGNAM/templates/

mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $CWD/thirdpartylegalnotices.txt $PKG/usr/doc/$PRGNAM-$VERSION/thirdpartylegalnotices.txt
cp -a $CWD/End-User-License-Agreement-For-WPS-Office.docx $PKG/usr/doc/$PRGNAM-$VERSION/End-User-License-Agreement-For-WPS-Office.docx
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-txz}


※ Fix libdbus-1.so error
[code] doinst.sh に以下を追加
# Fix libdbus-1.so error
( cd opt/wps-office/office6 ; rm -rf libdbus-1.so )
( cd opt/wps-office/office6 ; rm -rf libdbus-1.so.3 )
( cd opt/wps-office/office6 ; ln -sf /usr/lib64/libdbus-1.so.3.19.13  libdbus-1.so.3.19.13 )
( cd opt/wps-office/office6 ; ln -sf libdbus-1.so.3.19.13 libdbus-1.so )
( cd opt/wps-office/office6 ; ln -sf libdbus-1.so.3.19.13 libdbus-1.so.3 )


この対策が正しい対処なのかよくわからないが、作成したパッケージは結果として
問題なく起動&動作したので、まぁいいかと。

===
メニューの日本語化について

バージョン 11.1.0.10161.XA の当時にダウンロード&バックアップしていた wps_i18n の
ja_JP以下の日本語関連メッセージを地道に修正、更新していたので 

# cd {PATH-TO]/wps_i18n/ja_JP/
# make install

で日本語LC_MESSAGESをインストールすればメニューが日本語化できた。

ある情報では、Windows版wps-officeを一時的にインストールして(当然 windows環境が必要)
mui/ja_JP をコピーしてくれば日本語化できるのでは? という話があるが、試していない。

手元の Linux用 wps_i18n/ja_JP  を公開するかどうか検討中。(ライセンス的にどうなのか
よくわからんので)

以上

--------
[2021-08-07] 1st post

ギャラリー
  • deepl-clip.sh で簡単翻訳 [更新:2025-04-29]
  • Avidemux 2.8.2_20250323_7cf15b3
  • Avidemux 2.8.2_20250323_7cf15b3
  • Avidemux 2.8.x with Qt6 GUI
  • Avidemux 2.8.x with Qt6 GUI
  • MEGAcmd-2.0.0_Linux
  • gcolor3 with Japanese menu and LC_MESSAGES
  • avidemux2 TEST package from the latest git source (on jul.23.2024)
  • fcitx5-mozc-2.29.5135.102.1 (15jw) -- Added "merge-ut-dictionaries"