Compare commits

...

14 Commits

17 changed files with 258 additions and 96 deletions

View File

@@ -0,0 +1,34 @@
name: "Copy the latest ebuild for the package as version given"
description: "Checks if the ebuild with the specified version exists and if not - copies the latest existing one over"
inputs:
atom:
description: "category/name package atom"
required: true
version:
description: "the desired version of the ebuild"
required: true
outputs:
message:
description: "space separated list of versions added"
value: ${{ steps.copy.outputs.message }}
runs:
using: composite
steps:
- id: copy
shell: bash
run: |
set -euo pipefail
ebuild_dir="./${{ inputs.atom }}"
name=$(basename "${{ inputs.atom }}")
want_ebuild="${ebuild_dir}/${name}-${{ inputs.version }}.ebuild"
message=""
if [[ -f "${want_ebuild}" ]]; then
echo "Ebuild already exists"
else
existing_ebuilds=( "${ebuild_dir}"/*.ebuild )
latest_existing_ebuild="${existing_ebuilds[-1]}"
echo "Copying ${latest_existing_ebuild} to ${want_ebuild}"
cp "${latest_existing_ebuild}" "${want_ebuild}"
message="added ${{ inputs.version }}"
fi
echo "message=${message}" >> "${GITHUB_OUTPUT}"

View File

@@ -0,0 +1,5 @@
FROM gentoo/portage:latest as portage
FROM gentoo/stage3:amd64-openrc
COPY --from=portage /var/db/repos/gentoo /var/db/repos/gentoo
RUN emerge -q app-portage/portage-utils && rm -Rf /var/db/repos/gentoo
ENTRYPOINT [ "/bin/bash" ]

View File

@@ -0,0 +1,36 @@
name: "Drop ebuilds matching the condition"
description: "Checks if any ebuild for the package matches the condition and if so - removes them"
inputs:
atom:
description: "category/name package atom"
required: true
condition:
description: "version condition used to match ebuilds to drop"
required: true
outputs:
message:
description: "space-separated list of removed ebuild versions"
runs:
using: docker
image: Dockerfile
args:
- -c
- |
set -euo pipefail
condition_atom=$(echo "${{inputs.condition}}" | sed -r 's:^(<|>)=?:\0${{inputs.atom}}-:')
existing_ebuilds=( "./${{inputs.atom}}"/*.ebuild )
category=$(dirname "${{inputs.atom}}")
message=""
for ebuild in ${existing_ebuilds[@]}; do
p="=${category}/$(basename "${ebuild%.*}")"
echo "Checking ${p} vs ${condition_atom}"
if qatom -qc "${p}" "${condition_atom}" | grep -cq '=='; then
echo "Removing ${ebuild}"
rm -f "${ebuild}"
if [[ -z "${message}" ]]; then
message="drop"
fi
message="${message} `qatom -F '%{PV}' "${p}"`"
fi;
done;
echo "message=${message}" >> "${GITHUB_OUTPUT}"

View File

@@ -0,0 +1,26 @@
name: "Fetch the electron-updater manifest"
description: "Check the specified manifest and extract the version and deprecated versions"
inputs:
url:
description: "electron-updater update manifest url to check"
required: true
outputs:
version:
description: "Latest version for the package"
deprecated_versions:
description: "A condition string for deprecated packages"
runs:
using: docker
image: docker://linuxserver/yq
entrypoint: /bin/bash
args:
- -c
- |
set -euo pipefail
manifest=$(mktemp)
curl -L -s "${{ inputs.url }}" | yq -r '.version, .commonConfig.DEPRECATED_VERSIONS' | (
read version;
read deprecated;
echo "version=${version}" >> "${GITHUB_OUTPUT}"
echo "deprecated_versions=${deprecated}" >> "${GITHUB_OUTPUT}"
)

View File

@@ -0,0 +1,23 @@
name: "Construct manifests using pkgdev"
description: "Construct manifest using pkgdev"
runs:
using: composite
steps:
- name: Cache pkgdev
uses: actions/cache@v5
with:
path: |
~/.cache/pkgcore
~/.cache/pkgcheck
~/.cache/distfiles
key: pkgdev
- name: Run pkgdev manifest
uses: docker://git.ratigorsk-12.ru/gentoo/pkgdev-docker:master
with:
args: >
-c '
set -euo pipefail
pmaint sync gentoo
pkgdev manifest -d ~/.cache/distfiles
'

View File

@@ -0,0 +1,18 @@
name: "Update electron app bin ebuild if needed"
description: "Check the update manifest and copy an existing version ebuild if a new version is out"
inputs:
atom:
description: "category/name specifying the ebuild to update"
required: true
update-url:
description: "electron-updater update manifest url to check"
required: true
outputs:
changes:
description: "if any changes were produced"
runs:
using: "docker"
image: "Dockerfile"
args:
- ${{inputs.atom}}
- ${{inputs.update-url}}

View File

@@ -0,0 +1,40 @@
#!/bin/bash
set -euo pipefail
atom="${1}"
update_url="${2}"
echo "Fetching update manifest from ${update_url}"
update_manifest=$(mktemp)
curl --follow -s -o "${update_manifest}" "${update_url}"
latest_version=$(yq -r '.version' "${update_manifest}")
echo "Latest version: ${latest_version}"
if [[ -z "${latest_version}" ]]; then
echo "No version tag in the downloaded manifest" >&2
cat "${update_manifest}" >&2
exit 1
fi
ebuild_dir="${GITHUB_WORKSPACE}/$atom"
latest_ebuild="${ebuild_dir}/yandex-music-${latest_version}.ebuild"
if [[ -f "${latest_ebuild}" ]]; then
echo "Ebuild for version ${latest_version} already exists"
exit 0
fi
echo "New version detected: ${latest_version}"
existing_ebuilds=( "${ebuild_dir}"/*.ebuild )
latest_existing_ebuild="${existing_ebuilds[-1]}"
if [[ -z "${latest_existing_ebuild}" ]]; then
echo "Error: No existing ebuild found to copy from" >&2
exit 1
fi
echo "Copying ${latest_existing_ebuild} to ${latest_ebuild}"
cp "${latest_existing_ebuild}" "${latest_ebuild}"

View File

@@ -0,0 +1,57 @@
name: yandex-music
on:
workflow_dispatch:
push:
branches:
- "master"
tags:
- "v*"
schedule:
- cron: "0 * * * *"
jobs:
check-and-update:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{GITEA_TOKEN}}
- name: Fetch update manifest
uses: ./.gitea/actions/fetch-electron-update
id: manifest
with:
url: https://desktop.app.music.yandex.net/stable/latest-linux.yml
- name: Remove deprecated ebuilds
uses: ./.gitea/actions/drop-ebuilds-matching
id: cleanup
with:
atom: media-sound/yandex-music
condition: ${{steps.manifest.outputs.deprecated_versions}}
- name: Create ebuild for latest version
uses: ./.gitea/actions/copy-latest-ebuild-as
id: latest
with:
atom: media-sound/yandex-music
version: ${{steps.manifest.outputs.version}}
- name: Check repo for validity
uses: ./.gitea/actions/pkgdev-manifest
- name: Check repo for validity
uses: pkgcore/pkgcheck-action@v1
with:
args: --keywords=-RedundantVersion media-sound/yandex-music
- name: Commit new ebuild
uses: EndBug/add-and-commit@v9
if: ${{steps.latest.outputs.message != '' || steps.cleanup.outputs.message != ''}}
with:
add: media-sound/yandex-music
author_name: Automation
author_email: noreply@ratigorsk-12.ru
message: ${{ format('media-sound/yandex-music {0} {1}', steps.cleanup.outputs.message, steps.latest.outputs.message) }}
push: true

View File

@@ -0,0 +1 @@
https://yandex.ru/legal/music_mobile_agreement/

View File

@@ -1,4 +1,3 @@
DIST yandex-music-5.78.7.deb 92585384 BLAKE2B e783bdf0bc6f572344975ba122f77b92af4462e5a5e8274ef88bcfa285730dae8f8ceb35f38d6a32fc5df8224b458c5f387b820fbf415b33cd2e924332fcfe0c SHA512 bbe4bd768b218ef45805d2b7db83659ba0875c8ccf3c65b69ca46356268f2fcec0321dfd51a68bf3e77d2034d62f3c04067e6c7a5dab072018aa04eeeabd54ac
DIST yandex-music-5.79.7.deb 92572126 BLAKE2B 0699449edf16bcf2d9e72c1ed885eecd42b26563e2750cc169e5f40b4cbfb925591420893b3350cee229ffa6fc745bf0fdcd8b806de7077a11a305fbad624cfb SHA512 cfc343e988dd07485f80d02b9525b2568539dc344cd5da853bc9ee81a9ac52314c33ca056b7bd9c9a9ec4631f5106d601946b37151765a6a7ad4f4a5889464b4
DIST yandex-music-5.82.0.deb 92606352 BLAKE2B 9df62bd624698787df49eb1e688bc07546fb1d6b3a156076a31986f7cf61bb5f572ea89e8cb0060c9f918716b4af8bbb9975a61d6a70d1b8e9feb5d419e23391 SHA512 dd6ccd0cfdd2d937d5b0134bf5a1b5954cd0f43adc5507c49e53f234d687282d1e6f0b8c76c7bd72d67998a232c447e752054dd4de57ceb17d8caa7868dfca3a
DIST yandex-music-5.83.0.deb 92586476 BLAKE2B 4f0a7db0e32dcc8a584ae57c37557876a1a675d2e3f11a47f8feefb52959639ff3452f8b394686f89feb54d6f976b7667ce8d23fbd632bbc8bcc9a6133651225 SHA512 4c8a637ff327edcf8d3e32991c0608841e987c3050f17f4467e90703a32b03781ebaebc9a2b5abd11585b78efcc98ec419de4547f8e3cc992baeac25190ceaca

View File

@@ -1,71 +0,0 @@
# Copyright 2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit xdg desktop unpacker
DESCRIPTION="Personal recommendations, mixes for any occasion and the latest musical releases"
HOMEPAGE="https://music.yandex.ru/download/"
SRC_URI="https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_amd64_${PV}.deb -> ${P}.deb"
LICENSE="Yandex-EULA"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
DEPEND="
x11-libs/gtk+:3
x11-libs/libnotify
dev-libs/nss
x11-libs/libXScrnSaver
x11-libs/libXtst
x11-misc/xdg-utils
app-accessibility/at-spi2-core
sys-apps/util-linux
app-crypt/libsecret
"
RDEPEND="${DEPEND}"
BDEPEND=""
QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/libEGL.so
/opt/Яндекс\\ Музыка/chrome-sandbox
/opt/Яндекс\\ Музыка/chrome_crashpad_handler
/opt/Яндекс\\ Музыка/libffmpeg.so
/opt/Яндекс\\ Музыка/libvulkan.so.1
/opt/Яндекс\\ Музыка/libGLESv2.so
/opt/Яндекс\\ Музыка/libvk_swiftshader.so
/opt/Яндекс\\ Музыка/yandexmusic
"
S="${WORKDIR}"
src_install() {
gzip -d usr/share/doc/yandexmusic/changelog.gz
mv usr/share/doc/yandexmusic usr/share/doc/${P}
insinto /
doins -r opt
doins -r usr
exeinto "/opt/Яндекс Музыка"
doexe "opt/Яндекс Музыка/yandexmusic"
doexe "opt/Яндекс Музыка/chrome-sandbox"
doexe "opt/Яндекс Музыка/chrome_crashpad_handler"
dosym "/opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
sed -i 's/Categories=Audio;/Categories=Audio;AudioVideo/' usr/share/applications/yandexmusic.desktop
domenu usr/share/applications/yandexmusic.desktop
}
pkg_postinst() {
xdg_desktop_database_update
xdg_icon_cache_update
}
pkg_postrm() {
xdg_desktop_database_update
xdg_icon_cache_update
}

View File

@@ -9,10 +9,11 @@ DESCRIPTION="Personal recommendations, mixes for any occasion and the latest mus
HOMEPAGE="https://music.yandex.ru/download/"
SRC_URI="https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_amd64_${PV}.deb -> ${P}.deb"
LICENSE="Yandex-EULA"
S="${WORKDIR}"
LICENSE="Yandex-Music-EULA"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
DEPEND="
x11-libs/gtk+:3
@@ -26,7 +27,6 @@ DEPEND="
app-crypt/libsecret
"
RDEPEND="${DEPEND}"
BDEPEND=""
QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/libEGL.so
@@ -39,8 +39,6 @@ QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/yandexmusic
"
S="${WORKDIR}"
src_install() {
gzip -d usr/share/doc/yandexmusic/changelog.gz
mv usr/share/doc/yandexmusic usr/share/doc/${P}
@@ -54,7 +52,7 @@ src_install() {
doexe "opt/Яндекс Музыка/chrome-sandbox"
doexe "opt/Яндекс Музыка/chrome_crashpad_handler"
dosym "/opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
dosym "../../opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
sed -i 's/Categories=Audio;/Categories=Audio;AudioVideo/' usr/share/applications/yandexmusic.desktop
domenu usr/share/applications/yandexmusic.desktop

View File

@@ -9,10 +9,11 @@ DESCRIPTION="Personal recommendations, mixes for any occasion and the latest mus
HOMEPAGE="https://music.yandex.ru/download/"
SRC_URI="https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_amd64_${PV}.deb -> ${P}.deb"
LICENSE="Yandex-EULA"
S="${WORKDIR}"
LICENSE="Yandex-Music-EULA"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
DEPEND="
x11-libs/gtk+:3
@@ -26,7 +27,6 @@ DEPEND="
app-crypt/libsecret
"
RDEPEND="${DEPEND}"
BDEPEND=""
QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/libEGL.so
@@ -39,8 +39,6 @@ QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/yandexmusic
"
S="${WORKDIR}"
src_install() {
gzip -d usr/share/doc/yandexmusic/changelog.gz
mv usr/share/doc/yandexmusic usr/share/doc/${P}
@@ -54,7 +52,7 @@ src_install() {
doexe "opt/Яндекс Музыка/chrome-sandbox"
doexe "opt/Яндекс Музыка/chrome_crashpad_handler"
dosym "/opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
dosym "../../opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
sed -i 's/Categories=Audio;/Categories=Audio;AudioVideo/' usr/share/applications/yandexmusic.desktop
domenu usr/share/applications/yandexmusic.desktop

View File

@@ -9,10 +9,11 @@ DESCRIPTION="Personal recommendations, mixes for any occasion and the latest mus
HOMEPAGE="https://music.yandex.ru/download/"
SRC_URI="https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_amd64_${PV}.deb -> ${P}.deb"
LICENSE="Yandex-EULA"
S="${WORKDIR}"
LICENSE="Yandex-Music-EULA"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
DEPEND="
x11-libs/gtk+:3
@@ -26,7 +27,6 @@ DEPEND="
app-crypt/libsecret
"
RDEPEND="${DEPEND}"
BDEPEND=""
QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/libEGL.so
@@ -39,8 +39,6 @@ QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/yandexmusic
"
S="${WORKDIR}"
src_install() {
gzip -d usr/share/doc/yandexmusic/changelog.gz
mv usr/share/doc/yandexmusic usr/share/doc/${P}
@@ -54,7 +52,7 @@ src_install() {
doexe "opt/Яндекс Музыка/chrome-sandbox"
doexe "opt/Яндекс Музыка/chrome_crashpad_handler"
dosym "/opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
dosym "../../opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
sed -i 's/Categories=Audio;/Categories=Audio;AudioVideo/' usr/share/applications/yandexmusic.desktop
domenu usr/share/applications/yandexmusic.desktop

View File

@@ -9,10 +9,11 @@ DESCRIPTION="Personal recommendations, mixes for any occasion and the latest mus
HOMEPAGE="https://music.yandex.ru/download/"
SRC_URI="https://music-desktop-application.s3.yandex.net/stable/Yandex_Music_amd64_${PV}.deb -> ${P}.deb"
LICENSE="Yandex-EULA"
S="${WORKDIR}"
LICENSE="Yandex-Music-EULA"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
DEPEND="
x11-libs/gtk+:3
@@ -26,7 +27,6 @@ DEPEND="
app-crypt/libsecret
"
RDEPEND="${DEPEND}"
BDEPEND=""
QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/libEGL.so
@@ -39,8 +39,6 @@ QA_PRESTRIPPED="
/opt/Яндекс\\ Музыка/yandexmusic
"
S="${WORKDIR}"
src_install() {
gzip -d usr/share/doc/yandexmusic/changelog.gz
mv usr/share/doc/yandexmusic usr/share/doc/${P}
@@ -54,7 +52,7 @@ src_install() {
doexe "opt/Яндекс Музыка/chrome-sandbox"
doexe "opt/Яндекс Музыка/chrome_crashpad_handler"
dosym "/opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
dosym "../../opt/Яндекс Музыка/yandexmusic" /usr/bin/yandexmusic
sed -i 's/Categories=Audio;/Categories=Audio;AudioVideo/' usr/share/applications/yandexmusic.desktop
domenu usr/share/applications/yandexmusic.desktop

1
metadata/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/md5-cache

1
profiles/repo_name Normal file
View File

@@ -0,0 +1 @@
ratigorsk-auto