On 2013-09-04 at 07:10:00 [+0200], John Scipione <jscipione@xxxxxxxxx> wrote: > On Wednesday, September 4, 2013, scottmc wrote: > > > > The negative use case is that when you build something that optionally > >> requires a package... > >> > > > > Your negative use case doesn't apply here. If you are building something > > and it has a specific build requirement, you simply define those in the > > .recipe file as being required... > > > > I think you missed the /optionally required/ part, AFAIK Haiku's package > manager doesn't solve this any better than Linux distros do, if it does > than I withdraw my complaint. No, Scott didn't miss the /optionally required/ part. The main purpose of haikuporter and the haikuports tree is to provide a well-defined, consistent set of features for each port. Many ports come with optional requirements, but the packager needs to select the active features in the recipe file, such that the set of features of this port is locked down. Without this, dependency hell caused by incorrect dependency declarations would be the result. And the frustration with package management systems on Linux that has been mentioned on this list several times is usually the result of dependency hell. The use case of a developer downloading a port and simply invoking configure and make may apply to local software installations, but when the intention is to distribute the resulting software, some more care should be taken to avoid the automatic activation of build features just because another software happens to be installed on the system. Solving the inter-dependencies between ports isn't easy, and it has given Ingo and me a *lot* of headaches during our work on PM. Please believe me when I say that it is absolutely essential to start each port by defining the precise set of features that will be made available to the port's build system. To summaryize: Drive-by-building is the root of all evil with respect to software distribution. Additionally, I completely fail to see why merging _devel packages into main packages would help at all with building some other software. The main problem would still be the same: a build system looks for mandatory and/or optional requirements and, if some mandatory ones are missing, it will complain. I've mentioned this before and nobody seemed to have taken notice, so here's an example: subversion's build system requires apr, apr_util, expat, libiconv, libxml2, neon, sqlite and zlib. Some of these are likely to be on your disk already (zlib, libiconv and libxml2), but if neon happens to be missing, the build system will still fail. All that merged devel packages would do is that they decrease the likelihood of a missing dependency by some percentage. It's not as if they'd actually solve anything. cheers, Oliver