Linux あれこれ

Linux 関連(一部 Windows11 )の備忘録です。

「Ubuntu 22.04 LTS」にて「Meson」で「gedit」をビルドしてみた〈H145-4〉

登録日: 2022-01-25 更新日: 2022-03-09

Xubuntu 20.04.4 LTS」をホストOS にした「VirtualBox」に、公開はまだの「Ubuntu 22.04 LTS」のDaily 版(日々更新版)をインストールしました。

-

その環境で、「Meson を使ったビルド」の勉強に、gnome の標準のテキストエディタである「gedit」をビルドしてみました。その備忘録です。

-

-

ホストOS : Xubuntu 20.04.4 LTS

ゲストOS : Ubuntu 22.04 LTS   ←(今回の作業)

-

-

使用したPC は「ASUS Chromebox CN60 」で、 プロセッサは第4世代の「Intel Celeron 2955U 」です。UEFI 立ち上げです。

-

(注)リンクを戻るときはブラウザの左上の「←」をクリック

-

-


目次

-

以前の作業:

ホストOS に「VirtualBox をインストール」

「仮想マシンの作成:」

「Ubuntu 22.04 LTS のインストール」

-

今回の作業:

「開発ツールのインストール:」

「pip でmeson をインストール:」

「gedit をビルド:」

-

「参考: Python とpip についての復習」

「まとめ へ」

-

「目次詳細 へ」

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -

Ubuntu 22.04 LTS」の画面:

-

デスクトップは使いやすいようにカスタマイズ:

→ドックのアイコンを小さくして、右に移動したぐらい。 デフォルトの壁紙も悪くありません。

-

ビルドした「gedit」を起動:

→コマンドから「./gedit」として起動。gedit がPython で作られていたとは知りませんでした。

バージョンは「41.alpha」です。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --

Ubuntu 22.04 LTS」について

-

リリース:

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu Jammy Jellyfish (development branch)"

→「Alpha 版」ですが、内部エラーも少なく安定しています。

-


現在のバージョンを表示:

2022-01-25 現在

カーネル:

$ uname -r
5.15.0-17-generic

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ---

Meson について

-

参考:

The Meson Build system

-

抜粋:

GNOME 系のソフトウェア(つまり、Fedora)を中心に、「Meson」というビルドシステムの利用が広がっています。 シェルを呼び出さず、チェックやビルド設定の処理は高速で、短時間で終了します。 プログラム開発において、ビルドのたびに待たされる時間が短縮できるのが大きな利点です。

-

CMake の代わりに「Meson」を使い、Make の代わりに「Ninja」を使うと考えればわかりやすいかも。なので既存からの移行がしやすいシステムだと思います。

-

Meson は、ビルドを自動化するためのソフトウェアで、Python で書かれています。 Meson の目標は、プログラマの生産性を向上させることです。

Meson を用いているプロジェクトはソースツリーに「meson.build」ファイルを置いています。サブディレクトリの処理にも対応しているため、開発者はこの名前のファイルを複数記述することになります。サブディレクトリの記述はどちらかというと、そのフォルダのファイル構造の定義になるみたい。

-

Meson は直接ソフトウェアをビルドせずに、コンパイルの前準備を扱う処理を行います。 Linux では低レベルなビルドシステム(Meson ではNinja 用)のビルド用の定義ファイルを生成する点で、 CMake、autotools (+automake)、などに似ていますし、依存パッケージが足りないときの一覧の表示も似ています。

-

Meson によってNinja のビルドファイルが生成され、それをNinja で使って実際のビルドを行います。 Ninja はMake の代わりになるもので、より高速です。

-

Meson では、ビルドによって生成されたものの全ては、ビルド用のディレクトリにだけ出力されます。 そのフォルダにはNinja 用のビルドファイルも生成されるわけで、(Meson の初期のバージョンなら)そのフォルダに移動して、Ninja でビルドすることになります。

-

Meson の設定ファイル (meson.build) はPython に似た構文です。

Meson の設定ファイルは強い型付けがあり、リスト型は空白で文字列を分割することはありません。 従って、ファイル名やコマンドライン引数に空白やその他の文字が含まれていても適切に処理されます。

-

Meson は Python で書かれているので、pip でもインストールできます。 ただし、管理者権限でNinja を使いたい(システムにアプリを配置したい)ときは、apt でインストールする方がパスとかの設定をしなくてすむので楽です。

pip でインストールするときは、必ず Python 3 バージョンのpip を使うことになります。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----

1. 開発ツールのインストール

-

DebianUbuntu の場合:

-

開発ツールのインストール

$ sudo apt install build-essential
:
以下のパッケージが新たにインストールされます:
  build-essential dpkg-dev fakeroot g++ g++-11 libalgorithm-diff-perl libalgorithm-diff-xs-perl
  libalgorithm-merge-perl libdpkg-perl libfakeroot libfile-fcntllock-perl libstdc++-11-dev lto-disabled-list

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - -----

2. Meson をapt でインストール:

-

DebianUbuntu の場合:

1). Meson のインストール:

$ sudo apt install meson
:
以下のパッケージが新たにインストールされます:
  meson ninja-build

→「ninja」も依存でインストールされました。

-

2). Meson がインストールされたかの確認:

$ apt search meson
:
meson/jammy,jammy,now 0.61.1-1 all [インストール済み]
  high-productivity build system

→和訳: 生産性の高いビルドシステム

-

3). ninja がインストールされたかの確認:

$ apt search ninja-build
:
ninja-build/jammy,now 1.10.1-1 amd64 [インストール済み、自動]
  small build system closest in spirit to Make

→和訳: Make に最も近い小さなビルドシステム

-

4). 確認:

-

(1). 実行ファイルのパスの確認:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/ubn/.local/bin

-

(2). 実行ファイルの場所の確認:
$ which meson
/usr/bin/meson

$ which ninja
/usr/bin/ninja

-

(3). バージョンの確認:
$ meson --version
0.61.1

$ ninja --version
1.10.1

→「ninja」のバージョンを見れば、apt でインストールしたパッケージかがわかります。

-

(4). 管理者権限で使えるかを確認:
$ sudo meson --version
0.61.1

$ sudo ninja --version
1.10.1

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -

3. 「gedit」をビルドしてみます:

-

GNOME の標準のテキストエディタである、gedit をビルドしてインストールしてみました:

-

公式サイト:

GNOME/gedit - GitLab

こちらのサイトは、ビルドシステムとして「Meson」が使われています。

-

1). ソースのダウンロード:

公式サイトにて、「Download」ボタンをクリック→「tar.gz」→「ファイルを保存する」

「~/ダウンロード/gnome/」フォルダに移動

ダウンロードした「gedit-main.tar.gz」を右クリック→「ここで展開」

-

2). 展開したソースファイルの確認:

$ cd ~/ダウンロード/gnome/gedit-master/

$ ls -1
CONTRIBUTING.md
COPYING
NEWS
README.md
build-aux
data
docs
gedit
gedit.doap
help
logo.png
meson.build                                         ←(注目)
meson_options.txt
plugins
po                                                       ←(注目)
subprojects
tools

-

3). メインの「meson.build」を確認:

$ cd ~/ダウンロード/gnome/gedit-master/
$ cat meson.build

-

4). 管理者権限でツールが使えるかを確認:

$ sudo meson --version
0.61.1


$ sudo ninja --version
1.10.1

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- --

4. 「gedit」をビルドするための依存を補う:

-

Meson で「gedit」をビルドしますが、その前に、依存パッケージの不足を補います。 エラーが出なくなるまで、 Meson のビルドを繰り返します。

ビルド用のフォルダを使うので、ソースツリーが汚れません。

-

1). メインの「meson.build」にて、依存を確認:

$ cat meson.build

-

2). 依存の関連を抜粋:

libgd_dep = libgd_subproject.get_variable('libgd_dep')

# Dependencies
glib_req = '>= 2.64'
gtk_req = '>= 3.22'
gtksourceview_req =  '>= 4.0'
libpeas_req = '>= 1.14.1'
libxml_req = '>= 2.5.0'
gspell_req = '>= 1.0'
pygobject_req = '>= 3.0.0'

gio_dep = dependency('gio-2.0', version: glib_req)
libxml_dep = dependency('libxml-2.0', version: libxml_req)
gspell_dep = dependency('gspell-1', version: gspell_req, required: get_option('spell'))

if get_option('python')
  python3 = python.find_installation('python3')
endif

libgedit_public_deps = [
  gio_dep,
  dependency('gtk+-3.0', version: gtk_req),
  dependency('gtksourceview-4', version: gtksourceview_req),
  dependency('libpeas-gtk-1.0', version: libpeas_req),
]

deps_basic_list = [
  libgedit_public_deps,
  dependency('gobject-introspection-1.0'),
]

-

3). 予想される依存を列挙:

libgd                 ←(libgd-dev)
glib     = '>= 2.64'                 ←(libglib2.0-dev)
gtk     = '>= 3.22'                 ←(libgtk-3-dev)
gtksourceview     =  '>= 4.0'                 ←(libgtksourceview-4-dev)
libpeas      = '>= 1.14.1'                ←(libpeas-dev)
libxml       = '>= 2.5.0'                ←(libxml2-dev)
gspell     = '>= 1.0'                ←(libgspell-1-dev)
pygobject     = '>= 3.0.0'                ←(python-gi-dev)

gio-2.0                                     ←(golang-gir-gio-2.0-dev)
libxml-2.0       = '>= 2.5.0'                ←(libxml2-dev)
gspell-1     = '>= 1.0'                ←(libgspell-1-dev)

gtksourceview-4     =  '>= 4.0' 
gtk+-3.0     = '>= 3.22' 
libpeas-gtk-1.0      = '>= 1.14.1' 
gobject-introspection-1.0                ←(python3-gi)

-

4). 予想される依存の確認:

$ apt list libgd-dev libglib2.0-dev libgtk-3-dev libgtksourceview-4-dev libpeas-dev libxml2-dev libgspell-1-dev python-gi-dev golang-gir-gio-2.0-dev libxml2-dev libgspell-1-dev python3-gi
:
golang-gir-gio-2.0-dev/jammy,jammy 2.0.4~git20211109.4b0a2df-1 all
libgd-dev/jammy 2.3.0-2ubuntu1 amd64                                 ←(インストールなし)
libglib2.0-dev/jammy,now 2.71.0-2 amd64 [インストール済み]
libgspell-1-dev/jammy,now 1.9.1-2 amd64 [インストール済み]
libgtk-3-dev/jammy,now 3.24.30-3ubuntu2 amd64 [インストール済み]
libgtksourceview-4-dev/jammy,now 4.8.2-1 amd64 [インストール済み]
libpeas-dev/jammy,now 1.30.0-4build1 amd64 [インストール済み]
libxml2-dev/jammy,now 2.9.12+dfsg-5 amd64 [インストール済み]
python-gi-dev/jammy,now 3.42.0-3 amd64 [インストール済み]
python3-gi/jammy,now 3.42.0-3 amd64 [インストール済み、自動]

-

5). プロジェクト(ソース)のディレクトリに移動:

$ cd ~/ダウンロード/gnome/gedit-master/

-

6). meson でビルド:(1回目)

$ meson setup builddir
:
meson.build:29:2: ERROR: Program or command 'git' not found or not executable

-

依存 (1). 「git」のインストール:
$ sudo apt install git
:
以下のパッケージが新たにインストールされます:
  git git-man liberror-perl

-

7). meson でビルド:(2回目)

$ meson setup builddir
:
meson.build:32:0: ERROR: Subproject exists but has no meson.build file

和訳: サブプロジェクトは存在しますが、meson.build ファイルがありません

meson.build 32行目:

libgd_subproject = subproject(
  'libgd',
  default_options: [
    'with-tagged-entry=true',
    'static=true',
  ]
)

libgd_dep = libgd_subproject.get_variable('libgd_dep')
$ ls ~/ダウンロード/gnome/gedit-master/subprojects/libgd/
$ 

→空です。

-

依存 (2). 「libgd」のダウンロード:

-

公式サイト:

GNOME/libgd - GitLab

-

README を確認:

libgd は、さまざまなGNOME3 スタイルのアプリケーションで使用されるライブラリです。

libgd を使用するには、次のことを行う必要があります。

1.最上位のプロジェクトディレクトリから、サブモジュールを追加します。

$ cd ~/ダウンロード/gnome/gedit-master/

$ git submodule add git://git.gnome.org/libgd
fatal: not a git repository (or any of the parent directories): .git

→致命的:git リポジトリ(または親ディレクトリのいずれか)ではありません:.git

→このコマンドを使うには、親もgit リポジトリにする必要があるみたい。

-

ダウンロードのやり方を変更:

-

$ cd ~/ダウンロード/gnome/gedit-master/
$ cd subprojects/

$ ls subprojects/
libgd

$ git clone https://gitlab.gnome.org/GNOME/libgd.git
$ cd libgd
$ ls -a
.   .git        Makefile.am  libgd       libgd.m4     meson_options.txt  test-tagged-entry-2.c
..  .gitignore  README       libgd.doap  meson.build  meson_readme.md    test-tagged-entry.c

-

$ cat meson.build
project('libgd', 'c',
  meson_version: '>= 0.38.0',
  default_options: ['static=true'],
)

if not meson.is_subproject()
  message('WARNING: This project is only intended to be used as a subproject!')
endif

pkglibdir = get_option('pkglibdir')
pkgdatadir = get_option('pkgdatadir')

libgtk = dependency('gtk+-3.0', version: '>= 3.7.10')
cc = meson.get_compiler('c')
libm = cc.find_library('m', required: false)
libgd_include = include_directories('.')

subdir('libgd')

if get_option('with-tagged-entry')
  foreach t : ['test-tagged-entry', 'test-tagged-entry-2']
    executable(t, t + '.c', dependencies : libgd_dep)
  endforeach
endif

-

8). 古い「meson 0.60.3」でビルドした場合:(3回目)

$ cd ~/ダウンロード/gnome/gedit-master/
$ meson setup builddir
:
The Meson build system
Version: 0.60.3
Source dir: /home/ubn/ダウンロード/gnome/gedit-master
Build dir: /home/ubn/ダウンロード/gnome/gedit-master/builddir
Build type: native build
Project name: gedit
Project version: 41.alpha
C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0")
C linker for the host machine: cc ld.bfd 2.37.50.20220106
Host machine cpu family: x86_64
Host machine cpu: x86_64

Executing subproject libgd 

libgd| Project name: libgd
libgd| Project version: undefined
libgd| C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0")
libgd| C linker for the host machine: cc ld.bfd 2.37.50.20220106
libgd| Found pkg-config: /usr/bin/pkg-config (0.29.2)
libgd| Run-time dependency gtk+-3.0 found: YES 3.24.30
libgd| Library m found: YES
libgd| Build targets in project: 3
libgd| Subproject libgd finished.

Run-time dependency gio-2.0 found: YES 2.71.0
Run-time dependency libxml-2.0 found: YES 2.9.12
Run-time dependency gspell-1 found: YES 1.9.1
Program python3 found: YES (/usr/bin/python3)
Dependency gtk+-3.0 found: YES 3.24.30 (cached)
Run-time dependency gtksourceview-4 found: YES 4.8.2
Run-time dependency libpeas-gtk-1.0 found: YES 1.30.0
Run-time dependency gobject-introspection-1.0 found: YES 1.70.0
Configuring config.h using configuration
DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release.
Program appstream-util found: YES (/usr/bin/appstream-util)
DEPRECATION: i18n.merge_file does not take any positional arguments. This will become a hard error in the next Meson release.
Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate)
Configuring org.gnome.gedit.gschema.xml using configuration
Program xmllint found: YES (/usr/bin/xmllint)
Configuring org.gnome.gedit.service using configuration
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Configuring gedit.gresource.xml using configuration
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached)
Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached)
Program g-ir-scanner found: YES (/usr/bin/g-ir-scanner)
Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached)
Program g-ir-compiler found: YES (/usr/bin/g-ir-compiler)
Program vapigen found: YES (/usr/bin/vapigen)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program cat found: YES (/usr/bin/cat)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program gedit-tool-merge.pl found: YES (/home/ubn/ダウンロード/gnome/gedit-master/plugins/externaltools/scripts/gedit-tool-merge.pl)
Program build-aux/meson/post_install.py found: YES (/home/ubn/ダウンロード/gnome/gedit-master/build-aux/meson/post_install.py)
Build targets in project: 174

gedit 41.alpha

    API version         : 41.alpha
    Prefix              : /usr/local
    API documentation   : False
    User documentation  : True
    Require all tests   : False
    Spell checker plugin: true

  Subprojects
    libgd               : YES

Found ninja-1.10.1 at /usr/bin/ninja

→「Meson 0.60.3」の場合はうまく行きました。

-

9). 新しい「meson 0.61.1」でビルドした場合:(4回目)

$ cd ~/ダウンロード/gnome/gedit-master/
$ meson setup builddir
:
 meson setup builddir
The Meson build system
Version: 0.61.1
Source dir: /home/ubn/ダウンロード/gnome/gedit-master
Build dir: /home/ubn/ダウンロード/gnome/gedit-master/builddir
Build type: native build
Project name: gedit
Project version: 41.alpha
C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0")
C linker for the host machine: cc ld.bfd 2.37.50.20220106
Host machine cpu family: x86_64
Host machine cpu: x86_64
WARNING: You should add the boolean check kwarg to the run_command call.  ←(警告1 表示)
         It currently defaults to false,
         but it will default to true in future releases of meson.
         See also: https://github.com/mesonbuild/meson/issues/9300

Executing subproject libgd 

libgd| Project name: libgd
libgd| Project version: undefined
libgd| C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0")
libgd| C linker for the host machine: cc ld.bfd 2.37.50.20220106
libgd| Found pkg-config: /usr/bin/pkg-config (0.29.2)
libgd| Run-time dependency gtk+-3.0 found: YES 3.24.30
libgd| Library m found: YES
libgd| Build targets in project: 3
libgd| Subproject libgd finished.

Run-time dependency gio-2.0 found: YES 2.71.0
Run-time dependency libxml-2.0 found: YES 2.9.12
Run-time dependency gspell-1 found: YES 1.9.1
Program python3 found: YES (/usr/bin/python3)

WARNING: Python files installed by Meson might not be found by python interpreter.  ←(警告2 表示)
 This warning can be avoided by setting "python.platlibdir" option.
WARNING: Python files installed by Meson might not be found by python interpreter.  ←(警告3 表示)
 This warning can be avoided by setting "python.purelibdir" option.

Dependency gtk+-3.0 found: YES 3.24.30 (cached)
Run-time dependency gtksourceview-4 found: YES 4.8.2
Run-time dependency libpeas-gtk-1.0 found: YES 1.30.0
Run-time dependency gobject-introspection-1.0 found: YES 1.70.0
Configuring config.h using configuration

data/meson.build:6:0: ERROR: Function does not take positional arguments. ←(エラー1 表示)

A full log can be found at /home/ubn/ダウンロード/gnome/gedit-master/builddir/meson-logs/meson-log.txt

→「Meson 0.61.1 」にバージョンアップしてからエラーしました:

-

警告1:

meson/issues #9300

run_command のチェックは、デフォルトでfalse からTrue に変更されました。 チェックでTrue が指定され、コマンドが失敗した場合、meson はエラーになります。

いくつかのリリースでチェック引数が設定されていない場合は警告します。

-

警告2:

警告:MesonによってインストールされたPythonファイルは、Pythonインタープリターによって検出されない場合があります。 この警告は、「python.platlibdir」オプションを設定することで回避できます。

-

platlibdir : サイト固有、プラットフォーム固有のファイルのディレクトリ(0.60.0以降)

-

警告3:

警告:MesonによってインストールされたPythonファイルは、Pythonインタープリターによって検出されない場合があります。 この警告は、「python.purelibdir」オプションを設定することで回避できます。

-

purelibdir : サイト固有、非プラットフォーム固有のファイルのディレクトリ(0.60.0以降)

-

エラー1:
data/meson.build:6:0: ERROR: Function does not take positional arguments.

確認:

$ cat ~/ダウンロード/gnome/gedit-master/data/meson.build
subdir('icons')

install_man('gedit.1')

appdata = 'org.gnome.gedit.appdata.xml'
appdata_file = i18n.merge_file(                 ←(ここでエラーして停止)
  appdata,
  input: appdata + '.in',
  output: appdata,
  po_dir: '../po/',
  install: true,
  install_dir: get_option('datadir') / 'metainfo'
)
:

-

Mesonは、近年、多くの改善された型チェックを追加しました

→これにより、以前は黙って無視されていた多くのことがエラーになるようになりました。単に、エラーする meson.build ファイルにはバグがある、だけのことですが、Python はライブラリを複数のアプリが利用するシステムなので、今となっては、その影響は大きいです。(だから、ある期間警告表示している)

-

i18n: merge_file() deprecate positional arguments #9445

抜粋:

今回のエラーの原因となる関数呼び出しは、位置引数を使用して呼び出される「i18n.merge_file」関数です。 これにより、msgfmt を使用して翻訳がテキストファイルにマージされます。

0.60 より前では、merge_file() に位置引数を渡した場合、型チェックされていなかったため、 完全に無視されて、エラーは発生しませんでした。

0.60.1 にて、非推奨の警告を表示するようになりました。ソースのマスターで削除しておく必要があります。 ただし、0.61.0 で再びハードエラーになるため、当面の間、その動作に依存するすべてのGNOMEプロジェクトを修正してください。

-

参考:

i18n.merge_file() 使用法

-

これにより、msgfmt を使用して翻訳がテキストファイルにマージされます。 通常のキーワードについては、custom_tgt を参照してください。

さらに、次のキーワードを受け入れます:

    data_dirs: (0.41.0 で追加)そのファイルのディレクトリのリスト(i18n.gettext() も参照)
    po_dir: 現在のディレクトリを基準にした翻訳を含むディレクトリ
    type: ファイルのタイプ。有効なオプションは「xml」(デフォルト)と「desktop」です。
    args: (0.51.0 で追加)msgfmt に渡す追加の引数のリスト    ←(たぶん、これが問題)

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ---

5. バージョン管理ができるように、pip でmeson をインストールし直し:

-

1). apt で「meson」と「ninja」を削除

$ apt list meson ninja-build
:
meson/jammy,jammy,now 0.61.1-1 all [インストール済み]
ninja-build/jammy,now 1.10.1-1 amd64 [インストール済み、自動]

-

削除:

$ sudo apt remove meson ninja-build
:
以下のパッケージは「削除」されます:
  meson ninja-build
$ sudo apt autoremove
:
以下のパッケージは「削除」されます:
  libcbor0.6 python-pip-whl

-

$ whereis pip
pip: /usr/bin/pip /usr/share/man/man1/pip.1.gz
$ apt list python-pip
:
python-pip/jammy,jammy 20.3.4+dfsg-3 all

$ apt list python3-pip
:
python3-pip/jammy,jammy,now 21.3.1+dfsg-3 all [インストール済み]
$ python3 -m pip list

-

$ python3 -m pip list | grep pip
pip                    21.3.1

$ pip3 list | grep pip
pip                    21.3.1

-

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/home/ubn/.local/bin
$ ls /home/ubn/.local/bin
ls: '/home/ubn/.local/bin' にアクセスできません: そのようなファイルやディレクトリはありません

-

2). インストール可能な「meson」のバージョン番号を調べます:

$ pip3 install meson==

Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement meson== (from versions: 
0.29.0.dev1, 0.29.0.dev2, 0.29.0.dev3, 0.29.0, 0.30.0, 0.31.0, 0.32.0, 0.33.0, 0.34.0, 0.35.0, 
0.35.1, 0.36.0, 0.37.0, 0.37.1, 0.38.0, 0.38.1, 0.39.0, 0.39.1, 0.40.0, 0.40.1, 0.41.0, 0.41.1, 
0.41.2, 0.42.0, 0.42.1, 0.43.0, 0.44.0, 0.44.1, 0.45.0, 0.45.1, 0.46.0, 0.46.1, 0.47.0, 0.47.1, 
0.47.2, 0.48.0, 0.48.1, 0.48.2, 0.49.0, 0.49.1, 0.49.2, 0.50.0, 0.50.1, 0.51.0, 0.51.1, 0.51.2, 
0.52.0, 0.52.1, 0.53.0, 0.53.1, 0.53.2, 0.54.0, 0.54.1, 0.54.2, 0.54.3, 0.55.0, 0.55.1, 0.55.2, 
0.55.3, 0.56.0rc1, 0.56.0rc2, 0.56.0, 0.56.1, 0.56.2, 0.57.0rc1, 0.57.0, 0.57.1, 0.57.2, 
0.58.0rc1, 0.58.0, 0.58.1, 0.58.2, 0.59.0rc1, 0.59.0rc2, 0.59.0, 0.59.1, 0.59.2, 0.59.3, 0.59.4, 
0.60.0rc1, 0.60.0rc2, 0.60.0, 0.60.1, 0.60.2, 0.60.3, 0.61.0rc1, 0.61.0, 0.61.1)
ERROR: No matching distribution found for meson==

→バージョン番号を指定しないで、わざとエラーメッセージを表示させます。

ビルドに成功した「meson 0.60.3」があることを確認

-

和訳: 通常のサイトパッケージは書き込み可能ではないため、デフォルトで「ユーザーインストール」になります

→「--user」指定しなくても「ユーザーインストール」になるようです。

-

3). インストール可能な「ninja」のバージョン番号を調べます:

$ pip3 install ninja==

Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement ninja== (from versions: 
1.5.3, 1.7.2, 1.7.2.post1, 1.7.2.post2, 1.8.2, 1.8.2.post1, 1.8.2.post2, 1.9.0, 1.9.0.post1, 
1.10.0, 1.10.0.post1, 1.10.0.post2, 1.10.0.post3, 1.10.2, 1.10.2.1, 1.10.2.2, 1.10.2.3)
ERROR: No matching distribution found for ninja==

-

4). 参考: 「ユーザインストール」指定でのインストール先を確認:

$ python3 -m site --user-base
/home/ubn/.local

→ユーザの「ベースバイナリディレクトリ」は「~/.local」です。

-

5). 「meson」を「ユーザインストール」指定でインストール:

$ python3 -m pip install --user meson
Collecting meson
  Downloading meson-0.61.1-py3-none-any.whl (850 kB)
     |████████████████████████████████| 850 kB 1.8 MB/s            
Installing collected packages: meson
Successfully installed meson-0.61.1

→最新版がインストールされます。

-

6). バージョンの指定を忘れたので、一旦、削除:

$ pip3 uninstall meson
Found existing installation: meson 0.61.1
Uninstalling meson-0.61.1:
  Would remove:
    /home/ubn/.local/bin/meson
    /home/ubn/.local/lib/python3.9/site-packages/meson-0.61.1.dist-info/*
    /home/ubn/.local/lib/python3.9/site-packages/mesonbuild/*
    /home/ubn/.local/share/man/man1/meson.1
    /home/ubn/.local/share/polkit-1/actions/com.mesonbuild.install.policy
Proceed (Y/n)? 
  Successfully uninstalled meson-0.61.1

→「~/local/」にインストールされていました。 なので、管理者権限は必要ありません。

-

7). 「meson」を「ユーザインストール」、およびバージョンを指定でインストール:

$ python3 -m pip install --user meson==0.60.3

Collecting meson==0.60.3
  Using cached meson-0.60.3-py3-none-any.whl (838 kB)
Installing collected packages: meson
Successfully installed meson-0.60.3

-

8). 「ninja」を「ユーザインストール」指定でインストール:

$ python3 -m pip install --user ninja

Collecting ninja
  Using cached ninja-1.10.2.3-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl (108 kB)
Installing collected packages: ninja
Successfully installed ninja-1.10.2.3

-

9). 認識させるため、端末を再起動してから、確認:

$ ls -1 ~/.local/bin
meson
ninja

-

$ whereis meson
meson: /home/ubn/.local/bin/meson

$ whereis ninja
ninja: /home/ubn/.local/bin/ninja

-

$ meson --version
0.60.3

$ ninja --version
1.10.2.git.kitware.jobserver-1

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- ----

6. 再ビルド:

-

1). ダウンロードしたソースを削除後、展開:

「~/ダウンロード/gnome/」フォルダに移動

展開した「~/ダウンロード/gnome/gedit-master/」を削除

ダウンロードした「gedit-main.tar.gz」を右クリック→「ここで展開」

-

「gedit-master」フォルダが生成:
$ cd ~/ダウンロード/gnome/gedit-master/

-

2). サブモジュールをダウンロードして追加:

-

$ cd ~/ダウンロード/gnome/gedit-master/subprojects/
$ git clone https://gitlab.gnome.org/GNOME/libgd.git

-

3). meson を古い「0.60.3」でビルド:(4回目)

$ cd ~/ダウンロード/gnome/gedit-master/
$ meson setup builddir
:
The Meson build system
Version: 0.60.3
Source dir: /home/ubn/ダウンロード/gnome/gedit-master
Build dir: /home/ubn/ダウンロード/gnome/gedit-master/builddir
Build type: native build
Project name: gedit
Project version: 41.alpha
C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0")
C linker for the host machine: cc ld.bfd 2.37.50.20220106
Host machine cpu family: x86_64
Host machine cpu: x86_64

Executing subproject libgd 

libgd| Project name: libgd
libgd| Project version: undefined
libgd| C compiler for the host machine: cc (gcc 11.2.0 "cc (Ubuntu 11.2.0-14ubuntu1) 11.2.0")
libgd| C linker for the host machine: cc ld.bfd 2.37.50.20220106
libgd| Found pkg-config: /usr/bin/pkg-config (0.29.2)
libgd| Run-time dependency gtk+-3.0 found: YES 3.24.30
libgd| Library m found: YES
libgd| Build targets in project: 3
libgd| Subproject libgd finished.

Run-time dependency gio-2.0 found: YES 2.71.0
Run-time dependency libxml-2.0 found: YES 2.9.12
Run-time dependency gspell-1 found: YES 1.9.1
Program python3 found: YES (/usr/bin/python3)

Dependency gtk+-3.0 found: YES 3.24.30 (cached)
Run-time dependency gtksourceview-4 found: YES 4.8.2
Run-time dependency libpeas-gtk-1.0 found: YES 1.30.0
Run-time dependency gobject-introspection-1.0 found: YES 1.70.0
Configuring config.h using configuration

DEPRECATION: i18n.merge_file does not take any positional arguments. 
This will become a hard error in the next Meson release.
                  →(赤い、非推奨メッセージ)

Program appstream-util found: YES (/usr/bin/appstream-util)

DEPRECATION: i18n.merge_file does not take any positional arguments. 
This will become a hard error in the next Meson release.
                  →(赤い、非推奨メッセージ)

Program desktop-file-validate found: YES (/usr/bin/desktop-file-validate)
Configuring org.gnome.gedit.gschema.xml using configuration
Program xmllint found: YES (/usr/bin/xmllint)
Configuring org.gnome.gedit.service using configuration
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Configuring gedit.gresource.xml using configuration
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached)
Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached)
Program g-ir-scanner found: YES (/usr/bin/g-ir-scanner)
Dependency gobject-introspection-1.0 found: YES 1.70.0 (cached)
Program g-ir-compiler found: YES (/usr/bin/g-ir-compiler)
Program vapigen found: YES (/usr/bin/vapigen)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program cat found: YES (/usr/bin/cat)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program glib-compile-resources found: YES (/usr/bin/glib-compile-resources)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program gedit-tool-merge.pl found: YES (/home/ubn/ダウンロード/gnome/gedit-master/plugins/externaltools/scripts/gedit-tool-merge.pl)
Program build-aux/meson/post_install.py found: YES (/home/ubn/ダウンロード/gnome/gedit-master/build-aux/meson/post_install.py)
Build targets in project: 174

gedit 41.alpha

    API version         : 41.alpha
    Prefix              : /usr/local
    API documentation   : False
    User documentation  : True
    Require all tests   : False
    Spell checker plugin: true

  Subprojects
    libgd               : YES

Found ninja-1.10.2.git.kitware.jobserver-1 at /home/ubn/.local/bin/ninja

→ビルドは成功しました。

-

よく見ると、同じ「非推奨」(赤いDEPRECATION: )メッセージが 2つ表示されていました:
DEPRECATION: i18n.merge_file does not take any positional arguments. 
This will become a hard error in the next Meson release. 

和訳:

非推奨:i18n.merge_fileは位置引数を取りません。 これは、次のMeson リリースでハードエラーになります。

検索にて、下記がヒット

-

0.60 fails to build GNOME components #9441

-

i18n: merge_file() deprecate positional arguments #9445

-

meson 0.61.1 の場合は「i18n: merge_file()」関数の型チェックでエラーして停止しますが、meson 0.60.3 では警告だけで済んでいます。

-

-

4). ninja でビルド:

$ cd ~/ダウンロード/gnome/gedit-master/
$ meson compile -C builddir
:
[265/265] Generating plugins/snippets/snippets.plugin with a custom command

→うまく行きました。

-

5). ninja でインストール:

$ cd ~/ダウンロード/gnome/gedit-master/

$ meson install -C builddir
ninja: Entering directory `/home/ubn/ダウンロード/gnome/gedit-master/builddir'
ninja: no work to do.
Installing subdir /home/ubn/ダウンロード/gnome/gedit-master/plugins/quickopen/quickopen to /usr/local/lib/x86_64-linux-gnu/gedit/plugins/quickopen
Installation failed due to insufficient permissions.
Attempting to use polkit to gain elevated privileges...
Traceback (most recent call last):
  File "/home/ubn/.local/bin/meson", line 5, in <module>
    from mesonbuild.mesonmain import main
ModuleNotFoundError: No module named 'mesonbuild'

→「ninja: no work to do.」は、「ninja: 何もする仕事はありません。」

実行ファイルのシステムへの配置はできませんが、「builddir」ディレクトリからの アプリの起動はできるはずです。

-

6). 実行ファイルの確認:

$ cd ~/ダウンロード/gnome/gedit-master/

$ cd builddir/gedit/
$  ls
Gedit-3.0.gir               gedit-enum-types-private.h  gedit.vapi                 resources
Gedit-3.0.typelib           gedit-enum-types.c          libgedit-41.alpha.so
gedit                       gedit-enum-types.h          libgedit-41.alpha.so.p
gedit-enum-types-private.c  gedit.p                     org.gnome.gedit.enums.xml

-

7). 「gedit」の起動:

$ cd ~/ダウンロード/gnome/gedit-master/builddir/gedit/
$ ./gedit

→「gedit」が起動されました。

-

-

ヘルプにてバージョンを確認:

→「41.alpha」表示

-

$ apt list gedit
:
gedit/jammy 40.1-3 amd64

→公式リポジトリのバージョンは「40.1-3」

-

gedit のプラグインを確認:
$ apt search gedit-
:
gedit-common/jammy,jammy,now 40.1-3 all [インストール済み、自動]
  GNOME デスクトップ環境の公式テキストエディタ (サポートファイル)

gedit-dev/jammy 40.1-3 amd64
  official text editor of the GNOME desktop environment (development files)

gedit-latex-plugin/jammy,jammy 3.20.0-2 all
  gedit plugin for composing and compiling LaTeX documents

gedit-plugin-bookmarks/jammy 40.1-2 amd64
  Bookmarks plugin for gedit

gedit-plugin-bracket-completion/jammy 40.1-2 amd64
  Bracket Completion plugin for gedit

gedit-plugin-character-map/jammy 40.1-2 amd64
  Character Map plugin for gedit

gedit-plugin-code-comment/jammy 40.1-2 amd64
  Code Comment plugin for gedit

gedit-plugin-color-picker/jammy 40.1-2 amd64
  Color Picker plugin for gedit

gedit-plugin-color-schemer/jammy 40.1-2 amd64
  Color Schemer plugin for gedit

gedit-plugin-commander/jammy 40.1-2 amd64
  Commander plugin for gedit

gedit-plugin-draw-spaces/jammy 40.1-2 amd64
  Draw Spaces plugin for gedit

gedit-plugin-find-in-files/jammy 40.1-2 amd64
  Find in Files plugin for gedit

gedit-plugin-git/jammy 40.1-2 amd64
  Git plugin for gedit

gedit-plugin-join-lines/jammy 40.1-2 amd64
  Join/Split Lines plugin for gedit

gedit-plugin-multi-edit/jammy 40.1-2 amd64
  Multi Edit plugin for gedit

gedit-plugin-session-saver/jammy 40.1-2 amd64
  Session Saver plugin for gedit

gedit-plugin-smart-spaces/jammy 40.1-2 amd64
  Smart Spaces plugin for gedit

gedit-plugin-synctex/jammy 40.1-2 amd64
  SyncTex plugin for gedit

gedit-plugin-terminal/jammy 40.1-2 amd64
  Terminal plugin for gedit

gedit-plugin-text-size/jammy 40.1-2 amd64
  Text Size plugin for gedit

gedit-plugin-translate/jammy 40.1-2 amd64
  Translate plugin for gedit

gedit-plugin-word-completion/jammy 40.1-2 amd64
  Word Completion plugin for gedit

gedit-plugins/jammy,jammy 40.1-2 all
  set of plugins for gedit

gedit-plugins-common/jammy 40.1-2 amd64
  common files for gedit-plugins

gedit-source-code-browser-plugin/jammy,jammy 3.0.3-6 all
  source code class and function browser plugin for Gedit

→gedit の利点は多くのプラグインを使えることです。逆に、ひとつの修正で、すべてのプラグインが正常に動くかの確認が必要なので、メンテを続けて行くのは大変です。

-

-


--- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - --- - ----- -----

7. 参考: Python とpip についての復習:

-

参考:

Pythonライブラリのインストール - pipの使い方

-

Python には、「システム、ファイル IO、関数、データベース、ウェブ」等の豊富な標準ライブラリが備わっています。もし、標準ライブラリにない場合には、外部(サードパーティー)から探して利用するしくみがあります。

Python のプログラムの作成では、機能は自分で作らなくても、ライブラリを活用することで省力化できます。

-

PyPIPython Package Index)

-

PyPI は、プログラミング言語Python」の、外部(サードパーティー)のソフトウェアのリポジトリ(web サービス)で、コミュニティが運営しています。

オープンソースPython パッケージの多くは、PyPI に置かれており、Python パッケージの包括的なカタログと言えます。よく利用されているライブラリは、pip を用いてPyPI から簡単にインストールできます。

-

pip でインストールできるPython パッケージとバージョンを検索:

PyPI – the Python Package Index

-

pip(Pip Installs Packages)

パッケージ管理ツールの「pip」を使い、「PyPI」からパッケージやその依存パッケージをダウンロードしてインストールできます。

-

pip を使うと、コマンドで簡単にPython のパッケージやライブラリをインストールできます。

-

pip では、ファイルに必要なパッケージのリストとそのバージョンを記録しておけば、復元できる機能があります。

下記のコマンドだけで、他のPC や仮想環境に同じPython の環境を準備(インストール)できます:

$ pip install -r requirements.txt

→詳細は後で記述

-

ちなみに、WindowsPython をデフォルトでインストールした状態では、PATH が通っていないため、 pip をそのまま実行することができません。以下のように「py -m」を付けると実行できます。

-

1). 最新バージョンのPython にライブラリをインストールしたい場合:

-

Windows の場合:
C:¥> py -m pip install パッケージ名

-

Linux の場合:
$ python3 -m pip install パッケージ名

もしくは、

$ pip3 install パッケージ名

-

2). 古いバージョンのPython にライブラリをインストールしたい場合:

$ python3 -3.7 -m pip install パッケージ名

複数のPython がある場合は、違うバージョンにインストールしたライブラリは利用できません。注意。

-

3). 最新版にパッケージをアップグレードする場合:

> pip install -U パッケージ名

→ライブラリ名の前に --upgrade または -U を付加します。

→このオプションを付けても新規インストールは実行されますが、ライブラリの依存関係に注意

https://gammasoft.jp/python/python-library-install/#requirements

-

4). バージョンを指定してインストール:

ライブラリ名の後に「==」でバージョン番号を付加します

> pip install パッケージ名==1.25

以前のバージョンを指定すれば、バージョンを戻すこと(ダウングレード)も可能です。

-

5). インストール可能なライブラリのバージョン番号を調べる:

> pip install パッケージ名==

バージョン番号を指定しないで、わざとエラーメッセージを表示させます。

-

6). インストール済みのライブラリを確認:

> pip list

-

7). ライブラリのアンインストール:

> pip uninstall パッケージ名

-

8). インストール済みのライブラリを最新版にアップグレード

> pip install --upgrade パッケージ名

または、

> pip install -U パッケージ名

指定したライブラリがインストールされていない場合は、通常のインストールが実行されます。

-

9). インストール済みのライブラリが最新版かチェック

> pip list --outdated

または、

> pip list -o

最新でないライブラリが表示されます。sdist とwheel は提供されているフォーマット名です。

-

10). バージョンの控えを記録しておく:

ライブラリのなかには、他のライブラリを利用しているものがあります。そのため、アップグレードによりライブラリ間の依存関係が損なわれると動かなくなることがあります(アップグレードの対応に間に合っていない場合など)。

正常に動作していた時のバージョンを控えておきます。

pip freeze で、現在インストールされているライブラリとそのバージョンが表示されます。

以下のようにテキストファイル(requirements.txt)に記録しておきます。

> pip freeze > requirements.txt

内容:

Flask==0.12.2
GDAL==1.11.5
Jinja2==2.10
numpy==1.13.3
:

-

11). バージョンの控えからの復元:

バージョンの控えをとっておけば、もしも動かなくなっても、控えのテキストファイルを指定してインストールを実行すれば簡単に復元できます。

> pip install -r requirements.txt

-

12). 依存するライブラリを調べる:

例: requests というWebから情報を取得するのに便利なライブラリの依存を調べます

> pip show requests

Name: requests
Version: 2.18.4
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: c:\users\ichiro\appdata\local\programs\python\python36-32\lib\site-packages
Requires: chardet, urllib3, certifi, idna   ←(依存パッケージ)

-

13). 依存関係の詳細を調べる:

-

pipdeptree をインストールしておきます:
> pip install pipdeptree

-

依存の詳細を確認:
> pipdeptree -p requests
requests==2.18.4
  - certifi [required: >=2017.4.17, installed: 2017.11.5]
  - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4]
  - idna [required: <2.7,>=2.5, installed: 2.6]
  - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]

-

14). pip 自体のアップグレード

-

警告メッセージ:
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

-

警告メッセージの表示があったら、pip 自体をアップグレード:
> pip install --upgrade pip

または

> pip install -U pip

-

15). pip 自体のアップグレードでエラーした場合:

> pip install --force-reinstall --upgrade pip

または

> pip install --force-reinstall -U pip

-

16). ヘルプの表示

> pip install -h

-

-


まとめ

個人的に「Meson」のシステムをVirtualBox に入れて、アプリをソースからビルドできる環境にしてみました。

-

今回、GNOME の標準エディタの「gedit」を「Meson」でビルドしてみました。 最終的に、Haiku に「gedit」を移植できないかトライするためです。

-

Haiku では、Python やpip、meson やninja の実績がわかりません。 システムのパッケージ管理のしかたからして、インタプリタ的な開発には向いていないかもと、想像されます。

また、「gedit」のビルドでは、GitHub でなくGitLab で、それも 2段階の「git clone」が必要でした。人手の介入なく、1回の tar.gz でダウンロードできないと今のHaiku の移植のシステムだと(自分のスキルだと)自動的なビルド(つまり、移植)は難しそう。人手の介入で、個人的なビルドなら何とかできそうな気はします。

-

気づいたのは、新しいバージョンの「Meson」になるほど、ビルドが難しくなっていること。 それは、今まで無視していたエラーチェックが行われるように修正されて来ているからです。 エラーが発生するかは「meson.build」ファイルの作り方しだいです。

-

誤った使い方をチェックするのは当然ですが、今まで使えていたライブラリや、その使い方ができなくなるのは、(ライブラリを使い回すPython では特に)影響が大きいです。

そして、具体的でなくて、わかりづらい警告メッセージも難しくしています。表示されないよりはマシですが、開発者たちの会話を読み込まないとわからない、Issues の番号やコミットの番号を表示されても…。それは違うアプリのことについて書かれていたりするわけで、あっちやこっちを確認しながら、自分に当てはめる必要があります。

-

というわけで、ライブラリのバージョン管理ができる「pip」が役に立ったということでした。 以前使えていた頃のバージョンの「Meson」に戻せます。

-

-


-

-

    目次

-

「投稿の先頭 へ」

-

-


-

「この目次 の先頭へ」

「本編の目次 に戻る」

-

-