[Distutils] Deprecate MANIFEST.in

Jeff Rush jeff at taupro.com
Mon Apr 6 12:18:41 CEST 2009


David Cournapeau wrote:
> 
> No other distribution mechanism that I know of uses magic to detect
> which files to distribute. Neither debian tools, nor rpm tools, nor
> autotools. Not being explicit about files for distribution is a terrible
> idea; a packaging tool should be explicit, to avoid as much as possible
> to do something unexpected.

While true that the rpm tools do not magically detect which files to 
distribute, there are many that wish it did and have tried various approaches 
to adding it.  The following except from the RPM book speaks of the various, 
failed approaches.  Still it speaks of a essential need on the part of 
developers to automate this aspect of packaging, even if the perfect solution 
has not yet been found.

If we're going to be explicit on what to include, I would argue we should NOT 
allow wildcards, since in subsequent uses of sdist by another person, it could 
cause files to be included that otherwise would not be there.  The only way to 
be sure precisely the same set of files is always included is to explicitly 
list them one by one.  A big pain.


--- cut here --- excerpt from Maximum RPM book

How Do You Create the File List?

Since RPM automates so many aspects of software installation, it's easy to 
fall into the trap of assuming that RPM does everything for you. Not so! One 
task that is still a manual process is creating the file list. While it may 
seem at first glance, that it could be automated somehow, it's actually a more 
difficult problem than it seems.

Since the majority of an application's files are installed by its makefile, 
RPM has no control over that part of the build process, and therefore, cannot 
automatically determine which files should be part of the package. Some people 
have attempted to use a modified version of install that logs the name of 
every file it installs. But not every makefile uses install, or if it does, 
uses it sporadically.

Another approach tried was to obtain a list of every file on the build system, 
immediately before and after a build, and use the differences as the file 
list. While this approach will certainly find every file that the application 
installed, it can also pick up extraneous files, such as system logs, files in 
/tmp, and the like. The only way to begin to make this approach workable would 
be to do nothing else on the build system, which is highly inconvenient. This 
approach also precludes building more than one package on the system at any 
given time.

At present, the best way to create the file list is to read the makefile to 
see what files it installs, verify this against the files installed on the 
build system, and create the list.



More information about the Distutils-SIG mailing list