Linux あれこれ

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

「Void Linux」の「xbps-src」にて、「geany」をパッケージ化〈H179-6〉

登録日: 2025-12-03 更新日: 2025-12-08

今回は、前回の「Void Linux」の「xbps-src」にて、「featherpad、四川省」アプリを移植2〈H179-5〉の続きで、

テキストエディタとしても使える IDE の「geany」アプリにて、ソースファイルを修正して「パッケージ化」してみました:

-

ちなみに、アプリの移植や、ソースファイルに手を加えたパッケージは、管理しやすいように、
パッケージ名の先頭に「@」を付けて、区別できるようにしています:

なお、ソースの修正は自己責任です。

-

その備忘録です。

-

-

使用したPC は、新しく購入した ミニPC「MINISFORUM NAB5」です。
プロセッサは「Core i5-12450H」で、メモリ 16GB、SSD 512GB です。

-

(注)リンクを戻るときはブラウザの左上の「←」をクリック
Android スマホであれば「ホーム」ボタン隣の「<」をタップ

-

-


目次

-

前回の作業:

VirtualBox 7.2.2」に、「Void Linux」(Xfce) をインストール〈H179-4

「Void Linux」の「xbps-src」にて、「featherpad、四川省」アプリを移植2〈H179-5

-

今回の作業:

  1.  作業前に、「Void Linux」の仮想マシンのクローンを作成:

  2. 「xbps-src」」にて、作成した「テンプレート」フォルダを退避:

  3. 「xbps-src」のビルド環境を更新:

  4. 「Geany」アプリを、ソースに手を加えずに「パッケージ化」:

  5. 「Geany」(@geany) アプリを、日付設定メニューを修正して「パッケージ化」:

  6. 「Geany」アプリの設定:

-

参考になりそうな作業:

  1. 「Geany」アプリで、「パッケージ化」した履歴:

  2. 「Geany」(@geany) アプリで、ソースを修正して「パッケージ化」にトライした履歴:

  3. 「xbps-src」のビルド環境をセットアップする場合:

  4. 「xbps-src」のビルド環境を更新する場合:

  5.  アプリを「./configure」でビルドしてインストールする場合:

  6. 「xtools」ツールのインストールと使い方:

  7. 「xbps-src」の「ヘルプ」を表示:

 →「@featherpad」をインストールしてヘルプ表示を使うと便利です:

-

「まとめ へ」

「目次詳細 へ」

-

-


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

ホストOS の「Xubuntu 24.04.3 LTS」を立ち上げ:

-

VirtualBox 7.2.2」を起動:

-

「Void-Linux」(Xfce) を起動:

〈H179-4〉の「項番 11.」のやり方で、色々とカスタマイズ:

-

追記:

前回の〈H179-4〉の手順で、「Void Linux」に、手動で「VirtualBox Guest Additions」をインストール して、すべての機能が有効になりました:

-

-


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

VirtualBox」について:

-

VirtualBox 」は、Oracle(オラクル)社が開発している「仮想マシン」を構築するためのソフトウェアです。

-

-

-


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

Xubuntu」について:

-

Ubuntu の公式フレーバー(性格の違う兄弟?)です

Xubuntu」(ズブントゥ)は、 Ubuntu ベースの、軽量な「Xfce」デスクトップ環境です。

Ubuntu ベースにつき、多くのノウハウ、情報等があること、および問題の少ない「x11」で動いていることが強みです。

-

個人的には使い慣れた環境です。
カスタマイズが色々とできるので、自分にとって使い勝手の良い環境を作れるのが利点です。

-

-


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

「Void Linux」について:

-


1). 公式サイト:

The Void (Linux) distribution

-

英語のみのサイトです:

-

「Void Linux」は、独立してボランティアのみで開発された、ローリングリリース安定版で提供されている、汎用 Linux オペレーティングシステムです:

-

抜粋:

Void の「パッケージマネージャ」と「ビルドシステム」はゼロから書かれています:

ソフトウェアは「バイナリパッケージ」で提供されるか、「XBPS ソースパッケージコレクション」の助けを借りて「ソース」から直接ビルドされます。

-

このディストリビューションを使う利点のひとつは、優れた「パッケージ管理」です:

 →ソースからのビルドを楽しめます:

-


2). runit:

runit を「init システム」および「サービススーパーバイザー」として使用しています。

シンプルさを好む開発者も多いみたい:

-

ただし、ソースからビルドする場合に、「systemd」に依存してるアプリは、うまくビルドできなかったり、ビルドできても動かないかも:

-


3). C ライブラリの多様性( 2つの選択肢):

Void Linux は、「musl」GNU libc」の両方の実装をサポートします。

-

→それぞれの利点があるので、それぞれの Live イメージが提供されています:

-

「musl」だと、「GNU libc」よりもリポジトリに登録されてるアプリが(同じか)少ない? 可能性があります:

また、ソースからビルドするにしても、動くかはビルドしてみないとわかりません:

ただし、「xbps-src」のsrcpkgs ディレクトリには、「musl」に対応させたパッケージの「テンプレート」が置かれているので、移植するときは参考になります:

もし動けば、コンパクトで、速くなる?かも:

-

両方の「仮想マシン」を作成して、試してみるのもアリ:

-


4). XBPS:

XBPS(X Binary Package System)パッケージマネージャ:

-

xbps-0.60.6_1 (2025年 11月 17日 現在)

XBPS は「パッケージマネージャ」で、二条項 BSD ライセンスでゼロから書かれています。

→提供と改善がしやすいように、開発途中で、最もゆるいライセンス形式に変更されたようです:

-


5). xbps-src:

xbps-src は「xbps パッケージビルダー」(ビルドシステム)で、二条項 BSD ライセンスでゼロから書かれています。

-

参考:

-

(1). Void Linux は、XBPS パッケージマネージャのテストディストリビューションとして、
NetBSD の開発者である Juan Romero Pardines 氏によって2008年に作成されたみたい。

-

(2). 「xbps-src」に影響を与えた?かもしれない、「pkgsrc」について:

「pkgsrc」は FreeBSDports システムから派生したもので、 はじめは NetBSD 専用として開発されていました。その後、 多くののプラットフォーム(Linux を含む)に対応しています。

参考:

Chapter 1. pkgsrc とは何か

-


6). 二条項 BSD ライセンス:

OS や付属するアプリの配布や改善がしやすいように、「旧 BSD ライセンス(四条項 BSD ライセンス)」から「第三条」、「第四条」を削除して、制限をゆるくしたライセンスが採用されています:

参考:

BSD 2-Clause License

-

-


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

「xbps-src」について:

-

The XBPS source packages collection

GitHubvoid-linux/void-packages」より抜粋:

-

このリポジトリには、Void Linux ディストリビューション用のバイナリ パッケージをビルドするための
「XBPS ソース パッケージ コレクション」が含まれています。

-

付属の「xbps-src」スクリプトは、ソースをフェッチ(読込)してビルドし、そのファイルを仮の destdir にインストールを行い、パッケージ化して、

「xbps-install」コマンドでインストール、および「xbps-query」コマンドでクエリ(情報の問合せが)できる「XBPS バイナリ パッケージ」を生成します。

:
貢献方法の概要は、「貢献」を参照:
ソース パッケージの作成方法の詳細は、「マニュアル」を参照:

-


「xbps-src」サイトの目次:

「xbps-src」についての、英文の説明です:

-

(1). 要件:

 Requirements

(2). クイックスタート:

 Quick start

(3). chroot メソッド:

 chroot methods

(4). ブートストラップ パッケージのインストール:

 Install the bootstrap packages

(5). 構成:

 Configuration

(6). ディレクトリ階層:

 Directory hierarchy

(7). パッケージのビルド:

 Building packages

(8). パッケージのビルドオプション:

 Package build options

(9). ローカル リポジトリの共有と署名:

 Sharing and signing your local repositories

(10). 既存のローカル パッケージの再ビルドと上書き:

 Rebuilding and overwriting existing local packages

(11). 分散コンパイル用に distcc を有効にします:

 Enabling distcc for distributed compilation

(12). Distfile ミラー:

 Distfiles mirrors

(13). ターゲット アーキテクチャ用のパッケージのクロスコンパイル:

 Cross compiling packages for a target architecture

(14). 海外の Linux ディストリビューションで xbps-src を使う:

 Using xbps-src in a foreign Linux distribution

(15). masterdir の再作成:

 Remaking the masterdir

(16). masterdir を最新の状態に保ちます:

 Keeping your masterdir uptodate

(17). x86_64 で 32 ビット パッケージをビルド:

 Building 32bit packages on x86_64

(18). musl C ライブラリ用のパッケージをネイティブにビルド:

 Building packages natively for the musl C library

(19). void 基本システムをゼロからビルド:

 Building void base-system from scratch

-

-


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

-

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

ホストOS : 「Xubuntu 24.04.3 LTS」

2025-12-02 現在

-

カーネル:
$ uname -r
:
6.8.0-88-generic

→LTS版は安定志向なので、更新の回数は少なめです:

-

リリース:
$ cat /etc/lsb-release
:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.3 LTS"

→LTS 版の更新(ポイントリリース)は、6ヶ月前後で、
 今は「24.04.3」にアップされています

-

x11」と「Wayland」のどちらで動作してるか確認:
$ echo $XDG_SESSION_TYPE
:
x11

→「Wayland」ではなく、「x11」で動作しています。

-

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

ゲストOS : 「Void Linux

2025-12-02 現在

-

カーネル:
$ uname -r
6.12.59_1

Ubuntu よりも進んでいます:

-

リリース:
$ cat /etc/os-release
:
NAME="Void"
ID="void"
PRETTY_NAME="Void Linux"
HOME_URL="https://voidlinux.org/"
DOCUMENTATION_URL="https://docs.voidlinux.org/"
LOGO="void-logo"
ANSI_COLOR="0;38;2;71;128;97"

DISTRIB_ID="void"

→ローリングリリースです:

-

x11」と「Wayland」のどちらで動作してるか確認:
$ echo $XDG_SESSION_TYPE
x11

→「Wayland」ではなく、「x11」で動作しています。

-

-


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

以前に投稿した〈H179-4〉で作成した「仮想マシン」にて、作業:

-

使用した「仮想マシン」について:

「VirtualBox 7.2.2」に、「Void Linux」(Xfce) をインストール〈H179-4〉

仮想マシン」にて、手動で base イメージの「iso イメージ」から「Void Linux」をインストール後、「Xfce」デスクトップ環境を追加しました:

→ちなみに、「リアルタイムの解像度調整」と「クリップボードの共有」機能が有効です:

-

-


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

1. 任意: 作業前に、「Void Linux」の仮想マシンのクローンを作成:

-

失敗してもすぐに戻せるように、「クローン」(仮想マシンのコピー)を作成:

-

作成に手間はかからないし、要らないときはすぐに削除できます。

(個人的には)ブログの投稿前に、記述したことの最終確認にも使うので無駄ではありません:

-


1). 「仮想マシン」のクローンを作成:

-

(1). 「仮想マシン」の電源オフ:

-

(2). Virtualbox マネージャにて操作:

-

(3). 「仮想マシン」の「Void-Linux3」を右クリック→「クローン」

-

名前:

「Void-Linux3 の原本1」

→「完了」

-

問題点: 「VirtualBox 7.2.2」の「VirtualBox マネージャ」では日本語入力できません:

→日本語を入力したかったら、エディタで入力後、貼り付けます:

-

コピーが終わるまで待ちます:

-

(4). 「説明」をクリックして入力:

説明:

ハードディスク「Void-Linux3.vmdk」を接続:  
2025-11-06 現在の退避

→「OK」

-

問題点: 「VirtualBox 7.2.2」の「VirtualBox マネージャ」では日本語入力できません:

→日本語を入力したかったら、エディタで入力後、貼り付けます:

-


2). 「Void-Linux3 の原本1」はさわらずに、「Void-Linux3」を選んで、

→「起動」をクリック:

-


3). ログイン画面が表示:

-


4). デスクトップ画面が表示:

-


5). Ctrl+Alt+T で「端末」を起動:

もしくは、

Windows + Enter で「端末」を起動:

-

-


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

2. 「xbps-src」にて、個人で作成した「テンプレート」フォルダを退避:

-

個人でアプリを移植して(パッケージ化できる)「テンプレート」を、フォルダごと退避:

-


1). 確認:

$ cd ~/git/void-packages/
$ ls srcpkgs/@*
:
srcpkgs/@featherpad:
patches  template

srcpkgs/@kshisen:
patches  template

-


2). 保存先を作成:

$ mkdir -p ~/ダウンロード/srcpkgs_save/

-


3). 保存:

$ cd ~/git/void-packages/
$ sudo cp -r srcpkgs/@* ~/ダウンロード/srcpkgs_save/

-


4). 参考: 今回の作業完了後に退避して、確認:

$ tree ~/ダウンロード/srcpkgs_save/
:
/home/user/ダウンロード/srcpkgs_save/
├── @featherpad
│   ├── patches
│   │   ├── 01.help-del.patch
│   │   ├── 02.help-translation-jp-ver2.patch
│   │   └── 03.featherpad-desktop.patch
│   └── template
├── @geany
│   ├── patches
│   │   ├── 01.geany-po-ja.patch
│   │   ├── 02.geany-src-templates.h.patch
│   │   └── 03.geany-src-ui-utils.c.patch ←(Tab 含む)
│   └── template
├── @geany-devel -> @geany ←(リンク)
└── @kshisen
    ├── patches
    │   └── 01.kshisen-desktop.patch
    └── template

8 directories, 11 files

→作業完了後にセーブした内容です:

今回の作業分が増えています。リンクも保存されていることに注目:

ビルド環境の外に保存しておくと、ビルド環境を作り直すときに楽です:

-

-


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

3. 「xbps-src」のビルド環境を更新:

-

ビルド環境は日々更新されています。 セットアップしてから日が経っているので、更新:

-

個人で「アプリ」のアップデートや移植を計画している場合は、 GitHub のサイト を確認すると、 プルリクエストの承認(マージ)待ちがいっぱいあるので、すでにプルリクエストが上がっていないか確認すると二度手間になりません:

-

左上の「is:pr is:open 」のところに、「is:pr is:open qpdfview」などとアプリ名を入れて、検索します:

「0 Open」が未処理分で現在表示されており、「6 Close」をクリックすると、処理完了分が 6件表示されます:

-


1). システムを更新:

$ sudo xbps-install -Su
:
パスワード: 
[*] Updating repository `https://repo-fi.voidlinux.org/current/x86_64-repodata' ...

→システム更新なし:

-


2). 再起動:

$ sudo reboot

-


3). 「xbps-src」のローカルリポジトリをアップデート:

個人使用で、貢献(プルリクエスト)する予定がない場合:

$ cd ~/git/void-packages/
$ git pull
remote: Enumerating objects: 388, done.
remote: Counting objects: 100% (388/388), done.
remote: Compressing objects: 100% (173/173), done.
remote: Total 284 (delta 171), reused 178 (delta 88), pack-reused 0 (from 0)
Receiving objects: 100% (284/284), 37.67 KiB | 918.00 KiB/s, done.
Resolving deltas: 100% (171/171), completed with 59 local objects.
From https://github.com/void-linux/void-packages
   13016625..b5d541b8  master     -> origin/master
Updating 13016625..b5d541b8
Fast-forward
 common/xbps-src/shutils/common.sh                  |    66 +-
 srcpkgs/babashka/template                          |    14 +-
 srcpkgs/bc-java/template                           |     4 +-
 srcpkgs/bcachefs-tools/template                    |     5 +-
 srcpkgs/bluetui/template                           |    10 +-
 srcpkgs/brltty/patches/cython3.patch               |    44 -
 srcpkgs/brltty/patches/python3-bindings.patch      |    17 +-
 srcpkgs/brltty/template                            |     9 +-
 srcpkgs/cagebreak/template                         |     6 +-
 srcpkgs/chezmoi/template                           |     4 +-
 srcpkgs/clifm/patches/0001-musl-define.patch       |    32 +
 srcpkgs/clifm/template                             |     4 +-
 srcpkgs/clipman/template                           |     6 +-
 srcpkgs/cmake-language-server/template             |     4 +-
 srcpkgs/discord/template                           |     4 +-
 srcpkgs/edk2-ovmf/template                         |    71 +-
 srcpkgs/gitolite/template                          |     9 +-
 srcpkgs/graphviz/template                          |     4 +-
 srcpkgs/halloy/template                            |     4 +-
 srcpkgs/ifstate/template                           |     6 +-
 srcpkgs/imv/template                               |    12 +-
 srcpkgs/libatomic_ops/template                     |     6 +-
 srcpkgs/libfm-qt/template                          |     4 +-
 srcpkgs/libqxp/template                            |     2 +-
 srcpkgs/libutf8proc/template                       |     4 +-
 srcpkgs/libzmf/template                            |     4 +-
 srcpkgs/limine/template                            |     6 +-
 srcpkgs/linux6.13-dbg                              |     1 -
 srcpkgs/linux6.13-headers                          |     1 -
 srcpkgs/linux6.13/files/arm64-dotconfig            | 13794 ------------------
 srcpkgs/linux6.13/files/i386-dotconfig             | 11275 ---------------
 srcpkgs/linux6.13/files/mv-debug                   |     8 -
 srcpkgs/linux6.13/files/x86_64-dotconfig           | 11752 ----------------
 srcpkgs/linux6.13/patches/fix-musl-btf-ids.patch   |    15 -
 srcpkgs/linux6.13/patches/fix-musl-objtool.patch   |    14 -
 srcpkgs/linux6.13/patches/fixdep-largefile.patch   |    11 -
 srcpkgs/linux6.13/patches/x13s-camera.patch        |   105 -
 srcpkgs/linux6.13/template                         |   351 -
 srcpkgs/linux6.14-dbg                              |     1 -
 srcpkgs/linux6.14-headers                          |     1 -
 srcpkgs/linux6.14/files/arm64-dotconfig            | 13841 ------------------
 srcpkgs/linux6.14/files/i386-dotconfig             | 11288 ---------------
 srcpkgs/linux6.14/files/mv-debug                   |     8 -
 srcpkgs/linux6.14/files/x86_64-dotconfig           | 11783 ----------------
 srcpkgs/linux6.14/patches/fix-musl-btf-ids.patch   |    15 -
 srcpkgs/linux6.14/patches/fix-musl-objtool.patch   |    14 -
 srcpkgs/linux6.14/patches/fixdep-largefile.patch   |    11 -
 srcpkgs/linux6.14/patches/x13s-camera.patch        |   105 -
 srcpkgs/linux6.14/template                         |   359 -
 srcpkgs/linux6.15-dbg                              |     1 -
 srcpkgs/linux6.15-headers                          |     1 -
 srcpkgs/linux6.15/files/arm64-dotconfig            | 13903 ------------------
 srcpkgs/linux6.15/files/i386-dotconfig             | 11329 ---------------
 srcpkgs/linux6.15/files/mv-debug                   |     8 -
 srcpkgs/linux6.15/files/x86_64-dotconfig           | 11846 ----------------
 srcpkgs/linux6.15/patches/fix-musl-btf-ids.patch   |    15 -
 srcpkgs/linux6.15/patches/fix-musl-objtool.patch   |    14 -
 srcpkgs/linux6.15/patches/fixdep-largefile.patch   |    11 -
 srcpkgs/linux6.15/patches/x13s-camera.patch        |   105 -
 srcpkgs/linux6.15/template                         |   359 -
 srcpkgs/linux6.16-dbg                              |     1 -
 srcpkgs/linux6.16-headers                          |     1 -
 srcpkgs/linux6.16/files/arm64-dotconfig            | 13959 -------------------
 srcpkgs/linux6.16/files/i386-dotconfig             | 11370 ---------------
 srcpkgs/linux6.16/files/mv-debug                   |     8 -
 srcpkgs/linux6.16/files/x86_64-dotconfig           | 11898 ----------------
 srcpkgs/linux6.16/patches/fix-musl-btf-ids.patch   |    15 -
 srcpkgs/linux6.16/patches/fix-musl-objtool.patch   |    14 -
 srcpkgs/linux6.16/patches/fixdep-largefile.patch   |    11 -
 srcpkgs/linux6.16/patches/x13s-camera.patch        |   105 -
 srcpkgs/linux6.16/template                         |   359 -
 srcpkgs/lxqt-panel/template                        |     4 +-
 srcpkgs/memtest86+/template                        |    14 +-
 srcpkgs/noto-fonts-ttf/template                    |     4 +-
 srcpkgs/opam/template                              |     4 +-
 srcpkgs/pax-utils/template                         |     4 +-
 srcpkgs/qemu-user/template                         |     2 +-
 srcpkgs/qemu/patches/tcg-overflow.patch            |    19 +
 srcpkgs/qemu/template                              |     2 +-
 srcpkgs/raptor/template                            |     4 +-
 srcpkgs/redsocks/files/redsocks/run                |     4 +
 srcpkgs/redsocks/template                          |     4 +-
 srcpkgs/ruby-webrick/template                      |     4 +-
 .../sddm/patches/raise-cmake-minimum-version.patch |    22 +
 srcpkgs/sddm/template                              |     2 +-
 srcpkgs/sx/template                                |     2 +-
 srcpkgs/tailscale/template                         |     4 +-
 srcpkgs/tinymist/template                          |     4 +-
 srcpkgs/tombi/template                             |    31 +
 srcpkgs/topgrade/template                          |     4 +-
 srcpkgs/unbound/template                           |     4 +-
 srcpkgs/uv/template                                |     4 +-
 srcpkgs/vivaldi/template                           |     6 +-
 srcpkgs/waydroid/template                          |     4 +-
 srcpkgs/wine/template                              |     6 +-
 srcpkgs/xorg-server/template                       |     4 +-
 srcpkgs/yaydl/template                             |     4 +-
 srcpkgs/yq-go/template                             |     4 +-
 srcpkgs/zoom/template                              |     4 +-
 xbps-src                                           |    17 +-
 100 files changed, 291 insertions(+), 150351 deletions(-)
 delete mode 100644 srcpkgs/brltty/patches/cython3.patch
 create mode 100644 srcpkgs/clifm/patches/0001-musl-define.patch
 delete mode 120000 srcpkgs/linux6.13-dbg
 delete mode 120000 srcpkgs/linux6.13-headers
 delete mode 100644 srcpkgs/linux6.13/files/arm64-dotconfig
 delete mode 100644 srcpkgs/linux6.13/files/i386-dotconfig
 delete mode 100755 srcpkgs/linux6.13/files/mv-debug
 delete mode 100644 srcpkgs/linux6.13/files/x86_64-dotconfig
 delete mode 100644 srcpkgs/linux6.13/patches/fix-musl-btf-ids.patch
 delete mode 100644 srcpkgs/linux6.13/patches/fix-musl-objtool.patch
 delete mode 100644 srcpkgs/linux6.13/patches/fixdep-largefile.patch
 delete mode 100644 srcpkgs/linux6.13/patches/x13s-camera.patch
 delete mode 100644 srcpkgs/linux6.13/template
 delete mode 120000 srcpkgs/linux6.14-dbg
 delete mode 120000 srcpkgs/linux6.14-headers
 delete mode 100644 srcpkgs/linux6.14/files/arm64-dotconfig
 delete mode 100644 srcpkgs/linux6.14/files/i386-dotconfig
 delete mode 100755 srcpkgs/linux6.14/files/mv-debug
 delete mode 100644 srcpkgs/linux6.14/files/x86_64-dotconfig
 delete mode 100644 srcpkgs/linux6.14/patches/fix-musl-btf-ids.patch
 delete mode 100644 srcpkgs/linux6.14/patches/fix-musl-objtool.patch
 delete mode 100644 srcpkgs/linux6.14/patches/fixdep-largefile.patch
 delete mode 100644 srcpkgs/linux6.14/patches/x13s-camera.patch
 delete mode 100644 srcpkgs/linux6.14/template
 delete mode 120000 srcpkgs/linux6.15-dbg
 delete mode 120000 srcpkgs/linux6.15-headers
 delete mode 100644 srcpkgs/linux6.15/files/arm64-dotconfig
 delete mode 100644 srcpkgs/linux6.15/files/i386-dotconfig
 delete mode 100755 srcpkgs/linux6.15/files/mv-debug
 delete mode 100644 srcpkgs/linux6.15/files/x86_64-dotconfig
 delete mode 100644 srcpkgs/linux6.15/patches/fix-musl-btf-ids.patch
 delete mode 100644 srcpkgs/linux6.15/patches/fix-musl-objtool.patch
 delete mode 100644 srcpkgs/linux6.15/patches/fixdep-largefile.patch
 delete mode 100644 srcpkgs/linux6.15/patches/x13s-camera.patch
 delete mode 100644 srcpkgs/linux6.15/template
 delete mode 120000 srcpkgs/linux6.16-dbg
 delete mode 120000 srcpkgs/linux6.16-headers
 delete mode 100644 srcpkgs/linux6.16/files/arm64-dotconfig
 delete mode 100644 srcpkgs/linux6.16/files/i386-dotconfig
 delete mode 100755 srcpkgs/linux6.16/files/mv-debug
 delete mode 100644 srcpkgs/linux6.16/files/x86_64-dotconfig
 delete mode 100644 srcpkgs/linux6.16/patches/fix-musl-btf-ids.patch
 delete mode 100644 srcpkgs/linux6.16/patches/fix-musl-objtool.patch
 delete mode 100644 srcpkgs/linux6.16/patches/fixdep-largefile.patch
 delete mode 100644 srcpkgs/linux6.16/patches/x13s-camera.patch
 delete mode 100644 srcpkgs/linux6.16/template
 create mode 100644 srcpkgs/qemu/patches/tcg-overflow.patch
 create mode 100644 srcpkgs/redsocks/files/redsocks/run
 create mode 100644 srcpkgs/sddm/patches/raise-cmake-minimum-version.patch
 create mode 100644 srcpkgs/tombi/template
[user@user-pc void-packages]$ 

-


4). 「ブートストラップ パッケージ」を最新のバージョンに更新:

$ cd ~/git/void-packages/
$ ./xbps-src bootstrap-update
:
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2043KB [avg rate: 781KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 909KB [avg rate: 1046KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
x86_64-repodata: 694KB [avg rate: 479KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> xbps-src: removing autodeps, please wait...
[user@user-pc void-packages]$ 

→「masterdir」もクリーンアップされました:

-


5). 再起動:

$ sudo reboot

-

-


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

4. 「Geany」アプリの「パッケージ化」について:

-

ホームページ:

https://www.geany.org

:

「geany」:

Geany という軽量なテキストエディタ、を兼ねた、統合開発環境 (IDE) の実行ファイルと基本的なライブラリが含まれるパッケージです。通常の利用(コードの編集、ビルド、実行)には、このパッケージのみで十分です。

「geany」は簡易版の IDE ですが、軽量な Linux ディストリビューションの中には、標準のテキストエディタとしているものもあります:

-

「geany-devel」:

このパッケージには、geany 本体や関連プラグインソースコードからビルドしたり、プラグイン開発などを行う場合に必要なヘッダーファイルや開発ライブラリが含まれています。 通常は不要で、プラグイン開発などを行う場合にインストールします。

-

-


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

5. 「Geany」アプリを、ソースに手を加えずに「パッケージ化」する場合:

-

ソースを修正する前の、ビルドできるかの事前確認です:

-

トライした履歴は「項番 25.」を参照:

-


1). 「geany」パッケージが「xbps-src」にあるか確認:

$ cd ~/git/void-packages/
$ ls srcpkgs/geany
template

→ありました:

-

参考:
$ ls -l srcpkgs/geany
:
-rw-r--r-- 1 user user 1022 12月  2 14:37 template

-

ツリー表示:

$ tree srcpkgs/geany
:
srcpkgs/geany
└── template

1 directory, 1 file

→テンプレートのみです:

-

$ ls -l srcpkgs/geany-devel
:
lrwxrwxrwx 1 user user 5 12月  2 14:37 srcpkgs/geany-devel -> geany

→「geany」フォルダへの「リンク」です:

-

ツリー表示:

$ tree srcpkgs/geany-devel
:
srcpkgs/geany-devel
└── template

1 directory, 1 file

→「geany」フォルダの内容が表示:

これだけだとリンクされているかわかりません:

-


2). 「geany」関連のテンプレートを確認:

$ cd ~/git/void-packages/
$ ls srcpkgs | grep geany
:
geany
geany-devel
geany-plugins
geany-plugins-extra

→注意: Void Linux では、「geany」をパッケージ化すると、一緒に「geany-devel」もパッケージ化されるように、互いの「テンプレート」で定義されています:

なので、「geany」をパッケージ化するときは、「geany-devel」もパッケージ化できるようにテンプレートを準備する必要があります:

ソースがひとつで機能するようにできている?らしく、「geany-devel」は「geany」のリンクになっていました:

-


3). 「geany」の「テンプレート」を確認:

$ cat ~/git/void-packages/srcpkgs/geany/template
# Template file for 'geany'
pkgname=geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

geany-devel_package() {
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→依存が少なく見えますが、「gtk+3-devel」があるので依存は多くなります:

このアプリをインストールすると、「*.pc」ファイルがシステムに登録されるみたい:

-


4). 「geany-devel」の「テンプレート」を確認:

ここで、「geany-devel」フォルダは「geany」フォルダのリンクです:

-

$ cat ~/git/void-packages/srcpkgs/geany-devel/template

→リンクなので、「geany」の「テンプレート」と同じ内容です:

「geany」のビルドには、両方のパッケージのテンプレート(同じ内容)が必要です:

-


5). 「geany」の「パッケージ化」:

$ cd ~/git/void-packages/
$ ./xbps-src pkg geany
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2040KB [avg rate: 697KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 908KB [avg rate: 777KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> geany-2.1_1: removing autodeps, please wait...
=> geany-2.1_1: building with [gnu-configure] for x86_64...
   [host] pkg-config-0.29.2_3: found (https://repo-default.voidlinux.org/current)
   [host] libtool-2.4.7_8: found (https://repo-default.voidlinux.org/current)
   [host] gettext-0.22.5_1: found (https://repo-default.voidlinux.org/current)
   [target] gtk+3-devel-3.24.50_1: found (https://repo-default.voidlinux.org/current)
   [runtime] hicolor-icon-theme-0.18_1: found (https://repo-default.voidlinux.org/current)
   [runtime] desktop-file-utils-0.28_1: found (https://repo-default.voidlinux.org/current)
   [runtime] libglib-devel-2.86.1_1: found (https://repo-default.voidlinux.org/current)
   [runtime] gtk+3-devel-3.24.50_1: found (https://repo-default.voidlinux.org/current)
   [runtime] geany-2.1_1: found (https://repo-default.voidlinux.org/current)
=> geany-2.1_1: installing host dependencies: pkg-config-0.29.2_3 libtool-2.4.7_8 gettext-0.22.5_1 ...
=> geany-2.1_1: installing target dependencies: gtk+3-devel-3.24.50_1 ...
:
=> Registering new packages to /host/binpkgs
index: added `geany-2.1_1' (x86_64).
index: added `geany-devel-2.1_1' (x86_64).
index: 5 packages registered.
=> geany-2.1_1: removing autodeps, please wait...
=> geany-2.1_1: cleaning build directory...
=> geany: removing files from destdir...
=> geany-devel: removing files from destdir...
[user@user-pc void-packages]$ 

→「geany-devel-」と一緒に「パッケージ化」されました:

-

確認:

$ ls -l hostdir/binpkgs/
:
-rw-r--r-- 1 user user 5071481 12月  2 15:28 geany-2.1_1.x86_64.xbps
-rw-r--r-- 1 user user   97024 12月  2 15:28 geany-devel-2.1_1.x86_64.xbps
-rw-rw-r-- 1 user user    1081 12月  2 15:28 x86_64-repodata

→パッケージ化は一緒に行われますが、インストールは別になります:

-


6). パッケージ化された「geany」(のみ)をインストール:

$ sudo xbps-install --repository hostdir/binpkgs geany

もしくは、

$ xi geany
:
Name  Action    Version           New version            Download size
geany install   -                 2.1_1                  - 

-


7). インストールされたか確認:

$ xbps-query -s geany
:
[*] geany-2.1_1 Fast and lightweight IDE

→行頭が [*] であれば、インストールされています:

-

バージョンの表示:
$ geany --version
:
geany 2.1 (Nov 19 2025 以降に次を使用してビルドGTK 3.24.50, GLib 2.86.1)

-


8). 起動して、動作を確認:

「メニュー」→「開発」→「Geany」

-

実行時の画面:

→日本語化されています:

-

-


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

6. 「Geany」アプリを、ソースを修正して「パッケージ化」する場合:

-

ソースを修正したパッケージの管理がしやすい(退避しやすい)ように、
パッケージ名(パッケージのフォルダ名)の先頭に「@」を付けました:

-

トライした履歴は「項番 26.」を参照:

-

-


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

6-1. 「@geany」のテンプレートを作成:

-


1). 「@geany」のフォルダを作成:

$ cd ~/git/void-packages/
$ mkdir -p srcpkgs/@geany/patches/

-


2). 「@geany」の「テンプレート」を作成:

$ featherpad srcpkgs/@geany/template

↓ すべて貼付け:

# Template file for '@geany'
pkgname=@geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

@geany-devel_package() {
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→後半に「@geany-devel」のパッケージ化が含まれていることに注目:

-

-


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

6-2. 「@geany」のパッチを作成:

-

パッチを作成することで、「@geany」のソースの修正が、自動で「パッケージ化」の中で行われます:

-


1). 「パッチ1」の作成:

$ cd ~/git/void-packages/srcpkgs/@geany/patches/
$ featherpad 01.geany-po-ja.patch

↓ すべて貼付け:

--- a/po/ja.po   2025-11-20 02:54:46.843233207 +0900
+++ b/po/ja.po  2025-11-20 03:14:24.967506637 +0900
@@ -5024,11 +5024,11 @@
 
 #: src/ui_utils.c:710 src/ui_utils.c:797
 msgid "_Use Custom Date Format"
-msgstr "任意の日付書式を使用する(_U)"
+msgstr "好みの日付の書式で日時を挿入(_U)"
 
 #: src/ui_utils.c:714
 msgid "Custom Date Format"
-msgstr "任意の日付書式"
+msgstr "好みの日付の書式"
 
 #: src/ui_utils.c:715
 #, fuzzy
@@ -5036,7 +5036,7 @@
 "Custom date format (see https://docs.gtk.org/glib/method.DateTime.format."
 "html):"
 msgstr ""
-"ここに任意の日付と時刻の書式を入力してください。ANSI C の strftime 関数で用い"
+"ここに好みの日付と時刻の書式を入力してください。ANSI C の strftime 関数で用い"
 "られる変換指定子が使用できます。"
 
 #: src/ui_utils.c:735
@@ -5045,7 +5045,7 @@
 
 #: src/ui_utils.c:810
 msgid "_Set Custom Date Format"
-msgstr "任意の日付書式を設定(_S)"
+msgstr "好みの日付の書式を設定(_S)"
 
 #: src/ui_utils.c:1973
 #, fuzzy

→わざと最終行に 空行x2 を追加:

-


2). 「パッチ2」の作成:

$ cd ~/git/void-packages/srcpkgs/@geany/patches/
$ featherpad 02.geany-src-templates.h.patch

↓ すべて貼付け:

--- a/src/templates.h    2025-11-20 02:56:13.026466304 +0900
+++ b/src/templates.h   2025-11-20 04:04:03.704501349 +0900
@@ -59,7 +59,7 @@
 #define GEANY_TEMPLATES_INDENT 3
 #define GEANY_TEMPLATES_FORMAT_YEAR              C_("DefaultYear", "%Y")
 #define GEANY_TEMPLATES_FORMAT_DATE              C_("DefaultDate", "%Y-%m-%d")
-#define GEANY_TEMPLATES_FORMAT_DATETIME          C_("DefaultDateTime", "%d.%m.%Y %H:%M:%S %Z")
+#define GEANY_TEMPLATES_FORMAT_DATETIME          C_("DefaultDateTime", "%Y-%m-%d %H:%M")
 
 enum
 {

→わざと最終行に 空行x2 を追加:

-


3). 「パッチ3」を生成するスクリプトを作成:

$ cd ~/git/void-packages/srcpkgs/@geany/patches/
$ featherpad 03.geany-src-ui-utils.c.sh

↓ すべて貼付け:

#!/bin/bash
echo ""
echo -e "--- a/src/ui_utils.c\\t2025-11-20 02:56:13.014465436 +0900"
echo -e "+++ b/src/ui_utils.c\\t2025-11-20 04:30:33.596793645 +0900"
echo -e "@@ -692,11 +692,11 @@"
echo -e " \\tif (utils_str_equal(\"\", ui_prefs.custom_date_format))"
echo -e " \\t{"
echo -e " \\t\\tg_free(ui_prefs.custom_date_format);"
echo -e "-\\t\\tui_prefs.custom_date_format = g_strdup(\"%d.%m.%Y\");"
echo -e "+\\t\\tui_prefs.custom_date_format = g_strdup(\"%Y-%m-%d %H:%M\");"
echo -e " \\t}"
echo -e " "
echo -e "-\\tif (utils_str_equal(_(\"dd.mm.yyyy\"), date_style))"
echo -e "-\\t\\tformat = \"%d.%m.%Y\";"
echo -e "+\\tif (utils_str_equal(_(\"yyyy-mm-dd hh:mm\"), date_style))"
echo -e "+\\t\\tformat = \"%Y-%m-%d %H:%M\";"
echo -e " \\telse if (utils_str_equal(_(\"mm.dd.yyyy\"), date_style))"
echo -e " \\t\\tformat = \"%m.%d.%Y\";"
echo -e " \\telse if (utils_str_equal(_(\"yyyy/mm/dd\"), date_style))"
echo -e "@@ -772,7 +772,7 @@"
echo -e " \\tGtkWidget *item;"
echo -e " \\tgchar *str;"
echo -e " "
echo -e "-\\tinsert_date_items(menu_edit, menu_popup, _(\"dd.mm.yyyy\"));"
echo -e "+\\tinsert_date_items(menu_edit, menu_popup, _(\"yyyy-mm-dd hh:mm\"));"
echo -e " \\tinsert_date_items(menu_edit, menu_popup, _(\"mm.dd.yyyy\"));"
echo -e " \\tinsert_date_items(menu_edit, menu_popup, _(\"yyyy/mm/dd\"));"
echo ""

先頭行がないと、Void Linux では「スクリプト」としてうまく動きませんでした:
わざと 2行目と最終行に空行(echo "")を追加:

-

→Ctrl+S で保存:

-

参考: 「パッチ3」ファイルを生成する「スクリプト」を エディタで表示:

-


4). 「パッチ3」を生成するスクリプトを実行:

-

(1). 確認:
$ cd ~/git/void-packages/srcpkgs/@geany/patches/
$ ls -l
:
-rw-r--r-- 1 user user 1095 12月  2 16:28 01.geany-po-ja.patch
-rw-r--r-- 1 user user  520 12月  2 16:29 02.geany-src-templates.h.patch
-rw-r--r-- 1 user user 1325 12月  2 16:29 03.geany-src-ui-utils.c.sh

-

(2). スクリプトの実行:
$ bash 03.geany-src-ui-utils.c.sh > 03.geany-src-ui-utils.c.patch

-

(3). 確認:
$ ls -l
:
-rw-r--r-- 1 user user 1095 12月  2 16:28 01.geany-po-ja.patch
-rw-r--r-- 1 user user  520 12月  2 16:29 02.geany-src-templates.h.patch
-rw-r--r-- 1 user user  967 12月  2 16:33 03.geany-src-ui-utils.c.patch
-rw-r--r-- 1 user user 1325 12月  2 16:29 03.geany-src-ui-utils.c.sh

-

(4). 不要になった「スクリプト」を削除:
$ rm 03.geany-src-ui-utils.c.sh

-


5). 参考: 生成された「パッチ3」ファイルを確認:

こちらは「Tab」文字を含むので、ブラウザからの貼付けでは、使えないので注意:

-

生成された「パッチ3」ファイルを エディタで表示:

「→」が「タブ」文字です:

-


6). 最終的なパッチを、ツリーで確認:

$ cd ~/git/void-packages/
$ tree srcpkgs/@geany
:
srcpkgs/@geany
├── patches
│   ├── 01.geany-po-ja.patch
│   ├── 02.geany-src-templates.h.patch
│   └── 03.geany-src-ui-utils.c.patch ←(タブ文字が含まれるので注意)
└── template

2 directories, 4 files

→テンプレートとパッチがあります:

-

-


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

6-3. 「@geany-devel」のテンプレートを作成:

-

「@geany」のパッケージ化のときに自動で「@geany-devel」のパッケージ化が行われる(設定な)ので、 「@geany」のパッケージ化を行うには、「@geany-devel」のテンプレートが必要です:

-


1). 「@geany-devel」フォルダのリンクを作成:

「*-devel」は実体ではなく「リンク」で、同じソースで開発版と通常版を兼ねているみたい:

-

実際にある(実体の)「@geany」フォルダから、「@geany-devel」フォルダのリンクを作成:

$ cd ~/git/void-packages/srcpkgs/
$ ln -s @geany @geany-devel

-


2). 確認:

$ ls -l | grep geany
:
drwxr-xr-x 3 user user 4096 12月  2 16:19 @geany
lrwxrwxrwx 1 user user    6 12月  2 16:43 @geany-devel -> @geany ←(リンク)
drwxr-xr-x 2 user user 4096 12月  2 14:37 geany
lrwxrwxrwx 1 user user    5 12月  2 14:37 geany-devel -> geany
drwxr-xr-x 2 user user 4096 12月  2 14:37 geany-plugins
lrwxrwxrwx 1 user user   13 12月  2 14:37 geany-plugins-extra -> geany-plugins

→単に「geany-devel」をコピーして作成すると、リンク先が「geany」になります:

-


3). 「@geany-devel」の「テンプレート」を確認:

$ cd ~/git/void-packages/
$ cat srcpkgs/@geany-devel/template

→リンクなので、当然ながら「@geany」の「テンプレート」と同じ内容です:

「@geany」のパッケージ化には、両方のパッケージのテンプレートが必要です:

-

-


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

6-4. 「@geany」アプリの「パッケージ化」:

-


1). パッケージ化:

$ cd ~/git/void-packages/
$ ./xbps-src pkg @geany
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2040KB [avg rate: 922KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 908KB [avg rate: 823KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> @geany-2.1_1: removing autodeps, please wait...
:
=> @geany-2.1_1: running pre-pkg hook: 999-collected-rdeps ...
   hicolor-icon-theme>=0 desktop-file-utils>=0 glibc>=2.41_1 atk>=1.26.0_1 cairo>=1.8.6_1 libgcc>=4.4.0_1 gtk+3>=3.0.0_1 gdk-pixbuf>=2.22.0_1 glib>=2.86.0_1 libharfbuzz>=5.1.0_1 pango>=1.24.0_1 libstdc++>=4.4.0_1 zlib>=1.2.3_1 
=> @geany-devel-2.1_1: running do-pkg hook: 00-gen-pkg ...
=> Creating @geany-devel-2.1_1.x86_64.xbps for repository /host/binpkgs ...
=> @geany-devel-2.1_1: running post-pkg hook: 00-register-pkg ...
=> @geany-2.1_1: running do-pkg hook: 00-gen-pkg ...
=> Creating @geany-2.1_1.x86_64.xbps for repository /host/binpkgs ...
=> @geany-2.1_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `@geany-2.1_1' (x86_64).
index: added `@geany-devel-2.1_1' (x86_64).
index: 7 packages registered.
=> @geany-2.1_1: removing autodeps, please wait...
=> @geany-2.1_1: cleaning build directory...
=> @geany: removing files from destdir...
=> @geany-devel: removing files from destdir...
[user@user-pc void-packages]$ 

→パッケージ化できました:
一緒に、「@geany-devel」もパッケージ化されました。

つまり、「@geany-devel」もパッケージ化できる状態にしておかないと、失敗します:

-


2). 確認:

$ cd ~/git/void-packages/
$ ls -l hostdir/binpkgs/
:
-rw-r--r-- 1 user user 5071383 12月  2 16:50 @geany-2.1_1.x86_64.xbps    ←(今回)
-rw-r--r-- 1 user user   97003 12月  2 16:50 @geany-devel-2.1_1.x86_64.xbps ←(今回)
-rw-r--r-- 1 user user 5071481 12月  2 15:28 geany-2.1_1.x86_64.xbps
-rw-r--r-- 1 user user   97024 12月  2 15:28 geany-devel-2.1_1.x86_64.xbps
-rw-rw-r-- 1 user user    1217 12月  2 16:50 x86_64-repodata
→パッケージ名を変えるときは、リンクされている場合があり、そのパッケージ名を使ってリンクしておかないと「パッケージ化」で失敗する場合があります:

-

-


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

6-5. 「@geany」アプリのインストール:

-


1). すでに「geany」がインストールされていないか確認:

$ xbps-query -Rs geany
:
[*] geany-2.1_1               Fast and lightweight IDE
[-] geany-devel-2.1_1         Fast and lightweight IDE - Development files
[-] geany-plugins-2.1_2       Geany IDE plugins
[-] geany-plugins-extra-2.1_2 Geany IDE plugins - extra plugins

-


2). 「geany」がインストールされていた場合は削除:

$ sudo xbps-remove geany
:
Name  Action    Version           New version            Download size
geany remove    2.1_1             -                      - 

-


3). 「設定ファイル」の削除:

$ rm ~/.config/geany/geany.conf

→削除しておかないと、インストール時に見ていて上書きされないので、新しい設定で「設定ファイル」が作られません:
(例えば、日付設定の初期値が、期待している設定値になりません)

-


4). インストール:

$ cd ~/git/void-packages/
$ xi @geany
:
Name   Action    Version           New version            Download size
@geany install   -                 2.1_1                  - 

-

確認:
$ geany --version
:
geany 2.1 (Nov 20 2025 以降に次を使用してビルドGTK 3.24.50, GLib 2.86.1)

-

-


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

6-6. 「@geany」のインストール後の確認:

-

ソースを修正して、それが反映されたか確認:

-


1). 日時のデフォルト値を確認:

インストール直後:

$ cat ~/.config/geany/geany.conf | grep "pref_template_datetime="
:
cat: /home/user/.config/geany/geany.conf: そのようなファイルやディレクトリはありません

→インストール直後は、設定ファイルは作成されていません:

-

メニュー→「開発」→「Geany」

アプリを一度起動して、閉じると:

$ cat ~/.config/geany/geany.conf | grep "pref_template_datetime="
:
pref_template_datetime=%Y-%m-%d %H:%M

→閉じないと、反映されません:

-


2). 設定ファイルの設定値を抜粋して表示:

$ cat ~/.config/geany/geany.conf
pref_template_year=%Y
pref_template_date=%Y-%m-%d
pref_template_datetime=%Y-%m-%d %H:%M
:
custom_date_format=

→一度のぞかないと設定されません。空です:

-


3). 編集→日付を挿入→「好みの日付の書式を設定」

自動で下記が入力されました:

%Y-%m-%d %H:%M

→ここで、入力欄の右下の、OK

アプリを閉じます:

-


4). 好みで設定した日付の書式を確認:

$ cat ~/.config/geany/geany.conf | grep "custom_date_format="
:
custom_date_format=%Y-%m-%d %H:%M

→望んだ、デフォルト値が設定されました:

-


5). 編集→日付を挿入→「yyyy-mm-dd hh:mm」

無条件で設定されるメニュー:

2025-12-01 17:28

-


6). 編集→日付を挿入→「好みの日付の書式で日時を挿入」

設定値が反映されるメニュー:

2025-12-01 17:29

-

-


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

6-7. 「@geany」の設定:

-

「@geany」を「テキストエディタ」として使いやすくするために設定しました:

-


1). 「@geany」の起動:

「メニュー」→「開発」→「Geany」

-

実行時の画面:

→日本語化されています:

-

「Geany」は IDE なので、

テキストエディタとして使うには、余計なウィンドウが 2つ表示されています。

-


2). 余計なウィンドウを消しました:

「表示」→「メッセージウィンドウを表示」のチェック を外しました:
「表示」→「サイドバーを表示」のチェック を外しました:

-

設定後:

→「テキストエディタ」として使いやすくなりました:

-


3). 「テーマ」の変更:

-

(1). 「@geany」で使用できる「テーマ」を表示:

インストールされているテーマ:

$ ls /usr/share/geany/colorschemes/
:
abc-dark.conf          github.conf             one-dark.conf
abc-light.conf         grey8.conf              pygments.conf
alt.conf               gruvbox-dark.conf       retro.conf
bespin.conf            hacker.conf             sleepy-pastel.conf
black.conf             himbeere.conf           slushpoppies.conf
carbonfox.conf         inkpot.conf             solarized-dark.conf
cyber-sugar.conf       kugel.conf              solarized-light.conf
darcula.conf           kurayami.conf           spyder-dark.conf
dark-colors.conf       lgpl-2.0.txt            steampunk.conf
dark-fruit-salad.conf  lgpl-2.1.txt            tango-dark.conf
dark.conf              matcha.conf             tango-light.conf
delt-dark.conf         mc.conf                 tinge.conf
earthsong.conf         metallic-bottle.conf    ubuntu.conf
epsilon.conf           notepad-plus-plus.conf  underthesea.conf
evg-ega-dark.conf      oblivion2.conf          vibrant-ink.conf
gedit.conf             octagon.conf

→手動で「geany」をビルドすると、アプリはデフォルトで「/usr/local」にインストールされます。 その場合、テーマはホームに配置しないと認識されないので使えません。

ですが、「Void Linux」でパッケージ化してインストールした場合は、アプリは「/usr」にインストールされるので、そのまま内蔵されているテーマが使えます:

-

ちなみに、他の Linux ディストリビューションでは、別の「パッケージ」として分離されている「テーマ」が、「Void Linux」では、内蔵されています:

-

(2). ホームに登録されている「テーマ」:
$ ls ~/.config/geany/colorschemes/
$

→ホームに登録されている「テーマ」はありません。空です。

-

(3). 好みの「テーマ」をホームにコピー:

好みの「テーマ」を見つけたら、ホームにコピーしておくと、
システム (/usr/share/geany/colorschemes/) にある「テーマ」と合算されて、選択メニューに表示されます。

「テーマ」をいじるときは、ホームにコピーすると優先度が上がります:

$ cd /usr/share/geany/colorschemes/
$ cp oblivion2.conf ~/.config/geany/colorschemes/__oblivion2.conf
$ cp darcula.conf ~/.config/geany/colorschemes/_darcula.conf

-

(4). 選択メニューの並び順を変えるためにファイル名を変更:

そして、よく使うテーマの頭に、アンダーバー「_」を付けると、メニューが選びやすくなります:

$ ls -1 ~/.config/geany/colorschemes/
:
__oblivion2.conf
_darcula.conf

→「_」の数を増やすと、並びを変えられます。

-

(5). 並び順の確認:
「表示」→「色の設定」

→拡張子を付けた「Markdown」ファイル(*.md)等に保存(Untitle のままではダメです)して開き、
テーマを選ぶと、リアルタイムに「テーマ」が反映されます:

-

→アルファベット順でなく、先ほど「ファイル名を変更」した、2つのテーマがメニューの上に来ています:

コピーしたので同じテーマがあって、頭にあるのがホームのテーマで、後ろにあるのがシステムのテーマです。

-

(6). テーマの変更:
「表示」→「色の設定」→「Abc Dark」

縦線が気になりますが、見やすい「テーマ」です:

-

→「閉じる」

-


4). 縦線を目立たない色に設定:

→テーマをダーク系にすると、72文字目の「うぐいす色」の縦線が目立つので、目立たない「濃い灰色」(黒よりも 3 段目の明るい色)に変更しました。

「編集」→「設定」→左の「エディタ」タブ →「表示」タブ →長い行のマーカー
  • 色: うぐいす色

  • 色: 濃い灰色(黒よりも 3 段目の明るい色)

→「選択」

→「適用」

→「OK」

-

設定後の画面:

→縦線が目立たなくなりました:

-

色を変更するのでなく、表示位置をズラしても良いかも:

-

-


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

25. 「Geany」アプリを、ソースに手を加えずに「パッケージ化」した履歴:

-

こちらの作業は要りません:

事前に、「ビルドできるか」確認した作業です:

-

「geany」は簡易版の IDE ですが、シンプルなテキストエディタとして使えます:
標準のテキストエディタとして採用している Linux ディストリビューションもあります:

-

ホームページ:

https://www.geany.org

-


1). 「geany」パッケージが「xbps-src」にあるか確認:

$ cd ~/git/void-packages/
$ ls srcpkgs/geany
template

→ありました:

-


2). 「テンプレート」を表示: 

$ cat ~/git/void-packages/srcpkgs/geany/template
# Template file for 'geany'
pkgname=geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

geany-devel_package() {
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→依存が少なく見えますが、「gtk+3-devel」があるので依存は多くなります:

このアプリをインストールすると、「*.pc」ファイルがシステムに登録されるみたい:

-


3). その他の確認:

-

(1). 「ソース」のダウンロードサイトと、それに対する「パッチ」を表示:
$ xsrc geany
:
https://download.geany.org/geany-2.1.tar.bz2

→パッチはなし:

-

(2). 詳細表示:
$ xq geany
:
pkgver: geany-2.1_1
short_desc: Fast and lightweight IDE
architecture: x86_64
changelog: https://raw.githubusercontent.com/geany/geany/master/NEWS
filename-sha256: 1c4c0646a1f8258334bc5602181b83fbed80de2b5bba3253dbea7094d9169f77
filename-size: 4953KB
homepage: https://www.geany.org
installed_size: 16MB
license: GPL-2.0-or-later
maintainer: Orphaned <orphan@voidlinux.org>
pkgname: geany
provides:
    cmd:geany-2.1_1
repository: https://repo-fi.voidlinux.org/current
run_depends:
    hicolor-icon-theme>=0
    desktop-file-utils>=0
    gtk+3>=3.0.0_1
    zlib>=1.2.3_1
    pango>=1.24.0_1
    libharfbuzz>=5.1.0_1
    atk>=1.26.0_1
    cairo>=1.8.6_1
    gdk-pixbuf>=2.22.0_1
    glib>=2.80.0_1
    libstdc++>=4.4.0_1
    glibc>=2.41_1
    libgcc>=4.4.0_1
shlib-provides:
    libgeany.so.0
shlib-requires:
    ld-linux-x86-64.so.2
    libatk-1.0.so.0
    libc.so.6
    libcairo-gobject.so.2
    libcairo.so.2
    libgcc_s.so.1
    libgdk-3.so.0
    libgdk_pixbuf-2.0.so.0
    libgio-2.0.so.0
    libglib-2.0.so.0
    libgmodule-2.0.so.0
    libgobject-2.0.so.0
    libgthread-2.0.so.0
    libgtk-3.so.0
    libharfbuzz.so.0
    libm.so.6
    libpango-1.0.so.0
    libpangocairo-1.0.so.0
    libstdc++.so.6
    libz.so.1
source-revisions: geany:e1b0e6b3ebd
sourcepkg: geany
depends:
    hicolor-icon-theme>=0
    desktop-file-utils>=0
    gtk+3>=3.0.0_1
    zlib>=1.2.3_1
    pango>=1.24.0_1
    libharfbuzz>=5.1.0_1
    atk>=1.26.0_1
    cairo>=1.8.6_1
    gdk-pixbuf>=2.22.0_1
    glib>=2.80.0_1
    libstdc++>=4.4.0_1
    glibc>=2.41_1
    libgcc>=4.4.0_1

-

(3). インストール後のファイルの配置を表示:
$ xls geany
:
/usr/bin/geany
/usr/lib/geany/classbuilder.so
/usr/lib/geany/export.so
/usr/lib/geany/filebrowser.so
/usr/lib/geany/htmlchars.so
/usr/lib/geany/saveactions.so
/usr/lib/geany/splitwindow.so
/usr/lib/libgeany.so.0.0.0
/usr/share/applications/geany.desktop
/usr/share/doc/geany/AUTHORS
/usr/share/doc/geany/COPYING
/usr/share/doc/geany/ChangeLog
/usr/share/doc/geany/LexillaLicense.txt
/usr/share/doc/geany/NEWS
/usr/share/doc/geany/README
/usr/share/doc/geany/ScintillaLicense.txt
/usr/share/doc/geany/THANKS
/usr/share/doc/geany/TODO
/usr/share/doc/geany/html/images/build_menu_commands_dialog.png
/usr/share/doc/geany/html/images/edit_change_history.png
/usr/share/doc/geany/html/images/find_dialog.png
/usr/share/doc/geany/html/images/find_in_files_dialog.png
/usr/share/doc/geany/html/images/main_window.png
/usr/share/doc/geany/html/images/pref_dialog_edit_completions.png
/usr/share/doc/geany/html/images/pref_dialog_edit_display.png
/usr/share/doc/geany/html/images/pref_dialog_edit_features.png
/usr/share/doc/geany/html/images/pref_dialog_edit_indentation.png
/usr/share/doc/geany/html/images/pref_dialog_files.png
/usr/share/doc/geany/html/images/pref_dialog_gen_misc.png
/usr/share/doc/geany/html/images/pref_dialog_gen_startup.png
/usr/share/doc/geany/html/images/pref_dialog_interface_interface.png
/usr/share/doc/geany/html/images/pref_dialog_interface_notebook.png
/usr/share/doc/geany/html/images/pref_dialog_interface_toolbar.png
/usr/share/doc/geany/html/images/pref_dialog_keys.png
/usr/share/doc/geany/html/images/pref_dialog_printing.png
/usr/share/doc/geany/html/images/pref_dialog_templ.png
/usr/share/doc/geany/html/images/pref_dialog_tools.png
/usr/share/doc/geany/html/images/pref_dialog_various.png
/usr/share/doc/geany/html/images/pref_dialog_vte.png
/usr/share/doc/geany/html/images/replace_dialog.png
/usr/share/doc/geany/html/images/sidebar_documents_only.png
/usr/share/doc/geany/html/images/sidebar_show_paths.png
/usr/share/doc/geany/html/images/sidebar_show_tree.png
/usr/share/doc/geany/html/index.html
/usr/share/doc/geany/manual.txt
/usr/share/geany/GPL-2
/usr/share/geany/colorschemes/abc-dark.conf
/usr/share/geany/colorschemes/abc-light.conf
/usr/share/geany/colorschemes/alt.conf
/usr/share/geany/colorschemes/bespin.conf
/usr/share/geany/colorschemes/black.conf
/usr/share/geany/colorschemes/carbonfox.conf
/usr/share/geany/colorschemes/cyber-sugar.conf
/usr/share/geany/colorschemes/darcula.conf
/usr/share/geany/colorschemes/dark-colors.conf
/usr/share/geany/colorschemes/dark-fruit-salad.conf
/usr/share/geany/colorschemes/dark.conf
/usr/share/geany/colorschemes/delt-dark.conf
/usr/share/geany/colorschemes/earthsong.conf
/usr/share/geany/colorschemes/epsilon.conf
/usr/share/geany/colorschemes/evg-ega-dark.conf
/usr/share/geany/colorschemes/gedit.conf
/usr/share/geany/colorschemes/github.conf
/usr/share/geany/colorschemes/grey8.conf
/usr/share/geany/colorschemes/gruvbox-dark.conf
/usr/share/geany/colorschemes/hacker.conf
/usr/share/geany/colorschemes/himbeere.conf
/usr/share/geany/colorschemes/inkpot.conf
/usr/share/geany/colorschemes/kugel.conf
/usr/share/geany/colorschemes/kurayami.conf
/usr/share/geany/colorschemes/lgpl-2.0.txt
/usr/share/geany/colorschemes/lgpl-2.1.txt
/usr/share/geany/colorschemes/matcha.conf
/usr/share/geany/colorschemes/mc.conf
/usr/share/geany/colorschemes/metallic-bottle.conf
/usr/share/geany/colorschemes/notepad-plus-plus.conf
/usr/share/geany/colorschemes/oblivion2.conf
/usr/share/geany/colorschemes/octagon.conf
/usr/share/geany/colorschemes/one-dark.conf
/usr/share/geany/colorschemes/pygments.conf
/usr/share/geany/colorschemes/retro.conf
/usr/share/geany/colorschemes/sleepy-pastel.conf
/usr/share/geany/colorschemes/slushpoppies.conf
/usr/share/geany/colorschemes/solarized-dark.conf
/usr/share/geany/colorschemes/solarized-light.conf
/usr/share/geany/colorschemes/spyder-dark.conf
/usr/share/geany/colorschemes/steampunk.conf
/usr/share/geany/colorschemes/tango-dark.conf
/usr/share/geany/colorschemes/tango-light.conf
/usr/share/geany/colorschemes/tinge.conf
/usr/share/geany/colorschemes/ubuntu.conf
/usr/share/geany/colorschemes/underthesea.conf
/usr/share/geany/colorschemes/vibrant-ink.conf
/usr/share/geany/filedefs/filetypes.Arduino.conf  ←(各プログラム言語の定義)
/usr/share/geany/filedefs/filetypes.CUDA.conf
/usr/share/geany/filedefs/filetypes.Clojure.conf
/usr/share/geany/filedefs/filetypes.Cython.conf
/usr/share/geany/filedefs/filetypes.Dockerfile.conf
/usr/share/geany/filedefs/filetypes.Genie.conf
/usr/share/geany/filedefs/filetypes.Graphviz.conf
/usr/share/geany/filedefs/filetypes.Groovy.conf
/usr/share/geany/filedefs/filetypes.HCL.conf
/usr/share/geany/filedefs/filetypes.JSON.conf
/usr/share/geany/filedefs/filetypes.Kotlin.conf
/usr/share/geany/filedefs/filetypes.LESS.conf
/usr/share/geany/filedefs/filetypes.Meson.conf
/usr/share/geany/filedefs/filetypes.SCSS.conf
/usr/share/geany/filedefs/filetypes.Scala.conf
/usr/share/geany/filedefs/filetypes.Swift.conf
/usr/share/geany/filedefs/filetypes.SystemVerilog.conf
/usr/share/geany/filedefs/filetypes.TypeScript.conf
/usr/share/geany/filedefs/filetypes.abaqus
/usr/share/geany/filedefs/filetypes.abc
/usr/share/geany/filedefs/filetypes.actionscript
/usr/share/geany/filedefs/filetypes.ada
/usr/share/geany/filedefs/filetypes.asciidoc
/usr/share/geany/filedefs/filetypes.asm
/usr/share/geany/filedefs/filetypes.autoit
/usr/share/geany/filedefs/filetypes.batch
/usr/share/geany/filedefs/filetypes.bibtex
/usr/share/geany/filedefs/filetypes.c
/usr/share/geany/filedefs/filetypes.caml
/usr/share/geany/filedefs/filetypes.cil
/usr/share/geany/filedefs/filetypes.cmake
/usr/share/geany/filedefs/filetypes.cobol
/usr/share/geany/filedefs/filetypes.coffeescript
/usr/share/geany/filedefs/filetypes.common
/usr/share/geany/filedefs/filetypes.conf
/usr/share/geany/filedefs/filetypes.cpp
/usr/share/geany/filedefs/filetypes.cs
/usr/share/geany/filedefs/filetypes.css
/usr/share/geany/filedefs/filetypes.d
/usr/share/geany/filedefs/filetypes.dart
/usr/share/geany/filedefs/filetypes.diff
/usr/share/geany/filedefs/filetypes.docbook
/usr/share/geany/filedefs/filetypes.erlang
/usr/share/geany/filedefs/filetypes.f77
/usr/share/geany/filedefs/filetypes.forth
/usr/share/geany/filedefs/filetypes.fortran
/usr/share/geany/filedefs/filetypes.freebasic
/usr/share/geany/filedefs/filetypes.gdscript
/usr/share/geany/filedefs/filetypes.glsl
/usr/share/geany/filedefs/filetypes.go
/usr/share/geany/filedefs/filetypes.haskell
/usr/share/geany/filedefs/filetypes.haxe
/usr/share/geany/filedefs/filetypes.html
/usr/share/geany/filedefs/filetypes.java
/usr/share/geany/filedefs/filetypes.javascript
/usr/share/geany/filedefs/filetypes.julia
/usr/share/geany/filedefs/filetypes.latex
/usr/share/geany/filedefs/filetypes.lisp
/usr/share/geany/filedefs/filetypes.lua
/usr/share/geany/filedefs/filetypes.makefile
/usr/share/geany/filedefs/filetypes.markdown
/usr/share/geany/filedefs/filetypes.matlab
/usr/share/geany/filedefs/filetypes.nim
/usr/share/geany/filedefs/filetypes.nix
/usr/share/geany/filedefs/filetypes.nsis
/usr/share/geany/filedefs/filetypes.objectivec
/usr/share/geany/filedefs/filetypes.pascal
/usr/share/geany/filedefs/filetypes.perl
/usr/share/geany/filedefs/filetypes.php
/usr/share/geany/filedefs/filetypes.po
/usr/share/geany/filedefs/filetypes.powershell
/usr/share/geany/filedefs/filetypes.prolog
/usr/share/geany/filedefs/filetypes.python
/usr/share/geany/filedefs/filetypes.r
/usr/share/geany/filedefs/filetypes.raku
/usr/share/geany/filedefs/filetypes.restructuredtext
/usr/share/geany/filedefs/filetypes.ruby
/usr/share/geany/filedefs/filetypes.rust
/usr/share/geany/filedefs/filetypes.sh
/usr/share/geany/filedefs/filetypes.smalltalk
/usr/share/geany/filedefs/filetypes.sql
/usr/share/geany/filedefs/filetypes.tcl
/usr/share/geany/filedefs/filetypes.toml
/usr/share/geany/filedefs/filetypes.txt2tags
/usr/share/geany/filedefs/filetypes.vala
/usr/share/geany/filedefs/filetypes.verilog
/usr/share/geany/filedefs/filetypes.vhdl
/usr/share/geany/filedefs/filetypes.xml
/usr/share/geany/filedefs/filetypes.yaml
/usr/share/geany/filedefs/filetypes.zephir
/usr/share/geany/filedefs/filetypes.zig
/usr/share/geany/filetype_extensions.conf
/usr/share/geany/geany.css
/usr/share/geany/geany.glade
/usr/share/geany/snippets.conf
/usr/share/geany/tags/entities.html.tags
/usr/share/geany/tags/std.pas.tags
/usr/share/geany/tags/std.php.tags
/usr/share/geany/tags/std.py.tags
/usr/share/geany/tags/std99.c.tags
/usr/share/geany/templates/bsd  ←(各プログラム言語のテンプレート)
/usr/share/geany/templates/changelog
/usr/share/geany/templates/fileheader
/usr/share/geany/templates/files/file.html
/usr/share/geany/templates/files/file.php
/usr/share/geany/templates/files/file.rb
/usr/share/geany/templates/files/file.tex
/usr/share/geany/templates/files/file_html5.html
/usr/share/geany/templates/files/main.c
/usr/share/geany/templates/files/main.cxx
/usr/share/geany/templates/files/main.d
/usr/share/geany/templates/files/main.java
/usr/share/geany/templates/files/main.md
/usr/share/geany/templates/files/main.py
/usr/share/geany/templates/files/main.vala
/usr/share/geany/templates/files/module.erl
/usr/share/geany/templates/files/program.pas
/usr/share/geany/templates/function
/usr/share/geany/templates/gpl
/usr/share/geany/ui_toolbar.xml
/usr/share/icons/Tango/16x16/actions/geany-save-all.png
/usr/share/icons/Tango/24x24/actions/geany-save-all.png
/usr/share/icons/Tango/32x32/actions/geany-save-all.png
/usr/share/icons/Tango/48x48/actions/geany-save-all.png
/usr/share/icons/Tango/scalable/actions/geany-save-all.svg
/usr/share/icons/hicolor/16x16/actions/geany-build.png
/usr/share/icons/hicolor/16x16/actions/geany-close-all.png
/usr/share/icons/hicolor/16x16/actions/geany-save-all.png
/usr/share/icons/hicolor/16x16/apps/classviewer-class.png
/usr/share/icons/hicolor/16x16/apps/classviewer-macro.png
/usr/share/icons/hicolor/16x16/apps/classviewer-member.png
/usr/share/icons/hicolor/16x16/apps/classviewer-method.png
/usr/share/icons/hicolor/16x16/apps/classviewer-namespace.png
/usr/share/icons/hicolor/16x16/apps/classviewer-other.png
/usr/share/icons/hicolor/16x16/apps/classviewer-struct.png
/usr/share/icons/hicolor/16x16/apps/classviewer-var.png
/usr/share/icons/hicolor/16x16/apps/geany.png
/usr/share/icons/hicolor/24x24/actions/geany-build.png
/usr/share/icons/hicolor/24x24/actions/geany-close-all.png
/usr/share/icons/hicolor/24x24/actions/geany-save-all.png
/usr/share/icons/hicolor/24x24/apps/geany.png
/usr/share/icons/hicolor/32x32/actions/geany-build.png
/usr/share/icons/hicolor/32x32/actions/geany-close-all.png
/usr/share/icons/hicolor/32x32/actions/geany-save-all.png
/usr/share/icons/hicolor/32x32/apps/geany.png
/usr/share/icons/hicolor/48x48/actions/geany-build.png
/usr/share/icons/hicolor/48x48/actions/geany-close-all.png
/usr/share/icons/hicolor/48x48/actions/geany-save-all.png
/usr/share/icons/hicolor/48x48/apps/geany.png
/usr/share/icons/hicolor/scalable/actions/geany-build.svg
/usr/share/icons/hicolor/scalable/actions/geany-close-all.svg
/usr/share/icons/hicolor/scalable/actions/geany-save-all.svg
/usr/share/icons/hicolor/scalable/apps/geany.svg
/usr/share/locale/ar/LC_MESSAGES/geany.mo
:
/usr/share/locale/ja/LC_MESSAGES/geany.mo ←(日本語の翻訳)
:
/usr/share/locale/zh_TW/LC_MESSAGES/geany.mo
/usr/share/man/man1/geany.1   ←(マニュアル)
/usr/lib/libgeany.so.0 -> /usr/lib/libgeany.so.0.0.0

-


4). 「geany」の「パッケージ化」:

$ cd ~/git/void-packages/
$ ./xbps-src pkg geany
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2040KB [avg rate: 697KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 908KB [avg rate: 777KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> geany-2.1_1: removing autodeps, please wait...
=> geany-2.1_1: building with [gnu-configure] for x86_64...
   [host] pkg-config-0.29.2_3: found (https://repo-default.voidlinux.org/current)
   [host] libtool-2.4.7_8: found (https://repo-default.voidlinux.org/current)
   [host] gettext-0.22.5_1: found (https://repo-default.voidlinux.org/current)
   [target] gtk+3-devel-3.24.50_1: found (https://repo-default.voidlinux.org/current)
   [runtime] hicolor-icon-theme-0.18_1: found (https://repo-default.voidlinux.org/current)
   [runtime] desktop-file-utils-0.28_1: found (https://repo-default.voidlinux.org/current)
   [runtime] libglib-devel-2.86.1_1: found (https://repo-default.voidlinux.org/current)
   [runtime] gtk+3-devel-3.24.50_1: found (https://repo-default.voidlinux.org/current)
   [runtime] geany-2.1_1: found (https://repo-default.voidlinux.org/current)
=> geany-2.1_1: installing host dependencies: pkg-config-0.29.2_3 libtool-2.4.7_8 gettext-0.22.5_1 ...
=> geany-2.1_1: installing target dependencies: gtk+3-devel-3.24.50_1 ...
:
=> Registering new packages to /host/binpkgs
index: added `geany-2.1_1' (x86_64).
index: added `geany-devel-2.1_1' (x86_64).
index: 5 packages registered.
=> geany-2.1_1: removing autodeps, please wait...
=> geany-2.1_1: cleaning build directory...
=> geany: removing files from destdir...
=> geany-devel: removing files from destdir...
[user@user-pc void-packages]$ 

→「パッケージ化」が完了しました:

-


5). パッケージ化された「geany」をインストール:

$ sudo xbps-install --repository hostdir/binpkgs geany

もしくは、

$ xi geany
:
Name  Action    Version           New version            Download size
geany install   -                 2.1_1                  - 

-


6). インストールされたか確認:

$ xbps-query -s geany
:
[*] geany-2.1_1 Fast and lightweight IDE

→行頭が [*] であれば、インストールされています:

-

バージョンの表示:
$ geany --version
:
geany 2.1 (Nov 19 2025 以降に次を使用してビルドGTK 3.24.50, GLib 2.86.1)

-

使用できる「プラグイン」を確認:
$ xbps-query -Rs geany
:
[*] geany-2.1_1               Fast and lightweight IDE
[-] geany-devel-2.1_1         Fast and lightweight IDE - Development files
[-] geany-plugins-2.1_2       Geany IDE plugins
[-] geany-plugins-extra-2.1_2 Geany IDE plugins - extra plugins

-


7). 起動して、動作を確認:

「アプリケーション」→「開発」→「Geany」

-

アプリのカテゴリが「アクセサリー」でなく、「開発」であることに注目:

-

実行時の画面:

→日本語化されています:

「Geany」は IDE なので、デフォルトは「コンソール」画面を含む構成で表示されます:

-

-


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

26. 「@geany」アプリを、ソースを修正してパッケージ化した履歴:

-

手順を確認するために行ったので、こちらの作業は要りません:

-

ソースファイルに手を加えたパッケージは、管理しやすいように、
パッケージ名の先頭に「@」を付けて、区別できるようにしています:

つまり、新しくアプリを作成しました:

-

-


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

26-1. 新しく「@geany」アプリを作成:

-


1). コピー元の「geany」フォルダを確認:

$ cd ~/git/void-packages/
$ tree srcpkgs/geany
:
srcpkgs/geany
└── template

1 directory, 1 file

→テンプレートしかありません:

-

$ ls -l srcpkgs | grep geany
:
drwxr-xr-x 2 user user 4096 11月 20 23:35 geany
lrwxrwxrwx 1 user user    5 11月 11 18:18 geany-devel -> geany
drwxr-xr-x 2 user user 4096 11月 11 18:18 geany-plugins
lrwxrwxrwx 1 user user   13 11月 11 18:18 geany-plugins-extra -> geany-plugins

→「geany」フォルダをコピーして「@geany」を作成しようと思ったけど、

「geany-devel」にリンクが貼られているので、新規作成しました:

-


2). 新規にフォルダを作成:

$ cd ~/git/void-packages/
$ sudo mkdir -p srcpkgs/@geany/patches/

-


3). 「@geany」フォルダの「テンプレート」ファイルを作成:

先頭の 2行(コメント行と、pkgname= 行)を「@geany」に修正:

$ sudo featherpad ~/git/void-packages/srcpkgs/@geany/template

↓ すべて貼り付け:

# Template file for '@geany'
pkgname=@geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

geany-devel_package() {
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→Ctrl+S で保存:

-

-


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

26-2. 「@geany」アプリのソースを修正して「パッチ」を作成:

-

アプリの「日付設定」メニューで少し戸惑ったので、(個人的に)戸惑わないように、
ソースを修正し、ビルド時にソースを修正するパッチを作成しました:

→ちょっとしたことですが、使いやすくなりました:

-

ちょっとしたことを修正してみようと思わせ、それが出来るのが、「xbps-src」の利点です:

-

パッチの生成で使用した、「エスケープシーケンス」について:

\t」は、タブ文字を示します:

-

こちらの投稿の「パッチ」作成の手順をブラウザで表示させると、

「タブ」が「スペース」で表示され、「タブ」文字がそのままコピー&ペーストできず、
作成した「パッチ」が当たらないので、それに対応するための工夫です:

-


1). ソースファイルをダウンロードして、展開:

$ cd ~/git/void-packages/
$ ./xbps-src clean @geany
$ ./xbps-src fetch @geany
$ ./xbps-src extract @geany

→ビルド環境は各々違います。「~/void-packages/」の方もいるかも:

-


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

$ ls ~/git/void-packages/masterdir-x86_64/
:
bin       destdir  home  lib32  mnt   root  sys  var
boot      dev      host  lib64  opt   run   tmp  void-packages
builddir  etc      lib   media  proc  sbin  usr

-

「builddir」配下にソースは展開されます:
$ ls -1 ~/git/void-packages/masterdir-x86_64/builddir/
:
@geany-2.1
qpdfview-0.5.0

-

ソースのホーム:
$ ls ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
:
ABOUT-NLS           README            configure.ac        m4
AUTHORS             README.I18N       ctags               plugins
COPYING             README.Packagers  data                po
ChangeLog           THANKS            doc                 scintilla
ChangeLog.pre-1-22  TODO              geany.desktop.in    scripts
HACKING             aclocal.m4        geany.exe.manifest  src
INSTALL             autogen.sh        geany.nsi.in        tests
Makefile.am         build-aux         geany.pc.in
Makefile.in         config.h.in       geany_private.rc
NEWS                configure         icons

→今回は、「po」と「src」がパッチの対象フォルダです:

-


3). パッチ(差分)作成に使う、「フォルダ」を作成:

-

フォルダを作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ mkdir -p {a,b}

-

コピー
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ sudo cp -r po/ a/
$ sudo cp -r po/ b/
$ sudo cp -r src/ a/
$ sudo cp -r src/ b/

-

確認:
$ ls a/
po  src

-

$ ls b/
po  src

-


4). 「パッチ1」の作成:

-

(1). ソースの修正:
$ sudo featherpad ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/b/po/ja.po
「任意の日付書式」で検索:

5025 行目:

#: src/ui_utils.c:710 src/ui_utils.c:797
msgid "_Use Custom Date Format"
msgstr "任意の日付書式を使用する(_U)" ←★1

#: src/ui_utils.c:714
msgid "Custom Date Format"
msgstr "任意の日付書式"  ←★2

#: src/ui_utils.c:715
#, fuzzy
msgid ""
"Custom date format (see https://docs.gtk.org/glib/method.DateTime.format."
"html):"
msgstr ""
"ここに任意の日付と時刻の書式を入力してください。ANSI C の strftime 関数で用い" ←★3
"られる変換指定子が使用できます。"

#: src/ui_utils.c:735
msgid "Date format string could not be converted (possibly too long)."
msgstr "日付書式の文字列が変換できません (おそらく長過ぎます)"

#: src/ui_utils.c:810
msgid "_Set Custom Date Format"
msgstr "任意の日付書式を設定(_S)"  ←★4

↓ 「任意の」を「好みの」などに置換

★1 の修正:

msgstr "好みの日付の書式で日時を挿入(_U)"

-

★2 の修正:

msgstr "好みの日付の書式"

-

★3 の修正:

"ここに好みの日付と時刻の書式を入力してください。ANSI C の strftime 関数で用い"

-

★4 の修正:

msgstr "好みの日付の書式を設定(_S)"

-

(2). 「パッチ1」の作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ diff -Naur a b > 01.geany-po-ja.patch

-

(3). 「パッチ1」の修正:
$ sudo featherpad 01.geany-po-ja.patch

↓ 下記に修正(開始行を削除):

--- a/po/ja.po   2025-11-20 02:54:46.843233207 +0900
+++ b/po/ja.po  2025-11-20 03:14:24.967506637 +0900
@@ -5024,11 +5024,11 @@
 
 #: src/ui_utils.c:710 src/ui_utils.c:797
 msgid "_Use Custom Date Format"
-msgstr "任意の日付書式を使用する(_U)"
+msgstr "好みの日付の書式で日時を挿入(_U)"
 
 #: src/ui_utils.c:714
 msgid "Custom Date Format"
-msgstr "任意の日付書式"
+msgstr "好みの日付の書式"
 
 #: src/ui_utils.c:715
 #, fuzzy
@@ -5036,7 +5036,7 @@
 "Custom date format (see https://docs.gtk.org/glib/method.DateTime.format."
 "html):"
 msgstr ""
-"ここに任意の日付と時刻の書式を入力してください。ANSI C の strftime 関数で用い"
+"ここに好みの日付と時刻の書式を入力してください。ANSI C の strftime 関数で用い"
 "られる変換指定子が使用できます。"
 
 #: src/ui_utils.c:735
@@ -5045,7 +5045,7 @@
 
 #: src/ui_utils.c:810
 msgid "_Set Custom Date Format"
-msgstr "任意の日付書式を設定(_S)"
+msgstr "好みの日付の書式を設定(_S)"
 
 #: src/ui_utils.c:1973
 #, fuzzy

→わざと最終行に空行を追加:

-

(4). 後始末(差分を無くしてます):
$ sudo cp b/po/ja.po a/po/ja.po

-


5). 「パッチ2」の作成:

-

(1). ソースの修正:
$ sudo featherpad ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/b/src/templates.h
「%d.%m.%Y」で検索:

59 行目:

#define GEANY_TEMPLATES_INDENT 3
#define GEANY_TEMPLATES_FORMAT_YEAR              C_("DefaultYear", "%Y")
#define GEANY_TEMPLATES_FORMAT_DATE              C_("DefaultDate", "%Y-%m-%d")
#define GEANY_TEMPLATES_FORMAT_DATETIME          C_("DefaultDateTime", "%d.%m.%Y %H:%M:%S %Z") ←★62 行目

enum
{

★62 行目 の修正:

#define GEANY_TEMPLATES_FORMAT_DATETIME          C_("DefaultDateTime", "%Y-%m-%d %H:%M")

-

(2). 「パッチ2」の作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ diff -Naur a b > 02.geany-src-templates.h.patch

-

(3). 「パッチ2」の修正:
$ sudo featherpad 02.geany-src-templates.h.patch

↓ 下記に修正(開始行を削除):

--- a/src/templates.h    2025-11-20 02:56:13.026466304 +0900
+++ b/src/templates.h   2025-11-20 04:04:03.704501349 +0900
@@ -59,7 +59,7 @@
 #define GEANY_TEMPLATES_INDENT 3
 #define GEANY_TEMPLATES_FORMAT_YEAR              C_("DefaultYear", "%Y")
 #define GEANY_TEMPLATES_FORMAT_DATE              C_("DefaultDate", "%Y-%m-%d")
-#define GEANY_TEMPLATES_FORMAT_DATETIME          C_("DefaultDateTime", "%d.%m.%Y %H:%M:%S %Z")
+#define GEANY_TEMPLATES_FORMAT_DATETIME          C_("DefaultDateTime", "%Y-%m-%d %H:%M")
 
 enum
 {

→わざと最終行に空行を追加:

-

(4). 後始末(差分を無くしてます):
$ sudo cp b/src/templates.h a/src/templates.h

-


6). 「パッチ3」を生成するスクリプトを作成:

-

(1). ソースの修正:
$ sudo featherpad ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/b/src/ui_utils.c
「dd.mm.yyyy」で検索:

-

698 行目:(Tab でインデント)
 if (utils_str_equal(_("dd.mm.yyyy"), date_style)) ←★698 行目
        format = "%d.%m.%Y";
    else if (utils_str_equal(_("mm.dd.yyyy"), date_style))
        format = "%m.%d.%Y";
    else if (utils_str_equal(_("yyyy/mm/dd"), date_style))
        format = "%Y/%m/%d";
    else if (utils_str_equal(_("dd.mm.yyyy hh:mm:ss"), date_style))
        format = "%d.%m.%Y %H:%M:%S";
    else if (utils_str_equal(_("mm.dd.yyyy hh:mm:ss"), date_style))
        format = "%m.%d.%Y %H:%M:%S";
    else if (utils_str_equal(_("yyyy/mm/dd hh:mm:ss"), date_style))
        format = "%Y/%m/%d %H:%M:%S";
    else if (utils_str_equal(_("_Use Custom Date Format"), date_style))
        format = ui_prefs.custom_date_format;
    else
    {

★698 行目 の修正:

 if (utils_str_equal(_("yyyy-mm-dd hh:mm"), date_style))
        format = "%Y-%m-%d %H:%M";

-

775 行目:(Tab でインデント)
 insert_date_items(menu_edit, menu_popup, _("dd.mm.yyyy")); ←★775 行目
    insert_date_items(menu_edit, menu_popup, _("mm.dd.yyyy"));
    insert_date_items(menu_edit, menu_popup, _("yyyy/mm/dd"));

★775 行目 の修正:

 insert_date_items(menu_edit, menu_popup, _("yyyy-mm-dd hh:mm"));

-

「%d.%m.%Y」で検索:

-

695 行目:
     ui_prefs.custom_date_format = g_strdup("%d.%m.%Y"); ←★695 行目
    }

    if (utils_str_equal(_("dd.mm.yyyy"), date_style))
        format = "%d.%m.%Y";
    else if (utils_str_equal(_("mm.dd.yyyy"), date_style))
        format = "%m.%d.%Y";
    else if (utils_str_equal(_("yyyy/mm/dd"), date_style))
        format = "%Y/%m/%d";
    else if (utils_str_equal(_("dd.mm.yyyy hh:mm:ss"), date_style))
        format = "%d.%m.%Y %H:%M:%S";
    else if (utils_str_equal(_("mm.dd.yyyy hh:mm:ss"), date_style))
        format = "%m.%d.%Y %H:%M:%S";
    else if (utils_str_equal(_("yyyy/mm/dd hh:mm:ss"), date_style))
        format = "%Y/%m/%d %H:%M:%S";
    else if (utils_str_equal(_("_Use Custom Date Format"), date_style))
        format = ui_prefs.custom_date_format;
    else
    {

★695 行目 の修正:

     ui_prefs.custom_date_format = g_strdup("%Y-%m-%d %H:%M");

-

(2). 「パッチ3」を生成するスクリプトの元を作成:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ diff -Naur a b > 03.geany-src-ui-utils.c.sh

→「.sh」であることに注目:

-

(3). 「パッチ3」のスクリプトの元を修正:
$ sudo featherpad 03.geany-src-ui-utils.c.sh

↓ 下記に修正:(先頭行を削除)

--- a/src/ui_utils.c 2025-11-20 02:56:13.014465436 +0900
+++ b/src/ui_utils.c    2025-11-20 04:30:33.596793645 +0900
@@ -692,11 +692,11 @@
    if (utils_str_equal("", ui_prefs.custom_date_format))
    {
        g_free(ui_prefs.custom_date_format);
-       ui_prefs.custom_date_format = g_strdup("%d.%m.%Y");
+       ui_prefs.custom_date_format = g_strdup("%Y-%m-%d %H:%M");
    }
 
-   if (utils_str_equal(_("dd.mm.yyyy"), date_style))
-       format = "%d.%m.%Y";
+   if (utils_str_equal(_("yyyy-mm-dd hh:mm"), date_style))
+       format = "%Y-%m-%d %H:%M";
    else if (utils_str_equal(_("mm.dd.yyyy"), date_style))
        format = "%m.%d.%Y";
    else if (utils_str_equal(_("yyyy/mm/dd"), date_style))
@@ -772,7 +772,7 @@
    GtkWidget *item;
    gchar *str;
 
-   insert_date_items(menu_edit, menu_popup, _("dd.mm.yyyy"));
+   insert_date_items(menu_edit, menu_popup, _("yyyy-mm-dd hh:mm"));
    insert_date_items(menu_edit, menu_popup, _("mm.dd.yyyy"));
    insert_date_items(menu_edit, menu_popup, _("yyyy/mm/dd"));
 

→Ctrl+S で保存:

-

注意: ソースファイルにて、インデント(字下げ)の文字が統一されておらず、一部に「Tab」が使われています:

本来は、こちらのファイルをパッチとして使いたいところですが、グラウザ経由だと「Tab」がスペースになり、比較で矛盾が生じてパッチしてもらえないので、工夫しました:

-

(4). 「パッチ3」を生成する(仮の)スクリプトを作成:
$ sudo featherpad 03.geany-src-ui-utils.c.sh

インデントに「Tab」が使われており、ブラウザ経由でコピーして貼り付けると、
「スペース」になるので、パッチが無効になります。その対策です:

「featherpad」を使い、文字列の置換をうまく使い、スクリプトに変換:

-

1. featherpad にて、「オプション」→「設定」→「テキスト」タブ→「空白マークを表示する」にチェック

  →「Tab」文字が「タブ(→)」マークで表示されます:

2. 置換にて、タブ文字をエスケープ文字に変換:

  「タブ(→)」→「\t」

3. 置換にて、「"」文字を「\"」文字に変換:

  「"」文字を「\"」(バックスラッシュ ¥)

4. 置換にて、行末の改行を、下記のように、行頭と含めて、一緒に処理:

  「改行」→「"改行echo -e "」

5. 出来た、(少し乱れた)仮の「スクリプト」ファイル:

--- a/src/ui_utils.c\\t2025-11-20 02:56:13.014465436 +0900"
echo -e "+++ b/src/ui_utils.c\\t2025-11-20 04:30:33.596793645 +0900"
echo -e "@@ -692,11 +692,11 @@"
echo -e " \\tif (utils_str_equal(\"\", ui_prefs.custom_date_format))"
echo -e " \\t{"
echo -e " \\t\\tg_free(ui_prefs.custom_date_format);"
echo -e "-\\t\\tui_prefs.custom_date_format = g_strdup(\"%d.%m.%Y\");"
echo -e "+\\t\\tui_prefs.custom_date_format = g_strdup(\"%Y-%m-%d %H:%M\");"
echo -e " \\t}"
echo -e " "
echo -e "-\\tif (utils_str_equal(_(\"dd.mm.yyyy\"), date_style))"
echo -e "-\\t\\tformat = \"%d.%m.%Y\";"
echo -e "+\\tif (utils_str_equal(_(\"yyyy-mm-dd hh:mm\"), date_style))"
echo -e "+\\t\\tformat = \"%Y-%m-%d %H:%M\";"
echo -e " \\telse if (utils_str_equal(_(\"mm.dd.yyyy\"), date_style))"
echo -e " \\t\\tformat = \"%m.%d.%Y\";"
echo -e " \\telse if (utils_str_equal(_(\"yyyy/mm/dd\"), date_style))"
echo -e "@@ -772,7 +772,7 @@"
echo -e " \\tGtkWidget *item;"
echo -e " \\tgchar *str;"
echo -e " "
echo -e "-\\tinsert_date_items(menu_edit, menu_popup, _(\"dd.mm.yyyy\"));"
echo -e "+\\tinsert_date_items(menu_edit, menu_popup, _(\"yyyy-mm-dd hh:mm\"));"
echo -e " \\tinsert_date_items(menu_edit, menu_popup, _(\"mm.dd.yyyy\"));"
echo -e " \\tinsert_date_items(menu_edit, menu_popup, _(\"yyyy/mm/dd\"));""
echo -e "echo -e ""
echo -e "

→Ctrl+S で保存:

-

(5). 「パッチ3」を生成するスクリプトを動くように修正:

ファイルの先頭と、最終行が乱れているので手直ししました:

$ sudo featherpad 03.geany-src-ui-utils.c.sh

↓ 修正:

#!/bin/bash
echo ""
echo -e "--- a/src/ui_utils.c\\t2025-11-20 02:56:13.014465436 +0900"
echo -e "+++ b/src/ui_utils.c\\t2025-11-20 04:30:33.596793645 +0900"
echo -e "@@ -692,11 +692,11 @@"
echo -e " \\tif (utils_str_equal(\"\", ui_prefs.custom_date_format))"
echo -e " \\t{"
echo -e " \\t\\tg_free(ui_prefs.custom_date_format);"
echo -e "-\\t\\tui_prefs.custom_date_format = g_strdup(\"%d.%m.%Y\");"
echo -e "+\\t\\tui_prefs.custom_date_format = g_strdup(\"%Y-%m-%d %H:%M\");"
echo -e " \\t}"
echo -e " "
echo -e "-\\tif (utils_str_equal(_(\"dd.mm.yyyy\"), date_style))"
echo -e "-\\t\\tformat = \"%d.%m.%Y\";"
echo -e "+\\tif (utils_str_equal(_(\"yyyy-mm-dd hh:mm\"), date_style))"
echo -e "+\\t\\tformat = \"%Y-%m-%d %H:%M\";"
echo -e " \\telse if (utils_str_equal(_(\"mm.dd.yyyy\"), date_style))"
echo -e " \\t\\tformat = \"%m.%d.%Y\";"
echo -e " \\telse if (utils_str_equal(_(\"yyyy/mm/dd\"), date_style))"
echo -e "@@ -772,7 +772,7 @@"
echo -e " \\tGtkWidget *item;"
echo -e " \\tgchar *str;"
echo -e " "
echo -e "-\\tinsert_date_items(menu_edit, menu_popup, _(\"dd.mm.yyyy\"));"
echo -e "+\\tinsert_date_items(menu_edit, menu_popup, _(\"yyyy-mm-dd hh:mm\"));"
echo -e " \\tinsert_date_items(menu_edit, menu_popup, _(\"mm.dd.yyyy\"));"
echo -e " \\tinsert_date_items(menu_edit, menu_popup, _(\"yyyy/mm/dd\"));"
echo ""

先頭行は、(特に、Void Linux では)ないと「スクリプト」としてうまく動きませんでした:
わざと 2行目と最終行に空行(echo "")を追加:

-

→Ctrl+S で保存:

-

「パッチ3」ファイルを生成する「スクリプト」を エディタで表示:

-


7). 「パッチ3」を生成するスクリプトを実行して、「パッチ3」を作成:

-

(1). スクリプトを実行:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ bash 03.geany-src-ui-utils.c.sh > 03.geany-src-ui-utils.c.patch

-

(2). 生成された「パッチ3」ファイルを エディタで表示:

「→」が「タブ」文字です:

-


8). 確認:

$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ ls -1 *.patch
:
01.geany-po-ja.patch
02.geany-src-templates.h.patch
03.geany-src-ui-utils.c.patch ←(タブ文字が含まれるので注意)

-


9). パッチを置くフォルダを作成:

$ cd ~/git/void-packages/
$ sudo mkdir -p srcpkgs/@geany/patches/

-


10). パッチをコピー:

$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ sudo cp *.patch ~/git/void-packages/srcpkgs/@geany/patches/

-

確認:

$ cd ~/git/void-packages/
$ tree srcpkgs/@geany
:
srcpkgs/@geany
├── patches
│   ├── 01.geany-po-ja.patch
│   ├── 02.geany-src-templates.h.patch
│   └── 03.geany-src-ui-utils.c.patch
└── template

2 directories, 4 files

→テンプレートとパッチがあります:

-


11). パッチの作成で使ったフォルダの後始末:

-

(1). クリーンアップ:
$ cd ~/git/void-packages/
$ ./xbps-src clean @geany

クリーンアップで、パッチ作成の「a」と「b」のフォルダを削除できると思ったら、
builddir フォルダの削除が出来ないとエラー:

chmod: changing permissions of '/builddir/@geany-2.1/a/src': Operation not permitted
rm: cannot remove '/builddir/@geany-2.1/b/src/msgwindow.h': Permission denied
:

→手動で作成したフォルダは、手動で削除が必要:

-

(2). 確認:
$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ ls
:
a  b

→作成したパッチファイルは削除されましたが、フォルダは残っています:

-

(3). 手動で削除:
$ sudo rm -r a
$ sudo rm -r b

-

(4). クリーンアップのやり直し:
$ cd ~/git/void-packages/
$ ./xbps-src clean @geany
:
=> @geany-2.1_1: cleaning build directory...

-

-


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

26-3. 「@geany」アプリの「パッケージ化」:

-


1). パッケージ化:

$ cd ~/git/void-packages/
$ ./xbps-src pkg @geany
:
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/geany/templates/files'
 /builddir/.xbps-@geany/wrappers/install -c -m 644  templates/files/file.html templates/files/file_html5.html templates/files/file.php templates/files/file.rb templates/files/file.tex templates/files/main.c templates/files/main.cxx templates/files/main.d templates/files/main.java templates/files/main.md templates/files/main.py templates/files/main.vala templates/files/module.erl templates/files/program.pas '/destdir//@geany-2.1/usr/share/geany/templates/files'
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/geany/colorschemes'
 /builddir/.xbps-@geany/wrappers/install -c -m 644  colorschemes/steampunk.conf colorschemes/tango-dark.conf colorschemes/tango-light.conf colorschemes/tinge.conf colorschemes/ubuntu.conf colorschemes/underthesea.conf colorschemes/vibrant-ink.conf '/destdir//@geany-2.1/usr/share/geany/colorschemes'
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/geany/tags'
 /builddir/.xbps-@geany/wrappers/install -c -m 644  tags/std99.c.tags tags/std.php.tags tags/std.py.tags tags/std.pas.tags tags/entities.html.tags '/destdir//@geany-2.1/usr/share/geany/tags'
 /builddir/.xbps-@geany/wrappers/install -c -m 644  filetype_extensions.conf snippets.conf ui_toolbar.xml geany.glade geany.css '/destdir//@geany-2.1/usr/share/geany/.'
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/geany/templates'
 /builddir/.xbps-@geany/wrappers/install -c -m 644  templates/bsd templates/changelog templates/fileheader templates/function templates/gpl '/destdir//@geany-2.1/usr/share/geany/templates'
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/geany'
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/geany/filedefs'
 /builddir/.xbps-@geany/wrappers/install -c -m 644  filedefs/filetypes.python '/destdir//@geany-2.1/usr/share/geany/filedefs'
make[2]: Leaving directory '/builddir/@geany-2.1/data'
make[1]: Leaving directory '/builddir/@geany-2.1/data'
Making install in tests
make[1]: Entering directory '/builddir/@geany-2.1/tests'
Making install in ctags
make[2]: Entering directory '/builddir/@geany-2.1/tests/ctags'
make[3]: Entering directory '/builddir/@geany-2.1/tests/ctags'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/builddir/@geany-2.1/tests/ctags'
make[2]: Leaving directory '/builddir/@geany-2.1/tests/ctags'
make[2]: Entering directory '/builddir/@geany-2.1/tests'
make[3]: Entering directory '/builddir/@geany-2.1/tests'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/builddir/@geany-2.1/tests'
make[2]: Leaving directory '/builddir/@geany-2.1/tests'
make[1]: Leaving directory '/builddir/@geany-2.1/tests'
make[1]: Entering directory '/builddir/@geany-2.1'
make[2]: Entering directory '/builddir/@geany-2.1'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/sh /builddir/@geany-2.1/build-aux/install-sh -d /destdir//@geany-2.1/usr/share/geany
/builddir/.xbps-@geany/wrappers/install -c -m 644 ./COPYING /destdir//@geany-2.1/usr/share/geany/GPL-2
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/share/applications'
 /builddir/.xbps-@geany/wrappers/install -c -m 644 geany.desktop '/destdir//@geany-2.1/usr/share/applications'
 /usr/bin/mkdir -p '/destdir//@geany-2.1/usr/lib64/pkgconfig'
 /builddir/.xbps-@geany/wrappers/install -c -m 644 geany.pc '/destdir//@geany-2.1/usr/lib64/pkgconfig'
make[2]: Leaving directory '/builddir/@geany-2.1'
make[1]: Leaving directory '/builddir/@geany-2.1'
/void-packages/common/xbps-src/shutils/common.sh: line 67: cd: /builddir/geany-2.1: No such file or directory

赤いエラーが表示:

=> ERROR: geany-devel-2.1_1: cannot access wrksrc directory [/builddir/geany-2.1]
[user@user-pc void-packages]$ 

→エラーになるのは、「@」が付かない「/builddir/geany-2.1」が呼ばれているからみたい:

-


2). 確認:

$ ls masterdir-x86_64/builddir/@geany-2.1/
:
01.geany-po-ja.patch            NEWS              configure           icons
02.geany-src-templates.h.patch  README            configure.ac        libtool
03.geany-src-ui-utils.c.patch   README.I18N       ctags               m4
ABOUT-NLS                       README.Packagers  data                plugins
AUTHORS                         THANKS            doc                 po
COPYING                         TODO              geany.desktop       scintilla
ChangeLog                       aclocal.m4        geany.desktop.in    scripts
ChangeLog.pre-1-22              autogen.sh        geany.exe.manifest  src
HACKING                         build-aux         geany.nsi           stamp-h1
INSTALL                         config.h          geany.nsi.in        tests
Makefile                        config.h.in       geany.pc
Makefile.am                     config.log        geany.pc.in
Makefile.in                     config.status     geany_private.rc

-


3). 「ERROR」する、その上の行の表示を確認:

/void-packages/common/xbps-src/shutils/common.sh: line 67: cd: /builddir/geany-2.1: No such file or directory

→こちらも「@」が付かないアプリのフォルダが呼ばれています:

-

$ pwd
/home/user/git/void-packages

-

$ featherpad common/xbps-src/shutils/common.sh

66 行目:

ch_wrksrc() {
    cd "$wrksrc" || msg_error "$pkgver: cannot access wrksrc directory [$wrksrc]\n"
    if [ -n "$build_wrksrc" ]; then
        cd "$build_wrksrc" || \
            msg_error "$pkgver: cannot access build_wrksrc directory [$build_wrksrc]\n"
    fi
}

→変更した「パッケージ名」がちゃんとセットされていないみたい。

-

「テンプレート」ファイルの後半の部分が影響しているかも:

-

-


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

26-4. 「geany」アプリ関連のテンプレートを確認:

-


1). 「@geany」の「テンプレート」を確認:

$ cat ~/git/void-packages/srcpkgs/@geany/template
# Template file for '@geany'
pkgname=@geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

geany-devel_package() {     ←(注目)
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→「geany-devel」のパッケージ化も含まれています:

-

$ cd ~/git/void-packages/
$ ls srcpkgs | grep geany
:
@geany
geany
geany-devel
geany-plugins
geany-plugins-extra

-


2). 「geany-devel」の「テンプレート」を確認:

$  cat srcpkgs/geany-devel/template
# Template file for 'geany'
pkgname=geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

geany-devel_package() {
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→「geany」(@geany)の「テンプレート」と同じ内容です:

両方のパッケージ名を作成する必要がありそう:

-


3). 参考: 「geany-plugins」の「テンプレート」を確認:

$  cat srcpkgs/geany-plugins/template
# Template file for 'geany-plugins'
pkgname=geany-plugins
version=2.1
revision=2
build_style=gnu-configure
configure_args="--enable-all-plugins
 --disable-geniuspaste --disable-updatechecker --disable-debugger"
hostmakedepends="automake gettext-devel intltool libtool pkg-config vala
 glib-devel"
makedepends="geany-devel lua51-devel ctpl-devel zlib-devel
 gpgme-devel enchant2-devel libgit2-devel
 gtkspell-devel libwebkit2gtk41-devel vte3-devel"
short_desc="Geany IDE plugins"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="http://plugins.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany-plugins/master/NEWS"
distfiles="https://download.geany.org/geany-plugins/geany-plugins-${version}.tar.gz"
checksum=77ec3da07be809357ba9c986e9b72d2eca343008ccc0793673c9dcac2ad8dae1

post_patch() {
    # Use libwebkit2gtk41, cannot be used with updatechecker or geniuspaste
    # See: https://github.com/geany/geany-plugins/issues/1302#issuecomment-1925011272
    vsed -e 's/webkit2gtk-4.0/webkit2gtk-4.1/' -i build/markdown.m4
    vsed -e 's/webkit2gtk-4.0/webkit2gtk-4.1/' -i build/webhelper.m4
}

pre_configure() {
    autoreconf -fi
}

pre_build() {
    # XXX: Compile 'leg' for host arch.
    make CC=cc CFLAGS="-fPIE" -C "markdown/peg-markdown/peg-0.1.9"
}

# These plugins require extra dependencies
geany-plugins-extra_package() {
    short_desc+=" - extra plugins"
    pkg_install() {
        for p in geanygendoc geanylua geanypg geniuspaste \
            git-changebar pretty-printer spellcheck; do
            if [ -x ${DESTDIR}/usr/lib/geany/${p}.so ]; then
                vmove usr/lib/geany/${p}.so
            fi
            if [ -x ${DESTDIR}/usr/share/geany-plugins/${p} ]; then
                vmove usr/share/geany-plugins/${p}
            fi
            if [ -x ${DESTDIR}/usr/share/doc/geany-plugins/${p} ]; then
                vmove usr/share/doc/geany-plugins/${p}
            fi
        done

        vmove usr/lib/geany-plugins/geanylua
    }
}

-


4). 参考: 「geany-plugins-extra」の「テンプレート」を確認:

$  cat srcpkgs/geany-plugins-extra/template
# Template file for 'geany-plugins'
pkgname=geany-plugins
version=2.1
revision=2
build_style=gnu-configure
configure_args="--enable-all-plugins
 --disable-geniuspaste --disable-updatechecker --disable-debugger"
hostmakedepends="automake gettext-devel intltool libtool pkg-config vala
 glib-devel"
makedepends="geany-devel lua51-devel ctpl-devel zlib-devel
 gpgme-devel enchant2-devel libgit2-devel
 gtkspell-devel libwebkit2gtk41-devel vte3-devel"
short_desc="Geany IDE plugins"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="http://plugins.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany-plugins/master/NEWS"
distfiles="https://download.geany.org/geany-plugins/geany-plugins-${version}.tar.gz"
checksum=77ec3da07be809357ba9c986e9b72d2eca343008ccc0793673c9dcac2ad8dae1

post_patch() {
    # Use libwebkit2gtk41, cannot be used with updatechecker or geniuspaste
    # See: https://github.com/geany/geany-plugins/issues/1302#issuecomment-1925011272
    vsed -e 's/webkit2gtk-4.0/webkit2gtk-4.1/' -i build/markdown.m4
    vsed -e 's/webkit2gtk-4.0/webkit2gtk-4.1/' -i build/webhelper.m4
}

pre_configure() {
    autoreconf -fi
}

pre_build() {
    # XXX: Compile 'leg' for host arch.
    make CC=cc CFLAGS="-fPIE" -C "markdown/peg-markdown/peg-0.1.9"
}

# These plugins require extra dependencies
geany-plugins-extra_package() {
    short_desc+=" - extra plugins"
    pkg_install() {
        for p in geanygendoc geanylua geanypg geniuspaste \
            git-changebar pretty-printer spellcheck; do
            if [ -x ${DESTDIR}/usr/lib/geany/${p}.so ]; then
                vmove usr/lib/geany/${p}.so
            fi
            if [ -x ${DESTDIR}/usr/share/geany-plugins/${p} ]; then
                vmove usr/share/geany-plugins/${p}
            fi
            if [ -x ${DESTDIR}/usr/share/doc/geany-plugins/${p} ]; then
                vmove usr/share/doc/geany-plugins/${p}
            fi
        done

        vmove usr/lib/geany-plugins/geanylua
    }
}

-

参考:

「geany」と「geany-devel」についてのインストールについて:

オンラインで検索すると:

「geany」:

Geanyという軽量なテキストエディタ、を兼ねた、統合開発環境 (IDE) の実行ファイルと基本的なライブラリが含まれるパッケージで、通常の利用(コードの編集、ビルド、実行など)には、このパッケージのみで十分です。

-

「geany-devel」:

このパッケージには、geany 本体や関連プラグインソースコードからビルドしたり、独自のプラグインを開発したりするために必要な開発者向けファイル(ヘッダーファイルや開発ライブラリ)が含まれています。

通常は不要で、プラグイン開発などを行う場合にインストールします。

-

-


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

26-5. 「@geany」と「@geany-devel」のテンプレートを修正:

-


1). 「@geany」の「テンプレート」を修正:

$ sudo featherpad ~/git/void-packages/srcpkgs/@geany/template
# Template file for '@geany'
pkgname=@geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

@geany-devel_package() {     ←(注目)
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→「@geany-devel」のパッケージ化も含まれています:

-


2). 「@geany-devel」フォルダのリンクを作成:

他の「*-devel」フォルダがあるパッケージと同じく、「*-devel」は実体ではなく「リンク」でした:

名前は違うけど、同じソースで開発版と通常版を兼ねているみたい:

-

実体として「@geany-devel」フォルダをコピーして作成すると、 リンク先が「@geany」でなく「geany」となり、矛盾が生じます:

-

実際にある(実体の)「@geany」フォルダから、「@geany-devel」フォルダのリンクを作成:
$ cd ~/git/void-packages/srcpkgs/
$ sudo ln -s @geany @geany-devel

-

確認:

$ ls -l | grep geany
:
drwxr-xr-x 3 root root 4096 11月 20 16:53 @geany
lrwxrwxrwx 1 root root    6 12月  1 16:34 @geany-devel -> @geany ←(注目)
drwxr-xr-x 2 user user 4096 11月 20 23:35 geany
lrwxrwxrwx 1 user user    5 11月 11 18:18 geany-devel -> geany
drwxr-xr-x 2 user user 4096 11月 11 18:18 geany-plugins
lrwxrwxrwx 1 user user   13 11月 11 18:18 geany-plugins-extra -> geany-plugins

→リンクでなく、単に「geany-devel」をコピーして作成すると、リンク先が「geany」のままです:

-


3). 「@geany-devel」の「テンプレート」を確認:

$ cd ~/git/void-packages/
$ cat srcpkgs/@geany-devel/template
# Template file for '@geany'
pkgname=@geany
version=2.1
revision=1
build_style=gnu-configure
configure_args="--enable-vte --enable-gtk3"
hostmakedepends="pkg-config libtool gettext"
makedepends="gtk+3-devel"
depends="hicolor-icon-theme desktop-file-utils"
checkdepends="xvfb-run python3"
short_desc="Fast and lightweight IDE"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://www.geany.org"
changelog="https://raw.githubusercontent.com/geany/geany/master/NEWS"
distfiles="https://download.geany.org/geany-${version}.tar.bz2"
checksum=6b96a8844463300c10b9692a0a5edad8236eec9e84342f575f83d4fc89331228
make_check_pre="xvfb-run"
python_version=3

pre_check() {
    # Void sets HOME to /tmp by default
    # Use $PWD to avoid /tmp evaluating to ~
    export HOME="$PWD"
}

@geany-devel_package() {
    depends="libglib-devel gtk+3-devel ${sourcepkg}>=${version}_${revision}"
    short_desc+=" - Development files"
    pkg_install() {
        vmove usr/include
        vmove usr/lib/pkgconfig
        vmove "usr/lib/*.so"
    }
}

→リンクなので、当然ながら「@geany」の「テンプレート」と同じ内容です:

「@geany」のパッケージ化には、両方のパッケージ名が必要です:

-

-


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

26-6. 「@geany」のパッケージ化とインストール:

-


1). パッケージ化:

$ cd ~/git/void-packages/
$ ./xbps-src clean @geany
$ ./xbps-src pkg @geany
=> xbps-src: updating repositories for host (x86_64)...
[*] Updating repository `https://repo-default.voidlinux.org/current/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 2040KB [avg rate: 922KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/nonfree/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/debug/x86_64-repodata' ...
x86_64-repodata: 908KB [avg rate: 823KB/s]
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/bootstrap/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/x86_64-repodata' ...
[*] Updating repository `https://repo-default.voidlinux.org/current/multilib/nonfree/x86_64-repodata' ...
=> xbps-src: updating software in / masterdir...
=> xbps-src: cleaning up / masterdir...
=> @geany-2.1_1: removing autodeps, please wait...
:
=> @geany-2.1_1: running pre-pkg hook: 999-collected-rdeps ...
   hicolor-icon-theme>=0 desktop-file-utils>=0 glibc>=2.41_1 atk>=1.26.0_1 cairo>=1.8.6_1 libgcc>=4.4.0_1 gtk+3>=3.0.0_1 gdk-pixbuf>=2.22.0_1 glib>=2.86.0_1 libharfbuzz>=5.1.0_1 pango>=1.24.0_1 libstdc++>=4.4.0_1 zlib>=1.2.3_1 
=> @geany-devel-2.1_1: running do-pkg hook: 00-gen-pkg ...
=> Creating @geany-devel-2.1_1.x86_64.xbps for repository /host/binpkgs ...
=> @geany-devel-2.1_1: running post-pkg hook: 00-register-pkg ...
=> @geany-2.1_1: running do-pkg hook: 00-gen-pkg ...
=> Creating @geany-2.1_1.x86_64.xbps for repository /host/binpkgs ...
=> @geany-2.1_1: running post-pkg hook: 00-register-pkg ...
=> Registering new packages to /host/binpkgs
index: added `@geany-2.1_1' (x86_64).
index: added `@geany-devel-2.1_1' (x86_64).
index: 7 packages registered.
=> @geany-2.1_1: removing autodeps, please wait...
=> @geany-2.1_1: cleaning build directory...
=> @geany: removing files from destdir...
=> @geany-devel: removing files from destdir...
[user@user-pc void-packages]$ 

→「@geany-devel」もパッケージ化できる状態に(リンクを作成)したら、

 パッケージ化できました:

-


2). そして、一緒に、@geany-devel もパッケージ化されました:

$ cd ~/git/void-packages/
$ ls -l hostdir/binpkgs/
:
-rw-r--r-- 1 user user  954178 11月 30 02:13 @featherpad-1.6.2_1.x86_64.xbps
-rw-r--r-- 1 user user 5071401 12月  1 16:54 @geany-2.1_1.x86_64.xbps    ←(今回)
-rw-r--r-- 1 user user   97002 12月  1 16:54 @geany-devel-2.1_1.x86_64.xbps  ←(今回)
-rw-r--r-- 1 user user 1125122 11月 14 22:07 @kshisen-25.08.1_1.x86_64.xbps
-rw-r--r-- 1 user user  956841 11月 11 18:44 FeatherPad-1.6.2_1.x86_64.xbps
-rw-r--r-- 1 user user 5071500 11月 19 21:02 geany-2.1_1.x86_64.xbps
-rw-r--r-- 1 user user   97023 11月 19 21:02 geany-devel-2.1_1.x86_64.xbps
-rw-rw-r-- 1 user user    1978 12月  1 16:54 x86_64-repodata
→パッケージ名(フォルダ名)を変えるときは、開発版など、リンクしているパッケージ(フォルダ)がある場合があるので、リンクしなおさないとインストールで失敗する場合があります:

-


3). すでに「geany」がインストールされていたら削除:

確認:
$ xbps-query -Rs geany
:
[-] geany-2.1_1               Fast and lightweight IDE
[-] geany-devel-2.1_1         Fast and lightweight IDE - Development files
[-] geany-plugins-2.1_2       Geany IDE plugins
[-] geany-plugins-extra-2.1_2 Geany IDE plugins - extra plugins

もしくは、

$ xbps-query -s geany
[*] @geany-2.1_1 Fast and lightweight IDE

-

削除:
$ sudo xbps-remove geany

もしくは、

$ sudo xbps-remove @geany

-

設定ファイルの削除:
$ rm ~/.config/geany/geany.conf

→削除しておかないと、新しい設定で上書きされません:

-


4). インストール:

$ xi @geany
:
Name   Action    Version           New version            Download size
@geany install   -                 2.1_1                  - 

-

確認:
$ geany --version
:
geany 2.1 (Nov 20 2025 以降に次を使用してビルドGTK 3.24.50, GLib 2.86.1)

-

-


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

26-7. 「@geany」のインストール後の確認:

-


1). 日時のデフォルト値を確認:

インストール直後:

$ cat ~/.config/geany/geany.conf | grep "pref_template_datetime="
cat: /home/user/.config/geany/geany.conf: そのようなファイルやディレクトリはありません

-

メニュー→「開発」→「Geany」

アプリを一度起動して、閉じると:

$ cat ~/.config/geany/geany.conf | grep "pref_template_datetime="
pref_template_datetime=%Y-%m-%d %H:%M

-


2). 設定ファイルの設定値を抜粋して表示:

$ cat ~/.config/geany/geany.conf
pref_template_year=%Y
pref_template_date=%Y-%m-%d
pref_template_datetime=%Y-%m-%d %H:%M
:
custom_date_format=

-


3). 編集→日付を挿入→「好みの日付の書式を設定」

自動で入力されました:

%Y-%m-%d %H:%M

→ここで、入力欄の右下の、OK

アプリを閉じます:

-


4). 好みで設定した日付の書式を確認:

$ cat ~/.config/geany/geany.conf | grep "custom_date_format="
custom_date_format=%Y-%m-%d %H:%M

→デフォルト値が設定されました:

-


5). 編集→日付を挿入→「yyyy-mm-dd hh:mm」

2025-12-01 17:28

-


6). 編集→日付を挿入→「好みの日付の書式で日時を挿入」

2025-12-01 17:29

-

-


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

30. 参考: 「./configure」でのビルドについての説明:

-

「./configure」を使ったビルドについての説明があり、

「テンプレート」に「build_style=gnu-configure」の指定がある場合の参考になります:

-


1). 「@geany」の ソースファイルを展開:

$ cd ~/git/void-packages/
$ ./xbps-src clean @geany
$ ./xbps-src fetch @geany
$ ./xbps-src extract @geany

-


2). 「@geany」の ソースファイルを確認:

$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ ls -p
:
ABOUT-NLS           README            configure.ac        m4/
AUTHORS             README.I18N       ctags/              plugins/
COPYING             README.Packagers  data/               po/
ChangeLog           THANKS            doc/                scintilla/
ChangeLog.pre-1-22  TODO              geany.desktop.in    scripts/
HACKING             aclocal.m4        geany.exe.manifest  src/
INSTALL             autogen.sh        geany.nsi.in        tests/
Makefile.am         build-aux/        geany.pc.in
Makefile.in         config.h.in       geany_private.rc
NEWS                configure         icons/

-


3). ソースに含まれる「INSTALL」の内容:

$ cd ~/git/void-packages/masterdir-x86_64/builddir/@geany-2.1/
$ cat INSTALL

一部を和訳:

Installation Instructions
*************************

   Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free
Software Foundation, Inc.

   Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.  This file is offered as-is,
without warranty of any kind.
基本的なインストール
==================

簡単に言うと、シェル コマンド「./configure && make && make install」で
このパッケージを構成、ビルド、インストールする必要があります。

以下の詳細な手順は一般的なものです。
このパッケージに固有の手順については、「README」ファイルを参照してください。

一部のパッケージではこの「INSTALL」ファイルが提供されますが、
以下に記載されている機能のすべてが実装されているわけではありません。

特定のパッケージにオプション機能がないことは、必ずしもバグではありません。
GNU パッケージに関するその他の推奨事項については、
*note Makefile の規則: (標準)Makefile の規則を参照してください。

-

「configure」シェル スクリプトは、コンパイル中に使用されるさまざまな
システム依存変数の正しい値を推測しようとします。
 これらの値を使用して、パッケージの各ディレクトリに「Makefile」を作成します。

また、システム依存の定義を含む 1 つ以上の「.h」ファイルも作成される場合があります。
最後に、現在の設定を再作成するために将来実行できるシェル スクリプト「config.status」と、
コンパイラ出力 (主に「configure」のデバッグに役立ちます) を含むファイル「config.log」を
作成します。

-

また、再構成を高速化するためにテストの結果を保存するオプションのファイル 
(通常は「config.cache」と呼ばれ、「--cache-file=config.cache」または
単に「-C」で有効になります) を使用することもできます。

古いキャッシュ ファイルを誤って使用することによる問題を防ぐため、
キャッシュはデフォルトで無効になっています。

-

パッケージをコンパイルするために通常とは異なることを行う必要がある場合は、
「configure」がそれらを実行するかどうかをどのようにチェックできるかを考えて、
「README」に記載されているアドレスに diff または指示をメールしてください。
次のリリースで検討されます。

キャッシュを使用していて、ある時点で「config.cache」に保持したくない結果が
含まれている場合は、キャッシュを削除または編集できます。

-

ファイル「configure.ac」(または「configure.in」)は、
「autoconf」というプログラムによって「configure」を作成するために使用されます。 

「configure.ac」を変更する場合、または新しいバージョンの「autoconf」を使用して
「configure」を再生成する場合は、「configure.ac」が必要です。
このパッケージをコンパイルする最も簡単な方法は次のとおりです:


  1. パッケージのソース コードを含むディレクトリに「cd」で移動し、
     「./configure」と入力して、システム用にパッケージを構成します。

     「configure」の実行には時間がかかる場合があります。
      実行中に、どの機能をチェックしているかを示すいくつかのメッセージが
      出力されます。

  2. 「make」と入力してパッケージをコンパイルします。

  3. 必要に応じて、「make check」と入力して、
     パッケージに付属するセルフテストを実行します。

     通常は、ビルドしたばかりのアンインストールされたバイナリを使用します。

  4. 「make install」と入力して、プログラム、データ ファイル、ドキュメントを
     インストールします。

     root が所有するプレフィックスにインストールする場合は、
     パッケージを通常のユーザとして構成およびビルドし、
     「make install」フェーズのみを root 権限で実行することをお勧めします。

  5. 必要に応じて、「make installcheck」と入力してセルフテストを繰り返し
     ますが、今回は最終的にインストールされた場所にあるバイナリを使います。

     このターゲットは何もインストールしません。
     このターゲットを通常のユーザーとして実行すると、
     特に以前の「make install」に root 権限が必要だった場合、
     インストールが正しく完了したことが確認されます。

  6. 「make clean」と入力すると、ソース コード ディレクトリから
     プログラム バイナリとオブジェクト ファイルを削除できます。

     「configure」によって作成されたファイルも削除するには 
     (別の種類のコンピューター用にパッケージをコンパイルできるように)、
     「make distclean」と入力します。 

     「make Maintainer-clean」ターゲットもありますが、
     これは主にパッケージの開発者を対象としています。
     これを使用する場合、
     ディストリビューションに付属のファイルを再生成するために、
     他のあらゆる種類のプログラムを入手する必要がある場合があります。

  7. 多くの場合、「make uninstall」と入力して、
     インストールされたファイルを再度削除することもできます。 

     実際には、GNU コーディング標準ではアンインストールが必須である
     にもかかわらず、すべてのパッケージでアンインストールが正しく機能
     するかどうかがテストされているわけではありません。

  8. 一部のパッケージ、特に Automake を使用するパッケージでは、
     「make distcheck」が提供されており、開発者はこれを使用して、
     「make install」や「make uninstall」などの他のすべてのターゲット
     が正しく動作することをテストできます。

     通常、このターゲットはエンド ユーザによって実行されません。
コンパイラとオプション
=====================

   一部のシステムでは、コンパイルまたはリンクに「configure」
スクリプトが認識しない特殊なオプションが必要です。
関連する環境変数の一部の詳細については、
「./configure --help」を実行してください。

   コマンドラインまたは環境で変数を設定することにより、
構成パラメーターに「configure」初期値を与えることができます。

以下に例を示します:

     ./configure CC=c99 CFLAGS=-g LIBS=-lposix

   *詳細については、「変数の定義:」を参照してください。
複数のアーキテクチャ用のコンパイル
====================================

 各アーキテクチャのオブジェクト ファイルを独自のディレクトリに配置
することで、複数の種類のコンピュータ用にパッケージを同時にコンパイル
できます。

これを行うには、GNU の「make」を使用できます。
オブジェクト ファイルと実行可能ファイルを配置するディレクトリに
「cd」で移動し、「configure」スクリプトを実行します。

「configure」は、「configure」が存在するディレクトリと
「..」内のソース コードを自動的にチェックします。
これは「VPATH」ビルドとして知られています。

 GNU ではない「make」では、ソース コード ディレクトリで
一度に 1 つのアーキテクチャ用にパッケージをコンパイルする方が
安全です。

 あるアーキテクチャ用のパッケージをインストールした後、
別のアーキテクチャ用に再構成する前に「make distclean」を
使います。

 MacOS X 10.5 以降のシステムでは、コンパイラには複数の「-arch」
オプションを指定しますが、
プリプロセッサには 1 つの「-arch」オプションのみを指定することで、
複数のシステム タイプ (「fat」バイナリまたは「ユニバーサル」バイナリ
と呼ばれます) で動作するライブラリ、および実行可能ファイルを作成
できます。

以下に例を示します:

     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
                 CPP="gcc -E" CXXCPP="g++ -E"

これは、すべてのケースで動作する出力を生成することを保証するもの
ではありません。
問題がある場合は、一度に 1 つのアーキテクチャを構築し、
「lipo」ツールを使用して結果を結合する必要がある場合があります。
インストール名
==================

 デフォルトでは、「make install」は、
パッケージのコマンドを「/usr/local/bin」にインストールし、
ファイルは「/usr/local/include」にインクルードします。

「configure」にオプション「--prefix=PREFIX」を与えることで、
「/usr/local」以外のインストール場所を指定できます。
ここで、PREFIX は絶対ファイル名である必要があります。

 アーキテクチャ固有のファイルとアーキテクチャに依存しないファイルに
別々のインストール場所を指定できます。

オプション「--exec-prefix=PREFIX」を「configure」に渡すと、パッケージは
プログラムとライブラリをインストールするためのインストール場所として
PREFIX を使用します。

ドキュメントやその他のデータ ファイルでは、引き続き通常のパスが
使用されます。

 さらに、特殊なディレクトリ レイアウトを使用する場合は、
「--bindir=DIR」のようなオプションを指定して、
特定の種類のファイルに異なる値を指定できます。
「configure --help」を実行すると、設定できるディレクトリのリストと
そこに含まれるファイルの種類が表示されます。

一般に、これらのオプションのデフォルトは「${prefix}」で表現されるため、
「--prefix」だけを指定すると、明示的に指定されていない
他のすべてのディレクトリ仕様に影響します。

 インストール場所に影響を与える最も移植性の高い方法は、
正しい場所を「configure」に渡すことです。

-

ただし、多くのパッケージでは、
再構成や再コンパイルを行わずにインストール場所を変更するために、
変数の割り当てを「make install」コマンド ラインに渡す
次のショートカットのいずれかまたは両方が提供されています。

-

 1番目の方法では、影響を受けるディレクトリごとに
オーバーライド変数を指定します。

例えば、「make install prefix=/alternate/directory」は、
「${prefix}」で表現されたすべてのディレクトリ構成変数の代替場所
を選択します。

 「configure」中に指定されたが、「${prefix}」に関しては
指定されなかったディレクトリは、インストール全体を再配置する
ために、インストール時にそれぞれ上書きする必要があります。

 各ディレクトリ変数の makefile 変数をオーバーライドするやり方は、
GNU コーディング標準で要求されており、理想的には再コンパイルが
発生しません。

ただし、一部のプラットフォームには共有ライブラリのセマンティクス
に関する既知の制限があり、
この方法を使用すると最終的に再コンパイルが必要になり、
特に GNU Libtool を使用するパッケージで顕著です。

-

 2番目の方法では、「DESTDIR」変数を指定します。

例えば、「make install DESTDIR=/alternate/directory」と指定すると、
すべてのインストール名の前に「/alternate/directory」が追加されます。

「DESTDIR」オーバーライドのやり方は、GNU コーディング標準では必須
ではなく、ドライブ文字を持つプラットフォームでは機能しません。

一方、再コンパイルの問題を回避する点では優れており、「configure」時に
一部のディレクトリ オプションが「${prefix}」に関して指定されていない場合
でも正常に動作します。
オプション機能
=================

パッケージがサポートしている場合は、「configure」オプションに
「--program-prefix=PREFIX」または「--program-suffix=SUFFIX」を指定する
ことで、プログラムの名前に追加の接頭語または接尾語を付けてインストール
することができます。

-

一部のパッケージは、「configure」の「--enable-FEATURE」オプションに
注意を払います。ここで、FEATURE はパッケージのオプション部分を示します。

また、「--with-PACKAGE」オプションにも注意を払うかもしれません。
ここで、PACKAGE は「gnu-as」または「x」(X Window System の場合) のような
ものです。 

「README」には、パッケージが認識する「--enable-」および「--with-」
オプションが記載されている必要があります。

-

X Window System を使用するパッケージの場合、「configure」は通常、
X インクルード ファイルとライブラリ ファイルを自動的に検索できますが、
見つからない場合は、「configure」オプション「'--x-includes=DIR」および
「'--x-libraries=DIR」を使用してそれらの場所を指定できます。

-

一部のパッケージでは、「make」の実行がどの程度冗長になるかを構成する
機能を提供しています。

これらのパッケージの場合、「./configure --enable-silent-rules」を実行すると
デフォルトが最小限の出力に設定されますが、
これは「make V=1」でオーバーライドできます。
 
「./configure --disable-silent-rules」の実行中にデフォルトが冗長に設定されます
が、これは「make V=0」でオーバーライドできます。
特定のシステム
==================

 HP-UX では、デフォルトの C コンパイラは ANSI C と互換性がありません。
GNU CC がインストールされていない場合は、ANSI C コンパイラを使用する
ために次のオプションを使用することをお勧めします:

     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"

それが機能しない場合は、HP-UX 用の GCC のビルド済みバイナリを
インストールします。

-

HP-UX の「make」は、前提条件と同じタイムスタンプを持つターゲットを
更新するため、「configure」などの出荷時に生成されたファイルが関係
する場合は通常使用できません。 代わりに GNU 'make' を使用してください。

-

 OSF/1 別名 Tru64 では、デフォルトの C コンパイラの一部のバージョンは、
その '<wchar.h>' ヘッダー ファイルを解析できません。
オプション「-nodtk」を回避策として使用できます。

したがって、GNU CC がインストールされていない場合は、

     ./configure CC="cc"

を試し、それが機能しない場合は

     ./configure CC="cc -nodtk"

を試すことをお勧めします。

-

 Solaris では、「PATH」の先頭に「/usr/ucb」を入れないでください。
このディレクトリには、機能不全に陥ったプログラムがいくつか含まれて
います。これらのプログラムの動作するバージョンは、「/usr/bin」で入手
できます。 

したがって、「PATH」に「/usr/ucb」が必要な場合は、「/usr/bin」の後に
配置します。

-

 Haiku では、すべてのユーザにインストールされるソフトウェアは、
「/usr/local」ではなく「/boot/common」に置かれます。

 次のオプションを使用することをお勧めします:

     ./configure --prefix=/boot/common
システムタイプの指定
==========================

 「configure」では自動的に認識できないいくつかの機能がある可能性
がありますが、パッケージが実行されるマシンのタイプによって決定
する必要があります。

通常、パッケージが同じアーキテクチャで実行されるようにビルドされ
ていると仮定すると、「configure」でそれを判断できますが、
マシンタイプを推測できないというメッセージが出力される場合は、
「--build=TYPE」オプションを指定します。

TYPE には、「sun4」などのシステム タイプの短縮名、または
次の形式の正規名のいずれかを指定できます:

     CPU-COMPANY-SYSTEM

ここで、SYSTEM は次のいずれかの形式になります:

     OS
     KERNEL-OS

 各フィールドの可能な値については、ファイル「config.sub」を
参照してください。

「config.sub」がこのパッケージに含まれていない場合、
このパッケージはマシンタイプを知る必要はありません。

-

 クロスコンパイル用のコンパイラ ツールを構築している場合は、
オプション「--target=TYPE」を使用して、コードを生成する
システムのタイプを選択する必要があります。

 ビルド プラットフォームとは異なるプラットフォーム用のコードを
生成するクロス コンパイラーを使用したい場合は、
「--host=TYPE」を使用して「ホスト」プラットフォーム (つまり、
生成されたプログラムが最終的に実行されるプラットフォーム) 
を指定する必要があります。
デフォルトの共有
================

 共有する「configure」スクリプトのデフォルト値を設定したい場合は、
「CC」、「cache_file」、「prefix」などの変数のデフォルト値を与える
「config.site」というサイト シェル スクリプトを作成できます。

「configure」は、「PREFIX/share/config.site」が存在する場合は
それを検索し、存在する場合は「PREFIX/etc/config.site」を検索します。

または、「CONFIG_SITE」環境変数をサイト スクリプトの場所に
設定できます。

警告: すべての「configure」スクリプトがサイト スクリプトを検索する
わけではありません。
変数の定義
==================

 サイトのシェル スクリプトで定義されていない変数は、
「configure」に渡された環境で設定できます。

ただし、一部のパッケージではビルド中に configure が再度実行され、
これらの変数のカスタマイズされた値が失われる可能性があります。

この問題を回避するには、「configure」コマンド ラインで
「VAR=value」を使用して設定する必要があります。

例えば:

     ./configure CC=/usr/local2/bin/gcc

を指定すると、指定された「gcc」が C コンパイラとして
使用されます。
 (サイトのシェル スクリプトでオーバーライドされない限り)

残念ながら、Autoconf の制限により、この手法は「CONFIG_SHELL」では
機能しません。

制限が解除されるまでは、次の回避策を使用できます:

     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
「configure」呼び出し
======================

「configure」は、動作方法を制御する次のオプションを認識します。

'--help'
'-h'
     「configure」のすべてのオプションの概要を表示して終了します。

'--help=short'
'--help=recursive'
     このパッケージの「configure」に固有のオプションの概要を表示して
     終了します。
      「short」バリアントでは最上位レベルでのみ使用されるオプションが
     一覧表示され、
     「recursive」バリアントではネストされたパッケージにも存在するオプションが
     一覧表示されます。

'--version'
'-V'
    「configure」スクリプトの生成に使用された Autoconf のバージョンを表示して
    終了します。

'--cache-file=FILE'
     キャッシュを有効にします: テストの結果をファイル
     (従来は「config.cache」) に保存して使用します。
     FILE のデフォルトは「/dev/null」で、キャッシュが無効になります。

'--config-cache'
'-C'
     「--cache-file=config.cache」のエイリアス

'--quiet'
'--silent'
'-q'
     どのチェックが行われているかを示すメッセージを表示しないでください。
     通常の出力をすべて抑制するには、出力を「/dev/null」にリダイレクト
     します (エラー メッセージは引き続き表示されます)。

'--srcdir=DIR'
    DIR ディレクトリでパッケージのソース コードを探します。
    通常、「configure」を実行すると、そのディレクトリが
    自動的に決定されます。

'--prefix=DIR'
     インストールプレフィックスとして DIR を使用します。
     *インストール場所の微調整に使用できるその他のオプションを含む
     詳細については、「インストール名:」を参照してください。

'--no-create'
'-n'
     構成チェックを実行しますが、出力ファイルを作成する前に停止します。

「configure」は、あまり役に立たないその他のオプションも受け入れます。
詳細については、「configure --help」を実行してください。

-

-


まとめ

前回は、以前の仮想マシンとは別の「Void Linux」に、(ソースのダウンロード、ビルド、パッケージ化する)作業を半自動化して「アプリの移植」を楽にしてくれる、「xbps-src」のビルド環境をセットアップしました:

-

その続きとして、今回は「geany」アプリのパッケージ化にトライしました:

「geany」アプリがいつものアプリと違ったのは、「geany」アプリのパッケージ化を行うと、開発版の「geany-devel」も一緒にパッケージ化される(インストールは別々になります)ことです。

そのため、テンプレートの「geany」フォルダを(コピーでなく)リンクして「geany-devel」のテンプレートを作っておく必要がありました。

-

アプリにも色々なパターンがあるので、「 ls -l 」でテンプレートフォルダが「リンク」されていないか、注意深く調べることが必要と感じました。

奥が深いですね。

-

-

参考:

移植した成果を「xbps-src」のリポジトリ等にアップしたい場合は:

「アプリ」のソースの修正があれば(移植でなく改変になるので)削除してアップします:
通常、「アプリ」のソースの修正(改変)を上げるときは、アプリの本家に「プルリクエスト」します:

-

また、すでにプルリクエストされていて「承認待ち」でないか、GitHub で確認すると、二度手間になりません。

もしくは作っておいて見比べると、勉強になるかも。

-

-


-

-

    目次

-

「投稿の先頭 へ」

-

-


-

「この目次 の先頭へ」

「本編の目次 に戻る」

-