[tahoe-dev] [tahoe-lafs] #1220: build/install should be able to refrain from getting dependencies
tahoe-lafs
trac at tahoe-lafs.org
Sun Oct 31 22:38:24 UTC 2010
#1220: build/install should be able to refrain from getting dependencies
---------------------------+------------------------------------------------
Reporter: gdt | Owner: gdt
Type: defect | Status: new
Priority: major | Milestone: undecided
Component: packaging | Version: 1.8.0
Resolution: | Keywords: setuptools
Launchpad Bug: |
---------------------------+------------------------------------------------
Comment (by gdt):
You raise good points about unarticulated requirements; a lot of them are
captured in "what 'make' is supposed to do". So specifically, the build
phase
* should fail if any dependencies are missing. C programs use autoconf,
or autoconf/pkg-config, and fail at configure phase. Or, they are old-
school and do -lfoo and that fails at build time if libfoo is not
installed. You are probably right that some C programs do not reliably
fail, but they should.
* must not use the net at all, and use only files expressed in the
"distinfo" manifest and downloaded during the fetch phase, and unpacked in
the working directory in the extract phase. If a file is needed it is
listed in distinfo and make fetch gets it. (Without this, offline
building fails and GPL compliance is difficult - how do you find the list
of sources that must be distributed with the resulting binary package?)
* must set up install so that the list of created files is always the
same
An underlying goal is that building a package should have a deterministic
outcome, with the same bits produced regardless of which dependencies or
other programs were already installed. This allows the use of the
resulting binary packages on other systems. If a program has an optional
dependency foo, then the pkgsrc entry has to require foo (and thus depend
on the foo package), or disable use of foo, or have a pkgsrc option to
control it. Having the built package be built differently depending on
whether foo is present is considered a packaging bug (and perhaps an
upstream bug, if there's no --disable-foo switch/method).
It's also a goal to be able to 'make fetch-list|sh' on a net-connected
machine and grab all distfiles but not build, and then to be able to build
offline.
I see that there are .pyc files installed, but not produced during build.
This seems wrong, but not important or causing an actual problem, and it
seems to be the python way.
Basically, there's a huge difference in approach between large-scale
package management systems and the various language-specific packaging
systems. I suspect debian/ubuntu and rpms are much more like pkgsrc than
not in their requirements. But, there seems not be a culture of bulk
building all rpms in Linux; it seems the maintainers build them and upload
them.
--
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1220#comment:14>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-dev
mailing list