Hi folks,

The 2025.06 tag has been pushed to master on gitlab.com/lava/lava.
.deb packages have been built in GitLab CI and are published at

  https://apt.lavasoftware.org/release

Docker images for amd64 and arm64 have been built in GitLab CI and
are available from

  https://registry.gitlab.com/

and

  https://hub.docker.com/u/lavasoftware

Changes in this release
==================

# Device-types

## New device-types

* eic7700-hifive-premier-p550
* gs101-oriole (Pixel 6)
* s32g399a-rdb3
* spacemit-k1-bananapi-f3
* sun55i-a527-cubie-a5e

# lava-worker

lava-worker is now waiting for a job to finalize before sending a second signal to a canceling job. This will leave more time for a job to finalize cleanly.

# lava-dispatcher actions

## Logs

Always save logs to a local file in yaml format.

The `logs.yaml` can be used for debugging or post-parsing in the same job with a docker test shell. The log file is saved to dispatcher download directory so that it can be retrieved via the http server using the url `http://${LAVA_DISPATCHER_IP}/tmp/${LAVA_DISPATCHER_PREFIX}${LAVA_JOB_ID}/logs.yaml`.

Test example:

```yaml
- test:
    docker:
      image: lavasoftware/lava-dispatcher:latest
    definitions:
    - from: inline
      repository:
        metadata:
          format: Lava-Test Test Definition 1.0
          name: Job log parsing
        run:
          steps:
          - wget http://${LAVA_DISPATCHER_IP}/tmp/${LAVA_DISPATCHER_PREFIX}${LAVA_JOB_ID}/logs.yaml
          # Steps for additional job log parsing
          - tail logs.yaml
      name: job-log-parsing
      path: inline/job-log-parsing.yaml
```

## Deploy

### Downloads

Add `LAVA_DISPATCHER_PREFIX` to the deploy to downloads shell environment.

### Flasher

Allow flasher deploy method to pass `uniquify` parameter for downloading images to a flat directory.
   
```yaml
- deploy:
    to: flasher
    images:
      image1:
        url: https://example.com/image1
      image2:
        url: https://example.com/image2
    uniquify: false
```

## Boot

### Bootloader custom commands

Allow to replace `LAVA_JOB_ID` and `LAVA_DISPATCHER_IP` for custom boot commands.

### Depthcharge

Allow to override bot commands in the job definition:

```yaml
- boot:
    method: depthcharge
    commands:
      - "exit"
```

## u-boot

Allow chain loading grub. As U-Boot nowadays has full UEFI support it is very common that we chain load grub from U-Boot as UEFI application.
Enable to boot from u-boot into grub without resetting the board.

# lava-server

## Remote artifact tokens API

Add api to manage Remote artifact tokens via XML-RPC or REST.

## Required login

Require login in order to access to `/scheduler/reports` and `/scheduler/joberrors` than can be long to generate.
With the current bots crawling for data, this can kill a LAVA instance.

## `lava-server manage device-types prune`

This command will delete all unused device types from the database.

To be considered unused the device type has to have no devices and no jobs that requested it.
The extra unused device types slow down certain iterations like health check scheduling.

You can call this command from the command line with:

```bash
lava-server manage device-types prune --dry-run
```

Rgds.

-- 
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro