File: README.source

package info (click to toggle)
pico-sdk 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,960 kB
  • sloc: ansic: 150,165; asm: 13,474; python: 2,885; cpp: 2,192; yacc: 381; lex: 270; makefile: 33; sh: 15; javascript: 13
file content (44 lines) | stat: -rw-r--r-- 2,656 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Usually upstream releases the source packages src:pico-sdk and src:picotool
together in lockstep with the same version. To build most things with pico-sdk
you also need a picotool of at least that version. But building with picotool
(even though not very useful for most use-cases) can be disabled by setting
PICO_NO_PICOTOOL=ON in the cmake flags. To avoid a circular dependency between
the two source packages we do the following:

pico-sdk gets compiled with PICO_NO_PICOTOOL=ON to make sure that the sdk can
be built. Building with reduced functionality is no problem, because the
resulting binaries are not getting distributed. Instead, the pico-sdk-source
package ships source code in /usr/src/pico-sdk. Even though most uses of
pico-sdk-source need picotool, the pico-sdk-source package does not depend on
picotool -- it only recommends it. A hard dependency is not required because
technically (when building with PICO_NO_PICOTOOL=ON), pico-sdk-source can be
used just fine without picotool. Having picotool as a Recommends only is
required to not prevent building the new picotool.

The src:picotool source package cannot be built without the pico-sdk-source
build dependency of at least the same version. If the pico-sdk-source would
Depends instead of Recommends on picotool, then packaging new versions of
picotool would be made tricky and would require a bootstrapping step.

Since building with pico-sdk-source requires a recent-enough picotool, the
src:pico-sdk source package does not come with an autopkgtest to build
something with pico-sdk-source. If it would, that autopkgtest would fail when
compiling new versions of src:pico-sdk because the autopkgtest would need a
version of picotool that is at least as high as the version of src:pico-sdk and
that version cannot get uploaded to the archive before pico-sdk itself gets
uploaded. We want to avoid uploading pico-sdk with a failing autopkgtest. So
the test to compile a very small project using pico-sdk-source is in the
picotool source package.

So the order of packaging new versions of src:pico-sdk and src:picotool is the
following:

 0. (optional) package potentially new version of tinyusb
 1. package the new version of pico-sdk
     1.1 bump Recommends of picotool to the new version
 2. upload the new pico-sdk version and wait for the next dinstall with it
 3. while waiting, package the new picotool
     3.1 bump Build-Depends on pico-sdk-source to the new version
     3.1 bump Depends of the autopkgtest to the new pico-sdk-source version
 4. upload picotool to unstable after it was built and its autopkgtest ran
    successfully with the new pico-sdk in the archive