Sigrok の Pulsview 0.3.0 動きました

とりあえず、なんとか動かしたいのでソースをコードも見ましたが、特に問題となりそうな部分もなく、ちょっと場を離れてから、brew版のをサイド入れてみることに。とりあえず、動作させることができました。

なんとか、今年中に出来たのですっきり。

 

0.3.0-git-5d73886 では、以下のようにトリガーが設定できて楽になりました。Runを押せばトリガーがでるまで、stop して採取されます。サンプル数を設定しておけば、採取されて停止します。ロジックアナライザーとしては基本機能だと思いますが、手持ちのハードでなんとか動いてよかったです。

7

拡大すると、500ns とか取れています。1us 単位くらいまでは見れそうということがわかりました。

8

サンプルレートは、2MHz 以上あげるとどうしても採取後にクルクル回って、操作を受け付けないスタック状態のような感じになります。コマンドライン版でドライバを指定してみると、以下のようです。

$ sigrok-cli --show --driver fx2lafw
Driver functions:
    Logic analyzer
Scan options:
    conn
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
sr: fx2lafw: Failed to get manufacturer string descriptor: LIBUSB_ERROR_OTHER.
fx2lafw:conn=28.2 - Saleae Logic with 8 channels: 0 1 2 3 4 5 6 7
Supported configuration options:
    continuous: 
    limit_samples: 0 (current)
    conn: 28.2 (current)
    samplerate - supported samplerates:
      20 kHz
      25 kHz
      50 kHz
      100 kHz
      200 kHz
      250 kHz
      500 kHz
      1 MHz
      2 MHz
      3 MHz
      4 MHz
      6 MHz
      8 MHz
      12 MHz
      16 MHz
      24 MHz
    Supported triggers: 0 1 r f e 
    captureratio: 0 (current)

ここに出ているサンプリング周波数は採取できるはずなんですが、なぜか2MHz までしかとれません。

まぁ、最初の一台ですし、これで勉強させてもらって、物足りなければまた考えることにします。

 

automator でシェルスクリプトを実行するものを作り、アイコンをつけて、app 化します。

6

python の環境変数を一度 unset して消去して、python3.4 とか3.x のをセットしてアプリをバックグランドで呼び出します。

unset PYTHONPATH
export PYTHONPATH="/usr/local/lib/python3.4/site-packages/:$PYTHONPATH"

/usr/local/Cellar/pulseview/HEAD/bin/pulseview >/dev/null 2>&1 &

 

配布用にするには、ライブラリのパスを全部書き換えないといけないので、やめました。このあたりのスキルは、もう少し勉強しないと嵌りそうです。

5

brew 版のインストールは、wiki に書いてあるとおりで以下のようです。

https://sigrok.org/wiki/Mac_OS_X

$ brew tap rene-dev/sigrok

$ brew install python3

$ brew install –HEAD libserialport

$ brew install –HEAD –with-libserialport libsigrok

$ brew install –HEAD libsigrokdecode

$ brew install –HEAD –with-libserialport sigrok-cli

$ brew install –HEAD pulseview

ポイントとしては、マニュアルビルドしてソースから入れたものは一度、綺麗に消して、brew docter で問題をクリアにしてからやることと、以下の libsigrokdecode が2つ出てくるのでbrew のを無効にすることくらいです。

$ brew install –HEAD libsigrokdecode

Error: Formulae found in multiple taps:

* homebrew/science/libsigrokdecode

* rene-dev/sigrok/libsigrokdecode

 

$ brew untap homebrew/science

$ brew tap –repair

$ brew update

 

あと、ファームウェアの格納場所は、デフォルトで

/usr/local/share/sigrok-firmware

になるので、ここにディレクトリを作成し、最新のファームウェアを入れておきます。これで最初のデバイスを見つけてファームがなくエラーになるのを迂回できます。エラーでも、落ちはしませんが。前回落ちたのは別の原因で、QT 関連のライブラリのパスが書き換わっていないのが原因でした。ltool で見ると、/usr 配下となっていました。そのほかの原因もあったとは思いますが、ライブラリの依存関係でおそらくは、brew 版のを見に行っていたのかもしれません。まぁ、詳細は不明です。

 

ということで、とりあえずは動いてよかったです。トリガーもかけられるようになったし、インターフェイスは少しよくなった感じ。ボタンの配置とか。

 

▼まとめ

・EZ-USB FX2LP CY7C68013A で、sigrok の pulsview は動作

・このハードは実質6ドルくらいなので、ロジックアナライザーとして最初の一台で遊ぶには十分

・0.3.0-git-f3697d3 は動作した

・トリガーがかけられるようになった

・少しインターフェイスがよくなった

・2Mhz サンプリングまでは出来ることを確認

・1チャンネル採取で500ns は採取できた。1us くらいが精度か?

・8チャンネル同時採取はまだやっていない

・ファームウェア格納場所は、/usr/local/share/sigrok-firmware

・brew 版で HEAD で入れているので、時期によっては動作しない場合もあるかも

・配布用に、ライブラリを書き換えるのはどうすれば楽になるのか?要研究

sigrok Pulsview を osx でビルドに挑戦

PulseView の 0.3.0-git-f3697d3 をビルドしてみました。

結論から言えば、今のところ起動してすぐ落ちます。(涙)

1

無理やり、メニューから開いてみるとポートのオープンでこけているような感じです。about は見れました。

2

デバイスにもコネクトし、スキャンすれば出てきます。

3

しかし、OK を押すと最初のダイアログ表示が出て、OK を押すと、SIGABRT で落ちます。

Process:         pulseview-bin [95174]
Path:            /Applications/PulseView.app/Contents/MacOS/./pulseview-bin
Identifier:      com.yourcompany.pulseview
Version:         0.3.0-git-5d73886 (???)
Code Type:       X86-64 (Native)
Parent Process:  sh [95171]
Responsible:     sh [95171]
User ID:         501

Date/Time:       2015-12-30 03:51:25.054 +0900
OS Version:      Mac OS X 10.9.5 (13F34)
Report Version:  11
Anonymous UUID:  C9AF270A-FCB7-7966-372A-2DF968A13DBE


Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib            0x00007fff8f96d866 __pthread_kill + 10
1   libsystem_pthread.dylib           0x00007fff8bb5535c pthread_kill + 92
2   libsystem_c.dylib                 0x00007fff85eefb1a abort + 125
3   libglib-2.0.0.dylib               0x00000001022cae07 g_assertion_message + 387
4   libglib-2.0.0.dylib               0x00000001022cae65 g_assertion_message_expr + 94
5   libglib-2.0.0.dylib               0x00000001022e43a8 g_variant_type_info_check + 379
6   libglib-2.0.0.dylib               0x00000001022e41fe g_variant_type_info_get_type_string + 16
7   libglib-2.0.0.dylib               0x00000001022d7b7c g_variant_get_type + 22
8   pulseview-bin                     0x000000010112d4af pv::prop::Int::get_widget(QWidget*, bool) + 159 (int.cpp:72)
9   pulseview-bin                     0x000000010111733f pv::binding::Binding::add_properties_to_form(QFormLayout*, bool) const + 95 (binding.cpp:55)
10  pulseview-bin                     0x000000010111742d pv::binding::Binding::get_property_form(QWidget*, bool) const + 109 (binding.cpp:71)
11  pulseview-bin                     0x0000000101129599 pv::popups::DeviceOptions::DeviceOptions(std::__1::shared_ptr<sigrok::Device>, QWidget*) + 185 (qglobal.h:2436)
12  pulseview-bin                     0x000000010112f96b pv::toolbars::MainBar::update_device_config_widgets() + 171 (memory:4447)
13  pulseview-bin                     0x000000010112f82b pv::toolbars::MainBar::update_device_list() + 475 (list:565)
14  pulseview-bin                     0x00000001010eac9a pv::MainWindow::select_init_device() + 1594 (mainwindow.cpp:589)
15  pulseview-bin                     0x00000001010e759e pv::MainWindow::MainWindow(pv::DeviceManager&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, QWidget*) + 606 (mainwindow.cpp:128)
16  pulseview-bin                     0x00000001010e2880 main + 848 (main.cpp:163)
17  libdyld.dylib                     0x00007fff89c435fd start + 1

うーん、なんでしょうかね。

 

とりあえず、いつかまた再チャレンジするときに備えて、ビルド手順を載せておきます。

▼環境

osx 10.9.5

qt-opensource-mac-4.8.7

$ xcode-select -v

xcode-select version 2333.

$ xcode-select -p

/Applications/Xcode.app/Contents/Developer

$ xcode-select -print-path

/Applications/Xcode.app/Contents/Developer

$ xcodebuild -version

Xcode 6.2

Build version 6C131e

$ cmake –version

cmake version 3.4.1

$ clang -v

Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

Target: x86_64-apple-darwin13.4.0

Thread model: posix

こんな感じの環境です。ビルド手順は、基本以下のとおりです。cmake するオプションは少し買えました。

https://sigrok.org/wiki/Mac_OS_X

前準備として、Qtの4系最終の4.8.7 を入れておきます。

あと、ports で以下を入れておきます。

$ sudo port selfupdate

$ sudo port install boost libusb libzip libftdi0

$ sudo port install autoconf automake cmake glib2 python33 libtool pkgconfig

環境変数を反映しておきます。

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

libserialport

$ git clone git://sigrok.org/libserialport

$ cd libserialport

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

以下に入りました。

    HOPE:libserialport junkhack$ sudo make install
      CC       serialport.lo
      CC       macosx.lo
      CCLD     libserialport.la
     /usr/local/bin/gmkdir -p '/usr/local/lib'
     /bin/sh ./libtool --silent  --mode=install /usr/local/bin/ginstall -c   libserialport.la '/usr/local/lib'
     /usr/local/bin/gmkdir -p '/usr/local/include'
     /usr/local/bin/ginstall -c -m 644 libserialport.h '/usr/local/include'
     /usr/local/bin/gmkdir -p '/usr/local/lib/pkgconfig'
     /usr/local/bin/ginstall -c -m 644 libserialport.pc '/usr/local/lib/pkgconfig'

次、libsigrok です。

libsigrok

$ git clone git://sigrok.org/libsigrok

$ cd libsigrok

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

以下に入りました。

    HOPE:libsigrok junkhacksudo make install
     /usr/local/bin/gmkdir -p '/usr/local/lib'
     /bin/sh ./libtool --silent  --mode=install /usr/local/bin/ginstall -c   libsigrok.la bindings/cxx/libsigrokcxx.la '/usr/local/lib'
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: /usr/local/lib/libsigrok.a(fallback.o) has no symbols
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrokcxx'
     /usr/local/bin/ginstall -c -m 644 bindings/cxx/include/libsigrokcxx/libsigrokcxx.hpp '/usr/local/include/libsigrokcxx'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrok'
     /usr/local/bin/ginstall -c -m 644 include/libsigrok/libsigrok.h include/libsigrok/proto.h '/usr/local/include/libsigrok'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrokcxx'
     /usr/local/bin/ginstall -c -m 644 bindings/cxx/include/libsigrokcxx/enums.hpp '/usr/local/include/libsigrokcxx'
     /usr/local/bin/gmkdir -p '/usr/local/include/libsigrok'
     /usr/local/bin/ginstall -c -m 644 include/libsigrok/version.h '/usr/local/include/libsigrok'
     /usr/local/bin/gmkdir -p '/usr/local/lib/pkgconfig'
     /usr/local/bin/ginstall -c -m 644 libsigrok.pc bindings/cxx/libsigrokcxx.pc '/usr/local/lib/pkgconfig'
    HOPE:libsigrok junkhack 

次、コマンドライン版のです。

sigrok-cli

$ git clone git://sigrok.org/sigrok-cli

$ cd sigrok-cli

$ ./autogen.sh

$ ./configure

$ make

$ sudo make install

以下に入りました。

    HOPE:sigrok-cli junkhacksudo make install
     /usr/local/bin/gmkdir -p '/usr/local/bin'
      /usr/local/bin/ginstall -c sigrok-cli '/usr/local/bin'
     /usr/local/bin/gmkdir -p '/usr/local/share/man/man1'
     /usr/local/bin/ginstall -c -m 644 doc/sigrok-cli.1 '/usr/local/share/man/man1'
    HOPE:sigrok-cli junkhack 

次が、問題のやつです。

PulseView

$ git clone git://sigrok.org/pulseview

$ cd pulseview

$ cmake -DENABLE_TESTS=n -DDISABLE_WERROR=y .

$ make

$ sudo make install

cmake でテストをn にするか、警告を無視するかをチェックし、進みます。何か、未定義の変数や宣言などがあるようです。直すのが面倒だったので、とりあえず。

以下に入りました。

    HOPE:pulseview junkhacksudo make install
    Password:
    [ 54%] Built target pulseview
    [100%] Built target pulseview-test
    Install the project...
    -- Install configuration: "RelWithDebInfo"
    -- Installing: /usr/local/bin/pulseview
    -- Installing: /usr/local/share/man/man1/pulseview.1
    HOPE:pulseview junkhack 

で、いきなり実行するも、以下のように。

$ ll /usr/local/bin/pulseview

-rwxr-xr-x  1 root  admin  1913672 12 30 00:57 /usr/local/bin/pulseview

$ /usr/local/bin/pulseview

Failed to import the site module

Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!

     PYTHONPATH is currently: "/usr/local/lib/python2.7/site-packages"

     You should `unset PYTHONPATH` to fix this.

otool でライブラリのパスを見ると、以下のようです。

$ otool -L /usr/local/bin/pulseview
/usr/local/bin/pulseview:
    /opt/local/lib/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    /opt/local/lib/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    /opt/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.7)
    QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
    QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
    /usr/local/lib/libsigrokcxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    /usr/local/lib/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    /usr/local/lib/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
    /opt/local/lib/libgobject-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    /usr/local/lib/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/local/lib/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    /opt/local/lib/libglib-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.4.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

うーん、Python3.x でということですが、ありません。あと、以下の3つはどこ探してもありませんでしたが、、、

QtSvg.framework

QtGui.framework

QtCore.framework

ちなみに、Qt5.5 でビルドしたときは、以下のようでした。

    ----- qt5.5
    HOPE:MacOS junkhackotool -L pulseview    pulseview:
        /opt/local/lib/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /opt/local/lib/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /opt/local/lib/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        /opt/local/lib/libboost_unit_test_framework-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
        @rpath/QtSvg.framework/Versions/5/QtSvg (compatibility version 5.5.0, current version 5.5.1)
        /usr/local/lib/libsigrokcxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /usr/local/lib/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /usr/local/lib/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
        /opt/local/lib/libgobject-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
        /usr/local/lib/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
        /usr/local/lib/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
        /opt/local/lib/libglib-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
        /opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.4.0)
        @rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.5.0, current version 5.5.1)
        @rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.5.0, current version 5.5.1)
        @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.5.0, current version 5.5.1)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
    HOPE:MacOS junkhack 

これは探せばありました。なんで、Qt4 だとないんでしょうか?何か入れ忘れたのですかね。ちなみに、0.2.0 のELIAS さんのビルドしたものは、以下のようです。

$ otool -L pulseview-bin 
pulseview-bin:
    @executable_path/../Frameworks/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.6)
    @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.6)
    @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.6)
    @executable_path/../Frameworks/libsigrokxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
    @executable_path/../Frameworks/libgobject-2.0.0.dylib (compatibility version 4201.0.0, current version 4201.0.0)
    @executable_path/../Frameworks/libglib-2.0.0.dylib (compatibility version 4201.0.0, current version 4201.0.0)
    @executable_path/../Frameworks/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
    @executable_path/../Frameworks/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/Python.framework/Versions/3.4/Python (compatibility version 3.4.0, current version 3.4.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

Frameworks は、これを拝借します。

アプリケーション直下にコピーして上書きしてきます。

$ cd /Applications/PulseView.app/Contents

$ pwd
/Applications/PulseView.app/Contents

cp -p /opt/local/lib/libboost_filesystem-mt.dylib ./Frameworks
cp -p /opt/local/lib/libboost_system-mt.dylib ./Frameworks
cp -p /opt/local/lib/libboost_thread-mt.dylib ./Frameworks

cp -p /usr/local/lib/libsigrokcxx.2.dylib ./Frameworks
cp -p /usr/local/lib/libsigrok.2.dylib ./Frameworks
cp -p /usr/local/lib/libglibmm-2.4.1.dylib ./Frameworks
cp -p /opt/local/lib/libgobject-2.0.0.dylib ./Frameworks
cp -p /usr/local/lib/libsigc-2.0.0.dylib ./Frameworks
cp -p /usr/local/lib/libsigrokdecode.2.dylib ./Frameworks
cp -p /opt/local/lib/libglib-2.0.0.dylib ./Frameworks
cp -p /opt/local/lib/libintl.8.dylib ./Frameworks

Qt で作ったのをosx でライブラリにリンクするツールとか、そういうのはないのでしょうかね。

バイナリのライブラリは以下のコマンドで、書き換えられます。

install_name_tool -change 変更したいディレクトリ そこに新しく書き込みたいディレクトリ オブジェクトファイルの名前

パスを切り出して、テキストファイルで編集し、

HOPE:MacOS junkhackotool -L ./pulseview | cut -f 1 -d ' ' | cut -f 2
./pulseview:
/opt/local/lib/libboost_filesystem-mt.dylib
/opt/local/lib/libboost_system-mt.dylib
/opt/local/lib/libboost_thread-mt.dylib
QtSvg.framework/Versions/4/QtSvg
QtGui.framework/Versions/4/QtGui
QtCore.framework/Versions/4/QtCore
/usr/local/lib/libsigrokcxx.2.dylib
/usr/local/lib/libsigrok.2.dylib
/usr/local/lib/libglibmm-2.4.1.dylib
/opt/local/lib/libgobject-2.0.0.dylib
/usr/local/lib/libsigc-2.0.0.dylib
/usr/local/lib/libsigrokdecode.2.dylib
/opt/local/lib/libglib-2.0.0.dylib
/opt/local/lib/libintl.8.dylib
/usr/lib/libc++.1.dylib
/usr/lib/libSystem.B.dylib
HOPE:MacOS junkhack 

以下のようなコマンドを作りました。

cd MacOS/
cp pulseview pulseview_bup487

install_name_tool -change /opt/local/lib/libboost_filesystem-mt.dylib @executable_path/../Frameworks/libboost_filesystem-mt.dylib ./pulseview
install_name_tool -change /opt/local/lib/libboost_system-mt.dylib @executable_path/../Frameworks/libboost_system-mt.dylib ./pulseview
install_name_tool -change /opt/local/lib/libboost_thread-mt.dylib @executable_path/../Frameworks/libboost_thread-mt.dylib ./pulseview
install_name_tool -change QtSvg.framework/Versions/4/QtSvg @executable_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg ./pulseview
install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui ./pulseview
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore ./pulseview
install_name_tool -change /usr/local/lib/libsigrokcxx.2.dylib @executable_path/../Frameworks/libsigrokcxx.2.dylib ./pulseview
install_name_tool -change /usr/local/lib/libsigrok.2.dylib @executable_path/../Frameworks/libsigrok.2.dylib ./pulseview
install_name_tool -change /usr/local/lib/libglibmm-2.4.1.dylib @executable_path/../Frameworks/libglibmm-2.4.1.dylib ./pulseview
install_name_tool -change /opt/local/lib/libgobject-2.0.0.dylib @executable_path/../Frameworks/libgobject-2.0.0.dylib ./pulseview
install_name_tool -change /usr/local/lib/libsigc-2.0.0.dylib @executable_path/../Frameworks/libsigc-2.0.0.dylib ./pulseview
install_name_tool -change /usr/local/lib/libsigrokdecode.2.dylib @executable_path/../Frameworks/libsigrokdecode.2.dylib ./pulseview
install_name_tool -change /opt/local/lib/libglib-2.0.0.dylib @executable_path/../Frameworks/libglib-2.0.0.dylib ./pulseview
install_name_tool -change /opt/local/lib/libintl.8.dylib @executable_path/../Frameworks/libintl.8.dylib ./pulseview

パスを書き換えました。以下のようになっているはずです。

$ otool -L pulseview-bin 
pulseview-bin:
    @executable_path/../Frameworks/libboost_filesystem-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_system-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/libboost_thread-mt.dylib (compatibility version 0.0.0, current version 0.0.0)
    @executable_path/../Frameworks/QtSvg.framework/Versions/4/QtSvg (compatibility version 4.8.0, current version 4.8.7)
    @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.7)
    @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.7)
    @executable_path/../Frameworks/libsigrokcxx.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libsigrok.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libglibmm-2.4.1.dylib (compatibility version 5.0.0, current version 5.0.0)
    @executable_path/../Frameworks/libgobject-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    @executable_path/../Frameworks/libsigc-2.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    @executable_path/../Frameworks/libsigrokdecode.2.dylib (compatibility version 3.0.0, current version 3.0.0)
    @executable_path/../Frameworks/libglib-2.0.0.dylib (compatibility version 4601.0.0, current version 4601.2.0)
    @executable_path/../Frameworks/libintl.8.dylib (compatibility version 10.0.0, current version 10.4.0)
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

先輩が作ったのは、MacOS 配下に2つあって、以下のようです。

$ ll
total 1936
-rwxr-xr-x@ 1 junkhack  admin     187 11  3  2014 pulseview
-rwxr-xr-x@ 1 junkhack  admin  983748 11  3  2014 pulseview-bin

ビルドしたものを pulseview-bin に書き換えました。bin が付いていないのは、bash のバイナリファイルのようです。

HOPE:MacOS junkhackhexdump -C pulseview
00000000  23 21 2f 62 69 6e 2f 73  68 0a 0a 44 49 52 3d 22  |#!/bin/sh..DIR="|
00000010  24 28 64 69 72 6e 61 6d  65 20 22 24 30 22 29 22  |(dirname "0")"|
00000020  0a 63 64 20 22 24 44 49  52 22 0a 0a 65 78 70 6f  |.cd "DIR"..expo|
00000030  72 74 20 50 59 54 48 4f  4e 48 4f 4d 45 3d 22 2e  |rt PYTHONHOME=".|
00000040  2e 2f 46 72 61 6d 65 77  6f 72 6b 73 2f 50 79 74  |./Frameworks/Pyt|
00000050  68 6f 6e 2e 66 72 61 6d  65 77 6f 72 6b 2f 56 65  |hon.framework/Ve|
00000060  72 73 69 6f 6e 73 2f 33  2e 34 2f 22 0a 65 78 70  |rsions/3.4/".exp|
00000070  6f 72 74 20 53 49 47 52  4f 4b 44 45 43 4f 44 45  |ort SIGROKDECODE|
00000080  5f 44 49 52 3d 22 2e 2e  2f 73 68 61 72 65 2f 6c  |_DIR="../share/l|
00000090  69 62 73 69 67 72 6f 6b  64 65 63 6f 64 65 2f 64  |ibsigrokdecode/d|
000000a0  65 63 6f 64 65 72 73 2f  22 0a 0a 2e 2f 70 75 6c  |ecoders/".../pul|
000000b0  73 65 76 69 65 77 2d 62  69 6e 0a                 |seview-bin.|
000000bb
HOPE:MacOS junkhack$ 

こういう感じで起動してるんですね。なるほどです。Frameworks 以下のPython から呼び出しているんですね。pulsview を拝借し、ビルドしたものは、pulseview-bin にファイル名を変更しておきます。

バージョンをInfo.plist に加えておきます。

$ cat Info.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
    <key>NSPrincipalClass</key>
    <string>NSApplication</string>
    <key>CFBundleIconFile</key>
    <string>sigrok.icns</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleGetInfoString</key>
    <string>PulseView is a Qt based logic analyzer GUI for sigrok.</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleExecutable</key>
    <string>pulseview</string>
    <key>CFBundleIdentifier</key>
    <string>com.yourcompany.pulseview</string>
    <key>CFBundleShortVersionString</key>
    <string>0.3.0-git-5d73886</string>
</dict>
</plist>

さて、これでいいはずですが、、、、結果は冒頭に書いたとおりです。ちなみに、Qt5.5 でも似たような感じでした。

git リポジトリを見ると、この24時間くらいでそこそこ手が入っているようです。

pulseview.git / summary

http://sigrok.org/gitweb/?p=pulseview.git;a=summary

あと、オフィシャルのwiki にもビルドするのに必要な要件などがまとまっているようです。

sigrok wiki : Building

https://sigrok.org/wiki/Building#Building_from_source

▼まとめ

・PulseView の 0.3.0-git-f3697d3 では、だめだった

・デバイスのオープンでこけているようです

・libglib-2.0.0.dylib から こけている感じ。

・ライブラリのコピーが悪いのかも

・0.2.0 のソースで試してだめなら、Qt4 のライブラリの入れ方などが悪いのかも。

・Qt で osx の実行ファイルを作るユーティリティーとかないかなぁ

・クリーンインストールしたosx でやってみたいが、その環境がない

・Qt4 の QtGui とか QtCore とかの Framework はどこにあるのでしょうか?

・ソースに手をつける以前の問題で疲れ果てた

 

参考

Qt for OS X – Deployment

http://doc.qt.io/qt-5/osx-deployment.html

 

Building OSX App Bundle

http://stackoverflow.com/questions/1596945/building-osx-app-bundle


sigrok bugzilla

http://sigrok.org/bugzilla/describecomponents.cgi?product=PulseView