Tightening the feedback loop Link to heading

One thing we notice ever so often is that although Phosh’s source code is publicly available and upcoming changes are open for review the feedback loop between changes being made to the development branch and users noticing the change can still be quiet long.

This can be problematic as we ideally want to catch a regression or broken use case triggered by a change on the development branch (aka main) before the general availability of a new version.

Not doing so can then lead to extra churn for both users and developers because at the point in time the issue is spotted/reported the developer’s focus is usually somewhere else entirely already and hence the issue might get less immediate attention than it should have.

To mitigate that we already

  • Use GNOME gitlab’s CI (thanks a lot GNOME!) to catch things upfront
  • Release on a monthly basis to shorten the time between a feature getting merged and “general availability”.
  • Make it simple to run Phosh nested so changes can be validated without installing anything

But even with the above it’s a bit tricky to do a “real live” test of a certain component at it’s current development version as it usually requires to invoke a package build or manual download of a package or tarball.

Nightly Builds Link to heading

So to improve on this we aim to provide nightly Debian package builds of several of Phosh’s components built against Debian Trixie. These jobs fetch the projects main branches and after applying possible packaging tweaks and building packages for amd64 and arm64 upload the packages into a common phosh-nightly repository. Thus if a change gets applied to a projects main branch it should be available in a packaged form a couple of hours later.

Gitlab CI Pipeline for nightly builds

This makes it easier for you to:

  • Verify if a bug you filed and that was closed as fixed is really fixed in the way you expect it
  • Help test the next release before it’s getting tagged
  • Test a newer version before filing an issue to make sure that version is still affected
  • Help out by continuously testing development versions

We picked Debian Trixie as a base since it’s Debian’s current testing distribution and builds the base for other, mobile focused distributions like Mobian Trixie, an upcoming PureOS version based on Trixie, etc. so packages can be tested there too. Once Debian releases Trixie and it becomes stable we’ll switch the nightly builds to Debian’s new testing (codenamed Forky).

As initial set we build the Shell phosh, the compositor phoc, the mobile settings application, the tour, phosh-osk-stub, calls and chatty for amd64 and arm64. We don’t provide builds for software that is available as nightly flatpak builds as that would be duplication.

Setup Link to heading

In order to use the nightly packages you need to add a new apt source. This is achieved via by the following commands:

cat <<EOF >/etc/apt/sources.list.d/phosh-nightly.sources
Types: deb
URIs: http://deb.phosh.mobi/nightly/
Suites: trixie-nightly
Components: main
Signed-By:
  -----BEGIN PGP PUBLIC KEY BLOCK-----
 
  mQINBGXoHOYBEAC/893ifemxPCa3l+46Vtpjiew4Eu+c3kXEj6sEOQZS8+ZvJ93O
  So3cEe7tqPM8AjqPjO6GsBjqr86swk5bbZ70GIqo1H2p9JdBaiQWqTDXxXRDvel5
  0SaxbUQvLm880pjS/gcsBezRv8vb9dxDsPMzap6GuJnF5QqagfOX8B1aQKCywJNo
  QoFc3RL7c3j2hLRpI4kdfcjo2j3GtjKb+ojWja9dng/gsMlrHYEqS+aWg+eVFnLM
  XkwJXS/4AQjooH9qC+swtVNYYzt7wQdCm1mNFfrXDHSLse0ugyESqZ8AN5d9bUlB
  fAae7xv/lV3QfozSolFODvXlBjNaCDYb1r8Rag01eM83b1Wv/R23enFO18p/UW9k
  +/wk+kOqUfEd+0NBkXdRQiCrvwxHs51IqMFH5aAhM9lHmaHYmdPjETdeYPeKlA22
  CYLCkApEazGNPZGt6Kv7XeBwiI+6DScbHxr+j9S/j9+7BuMs6MItE4J9EtavkFtr
  aw/ijGsifCKJWpkD28uZ3h83qi8diUwRde0zrX4SJAUi/T2UXPywep1z6bQ70Vaf
  YrciSOndw5zWiTYMUDl6q7iZR6vloiZMoGf7psLx1y0Vg4Sq8DPldXAMpaNPh8+Z
  UhqD94pBGg+iVaYII8MeWHaqtHc0ewQAKAq121rulOuZgaRbl/5LuQp8rQARAQAB
  tD1QaG9zaCBEZWJpYW4gUGFja2FnZXMgKEFyY2hpdmUgU2lnbmluZyBLZXkpIDxk
  ZWJzQHBob3NoLm1vYmk+iQJUBBMBCgA+AhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4B
  AheAFiEEeHJPmfZ/wlY1lpbHLf0ViOUfQ7IFAmXoV34FCQlmPBgACgkQLf0ViOUf
  Q7JWNxAApMQeEKSto6LGZkdqoKXCZgaXg//2UeAnkhK9+Z1hZ2Do7RYhoOW994yi
  FqtZ92WVMqzbK0EqfEnFX8yVzM1cXo3PgouCDCgTy060YmH0OV2XxThr8fJ4uZfW
  vib9HE+W4o/dgoMSy3BlPtpB1y/gevgJGoHAtQbV6Ex4bRL89i8pOQJYPYRx5Xj0
  4SADUWWjOnY9AZbykUlMuRFSOMBWITn8yqUCYPpw8bGbtFignfvK1iRcW5LIkrtY
  XsOlQCK5+ttNAMUkCeI93LGYhSZUqbpt87tdkbCP5qfV7o7Vkv8iObKw8fxKh2o1
  oijY8S6ZqEl/CZjDtKcdvsQrEvY3Z1KX0xUNn01PFrHGzRiTn7eieXF4O3PCM2zJ
  1TGva0gliKUgdN4y8W6Ul1H74T3rhZWpNO10rotfnvyX6AP/bLlkdMdSpL85mcqt
  PfSROQGcKOU6WmF1G2MvwzBY6sjP3IN95qqnaBKa1IJGBPFt5IsY8eoqdNuNkeRT
  W3OFcBQas+1RQdDzOZ7svJIX9fNBubebtnB20mRYIwESkhQMO2VpjyrBPzUP+bum
  kg/7Lx/Gr+OdH2SzNfeTr+28foyKExf2wdhbICErm+eRq1Bh4dFe6ljN/YBUVdEq
  MHjCZ4GQaiw5Uq+5sQTUWYkFeb/j3NeRadmSTshinPgTISGNYBo=
  =lIij
  -----END PGP PUBLIC KEY BLOCK-----
EOF

apt update

If copy and paste is troublesome you can also get get the phosh-nightly.sources here and put it into /etc/apt/sources.list.d/.

Installing packages Link to heading

The repo is (similar to Debian’s backports) set up in a way that packages aren’t fetched from it by default - so you can still safely apt upgrade with the above added to your apt sources without pulling all nightly packages accidentally.

Now if you want to pick a nightly build (e.g. for phoc) you’d do

apt install -t trixie-nightly phoc

This will fetch the nightly build and also continue to pick it from that repository on further updates. When you want to go back to the version shipped in Debian you do:

apt install phoc/trixie

It’s as simple as that and the preferred way as it allows you to test changes on a per package basis.

Should you want to pull all packages from the nightly repo you can do:

apt -t trixie-nightly full-upgrade

but be careful to check what packages exactly get installed/removed in this case.

Finding packages from the nightly repo Link to heading

If you want to figure out the packages you got form the nightly repo you can use apt-forktracer:

apt-forktracer |  grep '\+nb'

On a system that pulled phosh, phoc and mobile-settings and the matching debug packages the result looks like:

phosh-plugins (0.36.0+next20240208.1519.f5176c759.1) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1]
phoc (0.36.0+nb20240306.4312881) [Phosh: 0.36.0+nb20240306.4312881] [Debian: 0.36.0+ds-1 0.36.0+ds-1]
phosh-plugins-dbgsym (0.36.0+next20240208.1519.f5176c759.1) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1]
phosh-dbgsym (0.36.0+nb20240306.4312891) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1]
phosh (0.36.0+nb20240306.4312891) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1]
phoc-dbgsym (0.36.0+nb20240306.4312881) [Phosh: 0.36.0+nb20240306.4312881] [Debian: 0.36.0+ds-1 0.36.0+ds-1]
phosh-mobile-settings (0.36.0+nb20240306.4312901) [Phosh: 0.36.0+nb20240306.4312901] [Debian: 0.36.0-1 0.36.0-1]

This version information is useful to provide in bug reports as it allows to identify the exact git commit the package was built from.

Closing Link to heading

Note that you’re testing unreleased software so always make sure you can recover by going back to the Debian version e.g. via ssh login. Also make sure to not bother the Debian, Mobian or PureOS devs with bugs in these version. Issues detected in the nightly builds can go directly upstream. If you have trouble to figure out the right component start at phosh.

Have fun testing the nightly builds!

This work is possible thanks to your donations and Purism’s gitlab runners used to do the builds.