JR6PUE HOME PAGE

CQRLOG 2.2.0が公開される!


CQRLOG2.2.0が昨年12月30日に公開されました。残念ながら今回もラズパイ用のバイナリ―はありません。
無いならソースファイルをコンパイルするしかありません。
前回、どうしてもコンパイルが出来ずにあきらめたのですが幸いにもラズパイ用のCQRLOG2.1.0 のパッケージを
作ってくれた方がいたのでJTDXやWSJT-Xとリンクして使ってきました。
今回ばかりは、公開がまだ2週間という事もありネットを探してもそのような情報もありません。
前回の経験でなんとなく分かっているところもあるので、今週末は時間もあったので
コンパイルにチャレンジしてみました。
苦労しましたが、何とか動かすことが出来ました。\(^o^)/

CQRLOGは、開発からちょうど昨年9月に10年がたったそうです。
あわせて、開発者のOK2CQRは、昨年4月にOK7ANにコールサインが変わったそうですが
ログの名前はこのままでいくということです。ANLOGではね。? ちょっとした、うんちくでした。

さて、本題に入ります。OSは、UBUNTU MATE 16.04.2 armf 用を利用します。

関係ないかもしれませんが、USB周りにトラブルが出たので起動時に出るCUPS関係のエラーが
出ないようにしておきます。
/etc/modules-load.d/cups-filters.confの中をすべてコメントアウトしました。

sudo vi /etc/modules-load.d/cups-filters.conf
# Parallel printer driver modules loading for cups
# LOAD_LP_MODULE was 'yes' in /etc/default/cups
lp
ppdev
parport_pc

#lp
#ppdev
#parport_pc を#する

あとは、お決まりのお約束。

sudo apt-get update
sudo apt-get upgrade

sudo apt-get upgrade時に下記のメッセージが出たら参考にしてください。

パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了

アップグレードパッケージを検出しています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
 apt-clone archdetect-deb dpkg-repack gir1.2-json-1.0 gir1.2-timezonemap-1.0
 gir1.2-xkl-1.0 grub-common libdebian-installer4 libparted-fs-resize0
 libtimezonemap-data libtimezonemap1 os-prober python3-icu python3-pam rdate
 snap-confine
これを削除するには 'sudo apt autoremove' を利用してください。

と出た時は、
sudo apt autoremove
を行ってください。
私の場合は、のちにJTDXを起動したときにttyUSB0がすぐにONになって戻らないという不具合が
この操作で解消できました。たぶん、私の環境だけかもしれませんが念のため。

CQRLOGをインストールする前に、すでに、WSJT-XとJTDXがインストールされているものとします。
インストールは、私の別のページで確認下さい。

では、CQRLOGをインストールしていきましょう。

1.CQRLOGコンパイル準備のため作者のOK2CQR(OK7AN)氏のリポジトリを追加

sudo add-apt-repository ppa:ok2cqr/playground
sudo apt-get update

2.CQRLOGコンパイル用の関連ファイルをインストールします。

sudo apt-get install libaio1 libdbd-mysql-perl libdbi-perl libhamlib-utils libhamlib2 libhtml-template-perl libnetpbm10 libssl-dev libssl-doc libterm-readkey-perl python2.7-libxml2 trustedqsl xplanet xplanet-images

3.CQRLOGを動作させるのに必要なMYSQLサーバをインストール

sudo apt-get install libmysqlclient-dev mysql-client mysql-common mysql-server

4.MYSQLサーバをローカルで動作させるので停止します

sudo systemctl disable mysql
sudo systemctl stop mysql

5.CQRLOG2.2.0をコンパイル

(1)必要なライブラリーをインストール

sudo apt-get install git lazarus-ide lcl lcl-gtk2 lcl-nogui lcl-units lcl-utils lazarus lazarus-doc lazarus-src \
        fp-units-misc fp-units-rtl fp-utils fpc fpc-source libssl-dev

(2)gitを使って最新版のソースをダウンロードしコンパイルします。

ダウンロード先は、ユーザのホームディレクトリーとします。

git clone https://github.com/ok2cqr/cqrlog.git

cd cqrlog

makeコマンドでコンパイルできるはずなのですが大きく分けて2つのエラーが出ます。
このエラーが解消できるのだろうかとだいぶ悩みました。
上記のソースコードのコンパイルは、FreePascal 3.0 and Lazarus 1.6.を使うと書かれていますが
今回の2.2.0は、Lazarus 1.8.0 and fpc 3.0.4を使っているようです。
ですから、ここに書かれている通りやってもコンパイルできませんでした。
ということで、まずは、OK2CQR氏のところから関連コンパイラーがダウンロードできるようにリポジトリーを
最初に設定しています。
それもで下記のエラーが出てきます。

エラーは、一緒に出ますが分けて解説します。

1つ目のエラー world_borders.pngは見つかりませんです。

dhiro@UbJT65:~/cqrlog$ make
lazbuild --ws=gtk2 --pcp=/tmp/.lazarus src/cqrlog.lpi
SetPrimaryConfigPath NewValue="/tmp/.lazarus" -> "/tmp/.lazarus"
CopySecondaryConfigFile /etc/lazarus/environmentoptions.xml -> /tmp/.lazarus/environmentoptions.xml
Hint: (lazarus) [RunTool] /usr/bin/fpc "-iWTOTP"
Hint: (lazarus) [RunTool] /usr/bin/fpc "-va" "compilertest.pas"
TProject.DoLoadStateFile Statefile not found: /home/dhiro/cqrlog/src/cqrlog.compiled
Error: ファイル "../images/world_borders.png"は見つかりません

実際には、ちゃんとあるのですが、多分、make関係のソースファイルのバグだと思います。
ディレクトリー指定が間違っている気がします。
"../images/world_borders.png"
本来は、./images/world_borders.pngなっていないといけないのだろうと思います

そこでmakeのソースを眺めてみましたが該当しそうな箇所を見つけられなかったので、エラーがでないよう
imageディレクトリーをホームディレクトリーへそのままコピーして回避。(^^;

cp -r ~/cqrlog/images images

****以下は、上記コマンド処理後の解説********

dhiro@UbJT65:~/cqrlog$ ls
Makefile  README.md  ctyfiles  debian  help  images  members  src  tools  voice_keyer  xplanet  zipcodes
dhiro@UbJT65:~/cqrlog$ cd ..
dhiro@UbJT65:~$ ls
JTDX18166  cqrlog  hamlib-prefix  jtsdk  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  ピクチャ  ミュージック  公開
dhiro@UbJT65:~$ ls -l
total 48
drwxrwxr-x  7 dhiro dhiro 4096  1月 14 09:28 JTDX18166
drwxrwxr-x 13 dhiro dhiro 4096  1月 14 09:57 cqrlog
drwxrwxr-x  4 dhiro dhiro 4096  1月 14 08:48 hamlib-prefix
drwxrwxr-x  9 dhiro dhiro 4096  1月 14 08:03 jtsdk
drwxr-xr-x  4 dhiro dhiro 4096  1月 14 09:07 ダウンロード
drwxr-xr-x  2 dhiro dhiro 4096  9月 14 07:14 テンプレート
drwxr-xr-x  2 dhiro dhiro 4096  1月 14 09:29 デスクトップ
drwxr-xr-x  2 dhiro dhiro 4096  9月 14 07:14 ドキュメント
drwxr-xr-x  2 dhiro dhiro 4096  9月 14 07:14 ビデオ
drwxr-xr-x  2 dhiro dhiro 4096  9月 14 07:14 ピクチャ
drwxr-xr-x  2 dhiro dhiro 4096  9月 14 07:14 ミュージック
drwxr-xr-x  2 dhiro dhiro 4096  9月 14 07:14 公開

dhiro@UbJT65:~$ cp -r ~/cqrlog/images images

dhiro@UbJT65:~$ ls
JTDX18166  cqrlog  hamlib-prefix  images  jtsdk  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  ピクチャ  ミュージック  公開
dhiro@UbJT65:~$

**********ここまで***************

これでmkaeソースが指定しているところに同じimagesディレクトリーを作りその中のファイルを利用してもらいました。

2つ目は、以下です。エラーメッセージの所だけ切り出しています。
何だこれはと最初思いました。(^^;

00 127.775/134.912 Kb Used
/home/dhiro/cqrlog/src/./synapse/synaser.pas(232,15) Error: (5000) Identifier not found "B500000"
/home/dhiro/cqrlog/src/./synapse/synaser.pas(232,22) Error: (3203) Illegal expression
/home/dhiro/cqrlog/src/./synapse/synaser.pas(233,14) Error: (5000) Identifier not found "B576000"
/home/dhiro/cqrlog/src/./synapse/synaser.pas(233,21) Error: (3203) Illegal expression
/home/dhiro/cqrlog/src/./synapse/synaser.pas(234,14) Error: (5000) Identifier not found "B921600"

良く調べると
synaser.pasのコンパイルソースに書かれている{$IFDEF UNIX}の後の
,(500000, B500000),から(4000000, B4000000)までが識別できないというようなエラーです。

ネットを探すと該当する内容を見つけました。

このエラーはラズパイ側でB500000以上のボーレートの定義がなされていないのが原因だそうです。
解決するには、500000〜4000000のボーレートを使用しないとすればいいみたいです。
synaser.pasの該当行をコメントアウトする事にします。

今後も共通のソースで作成されるでしょうから、ラズパイで使う場合は同じ対応が必要かと思います。

以下にこのエラーの参考になるところがありました

http://iliketrain02.blog.jp/archives/27110118.html

http://forum.lazarus.freepascal.org/index.php/topic,20481.msg141721.html#msg141721

ということで、下記のディレクトリにあるsynaser.pasを修正します。

cd ~/cqrlog/src/synapse

vi synaser.pas

ということで下記箇所を修正

const
{$IFDEF UNIX}
 {$IFDEF BSD}
 MaxRates = 18;  //MAC
 {$ELSE}
  MaxRates = 19; //UNIX    (30→19(203行目15)へ変更
 {$ENDIF}


{$IFNDEF BSD}
   ,(460800, B460800)
//  {$IFDEF UNIX}      (231行から243行を // でコメントアウト
//    ,(500000, B500000),
//    (576000, B576000),
//    (921600, B921600),
//    (1000000, B1000000),
//    (1152000, B1152000),
//    (1500000, B1500000),
//    (2000000, B2000000),
//    (2500000, B2500000),
//    (3000000, B3000000),
//    (3500000, B3500000),
//    (4000000, B4000000)
//  {$ENDIF}
{$ENDIF}

修正したと内容です。


保存して、~/cqrlogディレクトリーに戻ります。
makeコマンドを使うのですが、一度、makeに失敗しているので
rm -rf /tmp/.lazarus
を使って失敗しているデータを消すのをお忘れなく。

make

途中省略

(9009) Assembling dlogupload
(9009) Assembling cqrlog
(9022) Compiling resource cqrlog.or
(9015) Linking cqrlog
cqrlog.lpr(81) Warning: (9034) "crtbegin.o" not found, this will probably cause a linking failure
cqrlog.lpr(81) Warning: (9034) "crtend.o" not found, this will probably cause a linking failure
/usr/bin/ld.bfd: warning: link.res contains output sections; did you forget -T?
(1008) 74011 lines compiled, 126.4 sec
(1021) 48 warning(s) issued
strip src/cqrlog
gzip tools/cqrlog.1 -c > tools/cqrlog.1.gz
dhiro@UbJT65:~/cqrlog$

こんな感じでmakeが通りました。\(^o^)/

sudo make install

これで無事にCQRLOG2.2.0が起動できるようになります。
プログラムがアプリケーションのところに出てきますがコマンドラインから起動する場合は、

/usr/bin/cqrlog

とりあえず、動くのを確認しただけですがチェンジログに書かれているようにCQモニターなどがだいぶ変わっています。





CQRLOG2.2.0の変更内容はここに記載されています。

x86系のUbuntu MATEのCQRLOG2.1.0 -> 2.2.0へのバージョンアップは下記1行でできます。
とっても簡単でした。
念のためにCQRLOGで管理しているLOGファイルだけはADIFでバックアップを取っておいてください。

sudo add-apt-repository ppa:ok2cqr/ppa;sudo apt-get update;sudo apt-get install cqrlog

また、起動後UDPのポート番号がそれぞのソフトであっているかも確認してください。
初期設定は、UDP2237です。

それと、WSJT-Xは、マウスのダブルクリックで送信を許可するかのチェックが付いているかを確認下さい。
私は、これが違っていてマウスクリックで送信操作が出来ずコンパイルを間違ったかと思いしばらく悩みました。
JTDXもWSJT-Xも新規インストールしたので初期設定のままでした。細かい設定を忘れていました。

CQRLOGのリモート設定



WSJT-X側の設定


JTDX側の設定


細かいところでは、いろいろありましたがとりあえずラズパイでも最新のCQRLOGが動くようになったので満足です。
述べ、15時間くらいかかったかな(^^; (2018.01.14)

build-essensialとcheckinstallを利用してCQRLOG2.2.0のpackageファイル作成成功! \(^o^)/

ここを参考に自分用のpackageファイル作成にチャレンジしてみました。
なんとすんなりとCQRLOG2.2.0のpackageファイルが出来上がりました。


cqrlog_20180116-1_armhf.deb
ちゃんと動くかどうか不安でしたが、なんと、うまくインストールできるではないですか。
sudo dpkg -i cqrlog_20180116-1_armhf.deb
公開用のpackageにはなりませんが、CQRLOG2.2.0のラズパイ用packageで保存できるというのは
これは凄いと自分で感激しています。!!(2018.01.16)

なお、私の環境では、mysqlがちょっとおかしな動作をしたので下記操作で一度アンインストールして
再度mysqlを再インストールしました。

sudo apt-get purge libmysqlclient-dev mysql-client mysql-common mysql-server
sudo apt autoremove
sudo apt-get install libmysqlclient-dev mysql-client mysql-common mysql-server