Sorting the jack build-dependency mess

Reinhard Tartler siretart at tauware.de
Mon Oct 25 16:15:49 UTC 2010


On Mo, Okt 25, 2010 at 17:20:58 (CEST), Adrian Knoth wrote:

> On Mon, Oct 25, 2010 at 04:33:45PM +0200, Reinhard Tartler wrote:
>
>> > Unless there's really a need to discuss this in detail, I'd simply
>> > upload the new version today.
>> 
>> so you don't care about unversionable build-depends? this means that not
>> a single package in the archive can then do
>> 
>> Build-Depends: libjack-dev (>> $minimun_version)
>>
>> anymore. given that there is a number of jack using packages I'd be
>> rather reluctant to do this step.
>
> Hmm. Have you seen Jonas' comment? I haven't read it carefully in the
> first place, but it seems to make sense now that I read it a second
> time:
>
>> When versioning is needed, the requirement is either a
>> cross-implementation or implementation-specific feature.
>>
>> For implementation-specific feature the package should build-depend
>> versioned on the specific implementation of JACK.
>>
>> For cross-implementation feature we should have all implementations
>> provide that new "tag" whenever they mature enough to contain it. 
>>
>> 4. Make all jack implementations provide: libjack${tag}-dev.
>> This is what was done in the past with libjack0.100.0-dev.
>> We need not change anything now, just use a more meaningful tag than ""
>> next time we want to bump. 
>
> So we now can depend on libjack-dev provided by both, jackd1 and
> jackd2. Once there will be something worth to be versioned, we introduce
> something like libjack0.119-dev, i.e. for jack session support.
>
> The more I think about it, I could hardly find a reason why a package
> wants a specific jackd version at compile time, given that it cannot
> rely on this feature to be present at runtime. (please correct me if you
> do have such a case)

I really do hope that we don't have such a case, but the typical
situation where something like this is required is when you start some
kind of transition that requires mass-rebuilds against the updated
package. Without versioned dependencies, you need to wait for jack to be
compiled *and* installed on each and every arch. The much more robust
solution is to add a versioned build-dependency.


> The next big thing in the jack camp is clearly jack-session support, and
> already today, you cannot compile ardour3 without these headers. So
> that's an example when you want to say something like:
>
> Build-Depends: libjack-jackd1-dev (>>0.119) | libjack-jackd2-dev (>>1.9.7)
>
> (jackd1-dep just to make it explicit). Right now, it would read
>
> Build-Depends: libjack-dev
>
> and according to Jonas, we'd then change this to
>
> Build-Depend: libjack0.119-dev
>
>
> provided by all jack-session enabled implementations by this time.
> (which would be jackd1 0.119 or jackd2 1.9.7, tschack, you name it).

Makes sense to me.

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4



More information about the pkg-multimedia-maintainers mailing list