On 06.06.19 20:08, Helmut Grohne wrote: > Package: bison > Version: 2:3.3.2.dfsg-1 > Severity: important > > bison is marked Multi-Arch: foreign and Depends on libbison-dev. > Packages Build-Depend on bison and expect a libbison-dev (for the host > architecture). This is broken. > > We had this problem earlier with flex and I can provide the same options > to fix it. > > A. Depend on libbison-dev explicitly. We consider that a dependency on > bison does not include libbison-dev. Not every user of bison needs > libbison-dev and only those that do need it, need the dependency. > This change is quite simple: Drop the libbison-dev dependency from > bison. It makes a pile of packages FTBFS until they add the > dependency. bison has around 540 build-rdeps. I haven't examined how > many need libbison-dev. flex went this way. > > B. Reverse dependencies. This is the "tricky multiarch fix". It may take > a while to understand, but we can fix the whole issue with a single > upload of bison: > > * Drop the dependency on libbison-dev from bison. > * Rename bison to bison-bin. > * Update the description of bison-bin (formerly bison) to explain > that this package is an implementation detail and people should > continue depending on bison. > * Rename libbison-dev to bison. > * Make the new bison (former libbison-dev) depend on bison-bin > (formerly bison). > * Add Provides: libbison-dev to the new bison (formerly > libbison-dev). > > After performing these changes, a Build-Depends: bison will result in > the build architecture bison executable together with the host > architecture liby.a. Things will just work without any need for > modifying downstream packages. People won't have to be aware of the > distinction between the library and the code generator. > > Comparing these approaches I see the following trade-offs: > > * A makes a ton of packages FTBFS and will need possibly hundreds of > uploads. > * A is consistent with flex. > * A is slightly better for cross building. Given the experience with > flex, I expect that the majority of rdeps won't need libbison-dev. > For cross building this means that bison doesn't have to be available > for the host architecture. > > We need a decision on which approach to take. Preferrably soon. I'm > happy to implement either. I'm also happy to take care of the MBF if we > opt for A. This bug should not be fixed for buster. If you ask me, I'd > slightly preferred option B, but since flex did A, I favour consistency > and thus A. What is your (maintainer) preference? Do we need to know how > many packages would ftbfs before deciding?
I would go for the "cleaner" solution A. It matches what it is done with flex. And it matches with yet another autotools related tool: libtool. libtool also doesn't have an explicit dependency on libltdl-dev. Matthias