genode/repos/gems/recipes/raw/depot_download/depot_download.config
Norman Feske ac68073ffc depot_download: support downloading index files
With this commit, the 'installation' input of the depot-download
subsystem accepts <index> nodes in addition to <archive> nodes. Each
index node refers to one index file specified via the 'path' attribute.

This commit also improves the tracking of failure states. Once an
installation job failed (due to a download of verification error),
it won't get re-scheduled. In the past, such failure states were not kept
across subsequent import iterations, which could result in infinite
re-attempts when an installation contained archives from multiple users.
The the progress of the download process is now reflected by the
"progress" attribute on the download manager's state report, which
allows the final report to contain the list of installed/failed archives
along with the overall progress/completed state. The detection of the
latter is important for the sculpt manager for reattempting the
deployment of the completed packages.

The patch enhances the depot_download.run script to stress the new
abilities. In particular, the scenario downloads a mix of index files
(one present, one missing) and archives, from two different depot users
(genodelabs and nfeske).

Issue #3172
2019-02-28 11:34:06 +01:00

111 lines
3.8 KiB
Plaintext

<config>
<parent-provides>
<service name="ROM"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Report"/>
<service name="File_system"/>
<service name="Nic"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<start name="report_rom">
<binary name="report_rom"/>
<resource name="RAM" quantum="2M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="no">
<policy label="dynamic -> config"
report="manager -> init_config"/>
<policy label="manager -> dependencies"
report="dynamic -> depot_query -> dependencies"/>
<policy label="manager -> index"
report="dynamic -> depot_query -> index"/>
<policy label="manager -> user"
report="dynamic -> depot_query -> user"/>
<policy label="manager -> init_state"
report="dynamic -> state"/>
<policy label="manager -> verified"
report="dynamic -> verify -> result"/>
<policy label="manager -> fetchurl_progress"
report="dynamic -> fetchurl -> progress"/>
</config>
</start>
<start name="tcpip" caps="400">
<binary name="vfs"/>
<resource name="RAM" quantum="32M" />
<provides> <service name="File_system"/> </provides>
<config>
<vfs>
<dir name="socket">
<lxip dhcp="yes"/>
</dir>
</vfs>
<default-policy root="/" writeable="yes"/>
</config>
<route> <any-service> <parent/> </any-service> </route>
</start>
<start name="depot_ro">
<binary name="chroot"/>
<resource name="RAM" quantum="2M" />
<provides> <service name="File_system"/> </provides>
<config> <default-policy path="/" writeable="no"/> </config>
<route>
<service name="File_system"> <parent label="depot"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="public_ro">
<binary name="chroot"/>
<resource name="RAM" quantum="2M" />
<provides> <service name="File_system"/> </provides>
<config> <default-policy path="/" writeable="no"/> </config>
<route>
<service name="File_system"> <parent label="public"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="manager">
<binary name="depot_download_manager"/>
<resource name="RAM" quantum="2M"/>
<config/>
<route>
<service name="Report" label="state"> <parent label="state"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="ROM" label="dependencies"> <child name="report_rom"/> </service>
<service name="ROM" label="index"> <child name="report_rom"/> </service>
<service name="ROM" label="user"> <child name="report_rom"/> </service>
<service name="ROM" label="init_state"> <child name="report_rom"/> </service>
<service name="ROM" label="verified"> <child name="report_rom"/> </service>
<service name="ROM" label="fetchurl_progress"> <child name="report_rom"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
<start name="dynamic" caps="1000">
<resource name="RAM" quantum="24M"/>
<binary name="init"/>
<route>
<service name="ROM" label="config"> <child name="report_rom"/> </service>
<service name="Report"> <child name="report_rom"/> </service>
<service name="File_system" label="depot"> <child name="depot_ro"/> </service>
<service name="File_system" label="depot_rw"> <parent label="depot"/> </service>
<service name="File_system" label="public"> <child name="public_ro"/> </service>
<service name="File_system" label="public_rw"> <parent label="public"/> </service>
<service name="File_system" label="tcpip"> <child name="tcpip"/> </service>
<any-service> <parent/> <any-child/> </any-service>
</route>
</start>
</config>