在上传之前应该替换autotools生成的链接?

时间:2009-05-30 09:25:38

标签: open-source autotools

我的主要问题是autotools创建了INSTALL,COPYING,missing,install-sh和depcomp的链接。当我试图查看它们时,我看到它们被上传为链接,所以我用真实文件替换它们以便它们可见。我错过了什么基本的东西?当我从'make dist'解压缩我的gz文件时,这就是它的样子:

分发树(减去源目录)

-rw-r--r-- 1 ojblass users  18591 2009-05-30 03:23 Makefile.in
-rwxr-xr-x 1 ojblass users 136168 2009-05-30 03:20 configure
drwxr-xr-x 3 ojblass users   4096 2009-05-30 03:20 autom4te.cache
-rw-r--r-- 1 ojblass users  32230 2009-05-30 03:20 aclocal.m4
-rw-r--r-- 1 ojblass users    251 2009-05-30 03:20 configure.ac
-rw-r--r-- 1 ojblass users    626 2009-05-30 03:11 AUTHORS
-rwxr-xr-x 1 ojblass users    120 2009-05-30 03:11 autogen.sh
-rw-r--r-- 1 ojblass users    737 2009-05-30 03:11 ChangeLog
-rw-r--r-- 1 ojblass users  35147 2009-05-30 03:11 COPYING
-rwxr-xr-x 1 ojblass users  17867 2009-05-30 03:11 depcomp
-rwxr-xr-x 1 ojblass users    199 2009-05-30 03:11 example.pl
-rwxr-xr-x 1 ojblass users    152 2009-05-30 03:11 example.sh
-rw-r--r-- 1 ojblass users   9512 2009-05-30 03:11 INSTALL
-rwxr-xr-x 1 ojblass users  13620 2009-05-30 03:11 install-sh
-rw-r--r-- 1 ojblass users    215 2009-05-30 03:11 Makefile.am
-rwxr-xr-x 1 ojblass users  11135 2009-05-30 03:11 missing
-rw-r--r-- 1 ojblass users     75 2009-05-30 03:11 NEWS
-rwxr-xr-x 1 ojblass users    507 2009-05-30 03:11 profile.sh
-rw-r--r-- 1 ojblass users   2605 2009-05-30 03:11 README
-rw-r--r-- 1 ojblass users    201 2009-05-30 03:11 README_developers
-rwxr-xr-x 1 ojblass users    382 2009-05-30 03:11 run.sh
-rw-r--r-- 1 ojblass users    481 2009-05-30 03:11 TODO
-rwxr-xr-x 1 ojblass users    117 2009-05-30 03:11 usefull.sh

我打算删除README_developers并在README中创建两个部分。我也在寻找删除run.sh和profile.sh并使它们成为make测试目标的一部分(需要一些阅读)。我不认为TODO项目属于源代码分发,但也许可以将它放在项目的源代码树中。感谢链接问题之上和之外的任何其他指针。

2 个答案:

答案 0 :(得分:1)

TODO文件可以进入发行版;它向消费者表明您认为产品缺乏的东西,并且它们指向可能有助于改进产品的领域的潜在贡献者。 (另外,如果你摔倒在公共汽车下,它会帮助其他人接管当前的释放材料。)

使用子目录来保存大量配置材料可能是值得的。

关于你的主要问题 - 文件'链接'还是'符号链接'?符号链接对于打包不太有用,除非你告诉(GNU)tar无论如何都要跟随它们('-h'或'--dereference')。如果唯一的符号链接是那些文件,那就有效;如果您在发行版本身中使用符号链接,则可能会产生反效果。

答案 1 :(得分:1)

简答:离开那些符号链接(除了INSTALL) 伪造一致GNU coding standards

默认情况下,automake会检查是否符合GNU标准 (需要以下文件存在:INSTALL,NEWS,README, 复制,作者和ChangeLog)。人们可以转过那张支票(和 通过传递--foreign选项安全地删除其中一些文件) automake(要编辑autogen.sh并重新运行)。

使用--add-missing调用automake时创建了链接 除非给出--copy选项的选项为其创建符号链接 丢失文件而不是复制它们。这是为了保留这些 每当您安装较新的文件时,文件(实际上仅安装)是最新的 automake的。重申Jonathan的回答那些符号链接不是问题:全部 在制作tarball之前,分布式文件被复制到单独的目录中。 如果要编辑它们,请将它们更改为常规文件。

其他文件(README_developers,run.sh,profile.sh,TODO 可能是由您正在使用并添加到的IDE生成的 顶部Makefile.am中的EXTRA_DIST变量。你可以删除它们 通过编辑EXTRA_DIST进行分发,之后您也可以删除 他们来自消息来源。

其余部分由autoconf和automake自动生成:

  • aclocal.m4
  • autom4te.cache
  • 配置
  • depcomp
  • 安装-SH
  • Makefile.in
  • 丢失

如果您想进一步整理您的顶级源目录,可以添加 AC_CONFIG_AUX_DIR([scripts])来配置.ac。这种方式有些脚本 将在scripts目录中找到位置。

<强>更新

GNU编码标准仅描述了这些标准的要求 分发中存在的文档文件和内容 信息应该包含在那里。 --add-missing选项是 提醒程序员应该写什么文件。显然是空的 NEWS或AUTHORS文件不会使项目更符合标准。

只有ChangeLog文件的格式为requirements。 在某些项目中,ChangeLog会自动生成 格式化提交消息。在Darcs上,它只是darcs changes >ChangeLog。 如果您使用Subversion,可以查看:svn2logsvn2cl

如上所述,INSTALL文件可能是合理的,只能作为符号链接保留 如果没有关于安装的项目特定信息 (即没有额外的配置脚本参数等。)。