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.

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to