Struggling to understand the logic in the history of migrations and removals of scrcpy in Debian testing (Bookworm).

Quoting news from https://tracker.debian.org/pkg/scrcpy (inverted order for convenience):

  • [2022-04-08] scrcpy 1.23-1 MIGRATED to testing (Debian testing watch)
  • [2022-06-07] Accepted scrcpy 1.23-1~bpo11+1 (source amd64 all) into bullseye-backports, bullseye-backports (Debian FTP Masters) (signed by: Antoine Beaupré)
    • so at this point the version 1.23 is good enough to be both in testing and stable-backports, right?
  • [2022-07-17] Accepted scrcpy 1.24-1 (source) into unstable (Yangfl) (signed by: Boyuan Yang)
    • testing still has the working 1.23, right?
  • [2022-07-23] scrcpy 1.24-1 MIGRATED to testing (Debian testing watch)
    • what does this mean exactly, i.e. does "migrated to testing" imply "checked to be working in testing, thus migrated"?
  • [2022-09-28] scrcpy REMOVED from testing (Debian testing watch)
    • ?! not working anymore? But even so, why remove it instead of getting back to the good 1.23? And why backports are not affected, which are by definition "packages taken from testing"?

Finally, a more practical side of this question: given a situation like this, would it be more or less safe to install 1.23 from stable backports into testing right now? This version wasn't actually removed from testing (1.24 was), so it should have been more or less working, right?

1 Answer 1


Packages in testing migrate from unstable automatically once certain criteria are met:

  • the package has been in unstable without change for a fixed number of days (between two and ten, depending on the urgency of the upload and the presence of package tests)
  • the package has built successfully on all architectures for which a package is available in testing (for package upgrades)
  • the package preserves the installability of testing
  • the package doesn’t introduce new bugs

Packages can be removed from testing if they introduce release-critical bugs. This is what happened indirectly to scrcpy: android-framework-23 and others had release-critical bugs, so they were removed from testing along with all packages depending on them. It is extremely unusual for a package to be reverted to a previous version, and such reverts have to go through unstable first; given the general situation of the packages scrcpy depends on anyway, there wouldn’t be any point in trying this.

Packages don’t migrate to backports, they are uploaded there manually, based on their presence in testing.

Thus scrcpy migrated automatically from unstable to testing, and then was uploaded to backports. Because of problems with other Android packages on which scrcpy depends, it was subsequently removed from testing; but the backported package hasn’t been removed (and likely won’t be removed). The current package in unstable also has two of its own release-critical bugs, but those are related to library dependencies and probably don’t affect the backported package since it uses stable packages (and it’s the lingering dependencies on those packages which cause issues on unstable).

It is safe enough to install scrcpy from stable backports on a testing system, but you’ll also need to have stable configured so that the library dependencies can be pulled in.

In all this, it’s important to understand that the goal of testing isn’t to be a fully-usable distribution in its own right; its main goal is to become the next stable release. In particular, this means that one of the main purposes of testing is to ensure that all the packages it contains are buildable and installable using only packages which are also in testing. Re-introducing scrcpy without fixing the rest of the Android packages would break this.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .