Hi Ralf, On 04-08-18 06:24, Ralf Treinen wrote: > OK. It is true that I was looking for a permanent solution, but as long > as ci.d.n is only testing on amd64 there is no urgency for debian itself, > as all of why3's alternative recommends should be available on amd64. The > situation is however different for Ubuntu since they run ci tests on > all their architectures, which is great.
Yes, but they are a bit behind on autopkgtest and britney, so you may experience other issues there. >> Maybe, but I am just thinking out load, what we are searching for is a >> way to say in the test definition: only run on these architectures. One >> of the ways of saying that would need to be: where packages ((x and y) >> or z) is available. Well, writing it down matches close to what you >> want, maybe we want a restriction that says "skippable if dependencies >> are unsatisfied". That way as the maintainer you are in control, and we > > Yes, indeed, that is the kind of solution I was thinking of. Ack. >> don't need to make this the default (as explained, that would be bad). >> On the other hand, if you have this, it would make that test insensitive >> to real dependencies issues, but the migration software should handle >> those anyways. > > One could try to catch the erroneous test dependencies on the level > of the ci framework by checking if a test is skipped on *all* architectures > and in all distributions (sid,testing), and raise a red flag if that is the > case. I don't think it is wise to add another layer where intelligence lies. If anywhere, britney needs to do that bookkeeping. But that isn't as simple as you write it. Some packages have tests that can't be run on the ci.debian.net infrastructure, so all tests are skipped. This isn't anything to worry about. A package may drop the only test that was run, nothing to worry about. >> I think, but I can't find it in documentation, is that you can also have >> this *now*. (You proposed this in your mail from May, except we didn't >> have the skippable then) Make the test skippable, add an alternative >> depends in your test that is widely available (e.g. why3 in your case), >> check if the first alternative is available and if not exit 77. This >> relies on apt in a way that I can't find documented. I mean, as a human >> reader I would say the latter alternative is already (going to be) >> installed, so why bother installing the first. We would need to test if >> apt behaves as we suspect, otherwise, depend on something unrelated. > > Yes, that is what we discussed back in May, and I think I will for the > moment go back to that solution. However, this means depending on some > resolving strategy that we currently observe with apt and which I also > think is not documented, so this is fragile. But it should do for the moment > until a permanent solution is found. I didn't mean such a fragile solution, see below. >>>> in your test check if your >>>> dependency is installed and if not, exit 0 (or 77 with skippable). >>> >>> This works only if the testbed will install as many of my *alternative* >>> Recommends as possible. >> >> Why? > > I probably misunderstood you here, but let me nevertheless explain what > I meant here: why3 recommends > > alt-ergo | cvc3 | cvc4 | ... > > which means that apt, when installation of recommends is enabled, will only > install one of these (probably the first). If each of my tests > why+whatever just checks whether whatever is installed, without having it > as a test dependency, this means that the first test why+alt-ergo will find > that alt-ergo is installed and actually run the test, but the other tests > like why+cvc3, why+cvc4 will find that cvc3, cvc4 are not installed and > will just skip. That is what I meant when I said that these tests would be > no longer useful. However, that would work if apt could be convinced > to try to install a maximum number of the alternative recommends at the > same time, and not just one. After your explanation I'm convinced it was you who didn't understand me. I meant that you kept the Depends in the test cases as you have it now, except that you add ONE alternative to the real Recommends in that list. Test: A Depends: why3, alt-ergo | why3 # or if apt doesn't do the right thing: # Depends: why3, alt-ergo | aspell-doc Restriction: skippable Test: B Depends: why3, cvc3 | why3 Restriction: skippable # pseudo code $ cat A if alt-ergo is not installed: exit 77 fi original_test_code_A # pseudo code $ cat B if cvs3 is not installed: exit 77 fi original_test_code_B I am pretty sure apt tries hard to install the first in the list, see e.g. (right at the start): https://lists.debian.org/deity/2018/06/msg00041.html Paul
signature.asc
Description: OpenPGP digital signature