From 2eec31f4cd96c34e27ffa63b1c00c8467c676c77 Mon Sep 17 00:00:00 2001 From: Cappy Ishihara Date: Thu, 8 Aug 2024 19:33:13 +0700 Subject: [PATCH] add: youtube-music (#1827) * add: youtube-music * fix buildrequires line? * oops * use NodeJS 22 for build? * use pnpm 9 * use pnpm package from fedora and normal nodejs to see if it would still faikl * try node 18 * attempt to conflict node 22 on build * wtf * forgot to add changelog * try vendoring pnpm with nodejs18 * Revert "try vendoring pnpm with nodejs18" This reverts commit fdc705e87c7c16746f878daa59f5e18349206504. * vendor pnpm and node on buildtime * add packager line * debug dir tree * arch-specific directories fix --------- Co-authored-by: madonuko (cherry picked from commit ebef13fac570c8de6a24ac9dfd9b7769d2933cd3) --- anda/apps/youtube-music/anda.hcl | 5 + anda/apps/youtube-music/update.rhai | 1 + anda/apps/youtube-music/youtube-music.desktop | 10 ++ anda/apps/youtube-music/youtube-music.spec | 91 +++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 anda/apps/youtube-music/anda.hcl create mode 100644 anda/apps/youtube-music/update.rhai create mode 100644 anda/apps/youtube-music/youtube-music.desktop create mode 100644 anda/apps/youtube-music/youtube-music.spec diff --git a/anda/apps/youtube-music/anda.hcl b/anda/apps/youtube-music/anda.hcl new file mode 100644 index 0000000000..6d24c891fe --- /dev/null +++ b/anda/apps/youtube-music/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "youtube-music.spec" + } +} diff --git a/anda/apps/youtube-music/update.rhai b/anda/apps/youtube-music/update.rhai new file mode 100644 index 0000000000..97c0f91837 --- /dev/null +++ b/anda/apps/youtube-music/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("th-ch/youtube-music")); diff --git a/anda/apps/youtube-music/youtube-music.desktop b/anda/apps/youtube-music/youtube-music.desktop new file mode 100644 index 0000000000..b4bad28404 --- /dev/null +++ b/anda/apps/youtube-music/youtube-music.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=YouTube Music +Exec=/usr/bin/youtube-music --no-sandbox %U +TryExec=/usr/bin/youtube-music +Icon=youtube-music +Terminal=false +Type=Application +StartupWMClass=YouTube Music +Comment=YouTube Music Desktop App - including custom plugins +Categories=AudioVideo; diff --git a/anda/apps/youtube-music/youtube-music.spec b/anda/apps/youtube-music/youtube-music.spec new file mode 100644 index 0000000000..a86a6c4e21 --- /dev/null +++ b/anda/apps/youtube-music/youtube-music.spec @@ -0,0 +1,91 @@ +%define debug_package %nil + + +# macro shorthand for calling pnpm +%global pnpm npx pnpm@%{pnpm_version} + +Name: youtube-music +Version: 3.5.1 +Release: 1%{?dist} +Summary: YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader) +Source1: youtube-music.desktop +License: MIT +URL: https://github.com/th-ch/youtube-music +Packager: Cappy Ishihara + +# For some unknown reason, PNPM is not working with Node.js 22 on Aarch64 devices. +# todo: investigate why +#ExclusiveArch: x86_64 + +BuildRequires: git-core gcc make +# Required for usocket native module built with node-gyp +BuildRequires: python3 gcc-c++ + +%description +YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader) + + +%prep +rm -rf ./* +git clone --recursive %{url} . +git checkout v%{version} + + + +%build +# Vendor PNPM directly instead of installing from packages, because we need to somehow force PNPM to use Node.js 20 +# We are not using Fedora's PNPM because we need to use `pnpm env`, which PNPM does not support when not vendored directly from upstream +curl -fsSL https://get.pnpm.io/install.sh | sh - +source /builddir/.bashrc +pnpm env use --global 20 +pnpm install +pnpm build +pnpm electron-builder --linux --dir + + + +%install + +# Install assets +install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps +install -d -m 0755 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps + +# Copy icon files +ls -laR pack +%ifarch aarch64 +pushd pack/linux-arm64-unpacked/resources/app.asar.unpacked/assets +%else +pushd pack/linux-unpacked/resources/app.asar.unpacked/assets +%endif +install -m 0644 youtube-music.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/youtube-music.png +install -m 0644 youtube-music.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/youtube-music.svg +install -m 0644 youtube-music-tray-paused.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/youtube-music-tray-paused.png +install -m 0644 youtube-music-tray.png %{buildroot}%{_datadir}/icons/hicolor/1024x1024/apps/youtube-music-tray.png +popd + +# Actually install the app + +install -d -m 0755 %{buildroot}%{_datadir}/youtube-music +# Delete unpacked asar files before copying +rm -rfv pack/linux*-unpacked/resources/app.asar.unpacked +cp -rv pack/linux*-unpacked/* %{buildroot}%{_datadir}/youtube-music +install -d -m 0755 %{buildroot}%{_bindir} +ln -svf %{_datadir}/youtube-music/youtube-music %{buildroot}%{_bindir}/youtube-music + +# Install desktop file +install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/youtube-music.desktop + +%files +%license license +%doc README.md +%doc docs +%{_bindir}/youtube-music +%{_datadir}/youtube-music +%{_datadir}/icons/hicolor/*/apps/youtube-music* +%{_datadir}/applications/youtube-music.desktop + + + +%changelog +* Sat Aug 03 2024 Cappy Ishihara +- Initial Release