diff options
Diffstat (limited to 'meta-raspberrypi')
48 files changed, 734 insertions, 22 deletions
diff --git a/meta-raspberrypi/.github/actions/docker-build/action.yml b/meta-raspberrypi/.github/actions/docker-build/action.yml new file mode 100644 index 0000000000..35fac92c24 --- /dev/null +++ b/meta-raspberrypi/.github/actions/docker-build/action.yml @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: "Build a docker image" + +inputs: + docker_image: + required: true + description: "The name of the docker image" + id: + required: true + description: "Namespace for the image" + +runs: + using: "composite" + steps: + - name: Build the ${{ inputs.docker_image }} docker image + shell: bash + # We run this unconditinally even if the change doesn't touch the + # relevant docker files because there is a chance that another PR (or + # something else) rebuilt the local image. For example if the first + # version of the PR included change for the relevant docker image but a + # subsequent push to the PR branch dropped them. In this way we rebuild + # the image to avoid using the changes from the previous push. + run: | + cd .github/workflows/docker-images/ + # We build a temporary image namespaced by the PR number so we can + # handle multiple runners on the same host using the same docker + # storage. + tries=3 + n=1 + until [ "$n" -gt "$tries" ]; do + echo "Building the docker image ${{ inputs.docker_image }}-${{ inputs.id }}... try $n..." + if docker build . -f "${{ inputs.docker_image }}/Dockerfile" -t "${{ inputs.docker_image }}-${{ inputs.id }}"; then + # This can fail if a dangling images cleaning job runs in + # parallel. So we try this a couple of times to minimize + # conflict. This is because while building, docker creates a + # untagged image first (dangling) before tagging it at the end. + # If between these two operations a dangling cleanup happens, + # build fails. + break + fi + n=$((n+1)) + done + [ "$n" -lt "$tries" ] + echo "Temporary image built in ${{ inputs.docker_image }}." diff --git a/meta-raspberrypi/.github/actions/docker-clean-dangling/action.yml b/meta-raspberrypi/.github/actions/docker-clean-dangling/action.yml new file mode 100644 index 0000000000..90595c864d --- /dev/null +++ b/meta-raspberrypi/.github/actions/docker-clean-dangling/action.yml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: "Cleanup dangling docker images" + +runs: + using: "composite" + steps: + - name: Cleanup dangling images + shell: bash + run: | + echo -n "Cleanup dangling images... " + if ! docker rmi $(docker images --filter "dangling=true" -q --no-trunc) > /dev/null 2>&1; then + echo "no dangling images found." + else + echo "done." + fi diff --git a/meta-raspberrypi/.github/actions/docker-clean-image/action.yml b/meta-raspberrypi/.github/actions/docker-clean-image/action.yml new file mode 100644 index 0000000000..dfc18d97ef --- /dev/null +++ b/meta-raspberrypi/.github/actions/docker-clean-image/action.yml @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: "Cleanup docker storage" + +inputs: + docker_image: + required: true + description: "The name of the docker image" + +runs: + using: "composite" + steps: + - name: Cleanup temporary image + shell: bash + run: | + echo "Cleanup ${{ inputs.docker_image }} image..." + docker rmi "${{ inputs.docker_image }}" || true diff --git a/meta-raspberrypi/.github/workflows/cancel-redundant-workflows.yml b/meta-raspberrypi/.github/workflows/cancel-redundant-workflows.yml new file mode 100644 index 0000000000..45a74436a2 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/cancel-redundant-workflows.yml @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: Cancel redundant workflows + +on: + workflow_run: + workflows: + - "Builds" + - "Compliance" + - "Yocto Compatible" + types: + - requested + +jobs: + cancel-redundant-workflows: + runs-on: [self-hosted, Linux] + steps: + - uses: styfle/cancel-workflow-action@0.9.1 + with: + all_but_latest: true + workflow_id: ${{ github.event.workflow.id }} diff --git a/meta-raspberrypi/.github/workflows/compliance.yml b/meta-raspberrypi/.github/workflows/compliance.yml new file mode 100644 index 0000000000..35e47310a0 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/compliance.yml @@ -0,0 +1,47 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: Compliance + +on: + pull_request: + +jobs: + dco: + name: DCO + runs-on: [self-hosted, Linux] + steps: + - name: Checkout the code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Build a temporary DCO image + uses: ./.github/actions/docker-build + with: + docker_image: dco-check + id: ${{ github.event.number }} + - name: Do DCO check + run: | + docker run --rm -v "$GITHUB_WORKSPACE:/work:ro" \ + --env "BASE_REF=$GITHUB_BASE_REF" \ + "dco-check-${{ github.event.number }}" + - name: Cleanup temporary docker image + uses: ./.github/actions/docker-clean-image + with: + docker_image: dco-check-${{ github.event.number }} + if: always() + - name: Cleanup dangling docker images + uses: ./.github/actions/docker-clean-dangling + if: always() + reuse: + name: reuse + runs-on: [self-hosted, Linux] + steps: + - name: Checkout the code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Do reuse check + continue-on-error: true + uses: fsfe/reuse-action@v1 diff --git a/meta-raspberrypi/.github/workflows/docker-images/README.md b/meta-raspberrypi/.github/workflows/docker-images/README.md new file mode 100644 index 0000000000..86cfddc191 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/README.md @@ -0,0 +1,21 @@ +<!-- +SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> + +SPDX-License-Identifier: MIT +--> + +# Docker images for CI + +Each directory contains the files for a docker image. + +## Building an image + +When building a docker image, the build context is expected to be where this +`README.md` file resides. This means that building the images will require +passing the appropriate `-f` argument. + +Here is an example for building the `dco-check` image: + +``` +docker build . -f dco-check/Dockerfile -t dco-check +``` diff --git a/meta-raspberrypi/.github/workflows/docker-images/dco-check/Dockerfile b/meta-raspberrypi/.github/workflows/docker-images/dco-check/Dockerfile new file mode 100644 index 0000000000..89901ae6ed --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/dco-check/Dockerfile @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +FROM christophebedard/dco-check:latest + +# Run under normal user called 'ci' +RUN useradd --create-home --uid 1000 --shell /usr/bin/bash ci +USER ci + +COPY ./dco-check/entrypoint.sh / +COPY ./utils.sh / +ENTRYPOINT ["/entrypoint.sh"] diff --git a/meta-raspberrypi/.github/workflows/docker-images/dco-check/README.md b/meta-raspberrypi/.github/workflows/docker-images/dco-check/README.md new file mode 100644 index 0000000000..bf5324170a --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/dco-check/README.md @@ -0,0 +1,16 @@ +<!-- +SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> + +SPDX-License-Identifier: MIT +--> + +# Docker image for DCO checks + +This image provides the environment and the logic of running a DCO check +against a repository. + +## Configuration + +The `entrypoint.sh` script assumes at runtime that the repository to be checked +is available under `/work`. This path is to be populated via bind mounts when +running the container. diff --git a/meta-raspberrypi/.github/workflows/docker-images/dco-check/entrypoint.sh b/meta-raspberrypi/.github/workflows/docker-images/dco-check/entrypoint.sh new file mode 100755 index 0000000000..135d410c6e --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/dco-check/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +set -e + +# shellcheck disable=SC1091 +. /utils.sh + +GIT_REPO_PATH="/work" + +[ -n "$BASE_REF" ] || + error "DCO checks needs to know the target branch. Make sure that is set in BASE_REF." +[ -d "$GIT_REPO_PATH/.git" ] || + error "Can't find a git checkout under $GIT_REPO_PATH ." +cd "$GIT_REPO_PATH" +dco-check \ + --verbose \ + --default-branch "origin/$BASE_REF" diff --git a/meta-raspberrypi/.github/workflows/docker-images/utils.sh b/meta-raspberrypi/.github/workflows/docker-images/utils.sh new file mode 100644 index 0000000000..66bdb09f39 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/utils.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +_log() { + _level="$1" + _msg="$2" + echo "[$_level] $_msg" +} + +error() { + _msg="$1" + _log "ERR" "$1" + exit 1 +} + +warn() { + _msg="$1" + _log "WRN" "$1" + exit 1 +} + +log() { + _msg="$1" + _log "LOG" "$1" +} diff --git a/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile new file mode 100644 index 0000000000..87221b9e79 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/Dockerfile @@ -0,0 +1,39 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +FROM ubuntu:20.04 + +ARG DEBIAN_FRONTEND="noninteractive" +RUN apt-get update -qq +RUN apt-get install -y eatmydata + +# Yocto/OE build host dependencies +# Keep this in sync with +# https://git.yoctoproject.org/poky/tree/documentation/poky.yaml +RUN eatmydata apt-get install -qq -y \ + gawk wget git diffstat unzip texinfo gcc build-essential chrpath \ + socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \ + iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \ + pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool + +# en_US.UTF-8 is required by the build system +RUN eatmydata apt-get install -qq -y locales \ + && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \ + && locale-gen +ENV LANG en_US.utf8 + +RUN eatmydata apt-get clean && rm -rf /var/lib/apt/lists/* + +# Have bash as shell +RUN echo "dash dash/sh boolean false" | debconf-set-selections \ + && dpkg-reconfigure dash + +# Run under normal user called 'ci' +RUN useradd --create-home --uid 1000 --shell /usr/bin/bash ci +USER ci +WORKDIR /home/ci + +COPY ./yocto-builder/entrypoint-yocto-check-layer.sh / +COPY ./yocto-builder/entrypoint-build.sh / +COPY ./utils.sh / diff --git a/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/README.md b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/README.md new file mode 100644 index 0000000000..6336fb88af --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/README.md @@ -0,0 +1,16 @@ +<!-- +SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> + +SPDX-License-Identifier: MIT +--> + +# Docker image for builds + +This defines the docker image for running Yocto/OE based operations/builds. It +privides multiple scripts for driving different operations. + +## Configuration + +The `entrypoint` scripts assumes at runtime that the repository to drive the +operation against is available under `/work`. This path is to be populated via +bind mounts when running the container. diff --git a/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/entrypoint-build.sh b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/entrypoint-build.sh new file mode 100755 index 0000000000..a98fa2a190 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/entrypoint-build.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +set -ex + +# shellcheck disable=SC1091 +. /utils.sh + +META_RASPBERRYPI_PATH="/work" + +[ -n "$BASE_REF" ] || + error "Target branch is needed. Make sure that is set in BASE_REF." +[ -d "$META_RASPBERRYPI_PATH/.git" ] || + error "Can't find a git checkout under $META_RASPBERRYPI_PATH ." +[ -n "$MACHINE" ] || + error "Machine to be used for build not provided." +[ -n "$IMAGE" ] || + error "Image to build not provided." + +TEMP_DIR="$(mktemp -d)" +cd "$TEMP_DIR" + +REPOS=" \ + git://git.yoctoproject.org/poky.git \ +" +for repo in $REPOS; do + log "Cloning $repo on branch $BASE_REF..." + git clone --depth 1 --branch "$BASE_REF" "$repo" +done + +# shellcheck disable=SC1091,SC2240 +. ./poky/oe-init-build-env build + +# Build configuration +printf "\n# ------ ci ------\n" >> conf/local.conf +[ -z "$SSTATE_DIR" ] || echo SSTATE_DIR = \""$SSTATE_DIR"\" >> conf/local.conf +[ -z "$DL_DIR" ] || echo DL_DIR = \""$DL_DIR"\" >> conf/local.conf +[ -z "$DISTRO" ] || echo DISTRO = \""$DISTRO"\" >> conf/local.conf +cat <<EOCONF >>conf/local.conf +BB_NUMBER_THREADS = "6" +PARALLEL_MAKE = "-j 6" +DISTRO_FEATURES:append = " systemd" +VIRTUAL-RUNTIME_init_manager = "systemd" +DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit" +VIRTUAL-RUNTIME_initscripts = "systemd-compat-units" +EOCONF + +# Add the BSP layer +bitbake-layers add-layer "$META_RASPBERRYPI_PATH" + +# Log configs for debugging purposes +for f in 'conf/local.conf' 'conf/bblayers.conf'; do + printf "\n------ %s ------\n" "$f" + cat "$f" +done + +# Fire! +MACHINE="$MACHINE" bitbake "$IMAGE" diff --git a/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh new file mode 100755 index 0000000000..474a24ed2f --- /dev/null +++ b/meta-raspberrypi/.github/workflows/docker-images/yocto-builder/entrypoint-yocto-check-layer.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +set -ex + +# shellcheck disable=SC1091 +. /utils.sh + +GIT_REPO_PATH="/work" + +[ -n "$BASE_REF" ] || + error "Target branch is needed. Make sure that is set in BASE_REF." +[ -d "$GIT_REPO_PATH/.git" ] || + error "Can't find a git checkout under $GIT_REPO_PATH ." + +TEMP_DIR="$(mktemp -d)" +cd "$TEMP_DIR" + +REPOS=" \ + git://git.yoctoproject.org/poky.git \ +" +for repo in $REPOS; do + log "Cloning $repo on branch $BASE_REF..." + git clone --depth 1 --branch "$BASE_REF" "$repo" +done + +# shellcheck disable=SC1091,SC2240 +. ./poky/oe-init-build-env build +yocto-check-layer --with-software-layer-signature-check --debug \ + "$GIT_REPO_PATH" diff --git a/meta-raspberrypi/.github/workflows/mirror.yml b/meta-raspberrypi/.github/workflows/mirror.yml new file mode 100644 index 0000000000..11bb185c15 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/mirror.yml @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: Mirrors + +on: [ push, delete, create ] + +concurrency: + group: git-mirror-me + +jobs: + yocto-mirror: + name: Yocto Git Mirror + runs-on: [self-hosted, Linux] + steps: + - uses: agherzan/git-mirror-me-action@v1.0.0 + env: + SSH_PRIVATE_KEY: ${{ secrets.YOCTO_META_RASPBERRYPI_SSH_PRIVATE_KEY }} + SSH_KNOWN_HOSTS: ${{ secrets.YOCTO_META_RASPBERRYPI_SSH_KNOWN_HOSTS }} + with: + destination-repository: "git@push.yoctoproject.org:meta-raspberrypi" diff --git a/meta-raspberrypi/.github/workflows/yocto-builds.yml b/meta-raspberrypi/.github/workflows/yocto-builds.yml new file mode 100644 index 0000000000..2d35b9f781 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/yocto-builds.yml @@ -0,0 +1,66 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: Builds + +on: + pull_request: + +jobs: + build: + strategy: + fail-fast: true + matrix: + machine: + - raspberrypi + - raspberrypi0-2w-64 + - raspberrypi0-2w + - raspberrypi0 + - raspberrypi0-wifi + - raspberrypi2 + - raspberrypi3-64 + - raspberrypi3 + - raspberrypi4-64 + - raspberrypi4 + - raspberrypi-cm3 + - raspberrypi-cm + image: [core-image-base] + distro: [poky] + runs-on: [self-hosted, Linux] + name: ${{ matrix.machine }}/${{ matrix.image }}/poky/systemd + env: + DL_DIR: /var/lib/ci/yocto/downloads + SSTATE_DIR: /var/lib/ci/yocto/sstate + steps: + - name: Checkout the code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Build a temporary yocto-builder image + uses: ./.github/actions/docker-build + with: + docker_image: yocto-builder + id: ${{ github.event.number }} + - name: Build the image + run: | + docker run --rm \ + -v "$GITHUB_WORKSPACE:/work:ro" \ + -v "$DL_DIR:$DL_DIR:rw" \ + -v "$SSTATE_DIR:$SSTATE_DIR:rw" \ + --env "BASE_REF=$GITHUB_BASE_REF" \ + --env "MACHINE=${{ matrix.machine }}" \ + --env "DISTRO=${{ matrix.distro }}" \ + --env "IMAGE=${{ matrix.image }}" \ + --env "DL_DIR=$DL_DIR" \ + --env "SSTATE_DIR=$SSTATE_DIR" \ + "yocto-builder-${{ github.event.number }}" \ + /entrypoint-build.sh + - name: Cleanup temporary docker image + uses: ./.github/actions/docker-clean-image + with: + docker_image: yocto-builder-${{ github.event.number }} + if: always() + - name: Cleanup dangling docker images + uses: ./.github/actions/docker-clean-dangling + if: always() diff --git a/meta-raspberrypi/.github/workflows/yocto-layer.yml b/meta-raspberrypi/.github/workflows/yocto-layer.yml new file mode 100644 index 0000000000..3d5baf8397 --- /dev/null +++ b/meta-raspberrypi/.github/workflows/yocto-layer.yml @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: Andrei Gherzan <andrei.gherzan@huawei.com> +# +# SPDX-License-Identifier: MIT + +name: Yocto Compatible + +on: + pull_request: + +jobs: + yocto-check-layer: + name: Validate with yocto-check-layer + runs-on: [self-hosted, Linux] + steps: + - name: Checkout the code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Build a temporary yocto-builder image + uses: ./.github/actions/docker-build + with: + docker_image: yocto-builder + id: ${{ github.event.number }} + - name: Run yocto-check-layer + run: | + docker run --rm -v "$GITHUB_WORKSPACE:/work:ro" \ + --env "BASE_REF=$GITHUB_BASE_REF" \ + "yocto-builder-${{ github.event.number }}" \ + /entrypoint-yocto-check-layer.sh + - name: Cleanup temporary docker image + uses: ./.github/actions/docker-clean-image + with: + docker_image: yocto-builder-${{ github.event.number }} + if: always() + - name: Cleanup dangling docker images + uses: ./.github/actions/docker-clean-dangling + if: always() diff --git a/meta-raspberrypi/README.md b/meta-raspberrypi/README.md index c6d6392a31..a7a04b49f6 100644 --- a/meta-raspberrypi/README.md +++ b/meta-raspberrypi/README.md @@ -39,11 +39,6 @@ This layer depends on: * branch: master * revision: HEAD -* URI: git://git.openembedded.org/meta-openembedded - * layers: meta-oe, meta-multimedia, meta-networking, meta-python - * branch: master - * revision: HEAD - ## Quick Start 1. source poky/oe-init-build-env rpi-build @@ -75,6 +70,13 @@ And the same for the `distro`. For further information, you can read more at <https://kas.readthedocs.io/en/1.0/index.html> +## Contributing + +You can send patches using the GitHub pull request process or/and through the +Yocto mailing list. Refer to the +[documentation](https://meta-raspberrypi.readthedocs.io/en/latest/contributing.html) +for more information. + ## Maintainers * Andrei Gherzan `<andrei at gherzan.com>` diff --git a/meta-raspberrypi/classes/sdcard_image-rpi.bbclass b/meta-raspberrypi/classes/sdcard_image-rpi.bbclass index a3a693960a..1389720346 100644 --- a/meta-raspberrypi/classes/sdcard_image-rpi.bbclass +++ b/meta-raspberrypi/classes/sdcard_image-rpi.bbclass @@ -79,11 +79,11 @@ def split_overlays(d, out, ver=None): dts = d.getVar("KERNEL_DEVICETREE") # Device Tree Overlays are assumed to be suffixed by '-overlay.dtb' (4.1.x) or by '.dtbo' (4.4.9+) string and will be put in a dedicated folder if out: - overlays = oe.utils.str_filter_out('\S+\-overlay\.dtb$', dts, d) - overlays = oe.utils.str_filter_out('\S+\.dtbo$', overlays, d) + overlays = oe.utils.str_filter_out(r'\S+\-overlay\.dtb$', dts, d) + overlays = oe.utils.str_filter_out(r'\S+\.dtbo$', overlays, d) else: - overlays = oe.utils.str_filter('\S+\-overlay\.dtb$', dts, d) + \ - " " + oe.utils.str_filter('\S+\.dtbo$', dts, d) + overlays = oe.utils.str_filter(r'\S+\-overlay\.dtb$', dts, d) + \ + " " + oe.utils.str_filter(r'\S+\.dtbo$', dts, d) return overlays diff --git a/meta-raspberrypi/conf/layer.conf b/meta-raspberrypi/conf/layer.conf index 7f634aeae7..d7ad4ed2a2 100644 --- a/meta-raspberrypi/conf/layer.conf +++ b/meta-raspberrypi/conf/layer.conf @@ -9,7 +9,7 @@ BBFILE_COLLECTIONS += "raspberrypi" BBFILE_PATTERN_raspberrypi := "^${LAYERDIR}/" BBFILE_PRIORITY_raspberrypi = "9" -LAYERSERIES_COMPAT_raspberrypi = "honister" +LAYERSERIES_COMPAT_raspberrypi = "kirkstone" LAYERDEPENDS_raspberrypi = "core" # Additional license directories. diff --git a/meta-raspberrypi/conf/machine/include/rpi-base.inc b/meta-raspberrypi/conf/machine/include/rpi-base.inc index 0e65d00349..a7a762cd0d 100644 --- a/meta-raspberrypi/conf/machine/include/rpi-base.inc +++ b/meta-raspberrypi/conf/machine/include/rpi-base.inc @@ -23,6 +23,7 @@ RPI_KERNEL_DEVICETREE_OVERLAYS ?= " \ overlays/gpio-ir-tx.dtbo \ overlays/gpio-key.dtbo \ overlays/gpio-poweroff.dtbo \ + overlays/gpio-shutdown.dtbo \ overlays/hifiberry-amp.dtbo \ overlays/hifiberry-dac.dtbo \ overlays/hifiberry-dacplus.dtbo \ @@ -30,6 +31,7 @@ RPI_KERNEL_DEVICETREE_OVERLAYS ?= " \ overlays/justboom-both.dtbo \ overlays/justboom-dac.dtbo \ overlays/justboom-digi.dtbo \ + overlays/i2c-gpio.dtbo \ overlays/i2c-rtc.dtbo \ overlays/imx219.dtbo \ overlays/imx477.dtbo \ @@ -46,6 +48,7 @@ RPI_KERNEL_DEVICETREE_OVERLAYS ?= " \ overlays/rpi-ft5406.dtbo \ overlays/rpi-poe.dtbo \ overlays/vc4-fkms-v3d.dtbo \ + overlays/vc4-fkms-v3d-pi4.dtbo \ overlays/vc4-kms-v3d.dtbo \ overlays/vc4-kms-v3d-pi4.dtbo \ overlays/vc4-kms-dsi-7inch.dtbo \ @@ -97,6 +100,7 @@ MACHINE_FEATURES_BACKFILL_CONSIDERED = "rtc" MACHINE_EXTRA_RRECOMMENDS += "kernel-modules udev-rules-rpi" MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "${@oe.utils.conditional('ENABLE_I2C', '1', 'kernel-module-i2c-dev kernel-module-i2c-bcm2708', '', d)}" MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "${@oe.utils.conditional('ENABLE_IR', '1', 'kernel-module-gpio-ir kernel-module-gpio-ir-tx', '', d)}" +MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "${@oe.utils.conditional('ENABLE_GPIO_SHUTDOWN', '1', 'gpio-shutdown kernel-module-gpio-keys', '', d)}" SERIAL_CONSOLES_CHECK ??= "${SERIAL_CONSOLES}" diff --git a/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc b/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc index 17d5bd6d59..8ff283936f 100644 --- a/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc +++ b/meta-raspberrypi/conf/machine/include/rpi-default-versions.inc @@ -1,3 +1,3 @@ # RaspberryPi BSP default versions -PREFERRED_VERSION_linux-raspberrypi ??= "5.10.%" +PREFERRED_VERSION_linux-raspberrypi ??= "5.15.%" diff --git a/meta-raspberrypi/conf/machine/raspberrypi0-2w.conf b/meta-raspberrypi/conf/machine/raspberrypi0-2w.conf new file mode 100644 index 0000000000..c360d90ff9 --- /dev/null +++ b/meta-raspberrypi/conf/machine/raspberrypi0-2w.conf @@ -0,0 +1,17 @@ +#@TYPE: Machine +#@NAME: RaspberryPi0 2 Wifi Development Board +#@DESCRIPTION: Machine configuration for the RaspberryPi0 2 Wifi in 32 bits mode + +include conf/machine/raspberrypi3.conf + +MACHINEOVERRIDES := "${@'${MACHINEOVERRIDES}'.replace(':${MACHINE}',':raspberrypi3:${MACHINE}')}" + +MACHINE_EXTRA_RRECOMMENDS += "\ + linux-firmware-rpidistro-bcm43436 \ + linux-firmware-rpidistro-bcm43436s \ + bluez-firmware-rpidistro-bcm43430b0-hcd \ +" + +RPI_KERNEL_DEVICETREE = " \ + bcm2710-rpi-zero-2.dtb \ + " diff --git a/meta-raspberrypi/conf/machine/raspberrypi4-64.conf b/meta-raspberrypi/conf/machine/raspberrypi4-64.conf index 4255431086..0cf7d512bd 100644 --- a/meta-raspberrypi/conf/machine/raspberrypi4-64.conf +++ b/meta-raspberrypi/conf/machine/raspberrypi4-64.conf @@ -12,6 +12,8 @@ MACHINE_EXTRA_RRECOMMENDS += "\ bluez-firmware-rpidistro-bcm4345c5-hcd \ " +DEFAULTTUNE = "cortexa72" + require conf/machine/include/arm/armv8a/tune-cortexa72.inc include conf/machine/include/rpi-base.inc diff --git a/meta-raspberrypi/docs/contributing.md b/meta-raspberrypi/docs/contributing.md index 5b712ae08e..9ecb6cb896 100644 --- a/meta-raspberrypi/docs/contributing.md +++ b/meta-raspberrypi/docs/contributing.md @@ -86,6 +86,10 @@ Then, for sending patches to the mailing list, you may use this command: git send-email --to yocto@lists.yoctoproject.org <generated patch> +When patches are sent through the mailing list, the maintainer will include +them in a GitHub pull request that will take the patches through the CI +workflows. This process happens periodically. + ## GitHub issues In order to manage and track the layer issues more efficiently, the diff --git a/meta-raspberrypi/docs/extra-apps.md b/meta-raspberrypi/docs/extra-apps.md index 53007dc1f0..dbbfb8ddb1 100644 --- a/meta-raspberrypi/docs/extra-apps.md +++ b/meta-raspberrypi/docs/extra-apps.md @@ -6,4 +6,4 @@ omxplayer depends on libav which has a commercial license. So in order to be able to compile omxplayer you will need to whiteflag the commercial license in your local.conf: - LICENSE_FLAGS_WHITELIST = "commercial" + LICENSE_FLAGS_ACCEPTED = "commercial" diff --git a/meta-raspberrypi/docs/extra-build-config.md b/meta-raspberrypi/docs/extra-build-config.md index 82ec3c0f16..81eff0742c 100644 --- a/meta-raspberrypi/docs/extra-build-config.md +++ b/meta-raspberrypi/docs/extra-build-config.md @@ -320,6 +320,24 @@ Appropriate kernel modules will be also included in the image. By default the GPIO pin for gpio-ir is set to 18 and the pin for gpio-ir-tx is 17. Both pins can be easily changed by modifying variables `GPIO_IR` and `GPIO_IR_TX`. +## Enable gpio-shutdown + +When using device tree kernels, set this variable to enable gpio-shutdown: + + ENABLE_GPIO_SHUTDOWN = "1" + +This will add the corresponding device tree overlay to config.txt and include +the gpio-keys kernel module in the image. If System V init is used, additional +mapping is applied to bind the button event to shutdown command. Systemd init +should handle the event out of the box. + +By default the feature uses gpio pin 3 (except RPi 1 Model B rev 1 enumerates +the pin as gpio 1). This conflicts with the I2C bus. If you set `ENABLE_I2C` +to `1` or enabled `PiTFT` support, or otherwise want to use another pin, use +`GPIO_SHUTDOWN_PIN` to assign another pin. Example using gpio pin 25: + + GPIO_SHUTDOWN_PIN = "25" + ## Manual additions to config.txt The `RPI_EXTRA_CONFIG` variable can be used to manually add additional lines to diff --git a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-blinka_6.2.2.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-blinka_6.2.2.bb index b9fb9153c6..9e1e357a8b 100644 --- a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-blinka_6.2.2.bb +++ b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-blinka_6.2.2.bb @@ -28,3 +28,6 @@ RDEPENDS:${PN} += " \ " RDEPENDS:${PN}:append:rpi = " rpi-gpio" + +COMPATIBLE_HOST:libc-musl:class-target = "null" + diff --git a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-busdevice_5.0.5.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-busdevice_5.0.5.bb index 2cf8afddf9..93491d43cc 100644 --- a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-busdevice_5.0.5.bb +++ b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-busdevice_5.0.5.bb @@ -16,3 +16,4 @@ RDEPENDS:${PN} += " \ python3-adafruit-blinka \ python3-core \ " +COMPATIBLE_HOST:libc-musl:class-target = "null" diff --git a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-motor_3.2.6.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motor_3.2.6.bb index d572cab17d..3233c8f2bc 100644 --- a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-motor_3.2.6.bb +++ b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motor_3.2.6.bb @@ -16,3 +16,4 @@ RDEPENDS:${PN} += " \ python3-adafruit-blinka \ python3-core \ " +COMPATIBLE_HOST:libc-musl:class-target = "null" diff --git a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-motorkit_1.6.1.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motorkit_1.6.1.bb index 94eed3e48e..39fe76aab7 100644 --- a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-motorkit_1.6.1.bb +++ b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-motorkit_1.6.1.bb @@ -20,3 +20,4 @@ RDEPENDS:${PN} += " \ python3-adafruit-circuitpython-register \ python3-core \ " +COMPATIBLE_HOST:libc-musl:class-target = "null" diff --git a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-pca9685_3.3.4.bb b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-pca9685_3.3.4.bb index 8656d75c79..f7f0ff162b 100644 --- a/meta-raspberrypi/recipes-devtools/python/python3-adafruit-circuitpython-pca9685_3.3.4.bb +++ b/meta-raspberrypi/dynamic-layers/openembedded-layer/recipes-devtools/python3-adafruit-circuitpython-pca9685_3.3.4.bb @@ -18,3 +18,4 @@ RDEPENDS:${PN} += " \ python3-adafruit-circuitpython-register \ python3-core \ " +COMPATIBLE_HOST:libc-musl:class-target = "null" diff --git a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb index f78c6d7f98..d9d8bb05ac 100644 --- a/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb +++ b/meta-raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bb @@ -34,6 +34,8 @@ ENABLE_UART ??= "" WM8960="${@bb.utils.contains("MACHINE_FEATURES", "wm8960", "1", "0", d)}" +GPIO_SHUTDOWN_PIN ??= "" + inherit deploy nopackages do_deploy() { @@ -253,6 +255,22 @@ do_deploy() { echo "dtoverlay=mcp2515-can0,oscillator=${CAN_OSCILLATOR},interrupt=25" >>$CONFIG fi + + if [ "${ENABLE_GPIO_SHUTDOWN}" = "1" ]; then + if ([ "${ENABLE_I2C}" = "1" ] || [ "${PITFT}" = "1" ]) && [ -z "${GPIO_SHUTDOWN_PIN}" ]; then + # By default GPIO shutdown uses the same pin as the (master) I2C SCL. + # If I2C is configured and an alternative pin is not configured for + # gpio-shutdown, there is a configuration conflict. + bbfatal "I2C and gpio-shutdown are both enabled and using the same pins!" + fi + echo "# Enable gpio-shutdown" >> $CONFIG + if [ -z "${GPIO_SHUTDOWN_PIN}" ]; then + echo "dtoverlay=gpio-shutdown" >> $CONFIG + else + echo "dtoverlay=gpio-shutdown,gpio_pin=${GPIO_SHUTDOWN_PIN}" >> $CONFIG + fi + fi + # Append extra config if the user has provided any printf "${RPI_EXTRA_CONFIG}\n" >> $CONFIG diff --git a/meta-raspberrypi/recipes-bsp/gpio-shutdown/files/bind_gpio_shutdown.tab b/meta-raspberrypi/recipes-bsp/gpio-shutdown/files/bind_gpio_shutdown.tab new file mode 100644 index 0000000000..00cc4857d8 --- /dev/null +++ b/meta-raspberrypi/recipes-bsp/gpio-shutdown/files/bind_gpio_shutdown.tab @@ -0,0 +1,2 @@ +# Action on special keypress (Key Power) +kb::kbrequest:/sbin/shutdown -t1 -a -h -P now diff --git a/meta-raspberrypi/recipes-bsp/gpio-shutdown/files/gpio-shutdown-keymap.sh b/meta-raspberrypi/recipes-bsp/gpio-shutdown/files/gpio-shutdown-keymap.sh new file mode 100644 index 0000000000..bae50daf14 --- /dev/null +++ b/meta-raspberrypi/recipes-bsp/gpio-shutdown/files/gpio-shutdown-keymap.sh @@ -0,0 +1,13 @@ +#!/bin/sh +## +# Bind the gpio-shutdown keycode as Keyboard signal and load it to the +# keymap during startup. +## +case "$1" in + start) + # Inject the gpio keycode to keymap + echo "keycode 116 = KeyboardSignal" | loadkeys + ;; + *) + ;; +esac diff --git a/meta-raspberrypi/recipes-bsp/gpio-shutdown/gpio-shutdown.bb b/meta-raspberrypi/recipes-bsp/gpio-shutdown/gpio-shutdown.bb new file mode 100644 index 0000000000..d6908400bd --- /dev/null +++ b/meta-raspberrypi/recipes-bsp/gpio-shutdown/gpio-shutdown.bb @@ -0,0 +1,31 @@ +SUMMARY = "GPIO shutdown bindings for SysV init" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "file://bind_gpio_shutdown.tab \ + file://gpio-shutdown-keymap.sh \ +" + +inherit update-rc.d + +INITSCRIPT_NAME = "gpio-shutdown-keymap.sh" +# Run only once during startup +INITSCRIPT_PARAMS = "start 99 S ." + +do_install() { + # The files are only needed if using SysV init. + if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then + install -d ${D}${sysconfdir} \ + ${D}${sysconfdir}/inittab.d \ + ${D}${sysconfdir}/init.d + + install -m 0755 ${WORKDIR}/gpio-shutdown-keymap.sh ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/bind_gpio_shutdown.tab ${D}${sysconfdir}/inittab.d/ + elif ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + # Systemd init does not require any configuration. + # Note: cannot have an empty branch, hence the redundant dir install. + install -d ${D}${sysconfdir} + else + bbwarn "Not using sysvinit or systemd. The gpio-shutdown may require additional configuration." + fi +} diff --git a/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb b/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb index 87252bb131..6538f6a03b 100644 --- a/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb +++ b/meta-raspberrypi/recipes-devtools/bcm2835/bcm2835_1.52.bb @@ -5,7 +5,7 @@ SECTION = "base" HOMEPAGE = "http://www.open.com.au/mikem/bcm2835" AUTHOR = "Mike McCauley (mikem@open.com.au)" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" COMPATIBLE_MACHINE = "^rpi$" diff --git a/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.7.0.bb b/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.7.0.bb index 8b13d53a60..574021ec41 100644 --- a/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.7.0.bb +++ b/meta-raspberrypi/recipes-devtools/python/rpi-gpio_0.7.0.bb @@ -5,7 +5,7 @@ LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENCE.txt;md5=9b95630a648966b142f1a0dcea001cb7" PYPI_PACKAGE = "RPi.GPIO" -inherit pypi distutils3 +inherit pypi setuptools3 SRC_URI += "file://0001-Remove-nested-functions.patch" SRC_URI[md5sum] = "777617f9dea9a1680f9af43db0cf150e" diff --git a/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb b/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb index 1c8075f3e2..f75806e3f6 100644 --- a/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb +++ b/meta-raspberrypi/recipes-devtools/python/rpio_0.10.0.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Advanced GPIO for the Raspberry Pi. Extends RPi.GPIO with PWM, \ GPIO interrups, TCP socket interrupts, command line tools and more" HOMEPAGE = "https://github.com/metachris/RPIO" SECTION = "devel/python" -LICENSE = "LGPLv3+" +LICENSE = "LGPL-3.0-or-later" LIC_FILES_CHKSUM = "file://README.rst;beginline=41;endline=53;md5=d5d95d7486a4d98c999675c23196b25a" PYPI_PACKAGE = "RPIO" diff --git a/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend index 25829c26b0..ee4812fce7 100644 --- a/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend +++ b/meta-raspberrypi/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend @@ -1,4 +1,4 @@ -OPENGL_PKGCONFIGS:rpi = "dri glx ${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'dri3 xshmfence glamor', '', d)}" +OPENGL_PKGCONFIGS:rpi = "dri glx ${@bb.utils.contains('MACHINE_FEATURES', 'vc4graphics', 'dri3 glamor', '', d)}" # when using userland graphic KHR/khrplatform.h is provided by userland but virtual/libgl is provided by mesa-gl where # we explicitly delete KHR/khrplatform.h since its already coming from userland package diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc index ea47b5643b..f790c3c5d2 100644 --- a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc +++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc @@ -1,6 +1,6 @@ DESCRIPTION = "Linux Kernel for Raspberry Pi" SECTION = "kernel" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46" COMPATIBLE_MACHINE = "^rpi$" diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.10.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.10.bb index c28968cbd0..b3122e5d2c 100644 --- a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.10.bb +++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.10.bb @@ -1,8 +1,8 @@ -LINUX_VERSION ?= "5.10.81" +LINUX_VERSION ?= "5.10.83" LINUX_RPI_BRANCH ?= "rpi-5.10.y" LINUX_RPI_KMETA_BRANCH ?= "yocto-5.10" -SRCREV_machine = "f9bd396cd0f5f8c2026473f1e570deed3d08d350" +SRCREV_machine = "111a297d94e361de88d04b574acbca1bd5858cdb" SRCREV_meta = "e1979ceb171bc91ef2cb71cfcde548a101dab687" KMETA = "kernel-meta" diff --git a/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.15.bb b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.15.bb new file mode 100644 index 0000000000..699a31fd10 --- /dev/null +++ b/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.15.bb @@ -0,0 +1,19 @@ +LINUX_VERSION ?= "5.15.24" +LINUX_RPI_BRANCH ?= "rpi-5.15.y" +LINUX_RPI_KMETA_BRANCH ?= "yocto-5.15" + +SRCREV_machine = "770d94882ac145c81af72e9a37180806c3f70bbd" +SRCREV_meta = "e1b976ee4fb5af517cf01a9f2dd4a32f560ca894" + +KMETA = "kernel-meta" + +SRC_URI = " \ + git://github.com/raspberrypi/linux.git;name=machine;branch=${LINUX_RPI_BRANCH};protocol=https \ + git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${LINUX_RPI_KMETA_BRANCH};destsuffix=${KMETA} \ + file://powersave.cfg \ + file://android-drivers.cfg \ + " + +require linux-raspberrypi.inc + +KERNEL_DTC_FLAGS += "-@ -H epapr" diff --git a/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend b/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend index 4a815abf2c..2bf628134c 100644 --- a/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend +++ b/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_%.bbappend @@ -1,2 +1,2 @@ -PACKAGECONFIG:append:rpi = " hls libmms \ - ${@bb.utils.contains('LICENSE_FLAGS_WHITELIST', 'commercial', 'faad', '', d)}" +PACKAGECONFIG:append:rpi = " hls \ + ${@bb.utils.contains('LICENSE_FLAGS_ACCEPTED', 'commercial', 'gpl faad', '', d)}" diff --git a/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.%.bbappend b/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.%.bbappend index f3fb1441d1..f3fb1441d1 100644 --- a/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.18.%.bbappend +++ b/meta-raspberrypi/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.%.bbappend diff --git a/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb b/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb index 64233b3b57..25196929f5 100644 --- a/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb +++ b/meta-raspberrypi/recipes-multimedia/omxplayer/omxplayer_git.bb @@ -4,7 +4,7 @@ Raspberry PI implementation and is quite handy to use standalone" HOMEPAGE = "https://github.com/popcornmix/omxplayer" SECTION = "console/utils" -LICENSE = "GPLv2" +LICENSE = "GPL-2.0-only" LIC_FILES_CHKSUM = "file://COPYING;md5=00a27da7ac0f9bcd17320ec29ef4bbf6" DEPENDS = "libpcre libav virtual/egl boost freetype dbus openssl libssh virtual/libomxil coreutils-native curl-native userland" diff --git a/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb b/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb new file mode 100644 index 0000000000..c1356f00ae --- /dev/null +++ b/meta-raspberrypi/recipes-multimedia/picamera-libs/picamera-libs.bb @@ -0,0 +1,26 @@ +SUMMARY = "Raspberrypi firmware libraries which are required by picamera library" +DESCRIPTION = "Raspberrypi firmware libraries required by picamera library" +LICENSE = "Broadcom-RPi" + +LIC_FILES_CHKSUM = "file://opt/vc/LICENCE;md5=86e53f5f5909ee66900418028de11780" + +include recipes-bsp/common/raspberrypi-firmware.inc + +S = "${WORKDIR}/firmware-${SRCREV}" + +do_install(){ + install -m 0755 -d ${D}${libdir} + install -m 0755 ${S}/opt/vc/lib/*.so ${D}${libdir} +} + +FILES:${PN} = "${libdir}" + +#skipping the QA error since we are directly copying precompiled binaries +INSANE_SKIP:${PN} = "ldflags" +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_SYSROOT_STRIP = "1" +SOLIBS = ".so" +FILES_SOLIBSDEV = "" + +COMPATIBLE_HOST = "null" +COMPATIBLE_HOST:rpi:libc-glibc = "(arm.*)-linux" diff --git a/meta-raspberrypi/recipes-multimedia/python3-picamera/python3-picamera_git.bb b/meta-raspberrypi/recipes-multimedia/python3-picamera/python3-picamera_git.bb new file mode 100644 index 0000000000..f14941b823 --- /dev/null +++ b/meta-raspberrypi/recipes-multimedia/python3-picamera/python3-picamera_git.bb @@ -0,0 +1,22 @@ +SUMMARY = "Python interface to the Raspberry Pi camera module" +DESCRIPTION = "This package provides a pure Python interface to the Raspberry Pi camera module for Python 2.7 (or above) or Python 3.2 (or above)." +HOMEPAGE = "https://github.com/waveform80/picamera" + +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=4de8aab427192e4a8322a71375d20e21" + +RDEPENDS:${PN} = "python3-numbers \ + python3-ctypes \ + python3-colorzero \ + picamera-libs \ +" + +SRC_URI = "git://git@github.com/waveform80/picamera.git;protocol=ssh;branch=master" +SRCREV = "7e4f1d379d698c44501fb84b886fadf3fc164b70" + +S = "${WORKDIR}/git" + +inherit setuptools3 + +COMPATIBLE_HOST = "null" +COMPATIBLE_HOST:rpi:libc-glibc = "(arm.*)-linux" |