Skip to content

Automake による生成ファイルを除外し、ソースファイル管理を明確化したい #34

@gemmaro

Description

@gemmaro

このプロジェクトでは Automake が使用されていますが、どれが本来の「ソースファイル」なのか判別が難しくなっています。Makefile.inconfigureconfig.h.in などのファイルはビルド時に自動生成されるにもかかわらず、バージョン管理に含まれてしまっているケースがあります。

この問題を整理するため、以前イシュー #32 で一部対処を試みましたが、ファイルの変更の経緯の把握が難しく、根本的な解決に至っていません。また、イシュー #33 では Berkeley DB ライブラリのバージョン更新を試みましたが、Autotools 構成ファイルの適切な更新方法が分からず、途中で断念した経緯があります。

そもそも Berkeley DB ライブラリの更新は、GNU Guix 公式リポジトリにおいて skktools パッケージがこの旧バージョンを理由に削除対象となっていることに起因しています。またGNU Guix は自由ソフトウェアであり、配布物には原則として「ソースファイルのみ」が含まれることが期待されています。したがって、Autotools によって生成される一時ファイルを除外し、本当のソースファイルのみをバージョン管理の対象にしたいと考えております。

問題点

  • 自動生成ファイルがコミットされていると、環境差やマージ時に不整合が生じやすくなります
  • configure.ac のような構成ファイルを更新する際、何を変更すればよいのか不明瞭になります
  • 履歴にノイズが入り、真に意味のある変更だけを追跡するのが困難になります

提案

  • .c, .h, Makefile.am, configure.ac などの「本当のソースファイル」を明示的に定義・文書化する
  • .gitignore を更新して以下のような自動生成ファイルを除外する:
    /Makefile.in
    /configure
    /config.h.in
    /aclocal.m4
    /autom4te.cache/
    /depcomp
    /install-sh
    /missing
  • README.md 等に、autoreconf -i などの再生成手順を記載

期待される効果

ソースツリーが簡潔になり、構成変更(特にライブラリ検出)やパッケージ対応の作業が容易になります。また、自由ソフトウェアのポリシーとも整合し、配布要件も満たしやすくなります。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions