link 未来から過去へ表示(*)
link 過去から未来へ表示

link もっと前
   2021年 1月 27日 ---> 2021年 1月 18日
link もっと後

2021年 1月 22日

苦境の ANA

年末(2020年 12月 20日の日記参照)に、1月は SUPER VALUE 21 J より安いチケットが VALUE 3 で出ると予想しましたが、外れましたね。1/30 の羽田→札幌便を見ると、最安は VALUE 3 J で年末からほとんど変わっていません。

いやまあ、SUPER VALUE 21 と VALUE 3 の値段がほとんど変わらない時点で、かなり異常事態なんですけど……。


1/30 の羽田→札幌便

なんと全 25便中、半分近い 11便が欠航しています。飛ばす回数を自体を減らし、客単価の維持とおそらく各便ごとの黒字を確保しているのでしょう。単発で黒字が出たとしても、確実に収益にはダメージがありますよね。安いイメージが付いてしまうより良いのかなあ?

燃料費などは減便で節約できても、飛行機はリースなので飛んでも飛ばなくてもお金が掛かります。飛ばせるならいくらでも飛ばしたいでしょう。

早いところ COVID-19 には収束してもらって、気軽に旅行や帰省できる日が来てほしいですね。ANA は今かなり苦しいでしょうけど、日本の翼を担う会社として何とか踏みとどまってほしいところ……。

編集者: すずき(更新: 2021年 1月 23日 15:09)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2021年 1月 18日

Debian Testing と Zephyr SDK その 3 - パッチを当てて SDK ビルド

目次: Zephyr を調べる - まとめリンク

前回はツールチェーンビルドの仕組みを確認するため Crosstool-NG に立ち返り、正常動作するバイナリが作成できましたが、手順が多くて面倒でした。実は Zephyr SDK だけでパッチを当てる仕組みがあります。

ローカルパッチディレクトリ

Crosstool-NG のパッチ当ては前回紹介した packages の下にあるパッチを使うのが基本ですが、他の場所(ローカルパッチディレクトリ)も追加できます。CT_LOCAL_PATCH_DIR というコンフィグに設定されます。

Crosstool-NG のローカルパッチディレクトリ設定
$ ./ct-ng menuconfig

Paths and misc options  --->
  () Local patch directory

Crosstool-NG のパッチ当て処理を見るとパッチを当てる順番を選択できるようになっています。

Crosstool-NG のパッチ当て実装

# crosstool-ng/scripts/functions

CT_DoExtractPatch()
{

...
            CT_DoLog EXTRA "Patching ${basename}"
            CT_DoExecLog ALL touch "${src_dir}/.${basename}.patching"

            bundled_patch_dir="${CT_LIB_DIR}/packages/${pkg_dir}"
            bundled_common_patch_dir="${CT_LIB_DIR}/packages/${pkg_name}"
            local_patch_dir="${CT_LOCAL_PATCH_DIR}/${pkg_dir}"    #★★ローカルパッチディレクトリ

            #★ディレクトリ名を列挙
            #★patch_order は "bundled, local" になっていた、CT_PATCH_ORDER で決まるようだ
            case "${patch_order}" in
                bundled)        patch_dirs=("${bundled_patch_dir}" "${bundled_common_patch_dir}");;
                local)          patch_dirs=("${local_patch_dir}");;
                bundled,local)  patch_dirs=("${bundled_patch_dir}" "${bundled_common_patch_dir}" "${local_patch_dir}");;
                local,bundled)  patch_dirs=("${local_patch_dir}" "${bundled_patch_dir}" "${bundled_common_patch_dir}");;
                none)           patch_dirs=;;
            esac

            CT_Pushd "${src_dir}/${basename}"
            for d in "${patch_dirs[@]}"; do    #★ディレクトリを順に辿る
                CT_DoLog DEBUG "Looking for patches in '${d}'..."
                if [ -n "${d}" -a -d "${d}" ]; then
                    for p in "${d}"/*.patch; do
                        if [ -f "${p}" ]; then
                            CT_DoExecLog ALL ${patch} --no-backup-if-mismatch -g0 -F1 -p1 -f -i "${p}"
                        fi
                    done
                fi
            done

...

今回のケースでは patch_order は "bundled, local" になっていたので、packages -> ローカルパッチの順にパッチを当てるようです。patch_order の決め方は深追いしていませんが、CT_PATCH_ORDER で決まるようです。

Zephyr SDK にパッチを追加

Zephyr SDK の設定ファイルを見るとローカルパッチディレクトリは下記のようになっています。

Zephyr SDK のローカルパッチディレクトリ設定内容
# configs/riscv64.config

...

CT_LOCAL_PATCH_DIR="${CT_TOP_DIR}/../../patches"

CT_TOP_DIR とは何でしょう?ビルドログを追うと CT_TOP_DIR=/.../sdk-ng/build/build_riscv64 でした。すなわち sdk-ng/patches がローカルパッチディレクトリです。ディレクトリには既に 6つほどのパッチが置かれています。

Zephyr SDK のローカルパッチディレクトリ(GDB 用)
$ ls patches/gdb/9.2

0001-gdb-remote-make-tid-pid-type-long-in-write_ptid.patch
0002-gdb-Add-fixes-for-stdint-and-remote-debug-on-xtensa.patch
0003-gdb-xtensa-don-t-error-out-when-registers-cannot-be-.patch
0004-gdb-xtensa-use-remote-target-register-numer.patch
0005-gdb-arch-to-tell-whether-it-supports-g-packets.patch
0006-gdb-xtensa-support-disabling-use-of-g-packet.patch

ここに Python 3.9 で落ちる問題を修正するパッチを追加します。

Zephyr SDK に GDB のパッチを追加する
$ cd sdk-ng

$ cat > patches/gdb/9.2/0007-gdb-fix-python3.9.patch
(パッチをコピペする)

$ ./go.sh riscv64

ビルドログは build/build_riscv64/build.log に作られます。

Zephyr SDK のパッチ当てログを確認
# Crosstool-NG の持っているパッチを当てているログ

[DEBUG]    Looking for patches in 'sdk-ng/share/crosstool-ng/packages/gdb/9.2'...
[DEBUG]    ==> Executing:  '/usr/bin/patch' '--no-backup-if-mismatch' '-g0' '-F1' '-p1' '-f' '-i' 'sdk-ng/share/crosstool-ng/packages/gdb/9.2/0000-musl_fix.patch'
[ALL  ]    patching file gdb/linux-nat.c
[ALL  ]    patching file gdb/stopcode.h
[DEBUG]    ==> Return status 0

...


# Zephyr SDK のローカルパッチを当てているログ

[DEBUG]    Looking for patches in 'sdk-ng/share/crosstool-ng/packages/gdb'...
[DEBUG]    Looking for patches in 'sdk-ng/build/build_riscv64/../../patches/gdb/9.2'...
[DEBUG]    ==> Executing:  '/usr/bin/patch' '--no-backup-if-mismatch' '-g0' '-F1' '-p1' '-f' '-i' 'sdk-ng/build/build_riscv64/../../patches/gdb/9.2/0001-gdb-remote-make-tid-pid-type-long-in-write_ptid.patch'
[ALL  ]    patching file gdb/remote.c
[DEBUG]    ==> Return status 0

...


# 追加したパッチを当てているログ

[DEBUG]    ==> Executing:  '/usr/bin/patch' '--no-backup-if-mismatch' '-g0' '-F1' '-p1' '-f' '-i' 'sdk-ng/build/build_riscv64/../../patches/gdb/9.2/0007-gdb-fix-python3.9.patch'
[ALL  ]    patching file gdb/python/python.c
[ALL  ]    Hunk #1 succeeded at 234 (offset -4 lines).
[ALL  ]    Hunk #2 succeeded at 271 (offset -4 lines).
[ALL  ]    Hunk #3 succeeded at 952 (offset -19 lines).
[ALL  ]    Hunk #4 succeeded at 1552 (offset -68 lines).
[ALL  ]    Hunk #5 succeeded at 1720 (offset -70 lines).
[ALL  ]    patch unexpectedly ends in middle of line
[DEBUG]    ==> Return status 0

ちなみに Zephyr SDK のビルド後、GDB のソースコードは sdk-ng/build/build_riscv64/.build/riscv64-zephyr-elf/src/gdb に展開されます。パッチが正常に当たったか確認するなら、このソースコードを見れば確実でしょう。

SDK は build/output 以下に生成されます。RISC-V 64 であれば build/output/riscv64-zephyr-elf です。生成されたバイナリが動くか確かめましょう。

生成された GDB を実行
$ cd build/output/riscv64-zephyr-elf/bin

$ ./riscv64-zephyr-elf-gdb --version
GNU gdb (crosstool-NG 1.24.0.212_d7da3a9) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

動きました、良かった良かった。build/output 下に生成された riscv64-zephyr-elf ディレクトリを Zephyr SDK のインストールディレクトリ下にある同名のディレクトリと差し替えれば、GDB が動くはずです。

編集者: すずき(更新: 2021年 1月 18日 16:21)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2021年 1月 27日 ---> 2021年 1月 18日
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 1/23 15:09

カレンダー

<2021>
<<<01>>>
-----12
3456789
10111213141516
17181920212223
24252627282930
31------

最近のコメント 5件

  • link 20年12月20日
    すずき 「パック旅行や旅行代理店に割り当てられた専...」
    (更新:12/21 19:00)
  • link 20年12月20日
    hdk 「羽田鹿児島便、ANA直接予約はほとんどし...」
    (更新:12/21 08:17)
  • link 20年09月10日
    すずき 「追加情報。最新の Debian Test...」
    (更新:10/07 16:48)
  • link 20年09月20日
    hdk 「最近は音楽聞く時やビデオ視聴時はミニコン...」
    (更新:09/24 21:43)
  • link 20年09月20日
    すずき 「ありゃー、同じ壊れ方ですね。\n新たなヘ...」
    (更新:09/24 00:23)

最近の記事 3件

link もっとみる
  • link 21年01月22日
    すずき 「[苦境の ANA] 年末(2020年 12月 20日の日記参照)に...」
    (更新:01/23 15:09)
  • link 20年02月22日
    すずき 「[Zephyr を調べる - まとめリンク] 日記が増えすぎて、一...」
    (更新:01/18 20:33)
  • link 21年01月18日
    すずき 「[Debian Testing と Zephyr SDK その] ...」
    (更新:01/18 16:21)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報