Package: debian-policy
Summary: Policy should disallow uploads for multiple distributions. Specifically this means same version uploads to "stable unstable". History: Running a buildd, I have the problem of builds that come in for stable and unstable. Currently this means the buildd performs the compile on stable, and either uploads to "stable unstable", or as it were previously, it uploaded to stable, and then asked the buildd admin to perform the same upload to unstable. That used to work, and it used to be a needed feature for "frozen unstable" uploads. We do not support this anymore, since we do not have a "frozen" dist to upload to. Also, dinstall (AKA katie), disallows seperate uploads of the same version to seperate distributions. The pool layout means there is only one copy of the same version, and the pgsql database tracks which distribution this is supposed to be in. It's my opinion that same version uploads to stable/unstable are harful to archive and distribution integrity. I've talked this over with James Troup, and he seems to agree with the points below, and is considering enforcing them via dinstall checks. My intention is to get the weight of policy behind this. Technical reasoning: 1) Building for "stable unstable" means that 99% of the time the build is performed on a box running "stable". So the package will be compiled against "stable" libraries. Now we all know that most of the major libraries will go on to new major versions between releases. Ncurses (4 to 5 between slink and potato), readline (2 to 4 between slink and potato), gnome (several revisions during potato development, and others now), libstdc++ (which changes with the libc6 major upgrades), etc... Now, a lot of libraries keep an oldlib around for backward compatibility of packages that have not been recompiled for the newest version of the lib. This is a less than optimal situation since it must be maintained just like any other package. If libncurses4 is in stable, and libncurses5 is in unstable (with the 4 version around only for backward compat), then builds in unstable should be using the libncurses5. However, someone compiling for "stable unstable" uneedingly prolongs this oldlib's life. 2) Policy changes. This is probably the worst case. We all know that policy abiding build-helpers change between releases just like policy does. Take the usr/doc->usr/share/doc changeover scripts, and the X default scripts used and hardcoded during the build. Building on stable and unstable produces 2 different packages, abiding by two different policies. So by allowing stable built apps into unstable, we prolong policy changes for the distributions aswell. 3) Build failures. It is commonly the case that a package built on stable will not compile on unstable, even though it works runtime wise. Issues: The only issue I forsee is the likely even of where an upload to stable and unstable is desired. I suggest that policy specify this to be done: If package "blah" is in stable/unstable of version 1.0-1 (meaning it has not changed since stable was released) and an upload must be done for both stable and unstable of 1.0-2, then the stable upload must be 1.0-1.90 and unstable must be 1.0-2. This is similar to an NMU. The reason for the .90 is similar in spirit to how glibc starts a pre-release series (IOW, pre-releases for 2.2 start at 2.1.90). Caveats: This policy in no way forces compiled for unstable to be against the unstable dist. IOW, uploading to unstable does not mean it was compiled against unstable. That is a little harder to enforce. Perhaps we need a way to tell dinstall that certain deps are obsoleted for a dist (IOW, tell dinstall that packages targeted for unstable cannot dep on libncurses4). However, that is another proposal altogether, and is not the aim of this one. -- -----------=======-=-======-=========-----------=====------------=-=------ / Ben Collins -- ...on that fantastic voyage... -- Debian GNU/Linux \ ` [EMAIL PROTECTED] -- [EMAIL PROTECTED] -- [EMAIL PROTECTED] ' `---=========------=======-------------=-=-----=-===-======-------=--=---'
pgpIB8hcpVPH5.pgp
Description: PGP signature