トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

5.0.0 のバックアップ(No.1)


5.0.0

TOTAL:4335 今日:1 昨日:0

KiCad 4.0.7 Windows版 ビルド

2017年11月20日大幅変更
KiCad のバグだと思っていたのが実は wxPython のバグ?(最新版のパッチが当たらない?)でした。Pcbnew 起動時にモジュール読み込まないエラーと Paythonコンソール 起動時のハングアップが改善しました。

2017年11月20日 更新

KiCad で図面に日本語表示してみたくて、自力でコンパイルしてみた第2弾
4.0.7安定板 がリリースされたので、懲りずに挑戦しました。
おなじみでしょうが、すべて自己責任で!

質問は

mail.png

まで

総評

前回 PKGBUILD-STABLE を PKGBUILD にリネームしただけで行けたんじゃね?みたいな感じがしてたので今回試したらビンゴでした。
MSYS2の使い方を含めたパッケージ管理やビルドの仕方をよく理解しないで、かなり無駄な努力をしてしまった感じがします・・・
前回はなんだかんだで1か月かかったのが今回は1週間ぐらいで終了した・・・と思ったらスクリプトコンソール動かすのに結局1か月かかった。

参考サイト

日本語フォントのマージ手順

http://wiki.kicad.jp/

おなじみですがこのサイトの日本語フォントのマージ手順とツールなければ出来ませんでした。(というかやってみようとは思わなかった)

基本的なビルドの方法

http://docs.kicad-pcb.org/doxygen/md_Documentation_development_compiling.html

ソースからビルドする場合の情報です。
もしかすると32bit版はboostのダウングレードしなくても行けたのかな?

謝辞

今回も先人に感謝。参考サイト以外にも各サイトにお世話になってます。
うちの情報も役に立ってくれれば、うれしいです。

作業環境

Windows10 64bit
4.0.6と一緒でDドライブにて作業してます。階層が深くなる対策のため kicad-winbuilder-master を kicad-winbuilder にリネームしてます、 読み替えてくださいませ。
また、容量に関しても25GB近かったので空き容量にはご注意ください。

作業開始

Cmakeのインストール

https://cmake.org/download/ から自分の環境にあったインストーラをダウンロードしてセットアップします。
普通にセットアップできるので問題はないかと思います。

ソースの取得

https://github.com/KiCad/kicad-winbuilder の Winbuilder を使用しました。
前回よく理解しないで実行していたのですが Winbuilder をダウンロードしてバッチファイル実行するとダウンロードして環境を整えてくれるはず。

git 環境が整っている方は github の kicad-winbuilder を Clone してください。
git 環境が無い場合は https://github.com/KiCad/kicad-winbuilder にアクセスして Clone or Download から zip でダウンロードして展開する。
注意点はドライブのルートに展開するのとユーザー名のスペースに注意です。(マルチバイト文字もかな)
検証は最初の部分にも書いた通り

D:\kicad-winbuilder

で行いました。

事前準備

前回と比べると NGSPICE のビルドで停止等は無くなり思ったより順調に終了しました。
多少修正がありましたので、以下の通りです。
 

  • PKGBUILD
    kicad-winbuilder ディレクトリの PKGBUILD を PKGBUILD.bak に名前変更。
    PKGBUILD-STABLE をコピーして PKGBUILD に名前変更。
    名前変更した PKGBUILD の20行目付近に3行追加。
    (必須ライブラリの追加)
    depends=("${MINGW_PACKAGE_PREFIX}-boost"
             "${MINGW_PACKAGE_PREFIX}-cairo"
             "${MINGW_PACKAGE_PREFIX}-curl"
             "${MINGW_PACKAGE_PREFIX}-glew"
             "${MINGW_PACKAGE_PREFIX}-openssl"
             "${MINGW_PACKAGE_PREFIX}-wxPython"
             "${MINGW_PACKAGE_PREFIX}-wxWidgets"
             "${MINGW_PACKAGE_PREFIX}-libxslt"
             "${MINGW_PACKAGE_PREFIX}-oce"			← 追加
             "${MINGW_PACKAGE_PREFIX}-gnutls"		← 追加
             "${MINGW_PACKAGE_PREFIX}-rtmpdump"		← 追加
             "${MINGW_PACKAGE_PREFIX}-ngspice-git")
    makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
                 "${MINGW_PACKAGE_PREFIX}-doxygen"
                 "${MINGW_PACKAGE_PREFIX}-gcc"
                 "${MINGW_PACKAGE_PREFIX}-python2"
                 "${MINGW_PACKAGE_PREFIX}-pkg-config"
                 "${MINGW_PACKAGE_PREFIX}-swig"
                 "${MINGW_PACKAGE_PREFIX}-glm"
                 "git")
     
    PKGBUILD の20行目付近に1行追加。
    (ストロークフォントファイルのコピー)
     EXTRA_FLAGS=""
     if [ $GCCVERSION = "5.1.0" ] || [ $GCCVERSION = "5.2.0" ]; then
       EXTRA_FLAGS=" -DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations"
     fi
     
     cp /d/kicad-winbuilder/newstroke_font.cpp $HOME/MINGW-packages/mingw-w64-kicad-git/src/kicad/common	← 追加
     
     MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
     ${MINGW_PREFIX}/bin/cmake.exe \
    この追加部分の先頭 cp /d/kicad-winbuilder/new…… の /d がドライブレターを表しているので環境で変更する。
    例えば Cドライブなら cp /c/kica…… のように。
     
    PKGBUILD の70~80行目付近に2行追加 3行変更。
    (スクリプトモジュール無効化)
       -DKICAD_SKIP_BOOST=ON \
       -DKICAD_USE_OCE=ON \					← 追加
       -DKICAD_SCRIPTING=OFF \				← 変更
       -DKICAD_SCRIPTING_MODULES=OFF \			← 変更
       -DKICAD_SCRIPTING_WXPYTHON=OFF \			← 変更
       -DKICAD_SPICE=ON \					← 追加
       -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python2.exe \
       ${EXTRA_FLAGS} \
     
  • newstroke_font.cpp
    上記参考サイトの 日本語フォントのマージ手順 に従って作成。
    作成完了したら kicad-winbuilder ディレクトに配置
     
  • copydlls.sh
    kicad-winbuilder ディレクトリの copydlls.sh を編集。
    250行目付近に2行追加。
    (修正しなくても問題ないが存在するファイルなのでちゃんとコピーしてみる。)
    echo Building NSIS installer exe...
    cp -r $NSISPATH $TARGETDIR
    cp $HOME/MINGW-packages/mingw-w64-kicad-git/src/kicad/AUTHORS.txt "$TARGETDIR" ← 追加
    cp $HOME/MINGW-packages/mingw-w64-kicad-git/src/kicad/license_for_documentation.txt "$TARGETDIR" ← 追加
    }
     
  • ca-bundle.crt
    途中、証明書のエラーが出るので新規作成しておく。
    https://curl.haxx.se/ca/cacert.pem
    https://www.digicert.com/CACerts/DigiCertHighAssuranceEVRootCA.crt
    http://cacerts.digicert.com/DigiCertHighAssuranceEVCA-1.crt
    上記3種類の証明書をダウンロード。
    digicert の証明書がDER形式なので openssl で変換してから全部まとめる。
    openssl x509 -inform der -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem
    openssl x509 -inform der -in DigiCertHighAssuranceEVCA-1.crt -out DigiCertHighAssuranceEVCA-1.pem
    
    cat cacert.pem >> ca-bundle.crt
    cat DigiCertHighAssuranceEVRootCA.pem >> ca-bundle.crt
    cat DigiCertHighAssuranceEVCA-1.pem >> ca-bundle.crt
    作成した ca-bundle.crt は kicad-winbuilder ディレクトリに配置する。
     
  • KiCad-Winbuilder.cmake
    kicad-winbuilder ディレクトリの KiCad-Winbuilder.cmake を編集
     
    100行目付近に2行追加
    (boostパッケージのダウングレードファイル定義)
    if( i686 )
        set( TOOLCHAIN_PACKAGES "${TOOLCHAIN_PACKAGES} mingw-w64-i686-toolchain mingw-w64-i686-boost mingw-w64-i686-cairo mingw-w64-i686-curl mingw-w64-i686-glew mingw-w64-i686-openssl mingw-w64-i686-wxPython mingw-w64-i686-wxWidgets mingw-w64-i686-cmake mingw-w64-i686-gcc mingw-w64-i686-python2 mingw-w64-i686-python2-pip mingw-w64-i686-pkg-config mingw-w64-i686-swig mingw-w64-i686-libxslt bzr git doxygen" )
        set( DWONGRADE_PACKAGES "${DWONGRADE_PACKAGES} http://repo.msys2.org/mingw/i686/mingw-w64-i686-boost-1.57.0-4-any.pkg.tar.xz ") ← 追加
    endif()
    
    if( x86_64 )
        set( TOOLCHAIN_PACKAGES "${TOOLCHAIN_PACKAGES} mingw-w64-x86_64-toolchain mingw-w64-x86_64-boost mingw-w64-x86_64-cairo mingw-w64-x86_64-curl mingw-w64-x86_64-glew mingw-w64-x86_64-openssl mingw-w64-x86_64-wxPython mingw-w64-x86_64-wxWidgets mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc mingw-w64-x86_64-python2 mingw-w64-x86_64-python2-pip mingw-w64-x86_64-pkg-config mingw-w64-x86_64-swig mingw-w64-x86_64-libxslt bzr git doxygen" )
       set( DWONGRADE_PACKAGES "${DWONGRADE_PACKAGES} http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-boost-1.57.0-4-any.pkg.tar.xz ") ← 追加
    endif()
     
    316行目付近に1行追加
    (boostパッケージダウングレードの実行用)
    if( NOT EXISTS "${LOG_DIR}/pacman_required_packages" )
        # Get the initial required packages and then update pacman again
        execute_msys2_bash( "pacman --noconfirm -S base-devel" "${LOG_DIR}/pacman_base_devel" )
        execute_msys2_bash( "pacman --noconfirm -S git make ${TOOLCHAIN_PACKAGES}" "${LOG_DIR}/pacman_required_packages" )
        execute_msys2_bash( "pacman --noconfirm -Su" "${LOG_DIR}/pacman_required_packages_update" )
        execute_msys2_bash( "pacman --noconfirm -U ${DWONGRADE_PACKAGES}" "${LOG_DIR}/pacman_boost_packages_downgrade" ) ← 追加
    endif()
     
    334行目付近に1行追加
    (証明書ファイルの配置)
    message( STATUS "KICAD_PACKAGE_SOURCE_DIR ${KICAD_PACKAGE_SOURCE_DIR}" )
    get_filename_component( USERNAME "${HOME_DIR}" NAME )
    message( STATUS "MSYS2 user name is: $USERNAME=${USERNAME}" )
    
    execute_msys2_bash( "cp /d/kicad-winbuilder/ca-bundle.crt /usr/ssl/certs/" "${LOG_DIR}/cert_copy" ) ← 追加
    
    # Get the MinGW packages project for MSYS2
    if( NOT EXISTS "${HOME_DIR}/MINGW-packages" )
        execute_msys2_bash( "cd \"${HOME_DIR}\" && git clone https://github.com/Alexpux/MINGW-packages.git" "${LOG_DIR}/git_clone" )
    endif()
    この追加部分も cp /d/kicad-winbuilder/ca-…… の /d がドライブレターを表しているので環境で変更する。
    例えば Cドライブなら cp /c/kica…… のように。
     
  • install.nsi
    kicad-winbuilder ディレクトリにある nsis ディレクトリの install.nsi ファイルの文字コードが UTF-8N なので UTF-8 か shift-JIS に変換して保存しなおす。
     

ビルド開始

Windows のコマンドプロンプト起動しカレント移します。

D:
cd kicad-winbilder

 
文字コード変更
(Win10の場合実行しないと MSYS2 の処理時に文字化けします。Win7は試してないけど4.0.6と一緒で実行しなくても大丈夫だと思います。)

chcp 65001

とりあえず実行

make_all.bat

あとは数時間待ってれば勝手にダウンロードして勝手にビルドして勝手にパッケージングしてくれる・・・はず。
ファイルは

kicad-winbuilder\msys64\home\ユーザー名\out\pack-i686
kicad-winbuilder\msys64\home\ユーザー名\out\pack-x86_64

に作成されます。

スクリプトモジュールを使用したい場合

上記のスクリプトモジュールを無効化した手順でビルド終了した後

  • PKGBUILD
    kicad-winbuilder ディレクトリの PKGBUILD (上記手順で変更したもの)をコピーして PKGBUILD_wx に名前変更。
    (スクリプトモジュール有効化)
       -DKICAD_SKIP_BOOST=ON \
       -DKICAD_USE_OCE=ON \
       -DKICAD_SCRIPTING=ON \			← 変更
       -DKICAD_SCRIPTING_MODULES=ON \		← 変更
       -DKICAD_SCRIPTING_WXPYTHON=ON \		← 変更
       -DKICAD_SPICE=ON \
       -DPYTHON_EXECUTABLE=${MINGW_PREFIX}/bin/python2.exe \
       ${EXTRA_FLAGS} \
     
  • MSYS2コンソール起動
    エクスプローラーで D:\kicad-winbuilder\msys64 の msys2_shell.cmd をダブルクリックで起動。以降 MSYS2 コンソールで作業
    mv /d/kicad-winbuilder/PKGBUILD /d/kicad-winbuilder/PKGBUILD_No-wx
    mv /d/kicad-winbuilder/PKGBUILD_wx /d/kicad-winbuilder/PKGBUILD
    
    cd $HOME/MINGW-packages/mingw-w64-wxPython
    makepkg-mingw -is
    インストールを行いますか? で Y
    i686版もインストールを行いますか? で Y
    rm $HOME/MINGW-packages/mingw-w64-kicad-git/*.pkg.tar.xz
    rm -rf $HOME/out
    MSYS コンソールを閉じ コマンドプロンプトで再度 make_all.bat を実行
     

どうにも面倒でやってられない方

  • 簡単なビルド方法
    上記手順が面倒な場合は kicad-winbuilder をダウンロードと解凍する。
     
    kicad_407_files.zip をダウンロードして解凍し、
    ca-bundle.crt
    newstroke_font.cpp
    PKGBUILD_wx
    ファイルを kicad-winbuilder ディレクトリにコピー
    copydlls.sh
    KiCad-Winbuilder.cmake
    PKGBUILD
    ファイルを kicad-winbuilder ディレクトリに上書き
    install.nsi
    ファイルを kicad-winbuilder\nsis ディレクトリに上書きしてビルドすればOKです。
    ダウンロードしたファイルの修正箇所は上記の詳細手順と同じです。
     
  • スクリプトモジュール有効化
    スクリプトコンソールが必要な場合は上記同様エクスプローラーでスクリプトコンソール無効化した手順でビルドした後 D:\kicad-winbuilder\msys64 の msys2_shell.cmd をダブルクリックで起動して、
    mv /d/kicad-winbuilder/PKGBUILD /d/kicad-winbuilder/PKGBUILD_No-wx
    mv /d/kicad-winbuilder/PKGBUILD_wx /d/kicad-winbuilder/PKGBUILD
    cd $HOME/MINGW-packages/mingw-w64-wxPython
    makepkg-mingw -is
    インストールを行いますか? で Y
    i686版もインストールを行いますか? で Y
    rm $HOME/MINGW-packages/mingw-w64-kicad-git/*.pkg.tar.xz
    rm -rf $HOME/out
    実行してMSYS コンソールを閉じ コマンドプロンプトで再度 make_all.bat を実行。
     

インストールパッケージ 

それも面倒な人はインストールパッケージをダウンロードしてください。
(署名はしていませんので、自己責任で有効にしてください。--詳細方法 → 実行--)
 
32bit版 kicad-4.0.7-i686.exe
64bit版 kicad-4.0.7-x86_64.exe