My main question is that the autotools created links to INSTALL, COPYING, missing, install-sh, and depcomp. When I tried to view them I saw that they were uploaded as links so I replaced them with real files so they are viewable. Am I missing something fundamental? When I unpack my gz file from ‘make dist’ this is what it looks like:
Distribution Tree (Minus Source Directories)
-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
I am planning on removing the README_developers and making two sections in the README. I am also looking at removing the run.sh and profile.sh and making them part of a make test target (some reading required). I do not think that a TODO item belongs in the source distribution but maybe it is okay to have it in the source tree of the project. Any additional pointers above and beyond the links question is appreciated.
Short answer: Leaving those symlinks (other than INSTALL) would be
faked conformance to GNU coding standards.
By default automake perform check for conformance to GNU standards
(requires following files to exist: INSTALL, NEWS, README,
COPYING, AUTHORS and ChangeLog). One may turn of that check (and
safely remove some of those files) by passing –foreign option to
automake (to do it edit autogen.sh and rerun it).
The links were created when automake was invoked with –add-missing
options which unless –copy option was given creates symlinks for
missing files rather then copying them. This is in order to keep those
files (actually INSTALL only) up to date whenever you install newer
automake. Regerding Jonathan’s answer those symlinks are not an issue: all
distributed files are copied to separate directory before making tarball.
Change them to regular files if you want to edit them.
Other files (README_developers, run.sh, profile.sh, TODO
etc.) were probably generated by IDE you are using and added to
EXTRA_DISTvariable in top Makefile.am. You may remove them fromdistribution by editing
EXTRA_DISTand afterward you may also removethem from source.
The rest is automatically generated by autoconf and automake:
If you want to further unclutter your top source directory you may add
AC_CONFIG_AUX_DIR([scripts])to configure.ac. This way some of the scriptswill find place in
scriptsdirectory.Update:
The GNU coding standards merely describe the requirement of those
documentation files to be present within distribution and what
information should be included there. The –add-missing option is to
remind programmer what files should be written. Obviously having empty
NEWS or AUTHORS file won’t make the project more conformant to standard.
Only ChangeLog file have rigid requirements on it’s format.
In some projects ChangeLog is automatically generated from properly
formated commit messages. On Darcs it’s simply
darcs changes >ChangeLog.If you use Subversion you may look at: svn2log, svn2cl.
As mentioned INSTALL file might be reasonable to keep as symlink but only
if there is no project specific information needed about the installation
(i.e. no extra configure script arguments etc.).