diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 08b062d0c656f0439f3138670c83af7a3894f6d8..080f9a163d5d6ecadf5b984dec1086cdd63a76f5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,8 +13,11 @@ image: docker:latest stages: - lint + - check + - test - build - release + - deploy variables: GIT_SUBMODULE_STRATEGY: none @@ -113,6 +116,7 @@ tests buildroot patches: refs: - merge_requests changes: + - package/*/*.mk - package/*/*.patch - board/recalbox/patches/*/*.patch before_script: @@ -179,6 +183,68 @@ appimage-amd64: - 'projects/frontend/*.AppImage*' expire_in: 1 week +check_package: + stage: check + only: + refs: + - merge_requests + changes: + - package/*/*.mk + script: + - export files=$(git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA) + - export package_name=$(basename $files | cut -d"." -f1) + - export package_bl=$(echo $package_name | tr '[:lower:]' '[:upper:]' | tr '-' '_') + - cp generated-config.tpl generated-config.yml + - |- + for ARCH in x86_64 rpi4_64 odroidgo2 odroidxu4 rpi3 rpizero2legacy rpizero2 rg353x rpi5_64 + do + if grep -q "$package_bl" configs/recalbox-${ARCH}_defconfig;then + echo " - '$ARCH'" >> generated-config.yml + fi + done + artifacts: + paths: + - generated-config.yml + +trigger_build: + stage: test + trigger: + include: + - artifact: generated-config.yml + job: check_package + strategy: depend + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + changes: + - package/*/*.mk + +include: + - project: 'renovate-bot/renovate-runner' + file: '/templates/renovate.gitlab-ci.yml' + +.renovate-config: + extends: .renovate + image: + name: ghcr.io/renovatebot/renovate:39.75.0@sha256:34dcdc05e3505e16c9008708dc24d5da30ee130cc6fe30577a37c7cb4316c7fa + docker: + user: root + +renovate-runner: + extends: .renovate-config + rules: + - if: $CI_PIPELINE_SOURCE =~ "/^(schedule)$/" && $WHICH_SCHEDULE == "renovate" + when: always + - when: never + variables: + RENOVATE_EXTRA_FLAGS: 'beudbeud/recalbox' + before_script: + - apt update && apt install npm -y + # install chan to allow changelog updates + - npm install @geut/chan + # make chan available in path + - export PATH="$PATH:$(pwd)/node_modules/.bin" + # make our update_changelog script available in path + - export PATH="$PATH:$(pwd)" .build_template: &build_definition stage: build diff --git a/config.js b/config.js new file mode 100644 index 0000000000000000000000000000000000000000..c0f0bc5b17d635ccd50ad5a61c1a222ffdff60d3 --- /dev/null +++ b/config.js @@ -0,0 +1,10 @@ +module.exports = { + endpoint: 'https://gitlab.com/api/v4', + hostRules: [], + platform: 'gitlab', + username: 'renovate-bot', + gitAuthor: 'Renovate Bot ', + autodiscover: false, + allowPostUpgradeCommandTemplating: true, + allowedPostUpgradeCommands: ['^update_changelog'], +}; diff --git a/generated-config.tpl b/generated-config.tpl new file mode 100644 index 0000000000000000000000000000000000000000..fc4cf6bb7d343f94612c1a5de0c4d1b359098a3e --- /dev/null +++ b/generated-config.tpl @@ -0,0 +1,35 @@ +build_package: + image: docker:latest + variables: + RUNNER_SCRIPT_TIMEOUT: 3h + before_script: + - apk update && apk add git bash + - source scripts/release/functions.sh + script: + - set -euo pipefail + - export files=$(git diff-tree --no-commit-id --name-only -r $CI_COMMIT_SHA) + - export package_name=$(basename $files | cut -d"." -f1) + - export RECALBOX_VERSION="${CI_COMMIT_TAG:-$(date '+%Y/%m/%d') ${CI_COMMIT_REF_SLUG} (${CI_PIPELINE_ID})}" + - WORKDIR="$(pwd)" CCACHE="true" OUTPUTDIR="$(pwd)/output" + - mkdir -p ${OUTPUTDIR} + - docker build -t "recalbox-${ARCH}" . + - |- + docker run --rm --tmpfs /tmp:exec \ + --security-opt seccomp=unconfined \ + -v "${WORKDIR}:/work" \ + -v "${OUTPUTDIR}:/work/output" \ + -v "/recalbox-builds/dl:/share/dl" \ + -v "/recalbox-builds/ccaches/ccache-${ARCH}:/share/ccache" \ + -e "ARCH=${ARCH}" \ + -e "RECALBOX_VERSION=${RECALBOX_VERSION}" \ + -e "RECALBOX_CCACHE_ENABLED=${CCACHE}" \ + -e "PACKAGE=${package_name}" \ + "recalbox-${ARCH}" 2>&1 | tee build.log | grep '>>>' || tac build.log | grep '>>>' -m 1 -B 9999 | tac + - echo $? + tags: + - build + rules: + - if: $CI_PIPELINE_SOURCE == "parent_pipeline" + parallel: + matrix: + - ARCH: diff --git a/package/libretro-arduous/libretro-arduous.mk b/package/libretro-arduous/libretro-arduous.mk index 232cc8332413f9d15145d0a1ecc3afd3325df612..f861b2e9c9134c8849e0c6821bff352655de8a4d 100644 --- a/package/libretro-arduous/libretro-arduous.mk +++ b/package/libretro-arduous/libretro-arduous.mk @@ -5,7 +5,7 @@ ################################################################################ # Commit version of 2022/05/24 -LIBRETRO_ARDUOUS_VERSION = aed50506962df6f965748e888b3fe7027ddb410d +LIBRETRO_ARDUOUS_VERSION = aed50506962df6f965748e888b3fe7027ddb410d #main LIBRETRO_ARDUOUS_SITE = https://github.com/libretro/arduous.git LIBRETRO_ARDUOUS_SITE_METHOD = git LIBRETRO_ARDUOUS_GIT_SUBMODULES = YES diff --git a/package/libretro-dolphin/libretro-dolphin.mk b/package/libretro-dolphin/libretro-dolphin.mk index 9f0150350e54aaf0a252fff96f777a3bf20d7048..230faa5bb87fe49d5c61ce0c1ec8149d7e04d8fd 100644 --- a/package/libretro-dolphin/libretro-dolphin.mk +++ b/package/libretro-dolphin/libretro-dolphin.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBRETRO_DOLPHIN_VERSION = 2f4b0f7902257d40a054f60b2c670d6e314f2a04 +LIBRETRO_DOLPHIN_VERSION = 89a4df725d4eb24537728f7d655cddb1add25c18 LIBRETRO_DOLPHIN_SITE = https://github.com/libretro/dolphin LIBRETRO_DOLPHIN_SITE_METHOD=git LIBRETRO_DOLPHIN_GIT_SUBMODULES=YES diff --git a/package/libretro-gearcoleco/libretro-gearcoleco.mk b/package/libretro-gearcoleco/libretro-gearcoleco.mk index 3320a74ddce759f89fca7ba40f80e0986f3209cb..e86e8670e360a5e96dcbc3b1f70142694837c359 100644 --- a/package/libretro-gearcoleco/libretro-gearcoleco.mk +++ b/package/libretro-gearcoleco/libretro-gearcoleco.mk @@ -5,7 +5,7 @@ ################################################################################ # Commit of 2023/08/23 -LIBRETRO_GEARCOLECO_VERSION = cc7c19c776a12d149c2c935e2198ddad15f22f54 +LIBRETRO_GEARCOLECO_VERSION = cc7c19c776a12d149c2c935e2198ddad15f22f54 #main LIBRETRO_GEARCOLECO_SITE = $(call gitlab,recalbox,packages/libretro/Gearcoleco,$(LIBRETRO_GEARCOLECO_VERSION)) LIBRETRO_GEARCOLECO_LICENSE = GPL-3.0 LIBRETRO_GEARCOLECO_LICENSE_FILES = LICENSE diff --git a/package/libretro-genesisplusgxwide/libretro-genesisplusgxwide.mk b/package/libretro-genesisplusgxwide/libretro-genesisplusgxwide.mk index 6ad0094cd0756fe1460619534f416644c8426532..2996b66f441d687cf16f7f2dbe075dc52fd7d1ea 100644 --- a/package/libretro-genesisplusgxwide/libretro-genesisplusgxwide.mk +++ b/package/libretro-genesisplusgxwide/libretro-genesisplusgxwide.mk @@ -5,7 +5,7 @@ ################################################################################ # Commit of 2023/09/16 -LIBRETRO_GENESISPLUSGXWIDE_VERSION = f73cf1b0769127cee137a559f1c132b24c147923 +LIBRETRO_GENESISPLUSGXWIDE_VERSION = f73cf1b0769127cee137a559f1c132b24c147923 #main LIBRETRO_GENESISPLUSGXWIDE_SITE = $(call github,libretro,Genesis-Plus-GX-Wide,$(LIBRETRO_GENESISPLUSGXWIDE_VERSION)) LIBRETRO_GENESISPLUSGXWIDE_LICENSE = COPYRIGHT LIBRETRO_GENESISPLUSGXWIDE_LICENSE_FILES = LICENSE.txt diff --git a/package/libretro-swanstation/libretro-swanstation.mk b/package/libretro-swanstation/libretro-swanstation.mk index 94c3fc7a7a8c836ac6cb7c046060bfd7e192acd7..4cf138e10d10db84f003298200f0085dff1d825b 100644 --- a/package/libretro-swanstation/libretro-swanstation.mk +++ b/package/libretro-swanstation/libretro-swanstation.mk @@ -5,7 +5,7 @@ ################################################################################ # Commit of 2023/10/01 -LIBRETRO_SWANSTATION_VERSION = afb6bc73c7ce522190b19ec3e3c8a14eb264bdeb +LIBRETRO_SWANSTATION_VERSION = afb6bc73c7ce522190b19ec3e3c8a14eb264bdeb #main LIBRETRO_SWANSTATION_SITE = $(call github,libretro,swanstation,$(LIBRETRO_SWANSTATION_VERSION)) LIBRETRO_SWANSTATION_LICENSE = GPL-3.0 LIBRETRO_SWANSTATION_LICENSE_FILES = LICENSE diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000000000000000000000000000000000000..c9f95cceab50d68cc00b572a1a8cbcde26dc69a0 --- /dev/null +++ b/renovate.json @@ -0,0 +1,71 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + ":dependencyDashboard", + ":rebaseStalePrs", + ":disableRateLimiting" + ], + "labels": ["renovate"], + "lockFileMaintenance": {"enabled": false}, + "separateMajorMinor": false, + "recreateWhen": "always", + "enabledManagers": ["custom.regex"], + "ignorePaths": [ + "**custom/**", + "**/buildroot/**", + "**/libretro-retrodream/**"], + "stopUpdatingLabel": "Testing::Beta", + "prBodyNotes": ["{{#if newDigest}}> 🗒**Changelog**
[Compare revision {{{currentDigest}}} to {{{newDigest}}}]({{{packageName}}}/compare/{{{currentDigest}}}...{{{newDigest}}}){{/if}}"], + "prCreation": "approval", + "packageRules": [ + { + "matchPackagePatterns": ["*"], + "enabled": false + }, + { + "matchPackagePatterns": ["/libretro/"], + "enabled": true, + "labels": ["renovate", "Components::Emulators"], + "commitMessagePrefix": "chore:", + "commitMessageAction": "bump", + "commitMessageLowerCase": "auto", + "postUpgradeTasks": { + "commands": [ + "update_changelog \"Bump {{{depName}}}\"" + ], + "fileFilters": ["RELEASE-NOTES.md"] + } + }, + { + "matchPackagePatterns": ["/recalbox/"], + "enabled": true, + "labels": ["renovate", "Components::System"], + "commitMessagePrefix": "chore:", + "commitMessageAction": "bump", + "commitMessageLowerCase": "auto", + "postUpgradeTasks": { + "commands": [ + "update_changelog \"Bump {{{depName}}}\"" + ], + "fileFilters": ["RELEASE-NOTES.md"] + } + } + ], + "customManagers": [ + { + "customType": "regex", + "fileMatch": ["\\.mk$"], + "matchStringsStrategy": "combination", + "matchStrings": [ + ".*_VERSION = (?(?:v)?[\\w+\\.\\-]*)\\n", + ".*_VERSION = (?[a-f0-9]{40}) #(?.*)\\n", + ".*_VERSION = (?[a-f0-9]{40})\\n", + ".*_SITE = (?:https?:\\/\\/)?(?:.*call )?(?[\\w-]*)(?:\\.com)?.(?[\\w_-]*).(?[\\w_\\/-]*)" + ], + "currentValueTemplate": "{{#if currentDigest }}{{#if nameBranch }}{{{nameBranch}}}{{else}}master{{/if}}{{else}}{{{currentValue}}}{{/if}}", + "depNameTemplate": "{{{lowercase depName}}}", + "packageNameTemplate": "https://{{{siteName}}}.com/{{{orgName}}}/{{{depName}}}", + "datasourceTemplate": "{{#if currentDigest }}git-refs{{else}}git-tags{{/if}}" + } + ] +} diff --git a/update_changelog b/update_changelog new file mode 100755 index 0000000000000000000000000000000000000000..4cbef936ab287ad2a82988ba00ac8d4395829a6d --- /dev/null +++ b/update_changelog @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +# only run if changelog exists and does not already contain this specific version update +if test -f "RELEASE-NOTES.md" && ! grep -q "$@" "RELEASE-NOTES.md"; then + chan changed -g 'Dependency Updates' "$@" +fi